Module: Mesa Branch: master Commit: a8785579e00b4f94f814ccc03e039af0d17320a7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a8785579e00b4f94f814ccc03e039af0d17320a7
Author: Mike Blumenkrantz <[email protected]> Date: Tue Jul 14 13:34:09 2020 -0400 zink: deduplicate some query result code no functional changes, just a small simplification Reviewed-by: Erik Faye-Lund <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7195> --- src/gallium/drivers/zink/zink_query.c | 42 +++++++++++++---------------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/src/gallium/drivers/zink/zink_query.c b/src/gallium/drivers/zink/zink_query.c index 7d913815813..7fdd532aafc 100644 --- a/src/gallium/drivers/zink/zink_query.c +++ b/src/gallium/drivers/zink/zink_query.c @@ -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: _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
