From: Marek Olšák Date: Mon, 8 Aug 2016 22:42:14 +0000 (+0200) Subject: gallium/radeon: handle render_condition_enable for clear_rt/ds X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7df15389afea467163b8edc09a61bf1f9b3000fa;p=mesa.git gallium/radeon: handle render_condition_enable for clear_rt/ds Reviewed-by: Nicolai Hähnle --- diff --git a/src/gallium/drivers/r300/r300_blit.c b/src/gallium/drivers/r300/r300_blit.c index cfb3f6da220..b5c3ae5ac3b 100644 --- a/src/gallium/drivers/r300/r300_blit.c +++ b/src/gallium/drivers/r300/r300_blit.c @@ -435,7 +435,8 @@ static void r300_clear_render_target(struct pipe_context *pipe, { struct r300_context *r300 = r300_context(pipe); - r300_blitter_begin(r300, R300_CLEAR_SURFACE); + r300_blitter_begin(r300, R300_CLEAR_SURFACE | + (render_condition_enabled ? 0 : R300_IGNORE_RENDER_COND)); util_blitter_clear_render_target(r300->blitter, dst, color, dstx, dsty, width, height); r300_blitter_end(r300); @@ -462,7 +463,8 @@ static void r300_clear_depth_stencil(struct pipe_context *pipe, } /* XXX Do not decompress ZMask of the currently-set zbuffer. */ - r300_blitter_begin(r300, R300_CLEAR_SURFACE); + r300_blitter_begin(r300, R300_CLEAR_SURFACE | + (render_condition_enabled ? 0 : R300_IGNORE_RENDER_COND)); util_blitter_clear_depth_stencil(r300->blitter, dst, clear_flags, depth, stencil, dstx, dsty, width, height); r300_blitter_end(r300); diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index 327efc20a6e..adf616e6881 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -478,7 +478,8 @@ static void r600_clear_render_target(struct pipe_context *ctx, { struct r600_context *rctx = (struct r600_context *)ctx; - r600_blitter_begin(ctx, R600_CLEAR_SURFACE); + r600_blitter_begin(ctx, R600_CLEAR_SURFACE | + (render_condition_enabled ? 0 : R600_DISABLE_RENDER_COND)); util_blitter_clear_render_target(rctx->blitter, dst, color, dstx, dsty, width, height); r600_blitter_end(ctx); @@ -495,7 +496,8 @@ static void r600_clear_depth_stencil(struct pipe_context *ctx, { struct r600_context *rctx = (struct r600_context *)ctx; - r600_blitter_begin(ctx, R600_CLEAR_SURFACE); + r600_blitter_begin(ctx, R600_CLEAR_SURFACE | + (render_condition_enabled ? 0 : R600_DISABLE_RENDER_COND)); util_blitter_clear_depth_stencil(rctx->blitter, dst, clear_flags, depth, stencil, dstx, dsty, width, height); r600_blitter_end(ctx); diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c index ce13e97ca0a..f4bff6b5bb1 100644 --- a/src/gallium/drivers/radeonsi/si_blit.c +++ b/src/gallium/drivers/radeonsi/si_blit.c @@ -764,7 +764,8 @@ static void si_clear_render_target(struct pipe_context *ctx, { struct si_context *sctx = (struct si_context *)ctx; - si_blitter_begin(ctx, SI_CLEAR_SURFACE); + si_blitter_begin(ctx, SI_CLEAR_SURFACE | + (render_condition_enabled ? 0 : SI_DISABLE_RENDER_COND)); util_blitter_clear_render_target(sctx->blitter, dst, color, dstx, dsty, width, height); si_blitter_end(ctx); @@ -781,7 +782,8 @@ static void si_clear_depth_stencil(struct pipe_context *ctx, { struct si_context *sctx = (struct si_context *)ctx; - si_blitter_begin(ctx, SI_CLEAR_SURFACE); + si_blitter_begin(ctx, SI_CLEAR_SURFACE | + (render_condition_enabled ? 0 : SI_DISABLE_RENDER_COND)); util_blitter_clear_depth_stencil(sctx->blitter, dst, clear_flags, depth, stencil, dstx, dsty, width, height); si_blitter_end(ctx);