From 67fc665bf1573907a90dd682c9142042f76d9ca3 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 12 Jun 2019 15:30:59 +0100 Subject: [PATCH] Fix indirection for looking up SSBOs for member patching --- renderdoc/driver/gl/gl_shader_refl.cpp | 2 +- renderdoc/driver/gl/wrappers/gl_emulated.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/gl/gl_shader_refl.cpp b/renderdoc/driver/gl/gl_shader_refl.cpp index 43fad6552..79483be23 100644 --- a/renderdoc/driver/gl/gl_shader_refl.cpp +++ b/renderdoc/driver/gl/gl_shader_refl.cpp @@ -1726,7 +1726,7 @@ void MakeShaderReflection(GLenum shadType, GLuint sepProg, ShaderReflection &ref // number of elements, and make all child byteOffset values relative to their parent for(size_t ssbo = 0; ssbo < ssbos.size(); ssbo++) { - rdcarray &ssboVars = rwresources[ssbo].variableType.members; + rdcarray &ssboVars = rwresources[ssbos[ssbo]].variableType.members; for(size_t rootMember = 0; rootMember + 1 < ssboVars.size(); rootMember++) { ShaderConstant &member = ssboVars[rootMember]; diff --git a/renderdoc/driver/gl/wrappers/gl_emulated.cpp b/renderdoc/driver/gl/wrappers/gl_emulated.cpp index cc750bae6..670fcc33c 100644 --- a/renderdoc/driver/gl/wrappers/gl_emulated.cpp +++ b/renderdoc/driver/gl/wrappers/gl_emulated.cpp @@ -3782,7 +3782,7 @@ void main() { const ShaderConstant &submember = member.type.members[0]; INFO("SSBO submember: " << submember.name.c_str()); - CHECK(submember.byteOffset == 40); + CHECK(submember.byteOffset == 0); CHECK(submember.type.members.empty()); CHECK(submember.type.descriptor.type == VarType::Float); CHECK(submember.type.descriptor.rows == 1); @@ -3795,7 +3795,7 @@ void main() { const ShaderConstant &submember = member.type.members[1]; INFO("SSBO submember: " << submember.name.c_str()); - CHECK(submember.byteOffset == 44); + CHECK(submember.byteOffset == 4); CHECK(submember.type.members.empty()); CHECK(submember.type.descriptor.type == VarType::SInt); CHECK(submember.type.descriptor.rows == 1); @@ -3808,7 +3808,7 @@ void main() { const ShaderConstant &submember = member.type.members[2]; INFO("SSBO submember: " << submember.name.c_str()); - CHECK(submember.byteOffset == 48); + CHECK(submember.byteOffset == 8); CHECK(submember.type.members.empty()); CHECK(submember.type.descriptor.type == VarType::Float); CHECK(submember.type.descriptor.rows == 2);