diff options
Diffstat (limited to 'src/shader_recompiler/backend/spirv/spirv_emit_context.cpp')
| -rw-r--r-- | src/shader_recompiler/backend/spirv/spirv_emit_context.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp index d4a49ea99..98dd9035a 100644 --- a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp +++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp | |||
| @@ -1306,7 +1306,7 @@ void EmitContext::DefineInputs(const IR::Program& program) { | |||
| 1306 | subgroup_mask_gt = DefineInput(*this, U32[4], false, spv::BuiltIn::SubgroupGtMaskKHR); | 1306 | subgroup_mask_gt = DefineInput(*this, U32[4], false, spv::BuiltIn::SubgroupGtMaskKHR); |
| 1307 | subgroup_mask_ge = DefineInput(*this, U32[4], false, spv::BuiltIn::SubgroupGeMaskKHR); | 1307 | subgroup_mask_ge = DefineInput(*this, U32[4], false, spv::BuiltIn::SubgroupGeMaskKHR); |
| 1308 | } | 1308 | } |
| 1309 | if (info.uses_subgroup_invocation_id || info.uses_subgroup_shuffles || | 1309 | if (info.uses_fswzadd || info.uses_subgroup_invocation_id || info.uses_subgroup_shuffles || |
| 1310 | (profile.warp_size_potentially_larger_than_guest && | 1310 | (profile.warp_size_potentially_larger_than_guest && |
| 1311 | (info.uses_subgroup_vote || info.uses_subgroup_mask))) { | 1311 | (info.uses_subgroup_vote || info.uses_subgroup_mask))) { |
| 1312 | subgroup_local_invocation_id = | 1312 | subgroup_local_invocation_id = |
| @@ -1411,7 +1411,8 @@ void EmitContext::DefineInputs(const IR::Program& program) { | |||
| 1411 | void EmitContext::DefineOutputs(const IR::Program& program) { | 1411 | void EmitContext::DefineOutputs(const IR::Program& program) { |
| 1412 | const Info& info{program.info}; | 1412 | const Info& info{program.info}; |
| 1413 | const std::optional<u32> invocations{program.invocations}; | 1413 | const std::optional<u32> invocations{program.invocations}; |
| 1414 | if (info.stores.AnyComponent(IR::Attribute::PositionX) || stage == Stage::VertexB) { | 1414 | if (runtime_info.convert_depth_mode || info.stores.AnyComponent(IR::Attribute::PositionX) || |
| 1415 | stage == Stage::VertexB) { | ||
| 1415 | output_position = DefineOutput(*this, F32[4], invocations, spv::BuiltIn::Position); | 1416 | output_position = DefineOutput(*this, F32[4], invocations, spv::BuiltIn::Position); |
| 1416 | } | 1417 | } |
| 1417 | if (info.stores[IR::Attribute::PointSize] || runtime_info.fixed_state_point_size) { | 1418 | if (info.stores[IR::Attribute::PointSize] || runtime_info.fixed_state_point_size) { |