summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-06-16 08:22:56 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:38 +0200
commit0ffea97e2ea2c8f58928e13dc2488d620ea98ea8 (patch)
treed297ca549a7c6dfb9fddb514cbd1f38422087f02
parentshader: Add support for native 16-bit floats (diff)
downloadyuzu-0ffea97e2ea2c8f58928e13dc2488d620ea98ea8.tar
yuzu-0ffea97e2ea2c8f58928e13dc2488d620ea98ea8.tar.gz
yuzu-0ffea97e2ea2c8f58928e13dc2488d620ea98ea8.tar.bz2
yuzu-0ffea97e2ea2c8f58928e13dc2488d620ea98ea8.tar.lz
yuzu-0ffea97e2ea2c8f58928e13dc2488d620ea98ea8.tar.xz
yuzu-0ffea97e2ea2c8f58928e13dc2488d620ea98ea8.tar.zst
yuzu-0ffea97e2ea2c8f58928e13dc2488d620ea98ea8.zip
-rw-r--r--src/shader_recompiler/CMakeLists.txt1
-rw-r--r--src/shader_recompiler/backend/glasm/emit_context.cpp1
-rw-r--r--src/shader_recompiler/backend/glasm/emit_glasm.cpp1
-rw-r--r--src/shader_recompiler/backend/glasm/emit_glasm.h1
-rw-r--r--src/shader_recompiler/backend/glasm/emit_glasm_memory.cpp2
-rw-r--r--src/shader_recompiler/backend/glsl/emit_context.cpp1
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl.h1
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_instructions.h3
-rw-r--r--src/shader_recompiler/backend/spirv/emit_context.h1
-rw-r--r--src/shader_recompiler/profile.h72
-rw-r--r--src/shader_recompiler/runtime_info.h83
-rw-r--r--src/video_core/renderer_opengl/gl_shader_cache.h1
-rw-r--r--src/video_core/transform_feedback.h2
13 files changed, 93 insertions, 77 deletions
diff --git a/src/shader_recompiler/CMakeLists.txt b/src/shader_recompiler/CMakeLists.txt
index 164e94071..f6719ad9d 100644
--- a/src/shader_recompiler/CMakeLists.txt
+++ b/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
)
diff --git a/src/shader_recompiler/backend/glasm/emit_context.cpp b/src/shader_recompiler/backend/glasm/emit_context.cpp
index 08918a5c2..21e14867c 100644
--- a/src/shader_recompiler/backend/glasm/emit_context.cpp
+++ b/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 {
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm.cpp b/src/shader_recompiler/backend/glasm/emit_glasm.cpp
index 832b4fd40..66e4aea04 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm.cpp
+++ b/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 {
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm.h b/src/shader_recompiler/backend/glasm/emit_glasm.h
index 3df32a4a6..bcb55f062 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm.h
+++ b/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 {
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_memory.cpp b/src/shader_recompiler/backend/glasm/emit_glasm_memory.cpp
index cafb5c92a..af9fac7c1 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_memory.cpp
+++ b/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 {
diff --git a/src/shader_recompiler/backend/glsl/emit_context.cpp b/src/shader_recompiler/backend/glsl/emit_context.cpp
index 54aa88b63..93057ebb9 100644
--- a/src/shader_recompiler/backend/glsl/emit_context.cpp
+++ b/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 {
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl.h b/src/shader_recompiler/backend/glsl/emit_glsl.h
index fe221fa7c..20e5719e6 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl.h
+++ b/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 {
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h b/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h
index 9e812dabb..df28036e4 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h
+++ b/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
diff --git a/src/shader_recompiler/backend/spirv/emit_context.h b/src/shader_recompiler/backend/spirv/emit_context.h
index 961c9180c..527685fb8 100644
--- a/src/shader_recompiler/backend/spirv/emit_context.h
+++ b/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 {
diff --git a/src/shader_recompiler/profile.h b/src/shader_recompiler/profile.h
index a3c412a0f..d46be1638 100644
--- a/src/shader_recompiler/profile.h
+++ b/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
diff --git a/src/shader_recompiler/runtime_info.h b/src/shader_recompiler/runtime_info.h
new file mode 100644
index 000000000..d4b047b4d
--- /dev/null
+++ b/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
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.h b/src/video_core/renderer_opengl/gl_shader_cache.h
index 6952a1f2c..ff5707119 100644
--- a/src/video_core/renderer_opengl/gl_shader_cache.h
+++ b/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"
diff --git a/src/video_core/transform_feedback.h b/src/video_core/transform_feedback.h
index 6832c6db1..8f6946d65 100644
--- a/src/video_core/transform_feedback.h
+++ b/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 {