فهرست منبع

shader: Split profile and runtime info headers

ReinUsesLisp 5 سال پیش
والد
کامیت
0ffea97e2e

+ 1 - 0
src/shader_recompiler/CMakeLists.txt

@@ -226,6 +226,7 @@ add_library(shader_recompiler STATIC
     object_pool.h
     profile.h
     program_header.h
+    runtime_info.h
     shader_info.h
 )
 

+ 1 - 0
src/shader_recompiler/backend/glasm/emit_context.cpp

@@ -8,6 +8,7 @@
 #include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/profile.h"
+#include "shader_recompiler/runtime_info.h"
 
 namespace Shader::Backend::GLASM {
 namespace {

+ 1 - 0
src/shader_recompiler/backend/glasm/emit_glasm.cpp

@@ -13,6 +13,7 @@
 #include "shader_recompiler/frontend/ir/ir_emitter.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/profile.h"
+#include "shader_recompiler/runtime_info.h"
 
 namespace Shader::Backend::GLASM {
 namespace {

+ 1 - 0
src/shader_recompiler/backend/glasm/emit_glasm.h

@@ -9,6 +9,7 @@
 #include "shader_recompiler/backend/bindings.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/profile.h"
+#include "shader_recompiler/runtime_info.h"
 
 namespace Shader::Backend::GLASM {
 

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_glasm_memory.cpp

@@ -8,7 +8,7 @@
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/frontend/ir/value.h"
-#include "shader_recompiler/profile.h"
+#include "shader_recompiler/runtime_info.h"
 
 namespace Shader::Backend::GLASM {
 namespace {

+ 1 - 0
src/shader_recompiler/backend/glsl/emit_context.cpp

@@ -6,6 +6,7 @@
 #include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/profile.h"
+#include "shader_recompiler/runtime_info.h"
 
 namespace Shader::Backend::GLSL {
 namespace {

+ 1 - 0
src/shader_recompiler/backend/glsl/emit_glsl.h

@@ -9,6 +9,7 @@
 #include "shader_recompiler/backend/bindings.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/profile.h"
+#include "shader_recompiler/runtime_info.h"
 
 namespace Shader::Backend::GLSL {
 

+ 0 - 3
src/shader_recompiler/backend/glsl/emit_glsl_instructions.h

@@ -18,9 +18,6 @@ class Value;
 namespace Shader::Backend::GLSL {
 class EmitContext;
 
-inline void EmitSetLoopSafetyVariable(EmitContext&) {}
-inline void EmitGetLoopSafetyVariable(EmitContext&) {}
-
 #define NotImplemented() throw NotImplementedException("GLSL instruction {}", __func__)
 
 // Microinstruction emitters

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_context.h

@@ -12,6 +12,7 @@
 #include "shader_recompiler/backend/bindings.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/profile.h"
+#include "shader_recompiler/runtime_info.h"
 #include "shader_recompiler/shader_info.h"
 
 namespace Shader::Backend::SPIRV {

+ 0 - 72
src/shader_recompiler/profile.h

@@ -4,59 +4,10 @@
 
 #pragma once
 
-#include <array>
-#include <optional>
-#include <vector>
-
 #include "common/common_types.h"
 
 namespace Shader {
 
-enum class AttributeType : u8 {
-    Float,
-    SignedInt,
-    UnsignedInt,
-    Disabled,
-};
-
-enum class InputTopology {
-    Points,
-    Lines,
-    LinesAdjacency,
-    Triangles,
-    TrianglesAdjacency,
-};
-
-enum class CompareFunction {
-    Never,
-    Less,
-    Equal,
-    LessThanEqual,
-    Greater,
-    NotEqual,
-    GreaterThanEqual,
-    Always,
-};
-
-enum class TessPrimitive {
-    Isolines,
-    Triangles,
-    Quads,
-};
-
-enum class TessSpacing {
-    Equal,
-    FractionalOdd,
-    FractionalEven,
-};
-
-struct TransformFeedbackVarying {
-    u32 buffer{};
-    u32 stride{};
-    u32 offset{};
-    u32 components{};
-};
-
 struct Profile {
     u32 supported_spirv{0x00010000};
 
@@ -114,27 +65,4 @@ struct Profile {
     bool ignore_nan_fp_comparisons{};
 };
 
-struct RuntimeInfo {
-    std::array<AttributeType, 32> generic_input_types{};
-    bool convert_depth_mode{};
-    bool force_early_z{};
-
-    TessPrimitive tess_primitive{};
-    TessSpacing tess_spacing{};
-    bool tess_clockwise{};
-
-    InputTopology input_topology{};
-
-    std::optional<float> fixed_state_point_size;
-    std::optional<CompareFunction> alpha_test_func;
-    float alpha_test_reference{};
-
-    // Static y negate value
-    bool y_negate{};
-    // Use storage buffers instead of global pointers on GLASM
-    bool glasm_use_storage_buffers{};
-
-    std::vector<TransformFeedbackVarying> xfb_varyings;
-};
-
 } // namespace Shader

+ 83 - 0
src/shader_recompiler/runtime_info.h

@@ -0,0 +1,83 @@
+// Copyright 2021 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <array>
+#include <optional>
+#include <vector>
+
+#include "common/common_types.h"
+
+namespace Shader {
+
+enum class AttributeType : u8 {
+    Float,
+    SignedInt,
+    UnsignedInt,
+    Disabled,
+};
+
+enum class InputTopology {
+    Points,
+    Lines,
+    LinesAdjacency,
+    Triangles,
+    TrianglesAdjacency,
+};
+
+enum class CompareFunction {
+    Never,
+    Less,
+    Equal,
+    LessThanEqual,
+    Greater,
+    NotEqual,
+    GreaterThanEqual,
+    Always,
+};
+
+enum class TessPrimitive {
+    Isolines,
+    Triangles,
+    Quads,
+};
+
+enum class TessSpacing {
+    Equal,
+    FractionalOdd,
+    FractionalEven,
+};
+
+struct TransformFeedbackVarying {
+    u32 buffer{};
+    u32 stride{};
+    u32 offset{};
+    u32 components{};
+};
+
+struct RuntimeInfo {
+    std::array<AttributeType, 32> generic_input_types{};
+    bool convert_depth_mode{};
+    bool force_early_z{};
+
+    TessPrimitive tess_primitive{};
+    TessSpacing tess_spacing{};
+    bool tess_clockwise{};
+
+    InputTopology input_topology{};
+
+    std::optional<float> fixed_state_point_size;
+    std::optional<CompareFunction> alpha_test_func;
+    float alpha_test_reference{};
+
+    // Static y negate value
+    bool y_negate{};
+    // Use storage buffers instead of global pointers on GLASM
+    bool glasm_use_storage_buffers{};
+
+    std::vector<TransformFeedbackVarying> xfb_varyings;
+};
+
+} // namespace Shader

+ 1 - 0
src/video_core/renderer_opengl/gl_shader_cache.h

@@ -16,6 +16,7 @@
 #include "shader_recompiler/frontend/ir/value.h"
 #include "shader_recompiler/host_translate_info.h"
 #include "shader_recompiler/object_pool.h"
+#include "shader_recompiler/profile.h"
 #include "video_core/engines/shader_type.h"
 #include "video_core/renderer_opengl/gl_compute_pipeline.h"
 #include "video_core/renderer_opengl/gl_graphics_pipeline.h"

+ 1 - 1
src/video_core/transform_feedback.h

@@ -8,7 +8,7 @@
 #include <vector>
 
 #include "common/common_types.h"
-#include "shader_recompiler/profile.h"
+#include "shader_recompiler/runtime_info.h"
 #include "video_core/engines/maxwell_3d.h"
 
 namespace VideoCommon {