From 1b1ab551a97d9e2ac2d95d143055f2b92d77c213 Mon Sep 17 00:00:00 2001 From: lizzie Date: Wed, 22 Oct 2025 04:55:27 +0200 Subject: [PATCH] [maxwell] fix ordering of sizes for atomicops (#2778) S64 goes after F16x2FTZRN Signed-off-by: lizzie Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2778 Reviewed-by: MaranBr Reviewed-by: crueter Co-authored-by: lizzie Co-committed-by: lizzie --- .../impl/surface_atomic_operations.cpp | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 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 c4f11e3929..c1f50ad979 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 @@ -12,21 +12,23 @@ namespace Shader::Maxwell { namespace { enum class Type : u64 { - _1D, - BUFFER_1D, - ARRAY_1D, - _2D, - ARRAY_2D, - _3D, + _1D = 0, + _1D_BUFFER = 1, + _1D_ARRAY = 2, + _2D = 3, + _2D_ARRAY = 4, + _3D = 5, + _UNK6 = 6, + _UNK7 = 7, }; enum class Size : u64 { U32, S32, U64, - S64, F32FTZRN, F16x2FTZRN, + S64, SD32, SD64, }; @@ -53,18 +55,19 @@ TextureType GetType(Type type) { switch (type) { case Type::_1D: return TextureType::Color1D; - case Type::BUFFER_1D: + case Type::_1D_BUFFER: return TextureType::Buffer; - case Type::ARRAY_1D: + case Type::_1D_ARRAY: return TextureType::ColorArray1D; case Type::_2D: return TextureType::Color2D; - case Type::ARRAY_2D: + case Type::_2D_ARRAY: return TextureType::ColorArray2D; case Type::_3D: return TextureType::Color3D; + default: + throw NotImplementedException("Invalid type {}", type); } - throw NotImplementedException("Invalid type {}", type); } IR::Value MakeCoords(TranslatorVisitor& v, IR::Reg reg, Type type) { @@ -73,7 +76,7 @@ IR::Value MakeCoords(TranslatorVisitor& v, IR::Reg reg, Type type) { }}; switch (type) { case Type::_1D: - case Type::BUFFER_1D: + case Type::_1D_BUFFER: return v.X(reg); case Type::ARRAY_1D: return v.ir.CompositeConstruct(v.X(reg), array(1)); @@ -84,9 +87,8 @@ IR::Value MakeCoords(TranslatorVisitor& v, IR::Reg reg, Type type) { case Type::_3D: return v.ir.CompositeConstruct(v.X(reg), v.X(reg + 1), v.X(reg + 2)); default: - break; + throw NotImplementedException("Invalid type {}", type); } - throw NotImplementedException("Invalid type {}", type); } IR::Value ApplyAtomicOp(IR::IREmitter& ir, const IR::U32& handle, const IR::Value& coords,