aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaio Oliveira <caiooliveirafarias0@gmail.com>2025-11-26 22:57:00 +0100
committercrueter <crueter@eden-emu.dev>2025-11-26 22:57:00 +0100
commit9e610ea09843862c4cdf61b43e45cbb48c9271f7 (patch)
treec80c1e57515bbbd96a9ba52880560d7c31a4c7ea
parent41af6ea645620dbd4669d3bae28d8908cbf22157 (diff)
Partial revert "[shared_recompiler/maxwell] fix SURED() wrong encodings (#2983)" (#3099)
Signed-off-by: Caio Oliveira <caiooliveirafarias0@gmail.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3099 Reviewed-by: Lizzie <lizzie@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev> Co-authored-by: Caio Oliveira <caiooliveirafarias0@gmail.com> Co-committed-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
-rw-r--r--src/shader_recompiler/frontend/maxwell/translate/impl/surface_atomic_operations.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/surface_atomic_operations.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/surface_atomic_operations.cpp
index e75cdf7c0f..9f8dfb45dd 100644
--- a/src/shader_recompiler/frontend/maxwell/translate/impl/surface_atomic_operations.cpp
+++ b/src/shader_recompiler/frontend/maxwell/translate/impl/surface_atomic_operations.cpp
@@ -195,9 +195,9 @@ void TranslatorVisitor::SUATOM(u64 insn) {
void TranslatorVisitor::SURED(u64 insn) {
// TODO: confirm offsets
- // SURED unlike SUATOM does NOT have a binded register
union {
u64 raw;
+ BitField<51, 1, u64> is_bound;
BitField<24, 3, AtomicOp> op; //OK - 24 (SURedOp)
BitField<33, 3, Type> type; //OK? - 33 (Dim)
BitField<20, 3, Size> size; //?
@@ -205,10 +205,11 @@ void TranslatorVisitor::SURED(u64 insn) {
BitField<0, 8, IR::Reg> operand_reg; //RA?
BitField<8, 8, IR::Reg> coord_reg; //RB?
BitField<36, 13, u64> bound_offset; //OK 33 (TidB)
+ BitField<39, 8, IR::Reg> bindless_reg; // !is_bound
} const sured{insn};
- ImageAtomOp(*this, IR::Reg::RZ, sured.operand_reg, sured.coord_reg, std::nullopt,
+ ImageAtomOp(*this, IR::Reg::RZ, sured.operand_reg, sured.coord_reg, sured.bindless_reg,
sured.op, sured.clamp, sured.size, sured.type, sured.bound_offset,
- false, false);
+ sured.is_bound == 0, false);
}
} // namespace Shader::Maxwell