From e20aebb83c5af9ddf11167c39f9b76434e1e7083 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 24 Mar 2021 18:12:03 -0400 Subject: [PATCH] lavapipe: use the passed offset for CmdCopyQueryPoolResults this avoids overwriting buffer[0] on every copy Fixes: b38879f8c5f ("vallium: initial import of the vulkan frontend") Reviewed-by: Dave Airlie Part-of: --- src/gallium/frontends/lavapipe/lvp_execute.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gallium/frontends/lavapipe/lvp_execute.c b/src/gallium/frontends/lavapipe/lvp_execute.c index 384a6658c0f..19a743e68d3 100644 --- a/src/gallium/frontends/lavapipe/lvp_execute.c +++ b/src/gallium/frontends/lavapipe/lvp_execute.c @@ -2333,7 +2333,7 @@ static void handle_copy_query_pool_results(struct lvp_cmd_buffer_entry *cmd, struct lvp_query_pool *pool = copycmd->pool; for (unsigned i = copycmd->first_query; i < copycmd->first_query + copycmd->query_count; i++) { - unsigned offset = copycmd->dst->offset + (copycmd->stride * (i - copycmd->first_query)); + unsigned offset = copycmd->dst_offset + copycmd->dst->offset + (copycmd->stride * (i - copycmd->first_query)); if (pool->queries[i]) { if (copycmd->flags & VK_QUERY_RESULT_WITH_AVAILABILITY_BIT) state->pctx->get_query_result_resource(state->pctx, @@ -2370,7 +2370,8 @@ static void handle_copy_query_pool_results(struct lvp_cmd_buffer_entry *cmd, uint32_t *map; struct pipe_box box = {0}; - box.width = copycmd->stride * copycmd->query_count; + box.x = offset; + box.width = copycmd->stride; box.height = 1; box.depth = 1; map = state->pctx->transfer_map(state->pctx,