diff options
author | marha <marha@users.sourceforge.net> | 2012-01-13 17:04:47 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-01-13 17:04:47 +0100 |
commit | e2e1bdced7e09e39fed613dae1f2f3096cb18118 (patch) | |
tree | 63c7066c79d1053c7656b6175e22e2ced6f11e01 /mesalib/src/mesa/main/clear.c | |
parent | cc96d00cae473f472e371328ce8dc572ad258073 (diff) | |
parent | 5cfbe97cd797d8f78ece208bb5114704b83d8aab (diff) | |
download | vcxsrv-e2e1bdced7e09e39fed613dae1f2f3096cb18118.tar.gz vcxsrv-e2e1bdced7e09e39fed613dae1f2f3096cb18118.tar.bz2 vcxsrv-e2e1bdced7e09e39fed613dae1f2f3096cb18118.zip |
Merge remote-tracking branch 'origin/released'
Conflicts:
libxcb/src/xcb_auth.c
libxcb/src/xcb_conn.c
libxcb/src/xcb_out.c
libxcb/src/xcb_util.c
xorg-server/dix/dispatch.c
xorg-server/include/dixstruct.h
xorg-server/include/misc.h
xorg-server/os/connection.c
Diffstat (limited to 'mesalib/src/mesa/main/clear.c')
-rw-r--r-- | mesalib/src/mesa/main/clear.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/mesalib/src/mesa/main/clear.c b/mesalib/src/mesa/main/clear.c index bd5c01224..e4df120d6 100644 --- a/mesalib/src/mesa/main/clear.c +++ b/mesalib/src/mesa/main/clear.c @@ -338,7 +338,7 @@ _mesa_ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) drawbuffer); return; } - else if (!ctx->RasterDiscard) { + else if (ctx->DrawBuffer->Attachment[BUFFER_STENCIL].Renderbuffer && !ctx->RasterDiscard) { /* Save current stencil clear value, set to 'value', do the * stencil clear and restore the clear value. * XXX in the future we may have a new ctx->Driver.ClearBuffer() @@ -513,7 +513,7 @@ _mesa_ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) drawbuffer); return; } - else if (!ctx->RasterDiscard) { + else if (ctx->DrawBuffer->Attachment[BUFFER_DEPTH].Renderbuffer && !ctx->RasterDiscard) { /* Save current depth clear value, set to 'value', do the * depth clear and restore the clear value. * XXX in the future we may have a new ctx->Driver.ClearBuffer() @@ -592,6 +592,8 @@ _mesa_ClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) { GET_CURRENT_CONTEXT(ctx); + GLbitfield mask = 0; + ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); FLUSH_CURRENT(ctx, 0); @@ -622,7 +624,12 @@ _mesa_ClearBufferfi(GLenum buffer, GLint drawbuffer, _mesa_update_state( ctx ); } - { + if (ctx->DrawBuffer->Attachment[BUFFER_DEPTH].Renderbuffer) + mask |= BUFFER_BIT_DEPTH; + if (ctx->DrawBuffer->Attachment[BUFFER_STENCIL].Renderbuffer) + mask |= BUFFER_BIT_STENCIL; + + if (mask) { /* save current clear values */ const GLclampd clearDepthSave = ctx->Depth.Clear; const GLuint clearStencilSave = ctx->Stencil.Clear; @@ -636,7 +643,7 @@ _mesa_ClearBufferfi(GLenum buffer, GLint drawbuffer, ctx->Driver.ClearStencil(ctx, stencil); /* clear buffers */ - ctx->Driver.Clear(ctx, BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL); + ctx->Driver.Clear(ctx, mask); /* restore */ ctx->Depth.Clear = clearDepthSave; |