From b51fac6212ea67cb3798e830f491f1643b7911a9 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Wed, 3 Sep 2025 09:53:30 +0200 Subject: [PATCH] pvr: break out queries to separate header Reviewed-by: Frank Binns Part-of: --- src/imagination/vulkan/pvr_cmd_buffer.c | 1 + src/imagination/vulkan/pvr_device.c | 1 + src/imagination/vulkan/pvr_job_render.c | 1 + src/imagination/vulkan/pvr_private.h | 50 --------------- src/imagination/vulkan/pvr_query.c | 2 + src/imagination/vulkan/pvr_query.h | 74 ++++++++++++++++++++++ src/imagination/vulkan/pvr_query_compute.c | 1 + 7 files changed, 80 insertions(+), 50 deletions(-) create mode 100644 src/imagination/vulkan/pvr_query.h diff --git a/src/imagination/vulkan/pvr_cmd_buffer.c b/src/imagination/vulkan/pvr_cmd_buffer.c index 7692620ccc6..878c8407473 100644 --- a/src/imagination/vulkan/pvr_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_cmd_buffer.c @@ -51,6 +51,7 @@ #include "pvr_pass.h" #include "pvr_pds.h" #include "pvr_private.h" +#include "pvr_query.h" #include "pvr_tex_state.h" #include "pvr_types.h" #include "pvr_usc.h" diff --git a/src/imagination/vulkan/pvr_device.c b/src/imagination/vulkan/pvr_device.c index 8a5df37463f..340ecf53c61 100644 --- a/src/imagination/vulkan/pvr_device.c +++ b/src/imagination/vulkan/pvr_device.c @@ -63,6 +63,7 @@ #include "pvr_pass.h" #include "pvr_pds.h" #include "pvr_private.h" +#include "pvr_query.h" #include "pvr_queue.h" #include "pvr_robustness.h" #include "pvr_tex_state.h" diff --git a/src/imagination/vulkan/pvr_job_render.c b/src/imagination/vulkan/pvr_job_render.c index 6f69c69a450..02e7006c363 100644 --- a/src/imagination/vulkan/pvr_job_render.c +++ b/src/imagination/vulkan/pvr_job_render.c @@ -40,6 +40,7 @@ #include "pvr_job_render.h" #include "pvr_pds.h" #include "pvr_private.h" +#include "pvr_query.h" #include "pvr_rogue_fw.h" #include "pvr_types.h" #include "pvr_winsys.h" diff --git a/src/imagination/vulkan/pvr_private.h b/src/imagination/vulkan/pvr_private.h index c3ebda0e208..396f578b051 100644 --- a/src/imagination/vulkan/pvr_private.h +++ b/src/imagination/vulkan/pvr_private.h @@ -186,20 +186,6 @@ struct pvr_graphics_pipeline { } shader_state; }; -struct pvr_query_pool { - struct vk_object_base base; - - /* Stride of result_buffer to get to the start of the results for the next - * Phantom. - */ - uint32_t result_stride; - - uint32_t query_count; - - struct pvr_suballoc_bo *result_buffer; - struct pvr_suballoc_bo *availability_buffer; -}; - struct pvr_private_compute_pipeline { /* Used by pvr_compute_update_kernel_private(). */ uint32_t pds_code_offset; @@ -221,35 +207,6 @@ struct pvr_private_compute_pipeline { pvr_dev_addr_t const_buffer_addr; }; -struct pvr_query_info { - enum pvr_query_type type; - - union { - struct { - uint32_t num_query_indices; - struct pvr_suballoc_bo *index_bo; - uint32_t num_queries; - struct pvr_suballoc_bo *availability_bo; - } availability_write; - - struct { - VkQueryPool query_pool; - uint32_t first_query; - uint32_t query_count; - } reset_query_pool; - - struct { - VkQueryPool query_pool; - uint32_t first_query; - uint32_t query_count; - VkBuffer dst_buffer; - VkDeviceSize dst_offset; - VkDeviceSize stride; - VkQueryResultFlags flags; - } copy_query_results; - }; -}; - VkResult pvr_wsi_init(struct pvr_physical_device *pdevice); void pvr_wsi_finish(struct pvr_physical_device *pdevice); @@ -335,9 +292,6 @@ pvr_stage_mask_dst(VkPipelineStageFlags2 stage_mask) size_t pvr_pds_get_max_descriptor_upload_const_map_size_in_bytes(void); -VkResult pvr_device_create_compute_query_programs(struct pvr_device *device); -void pvr_device_destroy_compute_query_programs(struct pvr_device *device); - VK_DEFINE_NONDISP_HANDLE_CASTS(pvr_descriptor_set_layout, vk.base, VkDescriptorSetLayout, @@ -354,10 +308,6 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(pvr_pipeline, base, VkPipeline, VK_OBJECT_TYPE_PIPELINE) -VK_DEFINE_NONDISP_HANDLE_CASTS(pvr_query_pool, - base, - VkQueryPool, - VK_OBJECT_TYPE_QUERY_POOL) /** * Print a FINISHME message, including its source location. diff --git a/src/imagination/vulkan/pvr_query.c b/src/imagination/vulkan/pvr_query.c index 690226c47a2..61457078211 100644 --- a/src/imagination/vulkan/pvr_query.c +++ b/src/imagination/vulkan/pvr_query.c @@ -24,6 +24,8 @@ * Copyright © 2015 Intel Corporation */ +#include "pvr_query.h" + #include #include #include diff --git a/src/imagination/vulkan/pvr_query.h b/src/imagination/vulkan/pvr_query.h new file mode 100644 index 00000000000..636ed493499 --- /dev/null +++ b/src/imagination/vulkan/pvr_query.h @@ -0,0 +1,74 @@ +/* + * Copyright © 2022 Imagination Technologies Ltd. + * + * based in part on anv driver which is: + * Copyright © 2015 Intel Corporation + * + * based in part on radv driver which is: + * Copyright © 2016 Red Hat. + * Copyright © 2016 Bas Nieuwenhuizen + * + * SPDX-License-Identifier: MIT + */ + +#ifndef PVR_QUERY_H +#define PVR_QUERY_H + +#include "vk_object.h" + +#include "pvr_common.h" + +struct pvr_device; + +struct pvr_query_pool { + struct vk_object_base base; + + /* Stride of result_buffer to get to the start of the results for the next + * Phantom. + */ + uint32_t result_stride; + + uint32_t query_count; + + struct pvr_suballoc_bo *result_buffer; + struct pvr_suballoc_bo *availability_buffer; +}; + +struct pvr_query_info { + enum pvr_query_type type; + + union { + struct { + uint32_t num_query_indices; + struct pvr_suballoc_bo *index_bo; + uint32_t num_queries; + struct pvr_suballoc_bo *availability_bo; + } availability_write; + + struct { + VkQueryPool query_pool; + uint32_t first_query; + uint32_t query_count; + } reset_query_pool; + + struct { + VkQueryPool query_pool; + uint32_t first_query; + uint32_t query_count; + VkBuffer dst_buffer; + VkDeviceSize dst_offset; + VkDeviceSize stride; + VkQueryResultFlags flags; + } copy_query_results; + }; +}; + +VK_DEFINE_NONDISP_HANDLE_CASTS(pvr_query_pool, + base, + VkQueryPool, + VK_OBJECT_TYPE_QUERY_POOL) + +VkResult pvr_device_create_compute_query_programs(struct pvr_device *device); +void pvr_device_destroy_compute_query_programs(struct pvr_device *device); + +#endif /* PVR_QUERY_H*/ diff --git a/src/imagination/vulkan/pvr_query_compute.c b/src/imagination/vulkan/pvr_query_compute.c index b61c0d7a5ff..eea5acfe9f0 100644 --- a/src/imagination/vulkan/pvr_query_compute.c +++ b/src/imagination/vulkan/pvr_query_compute.c @@ -38,6 +38,7 @@ #include "pvr_formats.h" #include "pvr_pds.h" #include "pvr_private.h" +#include "pvr_query.h" #include "pvr_tex_state.h" #include "pvr_types.h" #include "vk_alloc.h"