From 2c3849541b83b7d298c581af031e296d4c83fc40 Mon Sep 17 00:00:00 2001 From: liberodark Date: Mon, 20 Oct 2025 08:07:27 +0200 Subject: [PATCH] shader_recompiler: Add missing texture types for SURED instruction --- .../translate/impl/surface_atomic_operations.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 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 8ec90f52e..0ff152b1b 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 @@ -15,6 +15,8 @@ enum class Type : u64 { _2D, ARRAY_2D, _3D, + ARRAY_3D, + CUBE, }; enum class Size : u64 { @@ -60,6 +62,10 @@ TextureType GetType(Type type) { return TextureType::ColorArray2D; case Type::_3D: return TextureType::Color3D; + case Type::ARRAY_3D: + return TextureType::Color3D; // 3D arrays not directly supported, treat as 3D + case Type::CUBE: + return TextureType::ColorCube; } throw NotImplementedException("Invalid type {}", type); } @@ -68,13 +74,15 @@ IR::Value MakeCoords(TranslatorVisitor& v, IR::Reg reg, Type type) { switch (type) { case Type::_1D: case Type::BUFFER_1D: + case Type::ARRAY_1D: return v.X(reg); case Type::_2D: + case Type::ARRAY_2D: return v.ir.CompositeConstruct(v.X(reg), v.X(reg + 1)); case Type::_3D: + case Type::ARRAY_3D: + case Type::CUBE: return v.ir.CompositeConstruct(v.X(reg), v.X(reg + 1), v.X(reg + 2)); - default: - break; } throw NotImplementedException("Invalid type {}", type); }