diff options
Diffstat (limited to 'mesalib/src/mesa/state_tracker/st_cb_texture.c')
-rw-r--r-- | mesalib/src/mesa/state_tracker/st_cb_texture.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/mesalib/src/mesa/state_tracker/st_cb_texture.c b/mesalib/src/mesa/state_tracker/st_cb_texture.c index 9d824b46c..88f62902b 100644 --- a/mesalib/src/mesa/state_tracker/st_cb_texture.c +++ b/mesalib/src/mesa/state_tracker/st_cb_texture.c @@ -795,6 +795,11 @@ decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level, return; } + /* Disable conditional rendering. */ + if (st->render_condition) { + pipe->render_condition(pipe, NULL, 0); + } + /* blit/render/decompress */ util_blit_pixels_tex(st->blit, src_view, /* pipe_resource (src) */ @@ -806,6 +811,12 @@ decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level, 0.0, /* z */ PIPE_TEX_MIPFILTER_NEAREST); + /* Restore conditional rendering state. */ + if (st->render_condition) { + pipe->render_condition(pipe, st->render_condition, + st->condition_mode); + } + /* map the dst_surface so we can read from it */ tex_xfer = pipe_get_transfer(pipe, dst_texture, 0, 0, @@ -1556,6 +1567,11 @@ st_copy_texsubimage(struct gl_context *ctx, srcY1 = srcY0 + height; } + /* Disable conditional rendering. */ + if (st->render_condition) { + pipe->render_condition(pipe, NULL, 0); + } + util_blit_pixels_writemask(st->blit, strb->texture, strb->surface->u.tex.level, @@ -1567,6 +1583,13 @@ st_copy_texsubimage(struct gl_context *ctx, destX + width, destY + height, 0.0, PIPE_TEX_MIPFILTER_NEAREST, format_writemask); + + /* Restore conditional rendering state. */ + if (st->render_condition) { + pipe->render_condition(pipe, st->render_condition, + st->condition_mode); + } + use_fallback = GL_FALSE; } |