summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2019-01-23 16:54:28 -0500
committerMarek Olšák <[email protected]>2019-02-04 18:46:25 -0500
commita03ecbaeec91554988299e113d2f718e4c94ccd3 (patch)
treeabc96ec73e6ddb4f46617df6ae8f04720b6a86a0
parent984fd73515270fbc9c934ccad63a9d6a958b4b04 (diff)
radeonsi: handle render_condition_enable in si_compute_clear_render_target
-rw-r--r--src/gallium/drivers/radeonsi/si_clear.c3
-rw-r--r--src/gallium/drivers/radeonsi/si_compute_blit.c5
-rw-r--r--src/gallium/drivers/radeonsi/si_pipe.h3
3 files changed, 8 insertions, 3 deletions
diff --git a/src/gallium/drivers/radeonsi/si_clear.c b/src/gallium/drivers/radeonsi/si_clear.c
index cac979733ed..a2f34c79104 100644
--- a/src/gallium/drivers/radeonsi/si_clear.c
+++ b/src/gallium/drivers/radeonsi/si_clear.c
@@ -683,7 +683,8 @@ static void si_clear_render_target(struct pipe_context *ctx,
struct si_texture *sdst = (struct si_texture*)dst->texture;
if (dst->texture->nr_samples <= 1 && !sdst->dcc_offset) {
- si_compute_clear_render_target(ctx, dst, color, dstx, dsty, width, height);
+ si_compute_clear_render_target(ctx, dst, color, dstx, dsty, width,
+ height, render_condition_enabled);
return;
}
diff --git a/src/gallium/drivers/radeonsi/si_compute_blit.c b/src/gallium/drivers/radeonsi/si_compute_blit.c
index f06497f4dac..1ea0d7517df 100644
--- a/src/gallium/drivers/radeonsi/si_compute_blit.c
+++ b/src/gallium/drivers/radeonsi/si_compute_blit.c
@@ -432,7 +432,8 @@ void si_compute_clear_render_target(struct pipe_context *ctx,
struct pipe_surface *dstsurf,
const union pipe_color_union *color,
unsigned dstx, unsigned dsty,
- unsigned width, unsigned height)
+ unsigned width, unsigned height,
+ bool render_condition_enabled)
{
struct si_context *sctx = (struct si_context *)ctx;
unsigned num_layers = dstsurf->u.tex.last_layer - dstsurf->u.tex.first_layer + 1;
@@ -452,6 +453,8 @@ void si_compute_clear_render_target(struct pipe_context *ctx,
}
si_compute_internal_begin(sctx);
+ sctx->render_cond_force_off = !render_condition_enabled;
+
sctx->flags |= SI_CONTEXT_CS_PARTIAL_FLUSH |
si_get_flush_flags(sctx, SI_COHERENCY_SHADER, L2_STREAM);
si_make_CB_shader_coherent(sctx, dstsurf->texture->nr_samples, true);
diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h
index 4f2845854c3..ff36b3272b4 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.h
+++ b/src/gallium/drivers/radeonsi/si_pipe.h
@@ -1185,7 +1185,8 @@ void si_compute_clear_render_target(struct pipe_context *ctx,
struct pipe_surface *dstsurf,
const union pipe_color_union *color,
unsigned dstx, unsigned dsty,
- unsigned width, unsigned height);
+ unsigned width, unsigned height,
+ bool render_condition_enabled);
void si_init_compute_blit_functions(struct si_context *sctx);
/* si_cp_dma.c */