Revert "zink: when performing an implicit reset, sync qbos"

this appeared to fix some sort of bug related to preserving qbo data,
but really there shouldn't have been any sort of bug anyway since the qbos
all get read back, and thus the data is already preserved

instead, it just preserved the query id, which overloaded the pools and crashed

This reverts commit 79790e276f.

fixes #5669

Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14397>
(cherry picked from commit 2fa1bf60d6)
This commit is contained in:
Mike Blumenkrantz 2022-01-04 13:06:38 -05:00 committed by Eric Engestrom
parent 48174fea16
commit bd8a5ae4d8
2 changed files with 1 additions and 21 deletions

View file

@ -5197,7 +5197,7 @@
"description": "Revert \"zink: when performing an implicit reset, sync qbos\"",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "79790e276f61f23217badd80c51add755dfe18ac"
},

View file

@ -183,22 +183,6 @@ is_bool_query(struct zink_query *query)
query->type == PIPE_QUERY_GPU_FINISHED;
}
static void
qbo_sync_from_prev(struct zink_context *ctx, struct zink_query *query, unsigned id_offset, unsigned last_start)
{
assert(id_offset);
struct zink_query_buffer *prev = list_last_entry(&query->buffers, struct zink_query_buffer, list);
unsigned result_size = get_num_results(query->type) * sizeof(uint64_t);
/* this is get_buffer_offset() but without the zink_query object */
unsigned qbo_offset = last_start * get_num_results(query->type) * sizeof(uint64_t);
query->curr_query = id_offset;
query->curr_qbo->num_results = id_offset;
zink_copy_buffer(ctx, zink_resource(query->curr_qbo->buffer), zink_resource(prev->buffer), 0,
qbo_offset,
id_offset * result_size);
}
static bool
qbo_append(struct pipe_screen *screen, struct zink_query *query)
{
@ -577,8 +561,6 @@ copy_results_to_buffer(struct zink_context *ctx, struct zink_query *query, struc
static void
reset_pool(struct zink_context *ctx, struct zink_batch *batch, struct zink_query *q)
{
unsigned last_start = q->last_start;
unsigned id_offset = q->curr_query - q->last_start;
/* This command must only be called outside of a render pass instance
*
* - vkCmdResetQueryPool spec
@ -607,8 +589,6 @@ reset_pool(struct zink_context *ctx, struct zink_batch *batch, struct zink_query
reset_qbo(q);
else
debug_printf("zink: qbo alloc failed on reset!");
if (id_offset)
qbo_sync_from_prev(ctx, q, id_offset, last_start);
}
static inline unsigned