From 950c27719bd149c2195748e6d592fd6ea1d8453c Mon Sep 17 00:00:00 2001 From: Janos Pantos Date: Thu, 5 Oct 2017 17:36:19 +0200 Subject: [PATCH] Restore compressed texture data while reading the capture file --- .../driver/gl/wrappers/gl_texture_funcs.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp index 47b938eeb..b1ecf3a51 100644 --- a/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp @@ -2969,6 +2969,10 @@ bool WrappedOpenGL::Serialise_glCompressedTextureImage2DEXT(GLuint texture, GLen { void *databuf = buf; + if(IsGLES) + StoreCompressedTexData(GetResourceManager()->GetLiveID(id), Target, Level, 0, 0, 0, Width, + Height, 0, fmt, byteSize, buf); + // if we didn't have data provided (this is invalid, but could happen if the data // should have been sourced from an unpack buffer), then grow our scratch buffer if // necessary and use that instead to make sure we don't pass NULL to glCompressedTexImage* @@ -3224,6 +3228,10 @@ bool WrappedOpenGL::Serialise_glCompressedTextureImage3DEXT(GLuint texture, GLen { void *databuf = buf; + if(IsGLES) + StoreCompressedTexData(GetResourceManager()->GetLiveID(id), Target, Level, 0, 0, 0, Width, + Height, Depth, fmt, byteSize, buf); + // if we didn't have data provided (this is invalid, but could happen if the data // should have been sourced from an unpack buffer), then grow our scratch buffer if // necessary and use that instead to make sure we don't pass NULL to glCompressedTexImage* @@ -5267,6 +5275,10 @@ bool WrappedOpenGL::Serialise_glCompressedTextureSubImage2DEXT(GLuint texture, G SAFE_DELETE_ARRAY(unpackedPixels); + if(m_State == READING && IsGLES) + StoreCompressedTexData(GetResourceManager()->GetLiveID(id), Target, Level, xoff, yoff, 0, Width, + Height, 0, fmt, byteSize, buf); + if(m_State <= EXECUTING) { PixelUnpackState unpack; @@ -5464,6 +5476,10 @@ bool WrappedOpenGL::Serialise_glCompressedTextureSubImage3DEXT(GLuint texture, G SAFE_DELETE_ARRAY(unpackedPixels); + if(m_State == READING && IsGLES) + StoreCompressedTexData(GetResourceManager()->GetLiveID(id), Target, Level, xoff, yoff, zoff, + Width, Height, Depth, fmt, byteSize, buf); + if(m_State <= EXECUTING) { PixelUnpackState unpack;