radeonsi: handle render_condition_enable in si_compute_clear_render_target
authorMarek Olšák <marek.olsak@amd.com>
Wed, 23 Jan 2019 21:54:28 +0000 (16:54 -0500)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 4 Feb 2019 23:46:25 +0000 (18:46 -0500)
src/gallium/drivers/radeonsi/si_clear.c
src/gallium/drivers/radeonsi/si_compute_blit.c
src/gallium/drivers/radeonsi/si_pipe.h

index cac979733ed8cfa5a499f933384550e37c439e94..a2f34c79104271f372eff60ab56aaae113cf0182 100644 (file)
@@ -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;
        }
 
index f06497f4dacb33c01173ba621e8b1fdbddfde080..1ea0d7517dfd357ae4e954acbe09467322c5de83 100644 (file)
@@ -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);
index 4f2845854c302de30c560dbf7670561136fb51d1..ff36b3272b40fbc37eef4c9e47f29f7fc8bcd0bb 100644 (file)
@@ -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 */