From 09501fe5a7d049d6850c5e4e88d76d77f00c33f5 Mon Sep 17 00:00:00 2001 From: Constantine Shablya Date: Tue, 14 Feb 2023 15:03:51 +0200 Subject: [PATCH] anv,hasvk: flush what UNIFORM_READ flushes on SHADER_READ Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8287 Cc: mesa-stable Reviewed-by: Lionel Landwerlin Part-of: --- src/intel/vulkan/anv_private.h | 12 +++++++++++- src/intel/vulkan_hasvk/anv_private.h | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 279964119cd..8e90e42adef 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -2275,7 +2275,6 @@ anv_pipe_invalidate_bits_for_access_flags(struct anv_device *device, pipe_bits |= ANV_PIPE_UNTYPED_DATAPORT_CACHE_FLUSH_BIT; } break; - case VK_ACCESS_2_SHADER_READ_BIT: case VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT: case VK_ACCESS_2_TRANSFER_READ_BIT: case VK_ACCESS_2_SHADER_SAMPLED_READ_BIT: @@ -2284,6 +2283,17 @@ anv_pipe_invalidate_bits_for_access_flags(struct anv_device *device, */ pipe_bits |= ANV_PIPE_TEXTURE_CACHE_INVALIDATE_BIT; break; + case VK_ACCESS_2_SHADER_READ_BIT: + /* Same as VK_ACCESS_2_UNIFORM_READ_BIT and + * VK_ACCESS_2_SHADER_SAMPLED_READ_BIT cases above + */ + pipe_bits |= ANV_PIPE_CONSTANT_CACHE_INVALIDATE_BIT | + ANV_PIPE_TEXTURE_CACHE_INVALIDATE_BIT; + if (!device->physical->compiler->indirect_ubos_use_sampler) { + pipe_bits |= ANV_PIPE_HDC_PIPELINE_FLUSH_BIT; + pipe_bits |= ANV_PIPE_UNTYPED_DATAPORT_CACHE_FLUSH_BIT; + } + break; case VK_ACCESS_2_MEMORY_READ_BIT: /* Transitioning a buffer for generic read, invalidate all the * caches. diff --git a/src/intel/vulkan_hasvk/anv_private.h b/src/intel/vulkan_hasvk/anv_private.h index f67ec5dca4d..a5febdfe8a9 100644 --- a/src/intel/vulkan_hasvk/anv_private.h +++ b/src/intel/vulkan_hasvk/anv_private.h @@ -2198,7 +2198,6 @@ anv_pipe_invalidate_bits_for_access_flags(struct anv_device *device, pipe_bits |= ANV_PIPE_UNTYPED_DATAPORT_CACHE_FLUSH_BIT; } break; - case VK_ACCESS_2_SHADER_READ_BIT: case VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT: case VK_ACCESS_2_TRANSFER_READ_BIT: case VK_ACCESS_2_SHADER_SAMPLED_READ_BIT: @@ -2207,6 +2206,17 @@ anv_pipe_invalidate_bits_for_access_flags(struct anv_device *device, */ pipe_bits |= ANV_PIPE_TEXTURE_CACHE_INVALIDATE_BIT; break; + case VK_ACCESS_2_SHADER_READ_BIT: + /* Same as VK_ACCESS_2_UNIFORM_READ_BIT and + * VK_ACCESS_2_SHADER_SAMPLED_READ_BIT cases above + */ + pipe_bits |= ANV_PIPE_CONSTANT_CACHE_INVALIDATE_BIT | + ANV_PIPE_TEXTURE_CACHE_INVALIDATE_BIT; + if (!device->physical->compiler->indirect_ubos_use_sampler) { + pipe_bits |= ANV_PIPE_HDC_PIPELINE_FLUSH_BIT; + pipe_bits |= ANV_PIPE_UNTYPED_DATAPORT_CACHE_FLUSH_BIT; + } + break; case VK_ACCESS_2_MEMORY_READ_BIT: /* Transitioning a buffer for generic read, invalidate all the * caches.