From 1b87ba7c9c7ae0cec830a57d28e5af1c44b440c4 Mon Sep 17 00:00:00 2001 From: Rajnesh Kanwal Date: Fri, 7 Oct 2022 12:38:51 +0500 Subject: [PATCH] pvr: Create a separate compute context for queries. Signed-off-by: Rajnesh Kanwal Reviewed-by: Frank Binns Part-of: --- src/imagination/vulkan/pvr_private.h | 1 + src/imagination/vulkan/pvr_queue.c | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/imagination/vulkan/pvr_private.h b/src/imagination/vulkan/pvr_private.h index ae004d9..79dad4a 100644 --- a/src/imagination/vulkan/pvr_private.h +++ b/src/imagination/vulkan/pvr_private.h @@ -276,6 +276,7 @@ struct pvr_queue { struct pvr_render_ctx *gfx_ctx; struct pvr_compute_ctx *compute_ctx; + struct pvr_compute_ctx *query_ctx; struct pvr_transfer_ctx *transfer_ctx; struct vk_sync *completion[PVR_JOB_TYPE_MAX]; diff --git a/src/imagination/vulkan/pvr_queue.c b/src/imagination/vulkan/pvr_queue.c index 1d6f793..ae253b5 100644 --- a/src/imagination/vulkan/pvr_queue.c +++ b/src/imagination/vulkan/pvr_queue.c @@ -61,6 +61,7 @@ static VkResult pvr_queue_init(struct pvr_device *device, { struct pvr_transfer_ctx *transfer_ctx; struct pvr_compute_ctx *compute_ctx; + struct pvr_compute_ctx *query_ctx; struct pvr_render_ctx *gfx_ctx; VkResult result; @@ -83,18 +84,28 @@ static VkResult pvr_queue_init(struct pvr_device *device, if (result != VK_SUCCESS) goto err_transfer_ctx_destroy; + result = pvr_compute_ctx_create(device, + PVR_WINSYS_CTX_PRIORITY_MEDIUM, + &query_ctx); + if (result != VK_SUCCESS) + goto err_compute_ctx_destroy; + result = pvr_render_ctx_create(device, PVR_WINSYS_CTX_PRIORITY_MEDIUM, &gfx_ctx); if (result != VK_SUCCESS) - goto err_compute_ctx_destroy; + goto err_query_ctx_destroy; queue->device = device; queue->gfx_ctx = gfx_ctx; queue->compute_ctx = compute_ctx; + queue->query_ctx = query_ctx; queue->transfer_ctx = transfer_ctx; return VK_SUCCESS; +err_query_ctx_destroy: + pvr_compute_ctx_destroy(query_ctx); + err_compute_ctx_destroy: pvr_compute_ctx_destroy(compute_ctx); @@ -157,6 +168,7 @@ static void pvr_queue_finish(struct pvr_queue *queue) } pvr_render_ctx_destroy(queue->gfx_ctx); + pvr_compute_ctx_destroy(queue->query_ctx); pvr_compute_ctx_destroy(queue->compute_ctx); pvr_transfer_ctx_destroy(queue->transfer_ctx); -- 2.7.4