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)
committerEmil Velikov <emil.l.velikov@gmail.com>
Wed, 14 Dec 2016 19:03:11 +0000 (19:03 +0000)
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)
(cherry picked from commit bacf9b4e735cc9d96acd2d507dfb2fc8831966a3)

src/gallium/drivers/radeon/r600_pipe_common.c

index 3dbcbc6..f62bbf2 100644 (file)
@@ -85,7 +85,8 @@ void r600_gfx_write_fence(struct r600_common_context *ctx, struct r600_resource
 {
        struct radeon_winsys_cs *cs = ctx->gfx.cs;
 
-       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.
@@ -114,7 +115,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)