mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 15:40:11 +01:00
panvk: Use the vk_descriptor_set_layout base struct
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17286>
This commit is contained in:
parent
a579d33352
commit
f66f37a99e
3 changed files with 7 additions and 55 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue