From a944d7270b65143c353d58e4c4807e302fc2e1e4 Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Tue, 19 Dec 2023 16:27:41 +0100 Subject: [PATCH] panvk: Move panvk_descriptor_{set,pool} definitions to panvk_descriptor_set.h Along with the various SW-descriptor definitions. Signed-off-by: Boris Brezillon Acked-by: Erik Faye-Lund Reviewed-by: Mary Guillemard Reviewed-by: Rebecca Mckeever Part-of: --- src/panfrost/vulkan/panvk_descriptor_set.c | 2 + src/panfrost/vulkan/panvk_descriptor_set.h | 85 +++++++++++++++++++ src/panfrost/vulkan/panvk_private.h | 55 +----------- src/panfrost/vulkan/panvk_vX_descriptor_set.c | 13 +-- 4 files changed, 89 insertions(+), 66 deletions(-) create mode 100644 src/panfrost/vulkan/panvk_descriptor_set.h diff --git a/src/panfrost/vulkan/panvk_descriptor_set.c b/src/panfrost/vulkan/panvk_descriptor_set.c index 39e07401840..e09f0d20b08 100644 --- a/src/panfrost/vulkan/panvk_descriptor_set.c +++ b/src/panfrost/vulkan/panvk_descriptor_set.c @@ -24,6 +24,8 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ + +#include "panvk_descriptor_set.h" #include "panvk_private.h" #include "panvk_sampler.h" diff --git a/src/panfrost/vulkan/panvk_descriptor_set.h b/src/panfrost/vulkan/panvk_descriptor_set.h new file mode 100644 index 00000000000..23ef610b822 --- /dev/null +++ b/src/panfrost/vulkan/panvk_descriptor_set.h @@ -0,0 +1,85 @@ +/* + * Copyright © 2021 Collabora Ltd. + * SPDX-License-Identifier: MIT + */ + +#ifndef PANVK_DESCRIPTOR_SET_H +#define PANVK_DESCRIPTOR_SET_H + +#include + +#include "vk_object.h" + +struct panvk_descriptor_pool; +struct panvk_descriptor_set_layout; +struct panvk_priv_bo; + +struct panvk_desc_pool_counters { + unsigned samplers; + unsigned combined_image_samplers; + unsigned sampled_images; + unsigned storage_images; + unsigned uniform_texel_bufs; + unsigned storage_texel_bufs; + unsigned input_attachments; + unsigned uniform_bufs; + unsigned storage_bufs; + unsigned uniform_dyn_bufs; + unsigned storage_dyn_bufs; + unsigned sets; +}; + +struct panvk_descriptor_pool { + struct vk_object_base base; + struct panvk_desc_pool_counters max; + struct panvk_desc_pool_counters cur; + struct panvk_descriptor_set *sets; +}; + +VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_descriptor_pool, base, VkDescriptorPool, + VK_OBJECT_TYPE_DESCRIPTOR_POOL) + +/* This has to match nir_address_format_64bit_bounded_global */ +struct panvk_ssbo_addr { + uint64_t base_addr; + uint32_t size; + uint32_t zero; /* Must be zero! */ +}; + +struct panvk_bview_desc { + uint32_t elems; +}; + +struct panvk_image_desc { + uint16_t width; + uint16_t height; + uint16_t depth; + uint8_t levels; + uint8_t samples; +}; + +struct panvk_buffer_desc { + struct panvk_buffer *buffer; + VkDeviceSize offset; + VkDeviceSize size; +}; + +struct panvk_descriptor_set { + struct vk_object_base base; + struct panvk_descriptor_pool *pool; + const struct panvk_descriptor_set_layout *layout; + struct panvk_buffer_desc *dyn_ssbos; + void *ubos; + struct panvk_buffer_desc *dyn_ubos; + void *samplers; + void *textures; + void *img_attrib_bufs; + uint32_t *img_fmts; + + struct panvk_priv_bo *desc_bo; +}; + +VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_descriptor_set, base, VkDescriptorSet, + VK_OBJECT_TYPE_DESCRIPTOR_SET) + +#endif diff --git a/src/panfrost/vulkan/panvk_private.h b/src/panfrost/vulkan/panvk_private.h index 30214465c7b..8dcf04732dc 100644 --- a/src/panfrost/vulkan/panvk_private.h +++ b/src/panfrost/vulkan/panvk_private.h @@ -67,6 +67,7 @@ #include "pan_desc.h" #include "pan_jc.h" #include "pan_texture.h" +#include "panvk_descriptor_set.h" #include "panvk_macros.h" #include "panvk_mempool.h" #include "panvk_pipeline.h" @@ -336,27 +337,6 @@ struct panvk_cmd_event_op { struct panvk_event *event; }; -struct panvk_buffer_desc { - struct panvk_buffer *buffer; - VkDeviceSize offset; - VkDeviceSize size; -}; - -struct panvk_descriptor_set { - struct vk_object_base base; - struct panvk_descriptor_pool *pool; - const struct panvk_descriptor_set_layout *layout; - struct panvk_buffer_desc *dyn_ssbos; - void *ubos; - struct panvk_buffer_desc *dyn_ubos; - void *samplers; - void *textures; - void *img_attrib_bufs; - uint32_t *img_fmts; - - struct panvk_priv_bo *desc_bo; -}; - #define MAX_SETS 4 struct panvk_descriptor_set_binding_layout { @@ -484,28 +464,6 @@ panvk_pipeline_layout_ubo_index(const struct panvk_pipeline_layout *layout, array_index; } -struct panvk_desc_pool_counters { - unsigned samplers; - unsigned combined_image_samplers; - unsigned sampled_images; - unsigned storage_images; - unsigned uniform_texel_bufs; - unsigned storage_texel_bufs; - unsigned input_attachments; - unsigned uniform_bufs; - unsigned storage_bufs; - unsigned uniform_dyn_bufs; - unsigned storage_dyn_bufs; - unsigned sets; -}; - -struct panvk_descriptor_pool { - struct vk_object_base base; - struct panvk_desc_pool_counters max; - struct panvk_desc_pool_counters cur; - struct panvk_descriptor_set *sets; -}; - enum panvk_dynamic_state_bits { PANVK_DYNAMIC_VIEWPORT = 1 << 0, PANVK_DYNAMIC_SCISSOR = 1 << 1, @@ -522,13 +480,6 @@ enum panvk_dynamic_state_bits { PANVK_DYNAMIC_ALL = (1 << 12) - 1, }; -/* This has to match nir_address_format_64bit_bounded_global */ -struct panvk_ssbo_addr { - uint64_t base_addr; - uint32_t size; - uint32_t zero; /* Must be zero! */ -}; - union panvk_sysval_vec4 { float f32[4]; uint32_t u32[4]; @@ -760,10 +711,6 @@ VK_DEFINE_HANDLE_CASTS(panvk_queue, vk.base, VkQueue, VK_OBJECT_TYPE_QUEUE) VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_cmd_pool, vk.base, VkCommandPool, VK_OBJECT_TYPE_COMMAND_POOL) -VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_descriptor_pool, base, VkDescriptorPool, - VK_OBJECT_TYPE_DESCRIPTOR_POOL) -VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_descriptor_set, base, VkDescriptorSet, - VK_OBJECT_TYPE_DESCRIPTOR_SET) VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_descriptor_set_layout, vk.base, VkDescriptorSetLayout, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT) diff --git a/src/panfrost/vulkan/panvk_vX_descriptor_set.c b/src/panfrost/vulkan/panvk_vX_descriptor_set.c index f0d9d1d0f3e..16d4e32c78d 100644 --- a/src/panfrost/vulkan/panvk_vX_descriptor_set.c +++ b/src/panfrost/vulkan/panvk_vX_descriptor_set.c @@ -46,14 +46,11 @@ #include "panvk_buffer.h" #include "panvk_cs.h" +#include "panvk_descriptor_set.h" #include "panvk_sampler.h" #define PANVK_DESCRIPTOR_ALIGN 8 -struct panvk_bview_desc { - uint32_t elems; -}; - static void panvk_fill_bview_desc(struct panvk_bview_desc *desc, struct panvk_buffer_view *view) @@ -61,14 +58,6 @@ panvk_fill_bview_desc(struct panvk_bview_desc *desc, desc->elems = view->vk.elements; } -struct panvk_image_desc { - uint16_t width; - uint16_t height; - uint16_t depth; - uint8_t levels; - uint8_t samples; -}; - static void panvk_fill_image_desc(struct panvk_image_desc *desc, struct panvk_image_view *view)