radv/gfx10: invalidate everything in L2 when shaders read data
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 12 Jul 2019 11:59:08 +0000 (13:59 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 12 Jul 2019 12:08:12 +0000 (14:08 +0200)
This includes metadata as well. On GFX10, we have to invalidate
the L2 metadata cache when shaders read DCC.

Note that we still have to implement GFX10 coherency by
introducing INV_L2_METATADA but for now just flush L2.

This fixes a corruption with DCC and Talos.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_cmd_buffer.c

index dacd8c8d80369ecffd2bd652648d8f26779ecb52..6342548c1f5b8b5e86f18830ba8eff00f2c584d9 100644 (file)
@@ -2688,7 +2688,9 @@ radv_dst_access_flush(struct radv_cmd_buffer *cmd_buffer,
                if (!radv_image_has_htile(image))
                        flush_DB_meta = false;
 
-               if (cmd_buffer->device->physical_device->rad_info.chip_class >= GFX9) {
+               /* TODO: implement shader coherent for GFX10 */
+
+               if (cmd_buffer->device->physical_device->rad_info.chip_class == GFX9) {
                        if (image->info.samples == 1 &&
                            (image->usage & (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
                                             VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)) &&