diff --git a/renderdoc/driver/gl/gl_postvs.cpp b/renderdoc/driver/gl/gl_postvs.cpp index f4cee64da..b9895ce61 100644 --- a/renderdoc/driver/gl/gl_postvs.cpp +++ b/renderdoc/driver/gl/gl_postvs.cpp @@ -215,7 +215,10 @@ void GLReplay::InitPostVSBuffers(uint32_t eventId) if(sig.systemValue == ShaderBuiltin::Position) posidx = int32_t(varyings.size()) - 1; - stride += sizeof(float) * sig.compCount; + if(sig.compType == CompType::Double) + stride += sizeof(double) * sig.compCount; + else + stride += sizeof(float) * sig.compCount; } // shift position attribute up to first, keeping order otherwise diff --git a/renderdoc/driver/gl/gl_shader_refl.cpp b/renderdoc/driver/gl/gl_shader_refl.cpp index c8758c954..6569e6f08 100644 --- a/renderdoc/driver/gl/gl_shader_refl.cpp +++ b/renderdoc/driver/gl/gl_shader_refl.cpp @@ -1656,32 +1656,32 @@ void MakeShaderReflection(const GLHookSet &gl, GLenum shadType, GLuint sepProg, switch(values[1]) { - case eGL_FLOAT: case eGL_DOUBLE: - case eGL_FLOAT_VEC2: case eGL_DOUBLE_VEC2: - case eGL_FLOAT_VEC3: case eGL_DOUBLE_VEC3: - case eGL_FLOAT_VEC4: case eGL_DOUBLE_VEC4: - case eGL_FLOAT_MAT4: case eGL_DOUBLE_MAT4: - case eGL_FLOAT_MAT4x3: case eGL_DOUBLE_MAT4x3: - case eGL_FLOAT_MAT4x2: case eGL_DOUBLE_MAT4x2: - case eGL_FLOAT_MAT3: case eGL_DOUBLE_MAT3: - case eGL_FLOAT_MAT3x4: case eGL_DOUBLE_MAT3x4: - case eGL_FLOAT_MAT3x2: case eGL_DOUBLE_MAT3x2: - case eGL_FLOAT_MAT2: case eGL_DOUBLE_MAT2: - case eGL_FLOAT_MAT2x3: case eGL_DOUBLE_MAT2x3: - case eGL_FLOAT_MAT2x4: - case eGL_DOUBLE_MAT2x4: sig.compType = CompType::Float; break; + case eGL_DOUBLE_MAT2x4: sig.compType = CompType::Double; break; + case eGL_FLOAT: + case eGL_FLOAT_VEC2: + case eGL_FLOAT_VEC3: + case eGL_FLOAT_VEC4: + case eGL_FLOAT_MAT4: + case eGL_FLOAT_MAT4x3: + case eGL_FLOAT_MAT4x2: + case eGL_FLOAT_MAT3: + case eGL_FLOAT_MAT3x4: + case eGL_FLOAT_MAT3x2: + case eGL_FLOAT_MAT2: + case eGL_FLOAT_MAT2x3: + case eGL_FLOAT_MAT2x4: sig.compType = CompType::Float; break; case eGL_INT: case eGL_INT_VEC2: case eGL_INT_VEC3: