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:
committed by
Marge Bot
parent
22809765ac
commit
064e034d5f
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user