summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2016-08-09 00:42:14 +0200
committerMarek Olšák <[email protected]>2016-08-10 01:10:21 +0200
commit7df15389afea467163b8edc09a61bf1f9b3000fa (patch)
treea3efbfb9db11a28e5de87387fefdaacc702b51c0
parenta909210131494a6a131855d7d344b61b81fbf40e (diff)
gallium/radeon: handle render_condition_enable for clear_rt/ds
Reviewed-by: Nicolai Hähnle <[email protected]>
-rw-r--r--src/gallium/drivers/r300/r300_blit.c6
-rw-r--r--src/gallium/drivers/r600/r600_blit.c6
-rw-r--r--src/gallium/drivers/radeonsi/si_blit.c6
3 files changed, 12 insertions, 6 deletions
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);