Explorar o código

Shader_IR: Correct Custom Variable assignment.

Fernando Sahmkow %!s(int64=6) %!d(string=hai) anos
pai
achega
37b8504faa

+ 2 - 0
src/video_core/renderer_opengl/gl_shader_decompiler.cpp

@@ -1336,6 +1336,8 @@ private:
             const std::string final_offset = fmt::format("({} - {}) >> 2", real, base);
             const std::string final_offset = fmt::format("({} - {}) >> 2", real, base);
             target = {fmt::format("{}[{}]", GetGlobalMemory(gmem->GetDescriptor()), final_offset),
             target = {fmt::format("{}[{}]", GetGlobalMemory(gmem->GetDescriptor()), final_offset),
                       Type::Uint};
                       Type::Uint};
+        } else if (const auto cv = std::get_if<CustomVarNode>(&*dest)) {
+            target = {GetCustomVariable(cv->GetIndex()), Type::Float};
         } else {
         } else {
             UNREACHABLE_MSG("Assign called without a proper target");
             UNREACHABLE_MSG("Assign called without a proper target");
         }
         }

+ 2 - 0
src/video_core/renderer_vulkan/vk_shader_decompiler.cpp

@@ -1361,6 +1361,8 @@ private:
             target = {OpAccessChain(t_gmem_float, gmem_buffer, Constant(t_uint, 0), offset),
             target = {OpAccessChain(t_gmem_float, gmem_buffer, Constant(t_uint, 0), offset),
                       Type::Float};
                       Type::Float};
 
 
+        } else if (const auto cv = std::get_if<CustomVarNode>(&*dest)) {
+            target = {custom_variables.at(cv->GetIndex()), Type::Float};
         } else {
         } else {
             UNIMPLEMENTED();
             UNIMPLEMENTED();
         }
         }