From 105f0e4e9fb38f4f11765454c9a44ed5fc81f896 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 24 Apr 2020 20:51:11 +0100 Subject: [PATCH] Fix GL handling of matrix parameters to specify :col instead of :row * In GL matrices are also split column-wise --- renderdoc/data/glsl_shaders.cpp | 12 ++++++------ renderdoc/driver/gl/gl_initstate.cpp | 4 ++-- renderdoc/driver/gl/gl_shader_refl.cpp | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/renderdoc/data/glsl_shaders.cpp b/renderdoc/data/glsl_shaders.cpp index 78d0d91a4..108a59b9b 100644 --- a/renderdoc/data/glsl_shaders.cpp +++ b/renderdoc/data/glsl_shaders.cpp @@ -1513,7 +1513,7 @@ void main() CHECK(sig.channelUsedMask == 0x7); } - CHECK(refl.outputSignature[4].varName == "outmat:row0"); + CHECK(refl.outputSignature[4].varName == "outmat:col0"); { const SigParameter &sig = refl.outputSignature[4]; INFO("signature element: " << sig.varName.c_str()); @@ -1526,7 +1526,7 @@ void main() CHECK(sig.channelUsedMask == 0x3); } - CHECK(refl.outputSignature[5].varName == "outmat:row1"); + CHECK(refl.outputSignature[5].varName == "outmat:col1"); { const SigParameter &sig = refl.outputSignature[5]; INFO("signature element: " << sig.varName.c_str()); @@ -1539,7 +1539,7 @@ void main() CHECK(sig.channelUsedMask == 0x3); } - CHECK(refl.outputSignature[6].varName == "outmatarr[0]:row0"); + CHECK(refl.outputSignature[6].varName == "outmatarr[0]:col0"); { const SigParameter &sig = refl.outputSignature[6]; INFO("signature element: " << sig.varName.c_str()); @@ -1552,7 +1552,7 @@ void main() CHECK(sig.channelUsedMask == 0x3); } - CHECK(refl.outputSignature[7].varName == "outmatarr[0]:row1"); + CHECK(refl.outputSignature[7].varName == "outmatarr[0]:col1"); { const SigParameter &sig = refl.outputSignature[7]; INFO("signature element: " << sig.varName.c_str()); @@ -1565,7 +1565,7 @@ void main() CHECK(sig.channelUsedMask == 0x3); } - CHECK(refl.outputSignature[8].varName == "outmatarr[1]:row0"); + CHECK(refl.outputSignature[8].varName == "outmatarr[1]:col0"); { const SigParameter &sig = refl.outputSignature[8]; INFO("signature element: " << sig.varName.c_str()); @@ -1578,7 +1578,7 @@ void main() CHECK(sig.channelUsedMask == 0x3); } - CHECK(refl.outputSignature[9].varName == "outmatarr[1]:row1"); + CHECK(refl.outputSignature[9].varName == "outmatarr[1]:col1"); { const SigParameter &sig = refl.outputSignature[9]; INFO("signature element: " << sig.varName.c_str()); diff --git a/renderdoc/driver/gl/gl_initstate.cpp b/renderdoc/driver/gl/gl_initstate.cpp index 4ba8bc349..f70eeb2bf 100644 --- a/renderdoc/driver/gl/gl_initstate.cpp +++ b/renderdoc/driver/gl/gl_initstate.cpp @@ -1181,8 +1181,8 @@ bool GLResourceManager::Serialise_InitialState(SerialiserType &ser, ResourceId i { rdcstr name = sig.varName; - // look for :row added to split up matrix variables - int32_t colon = name.find(":row"); + // look for :row or :col added to split up matrix variables + int32_t colon = name.find(":"); // remove it, if present if(colon >= 0) diff --git a/renderdoc/driver/gl/gl_shader_refl.cpp b/renderdoc/driver/gl/gl_shader_refl.cpp index 31ef8bbb7..107e6bc05 100644 --- a/renderdoc/driver/gl/gl_shader_refl.cpp +++ b/renderdoc/driver/gl/gl_shader_refl.cpp @@ -1104,9 +1104,9 @@ static void AddSigParameter(rdcarray &sigs, uint32_t ®Index, s.regIndex += r; if(arrayIdx >= 0) - s.varName = StringFormat::Fmt("%s[%d]:row%d", nm, arrayIdx, r); + s.varName = StringFormat::Fmt("%s[%d]:col%d", nm, arrayIdx, r); else - s.varName = StringFormat::Fmt("%s:row%d", nm, r); + s.varName = StringFormat::Fmt("%s:col%d", nm, r); sigs.push_back(s); } @@ -2553,7 +2553,7 @@ void GetBindpointMapping(GLuint curProg, int shadIdx, const ShaderReflection *re int32_t matrixRow = 0; rdcstr varName = refl->inputSignature[i].varName; - int32_t offs = varName.find(":row"); + int32_t offs = varName.find(":col"); if(offs >= 0) { matrixRow = varName[offs + 4] - '0';