diff --git a/src/graphics/shader/recompiler/Tessellation.cpp b/src/graphics/shader/recompiler/Tessellation.cpp index 4b194609f..863c2f859 100644 --- a/src/graphics/shader/recompiler/Tessellation.cpp +++ b/src/graphics/shader/recompiler/Tessellation.cpp @@ -98,11 +98,10 @@ void ReflectTessellationLayout(const Decoder::Program& program, bool local, return changed; }; - uint32_t stride = 0, patch_begin = 0, patch_end = 0; + uint32_t stride = 0, patch_begin = UINT32_MAX, patch_end = 0; for (bool repeat = true; repeat;) { repeat = false; registers = entry; - stride = 0, patch_begin = UINT32_MAX, patch_end = 0; for (const auto& inst: program.instructions) { if (const auto join = joins.find(inst.pc); join != joins.end()) { merge(registers, join->second); @@ -112,7 +111,7 @@ void ReflectTessellationLayout(const Decoder::Program& program, bool local, merge(registers, loop->second); if (IsDirectBranch(inst.opcode)) { const bool back = inst.branch_target <= inst.pc; - auto [join, inserted] = + const auto [join, inserted] = (back ? loops : joins).try_emplace(inst.branch_target, registers); const bool changed = !inserted && merge(join->second, registers); repeat |= back && (inserted || changed); diff --git a/src/graphics/shader/recompiler/backend/spirv/spirvEmitterAluHelpers.cpp b/src/graphics/shader/recompiler/backend/spirv/spirvEmitterAluHelpers.cpp index 878e60b70..fee74b1fd 100644 --- a/src/graphics/shader/recompiler/backend/spirv/spirvEmitterAluHelpers.cpp +++ b/src/graphics/shader/recompiler/backend/spirv/spirvEmitterAluHelpers.cpp @@ -17,12 +17,9 @@ uint32_t EmitCompareU32Constant(EmitterState& state, spv::Op opcode, uint32_t va } F32Class EmitClassifyF32Bits(EmitterState& state, uint32_t bits) { - F32Class cls; - cls.bits = bits; - const auto abs_bits = EmitAndConstant(state, cls.bits, 0x7fffffffu); - cls.nan = EmitCompareU32Constant(state, spv::OpUGreaterThan, abs_bits, 0x7f800000u); - cls.zero = EmitCompareU32Constant(state, spv::OpIEqual, abs_bits, 0); - return cls; + const auto abs_bits = EmitAndConstant(state, bits, 0x7fffffffu); + return {EmitCompareU32Constant(state, spv::OpUGreaterThan, abs_bits, 0x7f800000u), + EmitCompareU32Constant(state, spv::OpIEqual, abs_bits, 0)}; } uint32_t EmitClassMaskBitMatch(EmitterState& state, uint32_t mask, uint32_t bit, diff --git a/src/graphics/shader/recompiler/backend/spirv/spirvEmitterInternal.h b/src/graphics/shader/recompiler/backend/spirv/spirvEmitterInternal.h index ecd9508cd..fa6820e20 100644 --- a/src/graphics/shader/recompiler/backend/spirv/spirvEmitterInternal.h +++ b/src/graphics/shader/recompiler/backend/spirv/spirvEmitterInternal.h @@ -285,7 +285,6 @@ struct ImageSampleLayout { }; struct F32Class { - uint32_t bits = 0; uint32_t nan = 0; uint32_t zero = 0; };