diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 391c9ec4265..54b430b5b29 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -1904,22 +1904,19 @@ can_use_resource_barrier(const struct intel_device_info *devinfo, engine_class != INTEL_ENGINE_CLASS_COMPUTE) return false; - /* Wa_18039014283: + /* Split barriers (VkEvent) are tricky to support with resource barrier. * - * RESOURCE_BARRIER instructions with a Type=Signal, SignalStage=GPGPU are - * not functional. Since the main use case for this is VkEvent and VkEvent - * might not have exactly matching informations on both signal/wait sides - * (see - * https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdWaitEvents.html), - * this is somewhat unusable. + * From Bspec 56054 (RESOURCE_BARRIER_BODY): + * "Split barrier pairs need to have identical values for all + * fields other than the barrier type." * - * We're also seeing other problems with this, for example with - * dEQP-VK.synchronization2.op.single_queue.event.write_blit_image_read_copy_image_to_buffer.image_128_r32_uint - * So HW might be more broken than expected. + * Vulkan does not require signal and wait barriers to have identical values, see: + * https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdWaitEvents.html + * + * This rule handles also Wa_18039014283. */ - if (intel_needs_workaround(devinfo, 18039014283) && - (!anv_address_is_null(signal_addr) || - !anv_address_is_null(wait_addr))) + if (!anv_address_is_null(signal_addr) || + !anv_address_is_null(wait_addr)) return false; /* The HW doesn't support signaling from the top of pipeline */