From 7ea5d1ed7dd883cefe3ab489740616cdfb90dcca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Thu, 7 Mar 2024 11:35:29 -0800 Subject: [PATCH] anv: Skip cmd_buffer_emit_bt_pool_base_address() in blitter and video engines MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Blitter and video engines don't support PIPE_CONTROL and 3DSTATE_BINDING_TABLE_POOL_ALLOC. I'm not 100% sure if something else should be called instead but this is doing the same as cmd_buffer_emit_state_base_address() and this fixes the test that was crashing in unreachable("Trying to emit unsupported PIPE_CONTROL command."); Fixes: dEQP-VK.pipeline.monolithic.timestamp.misc_tests.two_cmd_buffers_secondary_transfer_queue_with_availability_bit Reviewed-by: Lionel Landwerlin Signed-off-by: José Roberto de Souza Part-of: --- src/intel/vulkan/anv_private.h | 7 +++++++ src/intel/vulkan/genX_cmd_buffer.c | 3 +++ 2 files changed, 10 insertions(+) diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index a125876e0de..c44d22d9ba1 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -3993,6 +3993,13 @@ anv_cmd_buffer_is_blitter_queue(const struct anv_cmd_buffer *cmd_buffer) return queue_family->engine_class == INTEL_ENGINE_CLASS_COPY; } +static inline bool +anv_cmd_buffer_is_render_or_compute_queue(const struct anv_cmd_buffer *cmd_buffer) +{ + return anv_cmd_buffer_is_render_queue(cmd_buffer) || + anv_cmd_buffer_is_compute_queue(cmd_buffer); +} + static inline struct anv_address anv_cmd_buffer_dynamic_state_address(struct anv_cmd_buffer *cmd_buffer, struct anv_state state) diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 7be1dcdaf92..207303319e2 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -402,6 +402,9 @@ genX(cmd_buffer_emit_state_base_address)(struct anv_cmd_buffer *cmd_buffer) void genX(cmd_buffer_emit_bt_pool_base_address)(struct anv_cmd_buffer *cmd_buffer) { + if (!anv_cmd_buffer_is_render_or_compute_queue(cmd_buffer)) + return; + /* If we are emitting a new state base address we probably need to re-emit * binding tables. */