anv: Do an end-of-pipe sync before updating AUX table entries
authorJason Ekstrand <jason@jlekstrand.net>
Tue, 17 Mar 2020 03:58:53 +0000 (22:58 -0500)
committerMarge Bot <eric+marge@anholt.net>
Tue, 17 Mar 2020 16:38:50 +0000 (16:38 +0000)
We've found in GL that an actual end-of-pipe sync is required before
invalidating the aux tables and that a simple CS stall is insufficient.
If we're about to modify the actual AUX table entries from the GPU, we
should definitely make sure it's stopped dead before we do so.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4206>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4206>

src/intel/vulkan/genX_cmd_buffer.c

index a37bc96b216cf16d5ff08a856536f0d474ab2e4a..0d78b1c0947564cabf8e6db2a8c66a5ac8b06a98 100644 (file)
@@ -1021,7 +1021,7 @@ anv_image_init_aux_tt(struct anv_cmd_buffer *cmd_buffer,
     * with not having this stall in some cases if we were really careful but
     * it's better to play it safe.  Full stall the GPU.
     */
-   cmd_buffer->state.pending_pipe_bits |= ANV_PIPE_CS_STALL_BIT;
+   cmd_buffer->state.pending_pipe_bits |= ANV_PIPE_END_OF_PIPE_SYNC_BIT;
    genX(cmd_buffer_apply_pipe_flushes)(cmd_buffer);
 
    struct gen_mi_builder b;