pvr: Create a separate compute context for queries.
authorRajnesh Kanwal <rajnesh.kanwal@imgtec.com>
Fri, 7 Oct 2022 07:38:51 +0000 (12:38 +0500)
committerMarge Bot <emma+marge@anholt.net>
Wed, 30 Nov 2022 22:45:41 +0000 (22:45 +0000)
Signed-off-by: Rajnesh Kanwal <rajnesh.kanwal@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19371>

src/imagination/vulkan/pvr_private.h
src/imagination/vulkan/pvr_queue.c

index ae004d9..79dad4a 100644 (file)
@@ -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];
index 1d6f793..ae253b5 100644 (file)
@@ -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);