From 263cf0778fc0cb311d43db7eb6e46e24bed60a19 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 28 Jan 2021 15:49:28 +0000 Subject: [PATCH] Fixes for structured exporting multisampled textures on GL --- renderdoc/driver/gl/gl_initstate.cpp | 8 ++++++++ renderdoc/driver/gl/wrappers/gl_interop_funcs.cpp | 11 +++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/gl/gl_initstate.cpp b/renderdoc/driver/gl/gl_initstate.cpp index ba0cfd7dd..2bc2c3ef4 100644 --- a/renderdoc/driver/gl/gl_initstate.cpp +++ b/renderdoc/driver/gl/gl_initstate.cpp @@ -1573,6 +1573,14 @@ bool GLResourceManager::Serialise_InitialState(SerialiserType &ser, ResourceId i targets[0] = eGL_TEXTURE_2D_ARRAY; } } + else if(IsStructuredExporting(m_State)) + { + if(TextureState.samples > 1) + { + copySlices = RDCMAX(1U, TextureState.depth) * TextureState.samples; + texDim = 3; + } + } else if(ser.IsWriting()) { // on writing, bind the prepared texture with initial contents to grab diff --git a/renderdoc/driver/gl/wrappers/gl_interop_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_interop_funcs.cpp index fb7e89a2a..59ded9044 100644 --- a/renderdoc/driver/gl/wrappers/gl_interop_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_interop_funcs.cpp @@ -429,10 +429,13 @@ bool WrappedOpenGL::Serialise_wglDXLockObjectsNV(SerialiserType &ser, GLResource SERIALISE_ELEMENT_LOCAL(height, details.height).Hidden(); SERIALISE_ELEMENT_LOCAL(depth, details.depth).Hidden(); - RDCASSERT(internalFormat == details.internalFormat, internalFormat, details.internalFormat); - RDCASSERT(width == details.width, width, details.width); - RDCASSERT(height == details.height, height, details.height); - RDCASSERT(depth == details.depth, depth, details.depth); + if(!IsStructuredExporting(m_State)) + { + RDCASSERT(internalFormat == details.internalFormat, internalFormat, details.internalFormat); + RDCASSERT(width == details.width, width, details.width); + RDCASSERT(height == details.height, height, details.height); + RDCASSERT(depth == details.depth, depth, details.depth); + } GLenum fmt = GetBaseFormat(internalFormat); GLenum type = GetDataType(internalFormat);