From e538a380172195e254fe262a0effe757e378cb0d Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Fri, 7 Mar 2025 13:46:37 -0800 Subject: [PATCH] lavapipe: fix accel struct device query copy This change: 1. use vulkan flags instead of pipe query flags 2. set the avail bit when requested Fixes: a26f96ed3de ("lavapipe: Handle accel struct queries in handle_copy_query_pool_results") Signed-off-by: Yiwei Zhang Reviewed-by: Mike Blumenkrantz Part-of: --- src/gallium/frontends/lavapipe/lvp_execute.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/frontends/lavapipe/lvp_execute.c b/src/gallium/frontends/lavapipe/lvp_execute.c index b5eea4d0b40..db23dfb5485 100644 --- a/src/gallium/frontends/lavapipe/lvp_execute.c +++ b/src/gallium/frontends/lavapipe/lvp_execute.c @@ -2965,14 +2965,18 @@ static void handle_copy_query_pool_results(struct vk_cmd_queue_entry *cmd, uint8_t *map = pipe_buffer_map(state->pctx, lvp_buffer_from_handle(copycmd->dst_buffer)->bo, PIPE_MAP_WRITE, &transfer); map += offset; - if (flags & VK_QUERY_RESULT_64_BIT) { + if (copycmd->flags & VK_QUERY_RESULT_64_BIT) { uint64_t *dst = (uint64_t *)map; uint64_t *src = (uint64_t *)pool->data; *dst = src[i]; + if (copycmd->flags & VK_QUERY_RESULT_WITH_AVAILABILITY_BIT) + *(dst + 1) = 1; } else { uint32_t *dst = (uint32_t *)map; uint64_t *src = (uint64_t *)pool->data; *dst = (uint32_t) (src[i] & UINT32_MAX); + if (copycmd->flags & VK_QUERY_RESULT_WITH_AVAILABILITY_BIT) + *(dst + 1) = 1; } state->pctx->buffer_unmap(state->pctx, transfer);