v3dv: Migrate to vk_device_memory

It allows the reuse of some generic code, especially AHB logic.

Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25028>
This commit is contained in:
Roman Stratiienko
2023-09-02 21:01:33 +03:00
committed by Marge Bot
parent 22809765ac
commit 064e034d5f
2 changed files with 14 additions and 9 deletions
+11 -7
View File
@@ -2325,7 +2325,7 @@ free_memory(struct v3dv_device *device,
device_free(device, mem);
vk_object_free(&device->vk, pAllocator, mem);
vk_device_memory_destroy(&device->vk, pAllocator, &mem->vk);
}
VKAPI_ATTR void VKAPI_CALL
@@ -2350,9 +2350,6 @@ v3dv_AllocateMemory(VkDevice _device,
assert(pAllocateInfo->sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO);
/* The Vulkan 1.0.33 spec says "allocationSize must be greater than 0". */
assert(pAllocateInfo->allocationSize > 0);
/* We always allocate device memory in multiples of a page, so round up
* requested size to that.
*/
@@ -2365,8 +2362,8 @@ v3dv_AllocateMemory(VkDevice _device,
if (unlikely(heap_used + alloc_size > pdevice->memory.memoryHeaps[0].size))
return vk_error(device, VK_ERROR_OUT_OF_DEVICE_MEMORY);
mem = vk_object_zalloc(&device->vk, pAllocator, sizeof(*mem),
VK_OBJECT_TYPE_DEVICE_MEMORY);
mem = vk_device_memory_create(&device->vk, pAllocateInfo,
pAllocator, sizeof(*mem));
if (mem == NULL)
return vk_error(NULL, VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -2406,6 +2403,12 @@ v3dv_AllocateMemory(VkDevice _device,
}
VkResult result;
if (mem->vk.ahardware_buffer) {
result = VK_ERROR_FEATURE_NOT_PRESENT;
goto done;
}
if (wsi_info) {
result = device_alloc_for_wsi(device, pAllocator, mem, alloc_size);
} else if (fd_info && fd_info->handleType) {
@@ -2419,8 +2422,9 @@ v3dv_AllocateMemory(VkDevice _device,
result = device_alloc(device, mem, alloc_size);
}
done:
if (result != VK_SUCCESS) {
vk_object_free(&device->vk, pAllocator, mem);
vk_device_memory_destroy(&device->vk, pAllocator, &mem->vk);
return vk_error(device, result);
}
+3 -2
View File
@@ -38,6 +38,7 @@
#include "vk_descriptor_update_template.h"
#include "vk_device.h"
#include "vk_device_memory.h"
#include "vk_format.h"
#include "vk_instance.h"
#include "vk_image.h"
@@ -597,7 +598,7 @@ struct v3dv_device {
};
struct v3dv_device_memory {
struct vk_object_base base;
struct vk_device_memory vk;
struct v3dv_bo *bo;
const VkMemoryType *type;
@@ -2483,7 +2484,7 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(v3dv_buffer, base, VkBuffer,
VK_OBJECT_TYPE_BUFFER)
VK_DEFINE_NONDISP_HANDLE_CASTS(v3dv_buffer_view, base, VkBufferView,
VK_OBJECT_TYPE_BUFFER_VIEW)
VK_DEFINE_NONDISP_HANDLE_CASTS(v3dv_device_memory, base, VkDeviceMemory,
VK_DEFINE_NONDISP_HANDLE_CASTS(v3dv_device_memory, vk.base, VkDeviceMemory,
VK_OBJECT_TYPE_DEVICE_MEMORY)
VK_DEFINE_NONDISP_HANDLE_CASTS(v3dv_descriptor_pool, base, VkDescriptorPool,
VK_OBJECT_TYPE_DESCRIPTOR_POOL)