From 94863b7afeacae526c898df1dedae41b646a125b Mon Sep 17 00:00:00 2001 From: baldurk Date: Sat, 26 Sep 2015 23:46:42 +0200 Subject: [PATCH] Set index byte width for glMultiDrawElements - fixes crash --- renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp index 26be5addd..cce5875cc 100644 --- a/renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp @@ -1817,11 +1817,18 @@ bool WrappedOpenGL::Serialise_glMultiDrawElements(GLenum mode, const GLsizei *co { string name = "glMultiDrawElements(" + ToStr::Get(Count) + ")"; + + uint32_t IdxSize = + Type == eGL_UNSIGNED_BYTE ? 1 + : Type == eGL_UNSIGNED_SHORT ? 2 + : /*Type == eGL_UNSIGNED_INT*/ 4; FetchDrawcall draw; draw.name = name; draw.flags |= eDraw_MultiDraw; + draw.indexByteWidth = IdxSize; + draw.numIndices = 0; draw.topology = MakePrimitiveTopology(m_Real, Mode); @@ -1836,6 +1843,7 @@ bool WrappedOpenGL::Serialise_glMultiDrawElements(GLenum mode, const GLsizei *co FetchDrawcall multidraw; multidraw.numIndices = countArray[i]; multidraw.indexOffset = (uint32_t) uint64_t(idxOffsArray[i])&0xFFFFFFFF; + multidraw.indexByteWidth = IdxSize; multidraw.name = "glMultiDrawElements[" + ToStr::Get(i) + "](" + ToStr::Get(multidraw.numIndices) + ")";