diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2022-08-06 22:08:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-06 22:08:32 +0200 |
commit | ee5b244cdfa683d8b83cbdfdb76c5a413d6aa84f (patch) | |
tree | b35cd29241a58d8fed67d9a7ca859d8592cf507d /src/shader_recompiler/backend/spirv/spirv_emit_context.cpp | |
parent | Controller bugfixes in profile select (#8716) (diff) | |
parent | Add missed shader defines. Fixes Xenoblade Chronicles 3 booting with Vulkan. (diff) | |
download | yuzu-ee5b244cdfa683d8b83cbdfdb76c5a413d6aa84f.tar yuzu-ee5b244cdfa683d8b83cbdfdb76c5a413d6aa84f.tar.gz yuzu-ee5b244cdfa683d8b83cbdfdb76c5a413d6aa84f.tar.bz2 yuzu-ee5b244cdfa683d8b83cbdfdb76c5a413d6aa84f.tar.lz yuzu-ee5b244cdfa683d8b83cbdfdb76c5a413d6aa84f.tar.xz yuzu-ee5b244cdfa683d8b83cbdfdb76c5a413d6aa84f.tar.zst yuzu-ee5b244cdfa683d8b83cbdfdb76c5a413d6aa84f.zip |
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) { subgroup_mask_gt = DefineInput(*this, U32[4], false, spv::BuiltIn::SubgroupGtMaskKHR); subgroup_mask_ge = DefineInput(*this, U32[4], false, spv::BuiltIn::SubgroupGeMaskKHR); } - if (info.uses_subgroup_invocation_id || info.uses_subgroup_shuffles || + if (info.uses_fswzadd || info.uses_subgroup_invocation_id || info.uses_subgroup_shuffles || (profile.warp_size_potentially_larger_than_guest && (info.uses_subgroup_vote || info.uses_subgroup_mask))) { subgroup_local_invocation_id = @@ -1411,7 +1411,8 @@ void EmitContext::DefineInputs(const IR::Program& program) { void EmitContext::DefineOutputs(const IR::Program& program) { const Info& info{program.info}; const std::optional<u32> invocations{program.invocations}; - if (info.stores.AnyComponent(IR::Attribute::PositionX) || stage == Stage::VertexB) { + if (runtime_info.convert_depth_mode || info.stores.AnyComponent(IR::Attribute::PositionX) || + stage == Stage::VertexB) { output_position = DefineOutput(*this, F32[4], invocations, spv::BuiltIn::Position); } if (info.stores[IR::Attribute::PointSize] || runtime_info.fixed_state_point_size) { |