Fixes for double outputs in GL mesh output fetch

This commit is contained in:
baldurk
2018-05-10 12:04:43 +01:00
parent a8e807467d
commit 2019c82d68
2 changed files with 18 additions and 15 deletions
+4 -1
View File
@@ -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
+14 -14
View File
@@ -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: