Mesa (main): dzn: Use the vk_pipeline_layout base struct

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


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

Author: Boris Brezillon <boris.brezillon at collabora.com>
Date:   Wed Jun 29 05:10:10 2022 -0700

dzn: Use the vk_pipeline_layout base struct

Reviewed-by: Jesse Natalie <jenatali at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17286>

---

 src/microsoft/vulkan/dzn_descriptor_set.c | 49 +++++++------------------------
 src/microsoft/vulkan/dzn_private.h        | 12 ++------
 2 files changed, 13 insertions(+), 48 deletions(-)

diff --git a/src/microsoft/vulkan/dzn_descriptor_set.c b/src/microsoft/vulkan/dzn_descriptor_set.c
index 58e6eb9e65e..b1ee2e28c4b 100644
--- a/src/microsoft/vulkan/dzn_descriptor_set.c
+++ b/src/microsoft/vulkan/dzn_descriptor_set.c
@@ -483,14 +483,16 @@ dzn_GetDescriptorSetLayoutSupport(VkDevice device,
 }
 
 static void
-dzn_pipeline_layout_destroy(struct dzn_pipeline_layout *layout)
+dzn_pipeline_layout_destroy(struct vk_device *vk_device,
+                            struct vk_pipeline_layout *vk_layout)
 {
-   struct dzn_device *device = container_of(layout->base.device, struct dzn_device, vk);
+   struct dzn_pipeline_layout *layout =
+      container_of(vk_layout, struct dzn_pipeline_layout, vk);
 
    if (layout->root.sig)
       ID3D12RootSignature_Release(layout->root.sig);
 
-   vk_free(&device->vk.alloc, layout);
+   vk_pipeline_layout_destroy(vk_device, &layout->vk);
 }
 
 // Reserve two root parameters for the push constants and sysvals CBVs.
