Mesa (master): radv: use the common base object type for VkDevice

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


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Wed Apr 29 10:16:32 2020 +0200

radv: use the common base object type for VkDevice

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     |  6 +--
 src/amd/vulkan/radv_descriptor_set.c | 30 +++++++--------
 src/amd/vulkan/radv_device.c         | 72 ++++++++++++++++++------------------
 src/amd/vulkan/radv_image.c          | 14 +++----
 src/amd/vulkan/radv_meta.c           |  6 +--
 src/amd/vulkan/radv_pass.c           | 16 ++++----
 src/amd/vulkan/radv_pipeline.c       |  6 +--
 src/amd/vulkan/radv_pipeline_cache.c |  6 +--
 src/amd/vulkan/radv_private.h        |  5 +--
 src/amd/vulkan/radv_query.c          |  8 ++--
 src/amd/vulkan/radv_shader.c         |  4 +-
 src/amd/vulkan/radv_wsi.c            |  4 +-
 12 files changed, 87 insertions(+), 90 deletions(-)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index d96b5649976..a5846460455 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -4256,7 +4256,7 @@ VkResult radv_CreateCommandPool(
 	RADV_FROM_HANDLE(radv_device, device, _device);
 	struct radv_cmd_pool *pool;
 
-	pool = vk_alloc2(&device->alloc, pAllocator, sizeof(*pool), 8,
+	pool = vk_alloc2(&device->vk.alloc, pAllocator, sizeof(*pool), 8,
 			   VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (pool == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -4264,7 +4264,7 @@ VkResult radv_CreateCommandPool(
 	if (pAllocator)
 		pool->alloc = *pAllocator;
 	else
-		pool->alloc = device->alloc;
+		pool->alloc = device->vk.alloc;
 
 	list_inithead(&pool->cmd_buffers);
 	list_inithead(&pool->free_cmd_buffers);
@@ -4298,7 +4298,7 @@ void radv_DestroyCommandPool(
 		radv_cmd_buffer_destroy(cmd_buffer);
 	}
 
-	vk_free2(&device->alloc, pAllocator, pool);
+	vk_free2(&device->vk.alloc, pAllocator, pool);
 }
 
 VkResult radv_ResetCommandPool(
diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c
index 126176a9706..f537a89db40 100644
--- a/src/amd/vulkan/radv_descriptor_set.c
+++ b/src/amd/vulkan/radv_descriptor_set.c
@@ -109,7 +109,7 @@ VkResult radv_CreateDescriptorSetLayout(
 		size += ycbcr_sampler_count * sizeof(struct radv_sampler_ycbcr_conversion) + (max_binding + 1) * sizeof(uint32_t);
 	}
 
-	set_layout = vk_zalloc2(&device->alloc, pAllocator, size, 8,
+	set_layout = vk_zalloc2(&device->vk.alloc, pAllocator, size, 8,
 	                        VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (!set_layout)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -132,7 +132,7 @@ VkResult radv_CreateDescriptorSetLayout(
 	VkDescriptorSetLayoutBinding *bindings = create_sorted_bindings(pCreateInfo->pBindings,
 	                                                                pCreateInfo->bindingCount);
 	if (!bindings) {
-		vk_free2(&device->alloc, pAllocator, set_layout);
+		vk_free2(&device->vk.alloc, pAllocator, set_layout);
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 	}
 
@@ -295,7 +295,7 @@ void radv_DestroyDescriptorSetLayout(
 	if (!set_layout)
 		return;
 
-	vk_free2(&device->alloc, pAllocator, set_layout);
+	vk_free2(&device->vk.alloc, pAllocator, set_layout);
 }
 
 void radv_GetDescriptorSetLayoutSupport(VkDevice device,
@@ -408,7 +408,7 @@ VkResult radv_CreatePipelineLayout(
 
 	assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO);
 
-	layout = vk_alloc2(&device->alloc, pAllocator, sizeof(*layout), 8,
+	layout = vk_alloc2(&device->vk.alloc, pAllocator, sizeof(*layout), 8,
 			     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (layout == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -462,7 +462,7 @@ void radv_DestroyPipelineLayout(
 
 	if (!pipeline_layout)
 		return;
-	vk_free2(&device->alloc, pAllocator, pipeline_layout);
+	vk_free2(&device->vk.alloc, pAllocator, pipeline_layout);
 }
 
 #define EMPTY 1
@@ -496,7 +496,7 @@ radv_descriptor_set_create(struct radv_device *device,
 		set = (struct radv_descriptor_set*)pool->host_memory_ptr;
 		pool->host_memory_ptr += mem_size;
 	} else {
-		set = vk_alloc2(&device->alloc, NULL, mem_size, 8,
+		set = vk_alloc2(&device->vk.alloc, NULL, mem_size, 8,
 		                VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 
 		if (!set)
@@ -526,7 +526,7 @@ radv_descriptor_set_create(struct radv_device *device,
 		set->size = layout_size;
 
 		if (!pool->host_memory_base && pool->entry_count == pool->max_entry_count) {
-			vk_free2(&device->alloc, NULL, set);
+			vk_free2(&device->vk.alloc, NULL, set);
 			return vk_error(device->instance, VK_ERROR_OUT_OF_POOL_MEMORY);
 		}
 
@@ -555,7 +555,7 @@ radv_descriptor_set_create(struct radv_device *device,
 			}
 
 			if (pool->size - offset < layout_size) {
-				vk_free2(&device->alloc, NULL, set);
+				vk_free2(&device->vk.alloc, NULL, set);
 				return vk_error(device->instance, VK_ERROR_OUT_OF_POOL_MEMORY);
 			}
 			set->bo = pool->bo;
@@ -612,7 +612,7 @@ radv_descriptor_set_destroy(struct radv_device *device,
 			}
 		}
 	}
-	vk_free2(&device->alloc, NULL, set);
+	vk_free2(&device->vk.alloc, NULL, set);
 }
 
 VkResult radv_CreateDescriptorPool(
@@ -684,7 +684,7 @@ VkResult radv_CreateDescriptorPool(
 		size += sizeof(struct radv_descriptor_pool_entry) * pCreateInfo->maxSets;
 	}
 
-	pool = vk_alloc2(&device->alloc, pAllocator, size, 8,
+	pool = vk_alloc2(&device->vk.alloc, pAllocator, size, 8,
 	                 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (!pool)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -732,7 +732,7 @@ void radv_DestroyDescriptorPool(
 
 	if (pool->bo)
 		device->ws->buffer_destroy(pool->bo);
-	vk_free2(&device->alloc, pAllocator, pool);
+	vk_free2(&device->vk.alloc, pAllocator, pool);
 }
 
 VkResult radv_ResetDescriptorPool(
@@ -1179,7 +1179,7 @@ VkResult radv_CreateDescriptorUpdateTemplate(VkDevice _device,
 	struct radv_descriptor_update_template *templ;
 	uint32_t i;
 
-	templ = vk_alloc2(&device->alloc, pAllocator, size, 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
+	templ = vk_alloc2(&device->vk.alloc, pAllocator, size, 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (!templ)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
@@ -1266,7 +1266,7 @@ void radv_DestroyDescriptorUpdateTemplate(VkDevice _device,
 	if (!templ)
 		return;
 
-	vk_free2(&device->alloc, pAllocator, templ);
+	vk_free2(&device->vk.alloc, pAllocator, templ);
 }
 
 void radv_update_descriptor_set_with_template(struct radv_device *device,
@@ -1362,7 +1362,7 @@ VkResult radv_CreateSamplerYcbcrConversion(VkDevice _device,
 	RADV_FROM_HANDLE(radv_device, device, _device);
 	struct radv_sampler_ycbcr_conversion *conversion = NULL;
 
-	conversion = vk_zalloc2(&device->alloc, pAllocator, sizeof(*conversion), 8,
+	conversion = vk_zalloc2(&device->vk.alloc, pAllocator, sizeof(*conversion), 8,
 	                        VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 
 	if (conversion == NULL)
@@ -1389,5 +1389,5 @@ void radv_DestroySamplerYcbcrConversion(VkDevice _device,
 	RADV_FROM_HANDLE(radv_sampler_ycbcr_conversion, ycbcr_conversion, ycbcrConversion);
 
 	if (ycbcr_conversion)
-		vk_free2(&device->alloc, pAllocator, ycbcr_conversion);
+		vk_free2(&device->vk.alloc, pAllocator, ycbcr_conversion);
 }
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index d5d1553e5f9..803f344224a 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -2520,7 +2520,7 @@ static void run_secure_compile_device(struct radv_device *device, unsigned proce
 			struct radv_pipeline *pipeline;
 			bool sc_read = true;
 
-			pipeline = vk_zalloc2(&device->alloc, NULL, sizeof(*pipeline), 8,
+			pipeline = vk_zalloc2(&device->vk.alloc, NULL, sizeof(*pipeline), 8,
 					      VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 
 			pipeline->device = device;
@@ -2646,7 +2646,7 @@ static void run_secure_compile_device(struct radv_device *device, unsigned proce
 				free((void *) pStages[i]);
 			}
 
-			vk_free(&device->alloc, pipeline);
+			vk_free(&device->vk.alloc, pipeline);
 
 			sc_type = RADV_SC_TYPE_COMPILE_PIPELINE_FINISHED;
 			write(fd_secure_output, &sc_type, sizeof(sc_type));
@@ -2761,7 +2761,7 @@ static void destroy_secure_compile_device(struct radv_device *device, unsigned p
 
 static VkResult fork_secure_compile_idle_device(struct radv_device *device)
 {
-	device->sc_state = vk_zalloc(&device->alloc,
+	device->sc_state = vk_zalloc(&device->vk.alloc,
 				     sizeof(struct radv_secure_compile_state),
 				     8, VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
 
@@ -2788,7 +2788,7 @@ static VkResult fork_secure_compile_idle_device(struct radv_device *device)
 		}
 	}
 
-	device->sc_state->secure_compile_processes = vk_zalloc(&device->alloc,
+	device->sc_state->secure_compile_processes = vk_zalloc(&device->vk.alloc,
 								sizeof(struct radv_secure_compile_process) * sc_threads, 8,
 								VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
 
@@ -2961,21 +2961,19 @@ VkResult radv_CreateDevice(
 	if (!device)
 		return vk_error(physical_device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
-	device->_loader_data.loaderMagic = ICD_LOADER_MAGIC;
+	vk_device_init(&device->vk, pCreateInfo,
+		       &physical_device->instance->alloc, pAllocator);
+
 	device->instance = physical_device->instance;
 	device->physical_device = physical_device;
 
 	device->ws = physical_device->ws;
-	if (pAllocator)
-		device->alloc = *pAllocator;
-	else
-		device->alloc = physical_device->instance->alloc;
 
 	for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
 		const char *ext_name = pCreateInfo->ppEnabledExtensionNames[i];
 		int index = radv_get_device_extension_index(ext_name);
 		if (index < 0 || !physical_device->supported_extensions.extensions[index]) {
-			vk_free(&device->alloc, device);
+			vk_free(&device->vk.alloc, device);
 			return vk_error(physical_device->instance, VK_ERROR_EXTENSION_NOT_PRESENT);
 		}
 
@@ -3013,7 +3011,7 @@ VkResult radv_CreateDevice(
 
 		assert(!global_priority || device->physical_device->rad_info.has_ctx_priority);
 
-		device->queues[qfi] = vk_alloc(&device->alloc,
+		device->queues[qfi] = vk_alloc(&device->vk.alloc,
 					       queue_create->queueCount * sizeof(struct radv_queue), 8, VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
 		if (!device->queues[qfi]) {
 			result = VK_ERROR_OUT_OF_HOST_MEMORY;
@@ -3197,10 +3195,10 @@ fail:
 		for (unsigned q = 0; q < device->queue_count[i]; q++)
 			radv_queue_finish(&device->queues[i][q]);
 		if (device->queue_count[i])
-			vk_free(&device->alloc, device->queues[i]);
+			vk_free(&device->vk.alloc, device->queues[i]);
 	}
 
-	vk_free(&device->alloc, device);
+	vk_free(&device->vk.alloc, device);
 	return result;
 }
 
@@ -3223,7 +3221,7 @@ void radv_DestroyDevice(
 		for (unsigned q = 0; q < device->queue_count[i]; q++)
 			radv_queue_finish(&device->queues[i][q]);
 		if (device->queue_count[i])
-			vk_free(&device->alloc, device->queues[i]);
+			vk_free(&device->vk.alloc, device->queues[i]);
 		if (device->empty_cs[i])
 			device->ws->cs_destroy(device->empty_cs[i]);
 	}
@@ -3247,10 +3245,10 @@ void radv_DestroyDevice(
 
 	if (device->sc_state) {
 		free(device->sc_state->uid);
-		vk_free(&device->alloc, device->sc_state->secure_compile_processes);
+		vk_free(&device->vk.alloc, device->sc_state->secure_compile_processes);
 	}
-	vk_free(&device->alloc, device->sc_state);
-	vk_free(&device->alloc, device);
+	vk_free(&device->vk.alloc, device->sc_state);
+	vk_free(&device->vk.alloc, device);
 }
 
 VkResult radv_EnumerateInstanceLayerProperties(
@@ -5102,7 +5100,7 @@ static void radv_free_memory(struct radv_device *device,
 		mem->bo = NULL;
 	}
 
-	vk_free2(&device->alloc, pAllocator, mem);
+	vk_free2(&device->vk.alloc, pAllocator, mem);
 }
 
 static VkResult radv_alloc_memory(struct radv_device *device,
@@ -5139,7 +5137,7 @@ static VkResult radv_alloc_memory(struct radv_device *device,
 		return VK_SUCCESS;
 	}
 
-	mem = vk_zalloc2(&device->alloc, pAllocator, sizeof(*mem), 8,
+	mem = vk_zalloc2(&device->vk.alloc, pAllocator, sizeof(*mem), 8,
 			  VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (mem == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -5596,7 +5594,7 @@ VkResult radv_CreateFence(
 	VkExternalFenceHandleTypeFlags handleTypes =
 		export ? export->handleTypes : 0;
 
-	struct radv_fence *fence = vk_alloc2(&device->alloc, pAllocator,
+	struct radv_fence *fence = vk_alloc2(&device->vk.alloc, pAllocator,
 					       sizeof(*fence), 8,
 					       VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 
@@ -5608,7 +5606,7 @@ VkResult radv_CreateFence(
 	if (device->always_use_syncobj || handleTypes) {
 		int ret = device->ws->create_syncobj(device->ws, &fence->syncobj);
 		if (ret) {
-			vk_free2(&device->alloc, pAllocator, fence);
+			vk_free2(&device->vk.alloc, pAllocator, fence);
 			return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 		}
 		if (pCreateInfo->flags & VK_FENCE_CREATE_SIGNALED_BIT) {
@@ -5618,7 +5616,7 @@ VkResult radv_CreateFence(
 	} else {
 		fence->fence = device->ws->create_fence();
 		if (!fence->fence) {
-			vk_free2(&device->alloc, pAllocator, fence);
+			vk_free2(&device->vk.alloc, pAllocator, fence);
 			return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 		}
 		fence->syncobj = 0;
@@ -5650,7 +5648,7 @@ void radv_DestroyFence(
 		device->ws->destroy_fence(fence->fence);
 	if (fence->fence_wsi)
 		fence->fence_wsi->destroy(fence->fence_wsi);
-	vk_free2(&device->alloc, pAllocator, fence);
+	vk_free2(&device->vk.alloc, pAllocator, fence);
 }
 
 
@@ -6062,7 +6060,7 @@ VkResult radv_CreateSemaphore(
 	uint64_t initial_value = 0;
 	VkSemaphoreTypeKHR type = radv_get_semaphore_type(pCreateInfo->pNext, &initial_value);
 
-	struct radv_semaphore *sem = vk_alloc2(&device->alloc, pAllocator,
+	struct radv_semaphore *sem = vk_alloc2(&device->vk.alloc, pAllocator,
 					       sizeof(*sem), 8,
 					       VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (!sem)
@@ -6078,14 +6076,14 @@ VkResult radv_CreateSemaphore(
 		assert (device->physical_device->rad_info.has_syncobj);
 		int ret = device->ws->create_syncobj(device->ws, &sem->permanent.syncobj);
 		if (ret) {
-			vk_free2(&device->alloc, pAllocator, sem);
+			vk_free2(&device->vk.alloc, pAllocator, sem);
 			return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 		}
 		sem->permanent.kind = RADV_SEMAPHORE_SYNCOBJ;
 	} else {
 		sem->permanent.ws_sem = device->ws->create_sem(device->ws);
 		if (!sem->permanent.ws_sem) {
-			vk_free2(&device->alloc, pAllocator, sem);
+			vk_free2(&device->vk.alloc, pAllocator, sem);
 			return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 		}
 		sem->permanent.kind = RADV_SEMAPHORE_WINSYS;
@@ -6107,7 +6105,7 @@ void radv_DestroySemaphore(
 
 	radv_destroy_semaphore_part(device, &sem->temporary);
 	radv_destroy_semaphore_part(device, &sem->permanent);
-	vk_free2(&device->alloc, pAllocator, sem);
+	vk_free2(&device->vk.alloc, pAllocator, sem);
 }
 
 VkResult
@@ -6221,7 +6219,7 @@ VkResult radv_CreateEvent(
 	VkEvent*                                    pEvent)
 {
 	RADV_FROM_HANDLE(radv_device, device, _device);
-	struct radv_event *event = vk_alloc2(&device->alloc, pAllocator,
+	struct radv_event *event = vk_alloc2(&device->vk.alloc, pAllocator,
 					       sizeof(*event), 8,
 					       VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 
@@ -6233,7 +6231,7 @@ VkResult radv_CreateEvent(
 					      RADEON_FLAG_VA_UNCACHED | RADEON_FLAG_CPU_ACCESS | RADEON_FLAG_NO_INTERPROCESS_SHARING,
 					      RADV_BO_PRIORITY_FENCE);
 	if (!event->bo) {
-		vk_free2(&device->alloc, pAllocator, event);
+		vk_free2(&device->vk.alloc, pAllocator, event);
 		return vk_error(device->instance, VK_ERROR_OUT_OF_DEVICE_MEMORY);
 	}
 
@@ -6255,7 +6253,7 @@ void radv_DestroyEvent(
 	if (!event)
 		return;
 	device->ws->buffer_destroy(event->bo);
-	vk_free2(&device->alloc, pAllocator, event);
+	vk_free2(&device->vk.alloc, pAllocator, event);
 }
 
 VkResult radv_GetEventStatus(
@@ -6303,7 +6301,7 @@ VkResult radv_CreateBuffer(
 
 	assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO);
 
-	buffer = vk_alloc2(&device->alloc, pAllocator, sizeof(*buffer), 8,
+	buffer = vk_alloc2(&device->vk.alloc, pAllocator, sizeof(*buffer), 8,
 			     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (buffer == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -6323,7 +6321,7 @@ VkResult radv_CreateBuffer(
 		                                       4096, 0, RADEON_FLAG_VIRTUAL,
 		                                       RADV_BO_PRIORITY_VIRTUAL);
 		if (!buffer->bo) {
-			vk_free2(&device->alloc, pAllocator, buffer);
+			vk_free2(&device->vk.alloc, pAllocator, buffer);
 			return vk_error(device->instance, VK_ERROR_OUT_OF_DEVICE_MEMORY);
 		}
 	}
@@ -6347,7 +6345,7 @@ void radv_DestroyBuffer(
 	if (buffer->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT)
 		device->ws->buffer_destroy(buffer->bo);
 
-	vk_free2(&device->alloc, pAllocator, buffer);
+	vk_free2(&device->vk.alloc, pAllocator, buffer);
 }
 
 VkDeviceAddress radv_GetBufferDeviceAddress(
@@ -6911,7 +6909,7 @@ VkResult radv_CreateFramebuffer(
 	size_t size = sizeof(*framebuffer);
 	if (!imageless_create_info)
 		size += sizeof(struct radv_image_view*) * pCreateInfo->attachmentCount;
-	framebuffer = vk_alloc2(&device->alloc, pAllocator, size, 8,
+	framebuffer = vk_alloc2(&device->vk.alloc, pAllocator, size, 8,
 				  VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (framebuffer == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -6953,7 +6951,7 @@ void radv_DestroyFramebuffer(
 
 	if (!fb)
 		return;
-	vk_free2(&device->alloc, pAllocator, fb);
+	vk_free2(&device->vk.alloc, pAllocator, fb);
 }
 
 static unsigned radv_tex_wrap(VkSamplerAddressMode address_mode)
@@ -7169,7 +7167,7 @@ VkResult radv_CreateSampler(
 
 	assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO);
 
-	sampler = vk_alloc2(&device->alloc, pAllocator, sizeof(*sampler), 8,
+	sampler = vk_alloc2(&device->vk.alloc, pAllocator, sizeof(*sampler), 8,
 			      VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (!sampler)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -7192,7 +7190,7 @@ void radv_DestroySampler(
 
 	if (!sampler)
 		return;
-	vk_free2(&device->alloc, pAllocator, sampler);
+	vk_free2(&device->vk.alloc, pAllocator, sampler);
 }
 
 /* vk_icd.h does not declare this function, so we declare it here to
diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c
index 29eb78c7c09..1ed5dc668d2 100644
--- a/src/amd/vulkan/radv_image.c
+++ b/src/amd/vulkan/radv_image.c
@@ -1444,7 +1444,7 @@ radv_image_create(VkDevice _device,
 	radv_assert(pCreateInfo->extent.height > 0);
 	radv_assert(pCreateInfo->extent.depth > 0);
 
-	image = vk_zalloc2(&device->alloc, alloc, image_struct_size, 8,
+	image = vk_zalloc2(&device->vk.alloc, alloc, image_struct_size, 8,
 			   VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (!image)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -1508,7 +1508,7 @@ radv_image_create(VkDevice _device,
 		image->bo = device->ws->buffer_create(device->ws, image->size, image->alignment,
 		                                      0, RADEON_FLAG_VIRTUAL, RADV_BO_PRIORITY_VIRTUAL);
 		if (!image->bo) {
-			vk_free2(&device->alloc, alloc, image);
+			vk_free2(&device->vk.alloc, alloc, image);
 			return vk_error(device->instance, VK_ERROR_OUT_OF_DEVICE_MEMORY);
 		}
 	}
@@ -1844,7 +1844,7 @@ radv_DestroyImage(VkDevice _device, VkImage _image,
 	if (image->owned_memory != VK_NULL_HANDLE)
 		radv_FreeMemory(_device, image->owned_memory, pAllocator);
 
-	vk_free2(&device->alloc, pAllocator, image);
+	vk_free2(&device->vk.alloc, pAllocator, image);
 }
 
 void radv_GetImageSubresourceLayout(
@@ -1908,7 +1908,7 @@ radv_CreateImageView(VkDevice _device,
 	RADV_FROM_HANDLE(radv_device, device, _device);
 	struct radv_image_view *view;
 
-	view = vk_alloc2(&device->alloc, pAllocator, sizeof(*view), 8,
+	view = vk_alloc2(&device->vk.alloc, pAllocator, sizeof(*view), 8,
 			   VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (view == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -1929,7 +1929,7 @@ radv_DestroyImageView(VkDevice _device, VkImageView _iview,
 
 	if (!iview)
 		return;
-	vk_free2(&device->alloc, pAllocator, iview);
+	vk_free2(&device->vk.alloc, pAllocator, iview);
 }
 
 void radv_buffer_view_init(struct radv_buffer_view *view,
@@ -1956,7 +1956,7 @@ radv_CreateBufferView(VkDevice _device,
 	RADV_FROM_HANDLE(radv_device, device, _device);
 	struct radv_buffer_view *view;
 
-	view = vk_alloc2(&device->alloc, pAllocator, sizeof(*view), 8,
+	view = vk_alloc2(&device->vk.alloc, pAllocator, sizeof(*view), 8,
 			   VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (!view)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -1978,5 +1978,5 @@ radv_DestroyBufferView(VkDevice _device, VkBufferView bufferView,
 	if (!view)
 		return;
 
-	vk_free2(&device->alloc, pAllocator, view);
+	vk_free2(&device->vk.alloc, pAllocator, view);
 }
diff --git a/src/amd/vulkan/radv_meta.c b/src/amd/vulkan/radv_meta.c
index 448a6168bd2..0acffbc5ccd 100644
--- a/src/amd/vulkan/radv_meta.c
+++ b/src/amd/vulkan/radv_meta.c
@@ -219,7 +219,7 @@ meta_alloc(void* _device, size_t size, size_t alignment,
            VkSystemAllocationScope allocationScope)
 {
 	struct radv_device *device = _device;
-	return device->alloc.pfnAllocation(device->alloc.pUserData, size, alignment,
+	return device->vk.alloc.pfnAllocation(device->vk.alloc.pUserData, size, alignment,
 					   VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
 }
 
@@ -228,7 +228,7 @@ meta_realloc(void* _device, void *original, size_t size, size_t alignment,
              VkSystemAllocationScope allocationScope)
 {
 	struct radv_device *device = _device;
-	return device->alloc.pfnReallocation(device->alloc.pUserData, original,
+	return device->vk.alloc.pfnReallocation(device->vk.alloc.pUserData, original,
 					     size, alignment,
 					     VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
 }
@@ -237,7 +237,7 @@ static void
 meta_free(void* _device, void *data)
 {
 	struct radv_device *device = _device;
-	return device->alloc.pfnFree(device->alloc.pUserData, data);
+	return device->vk.alloc.pfnFree(device->vk.alloc.pUserData, data);
 }
 
 static bool
diff --git a/src/amd/vulkan/radv_pass.c b/src/amd/vulkan/radv_pass.c
index 4df3e81eead..41e8d3f4d0e 100644
--- a/src/amd/vulkan/radv_pass.c
+++ b/src/amd/vulkan/radv_pass.c
@@ -319,7 +319,7 @@ VkResult radv_CreateRenderPass(
 	attachments_offset = size;
 	size += pCreateInfo->attachmentCount * sizeof(pass->attachments[0]);
 
-	pass = vk_alloc2(&device->alloc, pAllocator, size, 8,
+	pass = vk_alloc2(&device->vk.alloc, pAllocator, size, 8,
 			   VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (pass == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -362,11 +362,11 @@ VkResult radv_CreateRenderPass(
 
 	if (subpass_attachment_count) {
 		pass->subpass_attachments =
-			vk_alloc2(&device->alloc, pAllocator,
+			vk_alloc2(&device->vk.alloc, pAllocator,
 				    subpass_attachment_count * sizeof(struct radv_subpass_attachment), 8,
 				    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 		if (pass->subpass_attachments == NULL) {
-			vk_free2(&device->alloc, pAllocator, pass);
+			vk_free2(&device->vk.alloc, pAllocator, pass);
 			return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 		}
 	} else
@@ -501,7 +501,7 @@ VkResult radv_CreateRenderPass2(
 	attachments_offset = size;
 	size += pCreateInfo->attachmentCount * sizeof(pass->attachments[0]);
 
-	pass = vk_alloc2(&device->alloc, pAllocator, size, 8,
+	pass = vk_alloc2(&device->vk.alloc, pAllocator, size, 8,
 			   VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (pass == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -541,11 +541,11 @@ VkResult radv_CreateRenderPass2(
 
 	if (subpass_attachment_count) {
 		pass->subpass_attachments =
-			vk_alloc2(&device->alloc, pAllocator,
+			vk_alloc2(&device->vk.alloc, pAllocator,
 				    subpass_attachment_count * sizeof(struct radv_subpass_attachment), 8,
 				    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 		if (pass->subpass_attachments == NULL) {
-			vk_free2(&device->alloc, pAllocator, pass);
+			vk_free2(&device->vk.alloc, pAllocator, pass);
 			return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 		}
 	} else
@@ -681,8 +681,8 @@ void radv_DestroyRenderPass(
 
 	if (!_pass)
 		return;
-	vk_free2(&device->alloc, pAllocator, pass->subpass_attachments);
-	vk_free2(&device->alloc, pAllocator, pass);
+	vk_free2(&device->vk.alloc, pAllocator, pass->subpass_attachments);
+	vk_free2(&device->vk.alloc, pAllocator, pass);
 }
 
 void radv_GetRenderAreaGranularity(
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 33b93e7d0c9..7e2f4c04980 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -191,7 +191,7 @@ radv_pipeline_destroy(struct radv_device *device,
 
 	if(pipeline->cs.buf)
 		free(pipeline->cs.buf);
-	vk_free2(&device->alloc, allocator, pipeline);
+	vk_free2(&device->vk.alloc, allocator, pipeline);
 }
 
 void radv_DestroyPipeline(
@@ -5260,7 +5260,7 @@ radv_graphics_pipeline_create(
 	struct radv_pipeline *pipeline;
 	VkResult result;
 
-	pipeline = vk_zalloc2(&device->alloc, pAllocator, sizeof(*pipeline), 8,
+	pipeline = vk_zalloc2(&device->vk.alloc, pAllocator, sizeof(*pipeline), 8,
 			      VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (pipeline == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -5398,7 +5398,7 @@ static VkResult radv_compute_pipeline_create(
 	struct radv_pipeline *pipeline;
 	VkResult result;
 
-	pipeline = vk_zalloc2(&device->alloc, pAllocator, sizeof(*pipeline), 8,
+	pipeline = vk_zalloc2(&device->vk.alloc, pAllocator, sizeof(*pipeline), 8,
 			      VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (pipeline == NULL)
 		return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
diff --git a/src/amd/vulkan/radv_pipeline_cache.c b/src/amd/vulkan/radv_pipeline_cache.c
index bbddbbc2579..fb83f073405 100644
--- a/src/amd/vulkan/radv_pipeline_cache.c
+++ b/src/amd/vulkan/radv_pipeline_cache.c
@@ -572,7 +572,7 @@ VkResult radv_CreatePipelineCache(
 	assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO);
 	assert(pCreateInfo->flags == 0);
 
-	cache = vk_alloc2(&device->alloc, pAllocator,
+	cache = vk_alloc2(&device->vk.alloc, pAllocator,
 			    sizeof(*cache), 8,
 			    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (cache == NULL)
@@ -581,7 +581,7 @@ VkResult radv_CreatePipelineCache(
 	if (pAllocator)
 		cache->alloc = *pAllocator;
 	else
-		cache->alloc = device->alloc;
+		cache->alloc = device->vk.alloc;
 
 	radv_pipeline_cache_init(cache, device);
 
@@ -608,7 +608,7 @@ void radv_DestroyPipelineCache(
 		return;
 	radv_pipeline_cache_finish(cache);
 
-	vk_free2(&device->alloc, pAllocator, cache);
+	vk_free2(&device->vk.alloc, pAllocator, cache);
 }
 
 VkResult radv_GetPipelineCacheData(
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 6b54a8ad600..073fd97ca8f 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -51,6 +51,7 @@
 #include "util/xmlconfig.h"
 #include "vk_alloc.h"
 #include "vk_debug_report.h"
+#include "vk_object.h"
 
 #include "radv_radeon_winsys.h"
 #include "ac_binary.h"
@@ -780,9 +781,7 @@ struct radv_secure_compile_state {
 };
 
 struct radv_device {
-	VK_LOADER_DATA                              _loader_data;
-
-	VkAllocationCallbacks                       alloc;
+	struct vk_device vk;
 
 	struct radv_instance *                       instance;
 	struct radeon_winsys *ws;
diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c
index 07a1c387187..dd1291f3a84 100644
--- a/src/amd/vulkan/radv_query.c
+++ b/src/amd/vulkan/radv_query.c
@@ -1276,7 +1276,7 @@ VkResult radv_CreateQueryPool(
 	VkQueryPool*                                pQueryPool)
 {
 	RADV_FROM_HANDLE(radv_device, device, _device);
-	struct radv_query_pool *pool = vk_alloc2(&device->alloc, pAllocator,
+	struct radv_query_pool *pool = vk_alloc2(&device->vk.alloc, pAllocator,
 					       sizeof(*pool), 8,
 					       VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 
@@ -1313,7 +1313,7 @@ VkResult radv_CreateQueryPool(
 					     RADV_BO_PRIORITY_QUERY_POOL);
 
 	if (!pool->bo) {
-		vk_free2(&device->alloc, pAllocator, pool);
+		vk_free2(&device->vk.alloc, pAllocator, pool);
 		return vk_error(device->instance, VK_ERROR_OUT_OF_DEVICE_MEMORY);
 	}
 
@@ -1321,7 +1321,7 @@ VkResult radv_CreateQueryPool(
 
 	if (!pool->ptr) {
 		device->ws->buffer_destroy(pool->bo);
-		vk_free2(&device->alloc, pAllocator, pool);
+		vk_free2(&device->vk.alloc, pAllocator, pool);
 		return vk_error(device->instance, VK_ERROR_OUT_OF_DEVICE_MEMORY);
 	}
 
@@ -1341,7 +1341,7 @@ void radv_DestroyQueryPool(
 		return;
 
 	device->ws->buffer_destroy(pool->bo);
-	vk_free2(&device->alloc, pAllocator, pool);
+	vk_free2(&device->vk.alloc, pAllocator, pool);
 }
 
 VkResult radv_GetQueryPoolResults(
diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index 36a7b5f5511..e2a816f4a4d 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -160,7 +160,7 @@ VkResult radv_CreateShaderModule(
 	assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO);
 	assert(pCreateInfo->flags == 0);
 
-	module = vk_alloc2(&device->alloc, pAllocator,
+	module = vk_alloc2(&device->vk.alloc, pAllocator,
 			     sizeof(*module) + pCreateInfo->codeSize, 8,
 			     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
 	if (module == NULL)
@@ -188,7 +188,7 @@ void radv_DestroyShaderModule(
 	if (!module)
 		return;
 
-	vk_free2(&device->alloc, pAllocator, module);
+	vk_free2(&device->vk.alloc, pAllocator, module);
 }
 
 void
diff --git a/src/amd/vulkan/radv_wsi.c b/src/amd/vulkan/radv_wsi.c
index d93b263e859..1fe58714a1e 100644
--- a/src/amd/vulkan/radv_wsi.c
+++ b/src/amd/vulkan/radv_wsi.c
@@ -186,7 +186,7 @@ VkResult radv_CreateSwapchainKHR(
 	if (pAllocator)
 		alloc = pAllocator;
 	else
-		alloc = &device->alloc;
+		alloc = &device->vk.alloc;
 
 	return wsi_common_create_swapchain(&device->physical_device->wsi_device,
 					   radv_device_to_handle(device),
@@ -206,7 +206,7 @@ void radv_DestroySwapchainKHR(
 	if (pAllocator)
 		alloc = pAllocator;
 	else
-		alloc = &device->alloc;
+		alloc = &device->vk.alloc;
 
 	wsi_common_destroy_swapchain(_device, swapchain, alloc);
 }



More information about the mesa-commit mailing list