Mesa (master): radv: use the base object struct types

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed May 13 06:46:47 UTC 2020


Module: Mesa
Branch: master
Commit: 178adfa6a8e5694a077c3e11fdcc5bc0802839ab
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=178adfa6a8e5694a077c3e11fdcc5bc0802839ab

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Wed Apr 29 14:57:20 2020 +0200

radv: use the base object struct types

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4886>

---

 src/amd/vulkan/radv_cmd_buffer.c     | 11 +++++++++--
 src/amd/vulkan/radv_descriptor_set.c | 33 +++++++++++++++++++++++++++++++--
 src/amd/vulkan/radv_descriptor_set.h |  5 +++++
 src/amd/vulkan/radv_device.c         | 29 ++++++++++++++++++++++++++++-
 src/amd/vulkan/radv_image.c          | 12 ++++++++++++
 src/amd/vulkan/radv_pass.c           | 10 ++++++++++
 src/amd/vulkan/radv_pipeline.c       |  8 ++++++++
 src/amd/vulkan/radv_pipeline_cache.c |  4 ++++
 src/amd/vulkan/radv_private.h        | 23 +++++++++++++++++++++--
 src/amd/vulkan/radv_query.c          |  4 ++++
 src/amd/vulkan/radv_shader.c         |  4 ++++
 src/amd/vulkan/radv_shader.h         |  2 ++
 12 files changed, 138 insertions(+), 7 deletions(-)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index a5846460455..896bb63b08c 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -277,7 +277,9 @@ static VkResult radv_create_cmd_buffer(
 	if (cmd_buffer == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
-	cmd_buffer->_loader_data.loaderMagic = ICD_LOADER_MAGIC;
+	vk_object_base_init(&device->vk, &cmd_buffer->base,
+			    VK_OBJECT_TYPE_COMMAND_BUFFER);
+
 	cmd_buffer->device = device;
 	cmd_buffer->pool = pool;
 	cmd_buffer->level = level;
@@ -328,6 +330,8 @@ radv_cmd_buffer_destroy(struct radv_cmd_buffer *cmd_buffer)
 	for (unsigned i = 0; i < MAX_BIND_POINTS; i++)
 		free(cmd_buffer->descriptors[i].push_set.set.mapped_ptr);
 
+	vk_object_base_finish(&cmd_buffer->base);
+
 	vk_free(&cmd_buffer->pool->alloc, cmd_buffer);
 }
 
@@ -3318,7 +3322,6 @@ VkResult radv_AllocateCommandBuffers(
 			list_addtail(&cmd_buffer->pool_link, &pool->cmd_buffers);
 
 			result = radv_reset_cmd_buffer(cmd_buffer);
-			cmd_buffer->_loader_data.loaderMagic = ICD_LOADER_MAGIC;
 			cmd_buffer->level = pAllocateInfo->level;
 
 			pCommandBuffers[i] = radv_cmd_buffer_to_handle(cmd_buffer);
@@ -4261,6 +4264,9 @@ VkResult radv_CreateCommandPool(
 	if (pool == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &pool->base,
+			    VK_OBJECT_TYPE_COMMAND_POOL);
+
 	if (pAllocator)
 		pool->alloc = *pAllocator;
 	else
@@ -4298,6 +4304,7 @@ void radv_DestroyCommandPool(
 		radv_cmd_buffer_destroy(cmd_buffer);
 	}
 
+	vk_object_base_finish(&pool->base);
 	vk_free2(&device->vk.alloc, pAllocator, pool);
 }
 
diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c
index f537a89db40..8d1343d2d8b 100644
--- a/src/amd/vulkan/radv_descriptor_set.c
+++ b/src/amd/vulkan/radv_descriptor_set.c
@@ -114,6 +114,9 @@ VkResult radv_CreateDescriptorSetLayout(
 	if (!set_layout)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &set_layout->base,
+			    VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT);
+
 	set_layout->flags = pCreateInfo->flags;
 	set_layout->layout_size = size;
 
@@ -132,6 +135,7 @@ VkResult radv_CreateDescriptorSetLayout(
 	VkDescriptorSetLayoutBinding *bindings = create_sorted_bindings(pCreateInfo->pBindings,
 	                                                                pCreateInfo->bindingCount);
 	if (!bindings) {
+		vk_object_base_finish(&set_layout->base);
 		vk_free2(&device->vk.alloc, pAllocator, set_layout);
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 	}
@@ -295,6 +299,7 @@ void radv_DestroyDescriptorSetLayout(
 	if (!set_layout)
 		return;
 
+	vk_object_base_finish(&set_layout->base);
 	vk_free2(&device->vk.alloc, pAllocator, set_layout);
 }
 
@@ -413,6 +418,9 @@ VkResult radv_CreatePipelineLayout(
 	if (layout == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &layout->base,
+			    VK_OBJECT_TYPE_PIPELINE_LAYOUT);
+
 	layout->num_sets = pCreateInfo->setLayoutCount;
 
 	unsigned dynamic_offset_count = 0;
@@ -462,6 +470,8 @@ void radv_DestroyPipelineLayout(
 
 	if (!pipeline_layout)
 		return;
+
+	vk_object_base_finish(&pipeline_layout->base);
 	vk_free2(&device->vk.alloc, pAllocator, pipeline_layout);
 }
 
@@ -505,6 +515,9 @@ radv_descriptor_set_create(struct radv_device *device,
 
 	memset(set, 0, mem_size);
 
+	vk_object_base_init(&device->vk, &set->base,
+			    VK_OBJECT_TYPE_DESCRIPTOR_SET);
+
 	if (layout->dynamic_offset_count) {
 		set->dynamic_descriptors = (struct radv_descriptor_range*)((uint8_t*)set + range_offset);
 	}
@@ -612,6 +625,7 @@ radv_descriptor_set_destroy(struct radv_device *device,
 			}
 		}
 	}
+	vk_object_base_finish(&set->base);
 	vk_free2(&device->vk.alloc, NULL, set);
 }
 
@@ -691,6 +705,9 @@ VkResult radv_CreateDescriptorPool(
 
 	memset(pool, 0, sizeof(*pool));
 
+	vk_object_base_init(&device->vk, &pool->base,
+			    VK_OBJECT_TYPE_DESCRIPTOR_POOL);
+
 	if (!(pCreateInfo->flags & VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT)) {
 		pool->host_memory_base = (uint8_t*)pool + sizeof(struct radv_descriptor_pool);
 		pool->host_memory_ptr = pool->host_memory_base;
@@ -732,6 +749,8 @@ void radv_DestroyDescriptorPool(
 
 	if (pool->bo)
 		device->ws->buffer_destroy(pool->bo);
+
+	vk_object_base_finish(&pool->base);
 	vk_free2(&device->vk.alloc, pAllocator, pool);
 }
 
@@ -1183,6 +1202,9 @@ VkResult radv_CreateDescriptorUpdateTemplate(VkDevice _device,
 	if (!templ)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &templ->base,
+			    VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE);
+
 	templ->entry_count = entry_count;
 
 	if (pCreateInfo->templateType == VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR) {
@@ -1266,6 +1288,7 @@ void radv_DestroyDescriptorUpdateTemplate(VkDevice _device,
 	if (!templ)
 		return;
 
+	vk_object_base_finish(&templ->base);
 	vk_free2(&device->vk.alloc, pAllocator, templ);
 }
 
@@ -1368,6 +1391,9 @@ VkResult radv_CreateSamplerYcbcrConversion(VkDevice _device,
 	if (conversion == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &conversion->base,
+			    VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION);
+
 	conversion->format = pCreateInfo->format;
 	conversion->ycbcr_model = pCreateInfo->ycbcrModel;
 	conversion->ycbcr_range = pCreateInfo->ycbcrRange;
@@ -1388,6 +1414,9 @@ void radv_DestroySamplerYcbcrConversion(VkDevice _device,
 	RADV_FROM_HANDLE(radv_device, device, _device);
 	RADV_FROM_HANDLE(radv_sampler_ycbcr_conversion, ycbcr_conversion, ycbcrConversion);
 
-	if (ycbcr_conversion)
-		vk_free2(&device->vk.alloc, pAllocator, ycbcr_conversion);
+	if (!ycbcr_conversion)
+		return;
+
+	vk_object_base_finish(&ycbcr_conversion->base);
+	vk_free2(&device->vk.alloc, pAllocator, ycbcr_conversion);
 }
diff --git a/src/amd/vulkan/radv_descriptor_set.h b/src/amd/vulkan/radv_descriptor_set.h
index 3397acaa092..ee213fbb6a0 100644
--- a/src/amd/vulkan/radv_descriptor_set.h
+++ b/src/amd/vulkan/radv_descriptor_set.h
@@ -26,6 +26,8 @@
 
 #include "radv_constants.h"
 
+#include "vulkan/util/vk_object.h"
+
 #include <vulkan/vulkan.h>
 
 struct radv_descriptor_set_binding_layout {
@@ -49,6 +51,8 @@ struct radv_descriptor_set_binding_layout {
 };
 
 struct radv_descriptor_set_layout {
+   struct vk_object_base base;
+
    /* The create flags for this descriptor set layout */
    VkDescriptorSetLayoutCreateFlags flags;
 
@@ -81,6 +85,7 @@ struct radv_descriptor_set_layout {
 };
 
 struct radv_pipeline_layout {
+   struct vk_object_base base;
    struct {
       struct radv_descriptor_set_layout *layout;
       uint32_t size;
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 803f344224a..c2a3223ea96 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -606,7 +606,7 @@ VkResult radv_CreateInstance(
 	if (!instance)
 		return vk_error(NULL, VK_ERROR_OUT_OF_HOST_MEMORY);
 
-	instance->_loader_data.loaderMagic = ICD_LOADER_MAGIC;
+	vk_object_base_init(NULL, &instance->base, VK_OBJECT_TYPE_INSTANCE);
 
 	if (pAllocator)
 		instance->alloc = *pAllocator;
@@ -755,6 +755,7 @@ void radv_DestroyInstance(
 
 	vk_debug_report_instance_destroy(&instance->debug_report_callbacks);
 
+	vk_object_base_finish(&instance->base);
 	vk_free(&instance->alloc, instance);
 }
 
@@ -5100,6 +5101,7 @@ static void radv_free_memory(struct radv_device *device,
 		mem->bo = NULL;
 	}
 
+	vk_object_base_finish(&mem->base);
 	vk_free2(&device->vk.alloc, pAllocator, mem);
 }
 
@@ -5142,6 +5144,9 @@ static VkResult radv_alloc_memory(struct radv_device *device,
 	if (mem == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &mem->base,
+			    VK_OBJECT_TYPE_DEVICE_MEMORY);
+
 	if (wsi_info && wsi_info->implicit_sync)
 		flags |= RADEON_FLAG_IMPLICIT_SYNC;
 
@@ -5601,6 +5606,8 @@ VkResult radv_CreateFence(
 	if (!fence)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &fence->base, VK_OBJECT_TYPE_FENCE);
+
 	fence->fence_wsi = NULL;
 	fence->temp_syncobj = 0;
 	if (device->always_use_syncobj || handleTypes) {
@@ -5648,6 +5655,8 @@ void radv_DestroyFence(
 		device->ws->destroy_fence(fence->fence);
 	if (fence->fence_wsi)
 		fence->fence_wsi->destroy(fence->fence_wsi);
+
+	vk_object_base_finish(&fence->base);
 	vk_free2(&device->vk.alloc, pAllocator, fence);
 }
 
@@ -6066,6 +6075,9 @@ VkResult radv_CreateSemaphore(
 	if (!sem)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &sem->base,
+			    VK_OBJECT_TYPE_SEMAPHORE);
+
 	sem->temporary.kind = RADV_SEMAPHORE_NONE;
 	sem->permanent.kind = RADV_SEMAPHORE_NONE;
 
@@ -6105,6 +6117,7 @@ void radv_DestroySemaphore(
 
 	radv_destroy_semaphore_part(device, &sem->temporary);
 	radv_destroy_semaphore_part(device, &sem->permanent);
+	vk_object_base_finish(&sem->base);
 	vk_free2(&device->vk.alloc, pAllocator, sem);
 }
 
@@ -6226,6 +6239,8 @@ VkResult radv_CreateEvent(
 	if (!event)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &event->base, VK_OBJECT_TYPE_EVENT);
+
 	event->bo = device->ws->buffer_create(device->ws, 8, 8,
 					      RADEON_DOMAIN_GTT,
 					      RADEON_FLAG_VA_UNCACHED | RADEON_FLAG_CPU_ACCESS | RADEON_FLAG_NO_INTERPROCESS_SHARING,
@@ -6253,6 +6268,7 @@ void radv_DestroyEvent(
 	if (!event)
 		return;
 	device->ws->buffer_destroy(event->bo);
+	vk_object_base_finish(&event->base);
 	vk_free2(&device->vk.alloc, pAllocator, event);
 }
 
@@ -6306,6 +6322,8 @@ VkResult radv_CreateBuffer(
 	if (buffer == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &buffer->base, VK_OBJECT_TYPE_BUFFER);
+
 	buffer->size = pCreateInfo->size;
 	buffer->usage = pCreateInfo->usage;
 	buffer->bo = NULL;
@@ -6345,6 +6363,7 @@ void radv_DestroyBuffer(
 	if (buffer->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT)
 		device->ws->buffer_destroy(buffer->bo);
 
+	vk_object_base_finish(&buffer->base);
 	vk_free2(&device->vk.alloc, pAllocator, buffer);
 }
 
@@ -6914,6 +6933,9 @@ VkResult radv_CreateFramebuffer(
 	if (framebuffer == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &framebuffer->base,
+			    VK_OBJECT_TYPE_FRAMEBUFFER);
+
 	framebuffer->attachment_count = pCreateInfo->attachmentCount;
 	framebuffer->width = pCreateInfo->width;
 	framebuffer->height = pCreateInfo->height;
@@ -6951,6 +6973,7 @@ void radv_DestroyFramebuffer(
 
 	if (!fb)
 		return;
+	vk_object_base_finish(&fb->base);
 	vk_free2(&device->vk.alloc, pAllocator, fb);
 }
 
@@ -7172,6 +7195,9 @@ VkResult radv_CreateSampler(
 	if (!sampler)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &sampler->base,
+			    VK_OBJECT_TYPE_SAMPLER);
+
 	radv_init_sampler(device, sampler, pCreateInfo);
 
 	sampler->ycbcr_sampler = ycbcr_conversion ? radv_sampler_ycbcr_conversion_from_handle(ycbcr_conversion->conversion): NULL;
@@ -7190,6 +7216,7 @@ void radv_DestroySampler(
 
 	if (!sampler)
 		return;
+	vk_object_base_finish(&sampler->base);
 	vk_free2(&device->vk.alloc, pAllocator, sampler);
 }
 
diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c
index 1ed5dc668d2..76099252290 100644
--- a/src/amd/vulkan/radv_image.c
+++ b/src/amd/vulkan/radv_image.c
@@ -1449,6 +1449,8 @@ radv_image_create(VkDevice _device,
 	if (!image)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &image->base, VK_OBJECT_TYPE_IMAGE);
+
 	image->type = pCreateInfo->imageType;
 	image->info.width = pCreateInfo->extent.width;
 	image->info.height = pCreateInfo->extent.height;
@@ -1844,6 +1846,7 @@ radv_DestroyImage(VkDevice _device, VkImage _image,
 	if (image->owned_memory != VK_NULL_HANDLE)
 		radv_FreeMemory(_device, image->owned_memory, pAllocator);
 
+	vk_object_base_finish(&image->base);
 	vk_free2(&device->vk.alloc, pAllocator, image);
 }
 
@@ -1913,6 +1916,9 @@ radv_CreateImageView(VkDevice _device,
 	if (view == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &view->base,
+			    VK_OBJECT_TYPE_IMAGE_VIEW);
+
 	radv_image_view_init(view, device, pCreateInfo, NULL);
 
 	*pView = radv_image_view_to_handle(view);
@@ -1929,6 +1935,8 @@ radv_DestroyImageView(VkDevice _device, VkImageView _iview,
 
 	if (!iview)
 		return;
+
+	vk_object_base_finish(&iview->base);
 	vk_free2(&device->vk.alloc, pAllocator, iview);
 }
 
@@ -1961,6 +1969,9 @@ radv_CreateBufferView(VkDevice _device,
 	if (!view)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &view->base,
+			    VK_OBJECT_TYPE_BUFFER_VIEW);
+
 	radv_buffer_view_init(view, device, pCreateInfo);
 
 	*pView = radv_buffer_view_to_handle(view);
@@ -1978,5 +1989,6 @@ radv_DestroyBufferView(VkDevice _device, VkBufferView bufferView,
 	if (!view)
 		return;
 
+	vk_object_base_finish(&view->base);
 	vk_free2(&device->vk.alloc, pAllocator, view);
 }
diff --git a/src/amd/vulkan/radv_pass.c b/src/amd/vulkan/radv_pass.c
index 41e8d3f4d0e..0c1ab154cb6 100644
--- a/src/amd/vulkan/radv_pass.c
+++ b/src/amd/vulkan/radv_pass.c
@@ -325,6 +325,10 @@ VkResult radv_CreateRenderPass(
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
 	memset(pass, 0, size);
+
+	vk_object_base_init(&device->vk, &pass->base,
+			    VK_OBJECT_TYPE_RENDER_PASS);
+
 	pass->attachment_count = pCreateInfo->attachmentCount;
 	pass->subpass_count = pCreateInfo->subpassCount;
 	pass->attachments = (void *) pass + attachments_offset;
@@ -507,6 +511,10 @@ VkResult radv_CreateRenderPass2(
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
 	memset(pass, 0, size);
+
+	vk_object_base_init(&device->vk, &pass->base,
+			    VK_OBJECT_TYPE_RENDER_PASS);
+
 	pass->attachment_count = pCreateInfo->attachmentCount;
 	pass->subpass_count = pCreateInfo->subpassCount;
 	pass->attachments = (void *) pass + attachments_offset;
@@ -681,6 +689,8 @@ void radv_DestroyRenderPass(
 
 	if (!_pass)
 		return;
+
+	vk_object_base_finish(&pass->base);
 	vk_free2(&device->vk.alloc, pAllocator, pass->subpass_attachments);
 	vk_free2(&device->vk.alloc, pAllocator, pass);
 }
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 7e2f4c04980..80d218716ea 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -191,6 +191,8 @@ radv_pipeline_destroy(struct radv_device *device,
 
 	if(pipeline->cs.buf)
 		free(pipeline->cs.buf);
+
+	vk_object_base_finish(&pipeline->base);
 	vk_free2(&device->vk.alloc, allocator, pipeline);
 }
 
@@ -5265,6 +5267,9 @@ radv_graphics_pipeline_create(
 	if (pipeline == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &pipeline->base,
+			    VK_OBJECT_TYPE_PIPELINE);
+
 	result = radv_pipeline_init(pipeline, device, cache,
 				    pCreateInfo, extra);
 	if (result != VK_SUCCESS) {
@@ -5403,6 +5408,9 @@ static VkResult radv_compute_pipeline_create(
 	if (pipeline == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &pipeline->base,
+			    VK_OBJECT_TYPE_PIPELINE);
+
 	pipeline->device = device;
 	pipeline->layout = radv_pipeline_layout_from_handle(pCreateInfo->layout);
 	assert(pipeline->layout);
diff --git a/src/amd/vulkan/radv_pipeline_cache.c b/src/amd/vulkan/radv_pipeline_cache.c
index fb83f073405..074c5acb7f4 100644
--- a/src/amd/vulkan/radv_pipeline_cache.c
+++ b/src/amd/vulkan/radv_pipeline_cache.c
@@ -578,6 +578,9 @@ VkResult radv_CreatePipelineCache(
 	if (cache == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &cache->base,
+			    VK_OBJECT_TYPE_PIPELINE_CACHE);
+
 	if (pAllocator)
 		cache->alloc = *pAllocator;
 	else
@@ -608,6 +611,7 @@ void radv_DestroyPipelineCache(
 		return;
 	radv_pipeline_cache_finish(cache);
 
+	vk_object_base_finish(&cache->base);
 	vk_free2(&device->vk.alloc, pAllocator, cache);
 }
 
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 073fd97ca8f..27d512a5f49 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -341,7 +341,7 @@ struct radv_physical_device {
 };
 
 struct radv_instance {
-	VK_LOADER_DATA                              _loader_data;
+	struct vk_object_base                       base;
 
 	VkAllocationCallbacks                       alloc;
 
@@ -385,6 +385,7 @@ bool radv_physical_device_extension_supported(struct radv_physical_device *dev,
 struct cache_entry;
 
 struct radv_pipeline_cache {
+	struct vk_object_base                        base;
 	struct radv_device *                          device;
 	pthread_mutex_t                              mutex;
 
@@ -871,6 +872,7 @@ struct radv_device {
 };
 
 struct radv_device_memory {
+	struct vk_object_base                        base;
 	struct radeon_winsys_bo                      *bo;
 	/* for dedicated allocations */
 	struct radv_image                            *image;
@@ -892,6 +894,7 @@ struct radv_descriptor_range {
 };
 
 struct radv_descriptor_set {
+	struct vk_object_base base;
 	const struct radv_descriptor_set_layout *layout;
 	uint32_t size;
 	uint32_t buffer_count;
@@ -917,6 +920,7 @@ struct radv_descriptor_pool_entry {
 };
 
 struct radv_descriptor_pool {
+	struct vk_object_base base;
 	struct radeon_winsys_bo *bo;
 	uint8_t *mapped_ptr;
 	uint64_t current_offset;
@@ -958,12 +962,14 @@ struct radv_descriptor_update_template_entry {
 };
 
 struct radv_descriptor_update_template {
+	struct vk_object_base base;
 	uint32_t entry_count;
 	VkPipelineBindPoint bind_point;
 	struct radv_descriptor_update_template_entry entry[0];
 };
 
 struct radv_buffer {
+	struct vk_object_base                        base;
 	VkDeviceSize                                 size;
 
 	VkBufferUsageFlags                           usage;
@@ -1316,6 +1322,7 @@ struct radv_cmd_state {
 };
 
 struct radv_cmd_pool {
+	struct vk_object_base                        base;
 	VkAllocationCallbacks                        alloc;
 	struct list_head                             cmd_buffers;
 	struct list_head                             free_cmd_buffers;
@@ -1339,7 +1346,7 @@ enum radv_cmd_buffer_status {
 };
 
 struct radv_cmd_buffer {
-	VK_LOADER_DATA                               _loader_data;
+	struct vk_object_base                         base;
 
 	struct radv_device *                          device;
 
@@ -1553,6 +1560,7 @@ void radv_unaligned_dispatch(
 	uint32_t                                    z);
 
 struct radv_event {
+	struct vk_object_base base;
 	struct radeon_winsys_bo *bo;
 	uint64_t *map;
 };
@@ -1632,6 +1640,7 @@ struct radv_binning_state {
 #define SI_GS_PER_ES 128
 
 struct radv_pipeline {
+	struct vk_object_base                         base;
 	struct radv_device *                          device;
 	struct radv_dynamic_state                     dynamic_state;
 
@@ -1768,6 +1777,7 @@ struct radv_image_plane {
 };
 
 struct radv_image {
+	struct vk_object_base base;
 	VkImageType type;
 	/* The original VkFormat provided by the client.  This may not match any
 	 * of the actual surface formats.
@@ -2006,6 +2016,7 @@ union radv_descriptor {
 };
 
 struct radv_image_view {
+	struct vk_object_base base;
 	struct radv_image *image; /**< VkImageViewCreateInfo::image */
 	struct radeon_winsys_bo *bo;
 
@@ -2084,6 +2095,7 @@ void radv_image_view_init(struct radv_image_view *view,
 VkFormat radv_get_aspect_format(struct radv_image *image, VkImageAspectFlags mask);
 
 struct radv_sampler_ycbcr_conversion {
+	struct vk_object_base base;
 	VkFormat format;
 	VkSamplerYcbcrModelConversion ycbcr_model;
 	VkSamplerYcbcrRange ycbcr_range;
@@ -2093,6 +2105,7 @@ struct radv_sampler_ycbcr_conversion {
 };
 
 struct radv_buffer_view {
+	struct vk_object_base base;
 	struct radeon_winsys_bo *bo;
 	VkFormat vk_format;
 	uint64_t range; /**< VkBufferViewCreateInfo::range */
@@ -2146,11 +2159,13 @@ radv_image_extent_compare(const struct radv_image *image,
 }
 
 struct radv_sampler {
+	struct vk_object_base base;
 	uint32_t state[4];
 	struct radv_sampler_ycbcr_conversion *ycbcr_sampler;
 };
 
 struct radv_framebuffer {
+	struct vk_object_base                        base;
 	uint32_t                                     width;
 	uint32_t                                     height;
 	uint32_t                                     layers;
@@ -2223,6 +2238,7 @@ struct radv_render_pass_attachment {
 };
 
 struct radv_render_pass {
+	struct vk_object_base                        base;
 	uint32_t                                     attachment_count;
 	uint32_t                                     subpass_count;
 	struct radv_subpass_attachment *             subpass_attachments;
@@ -2235,6 +2251,7 @@ VkResult radv_device_init_meta(struct radv_device *device);
 void radv_device_finish_meta(struct radv_device *device);
 
 struct radv_query_pool {
+	struct vk_object_base base;
 	struct radeon_winsys_bo *bo;
 	uint32_t stride;
 	uint32_t availability_offset;
@@ -2298,6 +2315,7 @@ struct radv_semaphore_part {
 };
 
 struct radv_semaphore {
+	struct vk_object_base base;
 	struct radv_semaphore_part permanent;
 	struct radv_semaphore_part temporary;
 };
@@ -2342,6 +2360,7 @@ void radv_initialize_fmask(struct radv_cmd_buffer *cmd_buffer,
 			   const VkImageSubresourceRange *range);
 
 struct radv_fence {
+	struct vk_object_base base;
 	struct radeon_winsys_fence *fence;
 	struct wsi_fence *fence_wsi;
 
diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c
index dd1291f3a84..ea2128fc4c0 100644
--- a/src/amd/vulkan/radv_query.c
+++ b/src/amd/vulkan/radv_query.c
@@ -1283,6 +1283,8 @@ VkResult radv_CreateQueryPool(
 	if (!pool)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &pool->base,
+			    VK_OBJECT_TYPE_QUERY_POOL);
 
 	switch(pCreateInfo->queryType) {
 	case VK_QUERY_TYPE_OCCLUSION:
@@ -1341,6 +1343,8 @@ void radv_DestroyQueryPool(
 		return;
 
 	device->ws->buffer_destroy(pool->bo);
+
+	vk_object_base_finish(&pool->base);
 	vk_free2(&device->vk.alloc, pAllocator, pool);
 }
 
diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index e2a816f4a4d..217fc142de3 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -166,6 +166,9 @@ VkResult radv_CreateShaderModule(
 	if (module == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+	vk_object_base_init(&device->vk, &module->base,
+			    VK_OBJECT_TYPE_SHADER_MODULE);
+
 	module->nir = NULL;
 	module->size = pCreateInfo->codeSize;
 	memcpy(module->data, pCreateInfo->pCode, module->size);
@@ -188,6 +191,7 @@ void radv_DestroyShaderModule(
 	if (!module)
 		return;
 
+	vk_object_base_finish(&module->base);
 	vk_free2(&device->vk.alloc, pAllocator, module);
 }
 
diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h
index d7c8119cd24..1795273acf1 100644
--- a/src/amd/vulkan/radv_shader.h
+++ b/src/amd/vulkan/radv_shader.h
@@ -34,10 +34,12 @@
 
 #include "nir/nir.h"
 #include "vulkan/vulkan.h"
+#include "vulkan/util/vk_object.h"
 
 struct radv_device;
 
 struct radv_shader_module {
+	struct vk_object_base base;
 	struct nir_shader *nir;
 	unsigned char sha1[20];
 	uint32_t size;



More information about the mesa-commit mailing list