summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/spirv/emit_context.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend/spirv/emit_context.h')
-rw-r--r--src/shader_recompiler/backend/spirv/emit_context.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_context.h b/src/shader_recompiler/backend/spirv/emit_context.h
index e70f3458c..34f38454f 100644
--- a/src/shader_recompiler/backend/spirv/emit_context.h
+++ b/src/shader_recompiler/backend/spirv/emit_context.h
@@ -94,6 +94,7 @@ public:
94 Id output_f32{}; 94 Id output_f32{};
95 95
96 Id storage_u32{}; 96 Id storage_u32{};
97 Id storage_memory_u32{};
97 98
98 Id image_buffer_type{}; 99 Id image_buffer_type{};
99 Id sampled_texture_buffer_type{}; 100 Id sampled_texture_buffer_type{};
@@ -136,9 +137,21 @@ public:
136 Id shared_memory_u32{}; 137 Id shared_memory_u32{};
137 Id shared_memory_u32x2{}; 138 Id shared_memory_u32x2{};
138 Id shared_memory_u32x4{}; 139 Id shared_memory_u32x4{};
140 Id shared_memory_u32_type{};
139 141
140 Id shared_store_u8_func{}; 142 Id shared_store_u8_func{};
141 Id shared_store_u16_func{}; 143 Id shared_store_u16_func{};
144 Id increment_cas_shared{};
145 Id increment_cas_ssbo{};
146 Id decrement_cas_shared{};
147 Id decrement_cas_ssbo{};
148 Id f32_add_cas{};
149 Id f16x2_add_cas{};
150 Id f16x2_min_cas{};
151 Id f16x2_max_cas{};
152 Id f32x2_add_cas{};
153 Id f32x2_min_cas{};
154 Id f32x2_max_cas{};
142 155
143 Id input_position{}; 156 Id input_position{};
144 std::array<Id, 32> input_generics{}; 157 std::array<Id, 32> input_generics{};
@@ -153,6 +166,11 @@ public:
153 std::vector<Id> interfaces; 166 std::vector<Id> interfaces;
154 167
155private: 168private:
169 enum class CasPointerType {
170 Shared,
171 Ssbo,
172 };
173
156 void DefineCommonTypes(const Info& info); 174 void DefineCommonTypes(const Info& info);
157 void DefineCommonConstants(); 175 void DefineCommonConstants();
158 void DefineInterfaces(const Info& info); 176 void DefineInterfaces(const Info& info);
@@ -171,6 +189,8 @@ private:
171 189
172 void DefineInputs(const Info& info); 190 void DefineInputs(const Info& info);
173 void DefineOutputs(const Info& info); 191 void DefineOutputs(const Info& info);
192
193 [[nodiscard]] Id CasLoop(Id function, CasPointerType pointer_type, Id value_type);
174}; 194};
175 195
176} // namespace Shader::Backend::SPIRV 196} // namespace Shader::Backend::SPIRV