From 36d9b409fc8793b617c4ce5525d8dc297cb4d579 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Thu, 21 Nov 2019 14:21:42 -0300 Subject: gl_shader_decompiler: Normalize cbuf bindings Stage and compute shaders were using a different binding counter. Normalize these. --- src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/video_core/renderer_opengl/gl_shader_decompiler.cpp') diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 5ad285c25..040370c83 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp @@ -619,10 +619,9 @@ private: } void DeclareConstantBuffers() { - for (const auto& entry : ir.GetConstantBuffers()) { - const auto [index, size] = entry; - const u32 binding = device.GetBaseBindings(stage).uniform_buffer + index; - code.AddLine("layout (std140, binding = {}) uniform {} {{", binding, + u32 binding = device.GetBaseBindings(stage).uniform_buffer; + for (const auto& [index, cbuf] : ir.GetConstantBuffers()) { + code.AddLine("layout (std140, binding = {}) uniform {} {{", binding++, GetConstBufferBlock(index)); code.AddLine(" uvec4 {}[{}];", GetConstBuffer(index), MAX_CONSTBUFFER_ELEMENTS); code.AddLine("}};"); @@ -632,10 +631,7 @@ private: void DeclareGlobalMemory() { u32 binding = device.GetBaseBindings(stage).shader_storage_buffer; - - for (const auto& gmem : ir.GetGlobalMemory()) { - const auto& [base, usage] = gmem; - + for (const auto& [base, usage] : ir.GetGlobalMemory()) { // Since we don't know how the shader will use the shader, hint the driver to disable as // much optimizations as possible std::string qualifier = "coherent volatile"; -- cgit v1.2.3