Mesa (main): panvk: Use the vk_descriptor_set_layout base struct

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 29 21:01:19 UTC 2022


Module: Mesa
Branch: main
Commit: f66f37a99e556f761349c7d3552d7ec9fcaff71c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f66f37a99e556f761349c7d3552d7ec9fcaff71c

Author: Jason Ekstrand <jason.ekstrand at collabora.com>
Date:   Tue Jun 28 14:24:58 2022 -0500

panvk: Use the vk_descriptor_set_layout base struct

Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17286>

---

 src/panfrost/vulkan/panvk_descriptor_set.c    | 27 +++---------------------
 src/panfrost/vulkan/panvk_private.h           | 30 +++------------------------
 src/panfrost/vulkan/panvk_vX_descriptor_set.c |  5 +----
 3 files changed, 7 insertions(+), 55 deletions(-)

diff --git a/src/panfrost/vulkan/panvk_descriptor_set.c b/src/panfrost/vulkan/panvk_descriptor_set.c
index 451028548db..057f13a98a6 100644
--- a/src/panfrost/vulkan/panvk_descriptor_set.c
+++ b/src/panfrost/vulkan/panvk_descriptor_set.c
@@ -38,27 +38,6 @@
 
 #include "pan_bo.h"
 
-void
-panvk_descriptor_set_layout_destroy(struct panvk_device *device,
-                                    struct panvk_descriptor_set_layout *layout)
-{
-   vk_object_free(&device->vk, NULL, layout);
-}
-
-void
-panvk_DestroyDescriptorSetLayout(VkDevice _device,
-                                 VkDescriptorSetLayout _set_layout,
-                                 const VkAllocationCallbacks *pAllocator)
-{
-   VK_FROM_HANDLE(panvk_device, device, _device);
-   VK_FROM_HANDLE(panvk_descriptor_set_layout, set_layout, _set_layout);
-
-   if (!set_layout)
-      return;
-
-   panvk_descriptor_set_layout_unref(device, set_layout);
-}
-
 /* FIXME: make sure those values are correct */
 #define PANVK_MAX_TEXTURES     (1 << 16)
 #define PANVK_MAX_IMAGES       (1 << 8)
