From 43eaca0266efba1340387424e14f441c3764834e Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 15 Jun 2020 14:58:49 +0100 Subject: [PATCH] Don't fetch mip/layer for renderbuffers * Renderbuffers are a legacy concept that some programs still use, but they don't have array layers or mips --- .../driver/gl/wrappers/gl_framebuffer_funcs.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/gl/wrappers/gl_framebuffer_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_framebuffer_funcs.cpp index a75daab7c..2536d140d 100644 --- a/renderdoc/driver/gl/wrappers/gl_framebuffer_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_framebuffer_funcs.cpp @@ -2027,13 +2027,15 @@ bool WrappedOpenGL::Serialise_glBlitNamedFramebuffer(SerialiserType &ser, draw.copyDestination = GetResourceManager()->GetOriginalID(dstid); GLint mip = 0, slice = 0; - GetFramebufferMipAndLayer(drawFramebuffer.name, eGL_COLOR_ATTACHMENT0, &mip, &slice); + if(dsttype == eGL_TEXTURE) + GetFramebufferMipAndLayer(drawFramebuffer.name, eGL_COLOR_ATTACHMENT0, &mip, &slice); draw.copyDestinationSubresource.mip = mip; draw.copyDestinationSubresource.slice = slice; mip = 0; slice = 0; - GetFramebufferMipAndLayer(readFramebuffer.name, eGL_COLOR_ATTACHMENT0, &mip, &slice); + if(srctype == eGL_TEXTURE) + GetFramebufferMipAndLayer(readFramebuffer.name, eGL_COLOR_ATTACHMENT0, &mip, &slice); draw.copySourceSubresource.mip = mip; draw.copySourceSubresource.slice = slice; } @@ -2046,13 +2048,15 @@ bool WrappedOpenGL::Serialise_glBlitNamedFramebuffer(SerialiserType &ser, draw.copyDestination = GetResourceManager()->GetOriginalID(dstid); GLint mip = 0, slice = 0; - GetFramebufferMipAndLayer(drawFramebuffer.name, eGL_DEPTH_ATTACHMENT, &mip, &slice); + if(dsttype == eGL_TEXTURE) + GetFramebufferMipAndLayer(drawFramebuffer.name, eGL_DEPTH_ATTACHMENT, &mip, &slice); draw.copyDestinationSubresource.mip = mip; draw.copyDestinationSubresource.slice = slice; mip = 0; slice = 0; - GetFramebufferMipAndLayer(readFramebuffer.name, eGL_DEPTH_ATTACHMENT, &mip, &slice); + if(srctype == eGL_TEXTURE) + GetFramebufferMipAndLayer(readFramebuffer.name, eGL_DEPTH_ATTACHMENT, &mip, &slice); draw.copySourceSubresource.mip = mip; draw.copySourceSubresource.slice = slice; }