diff options
| author | 2020-02-14 13:22:53 -0500 | |
|---|---|---|
| committer | 2020-02-14 13:22:53 -0500 | |
| commit | 63a59b993599e709e5b4bf6f389c7d4ae0c9889a (patch) | |
| tree | 0a39c9faa6afdd84405a9635337a043d05b16fb1 | |
| parent | Merge pull request #3398 from brianclinkenbeard/fix-cmake-sdl2 (diff) | |
| parent | shader/decode: Fix constant buffer offsets (diff) | |
| download | yuzu-63a59b993599e709e5b4bf6f389c7d4ae0c9889a.tar.gz yuzu-63a59b993599e709e5b4bf6f389c7d4ae0c9889a.tar.xz yuzu-63a59b993599e709e5b4bf6f389c7d4ae0c9889a.zip | |
Merge pull request #3379 from ReinUsesLisp/cbuf-offset
shader/decode: Fix constant buffer offsets
Diffstat (limited to '')
| -rw-r--r-- | src/video_core/engines/shader_bytecode.h | 4 | ||||
| -rw-r--r-- | src/video_core/shader/decode/arithmetic_integer.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/shader/decode/bfi.cpp | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h index 402869fde..c9bc83cd7 100644 --- a/src/video_core/engines/shader_bytecode.h +++ b/src/video_core/engines/shader_bytecode.h | |||
| @@ -1677,11 +1677,11 @@ union Instruction { | |||
| 1677 | } xmad; | 1677 | } xmad; |
| 1678 | 1678 | ||
| 1679 | union { | 1679 | union { |
| 1680 | BitField<20, 14, u64> offset; | 1680 | BitField<20, 14, u64> shifted_offset; |
| 1681 | BitField<34, 5, u64> index; | 1681 | BitField<34, 5, u64> index; |
| 1682 | 1682 | ||
| 1683 | u64 GetOffset() const { | 1683 | u64 GetOffset() const { |
| 1684 | return offset * 4; | 1684 | return shifted_offset * 4; |
| 1685 | } | 1685 | } |
| 1686 | } cbuf34; | 1686 | } cbuf34; |
| 1687 | 1687 | ||
diff --git a/src/video_core/shader/decode/arithmetic_integer.cpp b/src/video_core/shader/decode/arithmetic_integer.cpp index e60875cc4..21366869d 100644 --- a/src/video_core/shader/decode/arithmetic_integer.cpp +++ b/src/video_core/shader/decode/arithmetic_integer.cpp | |||
| @@ -166,13 +166,13 @@ u32 ShaderIR::DecodeArithmeticInteger(NodeBlock& bb, u32 pc) { | |||
| 166 | const auto [op_rhs, test] = [&]() -> std::pair<Node, Node> { | 166 | const auto [op_rhs, test] = [&]() -> std::pair<Node, Node> { |
| 167 | switch (opcode->get().GetId()) { | 167 | switch (opcode->get().GetId()) { |
| 168 | case OpCode::Id::ICMP_CR: | 168 | case OpCode::Id::ICMP_CR: |
| 169 | return {GetConstBuffer(instr.cbuf34.index, instr.cbuf34.offset), | 169 | return {GetConstBuffer(instr.cbuf34.index, instr.cbuf34.GetOffset()), |
| 170 | GetRegister(instr.gpr39)}; | 170 | GetRegister(instr.gpr39)}; |
| 171 | case OpCode::Id::ICMP_R: | 171 | case OpCode::Id::ICMP_R: |
| 172 | return {GetRegister(instr.gpr20), GetRegister(instr.gpr39)}; | 172 | return {GetRegister(instr.gpr20), GetRegister(instr.gpr39)}; |
| 173 | case OpCode::Id::ICMP_RC: | 173 | case OpCode::Id::ICMP_RC: |
| 174 | return {GetRegister(instr.gpr39), | 174 | return {GetRegister(instr.gpr39), |
| 175 | GetConstBuffer(instr.cbuf34.index, instr.cbuf34.offset)}; | 175 | GetConstBuffer(instr.cbuf34.index, instr.cbuf34.GetOffset())}; |
| 176 | case OpCode::Id::ICMP_IMM: | 176 | case OpCode::Id::ICMP_IMM: |
| 177 | return {Immediate(instr.alu.GetSignedImm20_20()), GetRegister(instr.gpr39)}; | 177 | return {Immediate(instr.alu.GetSignedImm20_20()), GetRegister(instr.gpr39)}; |
| 178 | default: | 178 | default: |
diff --git a/src/video_core/shader/decode/bfi.cpp b/src/video_core/shader/decode/bfi.cpp index f992bbe2a..70d1c055b 100644 --- a/src/video_core/shader/decode/bfi.cpp +++ b/src/video_core/shader/decode/bfi.cpp | |||
| @@ -21,7 +21,7 @@ u32 ShaderIR::DecodeBfi(NodeBlock& bb, u32 pc) { | |||
| 21 | switch (opcode->get().GetId()) { | 21 | switch (opcode->get().GetId()) { |
| 22 | case OpCode::Id::BFI_RC: | 22 | case OpCode::Id::BFI_RC: |
| 23 | return {GetRegister(instr.gpr39), | 23 | return {GetRegister(instr.gpr39), |
| 24 | GetConstBuffer(instr.cbuf34.index, instr.cbuf34.offset)}; | 24 | GetConstBuffer(instr.cbuf34.index, instr.cbuf34.GetOffset())}; |
| 25 | case OpCode::Id::BFI_IMM_R: | 25 | case OpCode::Id::BFI_IMM_R: |
| 26 | return {Immediate(instr.alu.GetSignedImm20_20()), GetRegister(instr.gpr39)}; | 26 | return {Immediate(instr.alu.GetSignedImm20_20()), GetRegister(instr.gpr39)}; |
| 27 | default: | 27 | default: |