From ef8d83463663f195c3c503f40c28576ccd830c05 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 23 Nov 2017 13:51:16 +0000 Subject: [PATCH] Allow NULL in glClear*Buffer and glClear*Tex functions * The spec says that if data is NULL, it acts like a buffer filled with zeroes, so we can just memset. --- .../driver/gl/wrappers/gl_draw_funcs.cpp | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp index da0c53003..e304cf860 100644 --- a/renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp @@ -3577,7 +3577,10 @@ bool WrappedOpenGL::Serialise_glClearNamedBufferDataEXT(SerialiserType &ser, GLu case eGL_UNSIGNED_INT_10_10_10_2: case eGL_UNSIGNED_INT_2_10_10_10_REV: s = 4; break; } - memcpy(data, dataPtr, s); + if(dataPtr) + memcpy(data, dataPtr, s); + else + memset(data, 0, s); } SERIALISE_ELEMENT(data); @@ -3716,7 +3719,10 @@ bool WrappedOpenGL::Serialise_glClearNamedBufferSubDataEXT(SerialiserType &ser, case eGL_UNSIGNED_INT_10_10_10_2: case eGL_UNSIGNED_INT_2_10_10_10_REV: s = 4; break; } - memcpy(data, dataPtr, s); + if(dataPtr) + memcpy(data, dataPtr, s); + else + memset(data, 0, s); } SERIALISE_ELEMENT(data); @@ -4014,7 +4020,10 @@ bool WrappedOpenGL::Serialise_glClearTexImage(SerialiserType &ser, GLuint textur case eGL_UNSIGNED_INT_10_10_10_2: case eGL_UNSIGNED_INT_2_10_10_10_REV: s = 4; break; } - memcpy(data, dataPtr, s); + if(dataPtr) + memcpy(data, dataPtr, s); + else + memset(data, 0, s); } SERIALISE_ELEMENT(data); @@ -4124,7 +4133,10 @@ bool WrappedOpenGL::Serialise_glClearTexSubImage(SerialiserType &ser, GLuint tex case eGL_UNSIGNED_INT_10_10_10_2: case eGL_UNSIGNED_INT_2_10_10_10_REV: s = 4; break; } - memcpy(data, dataPtr, s); + if(dataPtr) + memcpy(data, dataPtr, s); + else + memset(data, 0, s); } SERIALISE_ELEMENT(data);