From febac6d9bd239df31207c657f6396cf63a7d9bf4 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Fri, 10 Oct 2025 17:00:47 +0300 Subject: [PATCH] anv: fix query copy with shaders First this is only possible on RCS or CCS engines. Second if on CCS, we need to use a compute shader, 3D won't work. Signed-off-by: Lionel Landwerlin Cc: mesa-stable Reviewed-by: Ivan Briano Part-of: --- src/intel/vulkan/genX_query.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/intel/vulkan/genX_query.c b/src/intel/vulkan/genX_query.c index 529c007f198..2c4c13d9ecd 100644 --- a/src/intel/vulkan/genX_query.c +++ b/src/intel/vulkan/genX_query.c @@ -1859,8 +1859,12 @@ copy_query_results_with_shader(struct anv_cmd_buffer *cmd_buffer, /* If this is the first command in the batch buffer, make sure we have * consistent pipeline mode. */ - if (cmd_buffer->state.current_pipeline == UINT32_MAX) - genX(flush_pipeline_select_3d)(cmd_buffer); + if (cmd_buffer->state.current_pipeline == UINT32_MAX) { + if (anv_cmd_buffer_is_render_queue(cmd_buffer)) + genX(flush_pipeline_select_3d)(cmd_buffer); + else + genX(flush_pipeline_select_gpgpu)(cmd_buffer); + } if ((cmd_buffer->state.queries.buffer_write_bits | cmd_buffer->state.queries.clear_bits) & ANV_QUERY_WRITES_RT_FLUSH) @@ -2029,7 +2033,8 @@ void genX(CmdCopyQueryPoolResults)( struct anv_device *device = cmd_buffer->device; struct anv_physical_device *pdevice = device->physical; - if (queryCount > pdevice->instance->query_copy_with_shader_threshold) { + if (queryCount > pdevice->instance->query_copy_with_shader_threshold && + anv_cmd_buffer_is_render_or_compute_queue(cmd_buffer)) { copy_query_results_with_shader(cmd_buffer, pool, anv_address_add(buffer->address, destOffset),