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