From 23c9e1b0ceb82f11fc83302ac97af8c8b05b7b30 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 5 Mar 2019 14:03:40 +0000 Subject: [PATCH] Only eliminate redundant buffer parent variable when it exists * SSBOs declared without an instance name don't have this parent variable added. --- renderdoc/driver/gl/gl_shader_refl.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/gl/gl_shader_refl.cpp b/renderdoc/driver/gl/gl_shader_refl.cpp index 040fe6e9b..73c9c1a58 100644 --- a/renderdoc/driver/gl/gl_shader_refl.cpp +++ b/renderdoc/driver/gl/gl_shader_refl.cpp @@ -1708,7 +1708,11 @@ void MakeShaderReflection(GLenum shadType, GLuint sepProg, ShaderReflection &ref { sort(members[ssbo]); - std::swap(rwresources[ssbos[ssbo]].variableType.members, members[ssbo][0].type.members); + if(rwresources[ssbos[ssbo]].name == members[ssbo][0].name && + members[ssbo][0].type.descriptor.arrayByteStride == 0) + std::swap(rwresources[ssbos[ssbo]].variableType.members, members[ssbo][0].type.members); + else + std::swap(rwresources[ssbos[ssbo]].variableType.members, members[ssbo]); } // patch-up reflection data. For top-level arrays use the stride & rough size to calculate the