radv: reset the image's predicate after a color decompression pass
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 18 Apr 2018 12:34:55 +0000 (14:34 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 2 Jul 2018 08:43:33 +0000 (10:43 +0200)
After performing a fast-clear eliminate, a FMASK decompress,
or a DCC decompress, we can reset the predicate to FALSE.

With that, the GPU should be able to skip unnecessary color
decompression passes.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_meta_fast_clear.c

index 8ba0a932c0efa9c67bbeb520277127450b676709..136557080d95a288c6576cc8b598d84937957426 100644 (file)
@@ -671,6 +671,11 @@ radv_emit_color_decompress(struct radv_cmd_buffer *cmd_buffer,
        if (radv_image_has_dcc(image)) {
                cmd_buffer->state.predicating = false;
                radv_emit_set_predication_state_from_image(cmd_buffer, image, false);
+
+               /* Clear the image's fast-clear eliminate predicate because
+                * FMASK and DCC also imply a fast-clear eliminate.
+                */
+               radv_set_dcc_need_cmask_elim_pred(cmd_buffer, image, false);
        }
        radv_meta_restore(&saved_state, cmd_buffer);
 }