mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 19:10:14 +01:00
zink: deduplicate some query result code
no functional changes, just a small simplification Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7195>
This commit is contained in:
parent
b6a0309f48
commit
a8785579e0
1 changed files with 16 additions and 26 deletions
|
|
@ -194,33 +194,24 @@ get_query_result(struct pipe_context *pctx,
|
|||
uint64_t results[NUM_QUERIES * 2];
|
||||
memset(results, 0, sizeof(results));
|
||||
int num_results = query->curr_query - query->last_checked_query;
|
||||
if (query->vkqtype == VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT) {
|
||||
/* this query emits 2 values */
|
||||
assert(query->curr_query <= ARRAY_SIZE(results) / 2);
|
||||
VkResult status = vkGetQueryPoolResults(screen->dev, query->query_pool,
|
||||
query->last_checked_query, num_results,
|
||||
sizeof(results),
|
||||
results,
|
||||
sizeof(uint64_t),
|
||||
flags);
|
||||
if (status != VK_SUCCESS)
|
||||
return false;
|
||||
/* multiply for correct looping behavior below */
|
||||
num_results *= 2;
|
||||
} else {
|
||||
assert(query->curr_query <= ARRAY_SIZE(results));
|
||||
VkResult status = vkGetQueryPoolResults(screen->dev, query->query_pool,
|
||||
query->last_checked_query, num_results,
|
||||
sizeof(results),
|
||||
results,
|
||||
sizeof(uint64_t),
|
||||
flags);
|
||||
if (status != VK_SUCCESS)
|
||||
return false;
|
||||
}
|
||||
int result_size = 1;
|
||||
/* these query types emit 2 values */
|
||||
if (query->vkqtype == VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT)
|
||||
result_size = 2;
|
||||
|
||||
/* verify that we have an in-bounds number of results pending */
|
||||
assert(query->curr_query <= ARRAY_SIZE(results) / result_size);
|
||||
VkResult status = vkGetQueryPoolResults(screen->dev, query->query_pool,
|
||||
query->last_checked_query, num_results,
|
||||
sizeof(results),
|
||||
results,
|
||||
sizeof(uint64_t),
|
||||
flags);
|
||||
if (status != VK_SUCCESS)
|
||||
return false;
|
||||
|
||||
uint64_t last_val = 0;
|
||||
for (int i = 0; i < num_results; ++i) {
|
||||
for (int i = 0; i < num_results * result_size; i += result_size) {
|
||||
switch (query->type) {
|
||||
case PIPE_QUERY_OCCLUSION_PREDICATE:
|
||||
case PIPE_QUERY_OCCLUSION_PREDICATE_CONSERVATIVE:
|
||||
|
|
@ -252,7 +243,6 @@ get_query_result(struct pipe_context *pctx,
|
|||
* - from VK_EXT_transform_feedback spec
|
||||
*/
|
||||
result->u64 += results[i];
|
||||
i++;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue