X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fclear.c;h=a1bb36efe241e0508b6fd09dd917f43501713082;hb=34953f8907fddd0d2b27d276580a1d3223047987;hp=92f69ab9b5981dc63451da4ec84516426ecd771c;hpb=a663aa2a3793eaaead9332cdb315c31389254276;p=mesa.git diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c index 92f69ab9b59..a1bb36efe24 100644 --- a/src/mesa/main/clear.c +++ b/src/mesa/main/clear.c @@ -267,6 +267,14 @@ make_color_buffer_mask(struct gl_context *ctx, GLint drawbuffer) mask |= BUFFER_BIT_FRONT_RIGHT; break; case GL_BACK: + /* For GLES contexts with a single buffered configuration, we actually + * only have a front renderbuffer, so any clear calls to GL_BACK should + * affect that buffer. See draw_buffer_enum_to_bitmask for details. + */ + if (_mesa_is_gles(ctx)) + if (!ctx->DrawBuffer->Visual.doubleBufferMode) + if (att[BUFFER_FRONT_LEFT].Renderbuffer) + mask |= BUFFER_BIT_FRONT_LEFT; if (att[BUFFER_BACK_LEFT].Renderbuffer) mask |= BUFFER_BIT_BACK_LEFT; if (att[BUFFER_BACK_RIGHT].Renderbuffer) @@ -646,12 +654,12 @@ _mesa_ClearBufferfi(GLenum buffer, GLint drawbuffer, */ void GLAPIENTRY _mesa_ClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, - GLfloat depth, GLint stencil) + GLint drawbuffer, GLfloat depth, GLint stencil) { GLint oldfb; _mesa_GetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &oldfb); _mesa_BindFramebuffer(GL_DRAW_FRAMEBUFFER, framebuffer); - _mesa_ClearBufferfi(buffer, 0, depth, stencil); + _mesa_ClearBufferfi(buffer, drawbuffer, depth, stencil); _mesa_BindFramebuffer(GL_DRAW_FRAMEBUFFER, (GLuint) oldfb); }