OSDN Git Service

radeonsi: apply the double EVENT_WRITE_EOP workaround to VI as well
authorMarek Olšák <marek.olsak@amd.com>
Tue, 29 Nov 2016 22:35:09 +0000 (23:35 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 1 Dec 2016 01:16:51 +0000 (02:16 +0100)
Internal docs don't mention it, but they also don't mention that the bug
has been fixed (like other CI bugs fixed in VI).

Vulkan does this too.

v2: also update r600_gfx_write_fence_dwords

Cc: 13.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> (v1)
src/gallium/drivers/radeon/r600_pipe_common.c

index 15e8a12..0b5c6dc 100644 (file)
@@ -102,7 +102,8 @@ void r600_gfx_write_event_eop(struct r600_common_context *ctx,
                      EVENT_INDEX(5) |
                      event_flags;
 
-       if (ctx->chip_class == CIK) {
+       if (ctx->chip_class == CIK ||
+           ctx->chip_class == VI) {
                /* Two EOP events are required to make all engines go idle
                 * (and optional cache flushes executed) before the timestamp
                 * is written.
@@ -131,7 +132,8 @@ unsigned r600_gfx_write_fence_dwords(struct r600_common_screen *screen)
 {
        unsigned dwords = 6;
 
-       if (screen->chip_class == CIK)
+       if (screen->chip_class == CIK ||
+           screen->chip_class == VI)
                dwords *= 2;
 
        if (!screen->info.has_virtual_memory)