diff options
author | Marek Olšák <[email protected]> | 2011-05-29 17:52:29 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2011-05-30 10:50:58 +0200 |
commit | ccfeb90b757ed2b2948bbe06fd4f4a15628639f9 (patch) | |
tree | 7f188828eb994bafc6511af714ea60c7087dee22 | |
parent | c0277d953975ddc232aa34a101955d8314c99b96 (diff) |
st/mesa: BlitFramebuffer should not be killed by conditional rendering
NOTE: This is a candidate for the 7.10 branch.
Reviewed-by: Brian Paul <[email protected]>
-rw-r--r-- | src/mesa/state_tracker/st_cb_blit.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/mesa/state_tracker/st_cb_blit.c b/src/mesa/state_tracker/st_cb_blit.c index 25c95c7b9dc..416be194d11 100644 --- a/src/mesa/state_tracker/st_cb_blit.c +++ b/src/mesa/state_tracker/st_cb_blit.c @@ -109,6 +109,11 @@ st_BlitFramebuffer(struct gl_context *ctx, dstY1 = tmp; } + /* Disable conditional rendering. */ + if (st->render_condition) { + st->pipe->render_condition(st->pipe, NULL, 0); + } + if (mask & GL_COLOR_BUFFER_BIT) { struct gl_renderbuffer_attachment *srcAtt = &readFB->Attachment[readFB->_ColorReadBufferIndex]; @@ -121,7 +126,7 @@ st_BlitFramebuffer(struct gl_context *ctx, struct pipe_surface *dstSurf = dstRb->surface; if (!srcObj->pt) - return; + goto done; util_blit_pixels(st->blit, srcObj->pt, srcAtt->TextureLevel, srcX0, srcY0, srcX1, srcY1, @@ -199,6 +204,13 @@ st_BlitFramebuffer(struct gl_context *ctx, } } } + +done: + /* Restore conditional rendering state. */ + if (st->render_condition) { + st->pipe->render_condition(st->pipe, st->render_condition, + st->condition_mode); + } } |