diff options
Diffstat (limited to 'src/shader_recompiler/backend/spirv/emit_context.cpp')
| -rw-r--r-- | src/shader_recompiler/backend/spirv/emit_context.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_context.cpp b/src/shader_recompiler/backend/spirv/emit_context.cpp index 96d0e9b4d..7531f8b21 100644 --- a/src/shader_recompiler/backend/spirv/emit_context.cpp +++ b/src/shader_recompiler/backend/spirv/emit_context.cpp | |||
| @@ -393,6 +393,14 @@ void EmitContext::DefineInputs(const Info& info) { | |||
| 393 | subgroup_local_invocation_id = | 393 | subgroup_local_invocation_id = |
| 394 | DefineInput(*this, U32[1], spv::BuiltIn::SubgroupLocalInvocationId); | 394 | DefineInput(*this, U32[1], spv::BuiltIn::SubgroupLocalInvocationId); |
| 395 | } | 395 | } |
| 396 | if (info.uses_fswzadd) { | ||
| 397 | const Id f32_one{Constant(F32[1], 1.0f)}; | ||
| 398 | const Id f32_minus_one{Constant(F32[1], -1.0f)}; | ||
| 399 | const Id f32_zero{Constant(F32[1], 0.0f)}; | ||
| 400 | fswzadd_lut_a = ConstantComposite(F32[4], f32_minus_one, f32_one, f32_minus_one, f32_zero); | ||
| 401 | fswzadd_lut_b = | ||
| 402 | ConstantComposite(F32[4], f32_minus_one, f32_minus_one, f32_one, f32_minus_one); | ||
| 403 | } | ||
| 396 | if (info.loads_position) { | 404 | if (info.loads_position) { |
| 397 | const bool is_fragment{stage != Stage::Fragment}; | 405 | const bool is_fragment{stage != Stage::Fragment}; |
| 398 | const spv::BuiltIn built_in{is_fragment ? spv::BuiltIn::Position : spv::BuiltIn::FragCoord}; | 406 | const spv::BuiltIn built_in{is_fragment ? spv::BuiltIn::Position : spv::BuiltIn::FragCoord}; |