@@ -562,11 +564,10 @@ dzn_pipeline_layout_create(struct dzn_device *device,
    VK_MULTIALLOC_DECL(&ma, struct dzn_pipeline_layout, layout, 1);
    VK_MULTIALLOC_DECL(&ma, uint32_t, binding_translation, binding_count);
 
-   if (!vk_multialloc_zalloc(&ma, &device->vk.alloc,
-                             VK_SYSTEM_ALLOCATION_SCOPE_DEVICE))
+   if (!vk_pipeline_layout_multizalloc(&device->vk, &ma, pCreateInfo))
       return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
 
-   vk_object_base_init(&device->vk, &layout->base, VK_OBJECT_TYPE_PIPELINE_LAYOUT);
+   layout->vk.destroy = dzn_pipeline_layout_destroy;
 
    for (uint32_t s = 0; s < pCreateInfo->setLayoutCount; s++) {
       VK_FROM_HANDLE(dzn_descriptor_set_layout, set_layout, pCreateInfo->pSetLayouts[s]);
@@ -580,8 +581,6 @@ dzn_pipeline_layout_create(struct dzn_device *device,
 
    uint32_t range_count = 0, static_sampler_count = 0;
 
-   p_atomic_set(&layout->refcount, 1);
-
    layout->root.param_count = 0;
    dzn_foreach_pool_type (type)
       layout->desc_count[type] = 0;
@@ -628,7 +627,7 @@ dzn_pipeline_layout_create(struct dzn_device *device,
       vk_alloc2(&device->vk.alloc, pAllocator, sizeof(*ranges) * range_count, 8,
                 VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
    if (range_count && !ranges) {
-      dzn_pipeline_layout_destroy(layout);
+      vk_pipeline_layout_unref(&device->vk, &layout->vk);
       return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
    }
 
@@ -638,7 +637,7 @@ dzn_pipeline_layout_create(struct dzn_device *device,
                 VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
    if (static_sampler_count && !static_sampler_descs) {
       vk_free2(&device->vk.alloc, pAllocator, ranges);
-      dzn_pipeline_layout_destroy(layout);
+      vk_pipeline_layout_unref(&device->vk, &layout->vk);
       return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
    }
 
@@ -746,7 +745,7 @@ dzn_pipeline_layout_create(struct dzn_device *device,
    vk_free2(&device->vk.alloc, pAllocator, static_sampler_descs);
 
    if (!layout->root.sig) {
-      dzn_pipeline_layout_destroy(layout);
+      vk_pipeline_layout_unref(&device->vk, &layout->vk);
       return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
    }
 
@@ -755,24 +754,6 @@ dzn_pipeline_layout_create(struct dzn_device *device,
    return VK_SUCCESS;
 }
 
-struct dzn_pipeline_layout *
-dzn_pipeline_layout_ref(struct dzn_pipeline_layout *layout)
-{
-   if (layout)
-      p_atomic_inc(&layout->refcount);
-
-   return layout;
-}
-
-void
-dzn_pipeline_layout_unref(struct dzn_pipeline_layout *layout)
-{
-   if (layout) {
-      if (p_atomic_dec_zero(&layout->refcount))
-         dzn_pipeline_layout_destroy(layout);
-   }
-}
-
 VKAPI_ATTR VkResult VKAPI_CALL
 dzn_CreatePipelineLayout(VkDevice device,
                          const VkPipelineLayoutCreateInfo *pCreateInfo,
@@ -783,16 +764,6 @@ dzn_CreatePipelineLayout(VkDevice device,
                                      pCreateInfo, pAllocator, pPipelineLayout);
 }
 
-VKAPI_ATTR void VKAPI_CALL
-dzn_DestroyPipelineLayout(VkDevice device,
-                          VkPipelineLayout layout,
-                          const VkAllocationCallbacks *pAllocator)
-{
-   VK_FROM_HANDLE(dzn_pipeline_layout, playout, layout);
-
-   dzn_pipeline_layout_unref(playout);
-}
-
 static D3D12_DESCRIPTOR_HEAP_TYPE
 desc_type_to_heap_type(VkDescriptorType in)
 {
diff --git a/src/microsoft/vulkan/dzn_private.h b/src/microsoft/vulkan/dzn_private.h
index 521692e6920..9c57980b3dc 100644
--- a/src/microsoft/vulkan/dzn_private.h
+++ b/src/microsoft/vulkan/dzn_private.h
@@ -33,6 +33,7 @@
 #include "vk_image.h"
 #include "vk_log.h"
 #include "vk_physical_device.h"
+#include "vk_pipeline_layout.h"
 #include "vk_render_pass.h"
 #include "vk_sync.h"
 #include "vk_sync_binary.h"
@@ -645,8 +646,7 @@ struct dzn_descriptor_set {
 };
 
 struct dzn_pipeline_layout {
-   struct vk_object_base base;
-   int32_t refcount;
+   struct vk_pipeline_layout vk;
    struct {
       uint32_t heap_offsets[NUM_POOL_TYPES];
       struct {
@@ -674,12 +674,6 @@ struct dzn_pipeline_layout {
    } stages[MESA_VULKAN_SHADER_STAGES];
 };
 
-struct dzn_pipeline_layout *
-dzn_pipeline_layout_ref(struct dzn_pipeline_layout *layout);
-
-void
-dzn_pipeline_layout_unref(struct dzn_pipeline_layout *layout);
-
 struct dzn_descriptor_update_template_entry {
    VkDescriptorType type;
    uint32_t desc_count;
@@ -1117,7 +1111,7 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(dzn_image_view, vk.base, VkImageView, VK_OBJECT_T
 VK_DEFINE_NONDISP_HANDLE_CASTS(dzn_pipeline, base, VkPipeline, VK_OBJECT_TYPE_PIPELINE)
 VK_DEFINE_NONDISP_HANDLE_CASTS(dzn_graphics_pipeline, base.base, VkPipeline, VK_OBJECT_TYPE_PIPELINE)
 VK_DEFINE_NONDISP_HANDLE_CASTS(dzn_compute_pipeline, base.base, VkPipeline, VK_OBJECT_TYPE_PIPELINE)
-VK_DEFINE_NONDISP_HANDLE_CASTS(dzn_pipeline_layout, base, VkPipelineLayout, VK_OBJECT_TYPE_PIPELINE_LAYOUT)
+VK_DEFINE_NONDISP_HANDLE_CASTS(dzn_pipeline_layout, vk.base, VkPipelineLayout, VK_OBJECT_TYPE_PIPELINE_LAYOUT)
 VK_DEFINE_NONDISP_HANDLE_CASTS(dzn_query_pool, base, VkQueryPool, VK_OBJECT_TYPE_QUERY_POOL)
 VK_DEFINE_NONDISP_HANDLE_CASTS(dzn_sampler, base, VkSampler, VK_OBJECT_TYPE_SAMPLER)
 



More information about the mesa-commit mailing list