From eaee8a687861be56dd72513dfc02ec584b0f11af Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 16 Apr 2021 13:26:53 +0100 Subject: [PATCH] Adjust renderbuffer samples to real number of samples obtained --- .../gl/wrappers/gl_framebuffer_funcs.cpp | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/gl/wrappers/gl_framebuffer_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_framebuffer_funcs.cpp index e08a1d866..3ee86c063 100644 --- a/renderdoc/driver/gl/wrappers/gl_framebuffer_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_framebuffer_funcs.cpp @@ -2754,7 +2754,6 @@ bool WrappedOpenGL::Serialise_glNamedRenderbufferStorageMultisampleEXT(Serialise texDetails.width = width; texDetails.height = height; texDetails.depth = 1; - texDetails.samples = RDCMAX(1, samples); texDetails.curType = eGL_RENDERBUFFER; texDetails.internalFormat = internalformat; texDetails.mipsValid = 1; @@ -2762,6 +2761,21 @@ bool WrappedOpenGL::Serialise_glNamedRenderbufferStorageMultisampleEXT(Serialise GL.glNamedRenderbufferStorageMultisampleEXT(renderbuffer.name, samples, internalformat, width, height); + if(samples >= 1) + { + GLint realSamples = 0; + GL.glGetNamedRenderbufferParameterivEXT(renderbuffer.name, eGL_RENDERBUFFER_SAMPLES, + &realSamples); + + if(realSamples > samples) + { + RDCDEBUG("Renderbuffer requested %d samples, but got %d samples", samples, realSamples); + samples = realSamples; + } + } + + texDetails.samples = RDCMAX(1, samples); + if(internalformat == eGL_DEPTH_COMPONENT || internalformat == eGL_DEPTH_STENCIL || internalformat == eGL_STENCIL || internalformat == eGL_STENCIL_INDEX) { @@ -2977,7 +2991,6 @@ bool WrappedOpenGL::Serialise_glRenderbufferStorageMultisampleEXT(SerialiserType texDetails.width = width; texDetails.height = height; texDetails.depth = 1; - texDetails.samples = RDCMAX(1, samples); texDetails.curType = eGL_RENDERBUFFER; texDetails.internalFormat = internalformat; texDetails.mipsValid = 1; @@ -2989,6 +3002,21 @@ bool WrappedOpenGL::Serialise_glRenderbufferStorageMultisampleEXT(SerialiserType GL.glRenderbufferStorageMultisampleEXT(eGL_RENDERBUFFER, samples, internalformat, width, height); + if(samples >= 1) + { + GLint realSamples = 0; + GL.glGetNamedRenderbufferParameterivEXT(renderbuffer.name, eGL_RENDERBUFFER_SAMPLES, + &realSamples); + + if(realSamples > samples) + { + RDCDEBUG("Renderbuffer requested %d samples, but got %d samples", samples, realSamples); + samples = realSamples; + } + } + + texDetails.samples = RDCMAX(1, samples); + if(internalformat == eGL_DEPTH_COMPONENT || internalformat == eGL_DEPTH_STENCIL || internalformat == eGL_STENCIL || internalformat == eGL_STENCIL_INDEX) {