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) {