@@ -163,8 +142,8 @@ panvk_CreatePipelineLayout(VkDevice _device,
    for (unsigned set = 0; set < pCreateInfo->setLayoutCount; set++) {
       VK_FROM_HANDLE(panvk_descriptor_set_layout, set_layout,
                      pCreateInfo->pSetLayouts[set]);
-      layout->sets[set].layout = panvk_descriptor_set_layout_ref(set_layout);
-      p_atomic_inc(&set_layout->refcount);
+      vk_descriptor_set_layout_ref(&set_layout->vk);
+      layout->sets[set].layout = set_layout;
       layout->sets[set].sampler_offset = sampler_idx;
       layout->sets[set].tex_offset = tex_idx;
       layout->sets[set].ubo_offset = ubo_idx;
@@ -231,7 +210,7 @@ panvk_pipeline_layout_destroy(struct panvk_device *device,
                               struct panvk_pipeline_layout *layout)
 {
    for (unsigned i = 0; i < layout->num_sets; i++)
-      panvk_descriptor_set_layout_unref(device, layout->sets[i].layout);
+      vk_descriptor_set_layout_unref(&device->vk, &layout->sets[i].layout->vk);
 
    vk_object_free(&device->vk, NULL, layout);
 }
diff --git a/src/panfrost/vulkan/panvk_private.h b/src/panfrost/vulkan/panvk_private.h
index 9604f5819a1..04975db7efa 100644
--- a/src/panfrost/vulkan/panvk_private.h
+++ b/src/panfrost/vulkan/panvk_private.h
@@ -52,6 +52,7 @@
 #include "vk_buffer.h"
 #include "vk_command_buffer.h"
 #include "vk_command_pool.h"
+#include "vk_descriptor_set_layout.h"
 #include "vk_device.h"
 #include "vk_image.h"
 #include "vk_instance.h"
@@ -369,11 +370,7 @@ struct panvk_descriptor_set_binding_layout {
 };
 
 struct panvk_descriptor_set_layout {
-   struct vk_object_base base;
-   int32_t refcount;
-
-   /* The create flags for this descriptor set layout */
-   VkDescriptorSetLayoutCreateFlags flags;
+   struct vk_descriptor_set_layout vk;
 
    /* Shader stages affected by this descriptor set */
    uint16_t shader_stages;
@@ -398,27 +395,6 @@ struct panvk_descriptor_set_layout {
    struct panvk_descriptor_set_binding_layout bindings[0];
 };
 
-void
-panvk_descriptor_set_layout_destroy(struct panvk_device *dev,
-                                    struct panvk_descriptor_set_layout *layout);
-
-static inline void
-panvk_descriptor_set_layout_unref(struct panvk_device *dev,
-                                  struct panvk_descriptor_set_layout *layout)
-{
-   if (layout && p_atomic_dec_zero(&layout->refcount))
-      panvk_descriptor_set_layout_destroy(dev, layout);
-}
-
-static inline struct panvk_descriptor_set_layout *
-panvk_descriptor_set_layout_ref(struct panvk_descriptor_set_layout *layout)
-{
-   if (layout)
-      p_atomic_inc(&layout->refcount);
-
-   return layout;
-}
-
 struct panvk_pipeline_layout {
    struct vk_object_base base;
    int32_t refcount;
@@ -1100,7 +1076,7 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_buffer, vk.base, VkBuffer, VK_OBJECT_TYPE_B
 VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_buffer_view, base, VkBufferView, VK_OBJECT_TYPE_BUFFER_VIEW)
 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, base,
+VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_descriptor_set_layout, vk.base,
                                VkDescriptorSetLayout, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT)
 VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_device_memory, base, VkDeviceMemory, VK_OBJECT_TYPE_DEVICE_MEMORY)
 VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_event, base, VkEvent, VK_OBJECT_TYPE_EVENT)
diff --git a/src/panfrost/vulkan/panvk_vX_descriptor_set.c b/src/panfrost/vulkan/panvk_vX_descriptor_set.c
index 0dd2767467d..d02c3526e75 100644
--- a/src/panfrost/vulkan/panvk_vX_descriptor_set.c
+++ b/src/panfrost/vulkan/panvk_vX_descriptor_set.c
@@ -113,8 +113,7 @@ panvk_per_arch(CreateDescriptorSetLayout)(VkDevice _device,
                  (sizeof(struct panvk_descriptor_set_binding_layout) *
                   num_bindings) +
                  (sizeof(struct panvk_sampler *) * num_immutable_samplers);
-   set_layout = vk_object_zalloc(&device->vk, NULL, size,
-                                 VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT);
+   set_layout = vk_descriptor_set_layout_zalloc(&device->vk, size);
    if (!set_layout) {
       result = VK_ERROR_OUT_OF_HOST_MEMORY;
       goto err_free_bindings;
@@ -125,7 +124,6 @@ panvk_per_arch(CreateDescriptorSetLayout)(VkDevice _device,
                                 (sizeof(struct panvk_descriptor_set_binding_layout) *
                                  num_bindings));
 
-   set_layout->flags = pCreateInfo->flags;
    set_layout->binding_count = num_bindings;
 
    unsigned sampler_idx = 0, tex_idx = 0, ubo_idx = 0;
@@ -218,7 +216,6 @@ panvk_per_arch(CreateDescriptorSetLayout)(VkDevice _device,
    set_layout->num_dyn_ubos = dyn_ubo_idx;
    set_layout->num_dyn_ssbos = dyn_ssbo_idx;
    set_layout->num_imgs = img_idx;
-   p_atomic_set(&set_layout->refcount, 1);
 
    free(bindings);
    *pSetLayout = panvk_descriptor_set_layout_to_handle(set_layout);



More information about the mesa-commit mailing list