mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
v3dv: memory management stubs
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
This commit is contained in:
parent
fd81dc64ff
commit
36e07a0ab9
2 changed files with 133 additions and 0 deletions
|
|
@ -498,3 +498,105 @@ v3dv_DestroyDebugReportCallbackEXT(VkInstance _instance,
|
|||
vk_destroy_debug_report_callback(&instance->debug_report_callbacks,
|
||||
_callback, pAllocator, &instance->alloc);
|
||||
}
|
||||
|
||||
VkResult
|
||||
v3dv_AllocateMemory(VkDevice _device,
|
||||
const VkMemoryAllocateInfo *pAllocateInfo,
|
||||
const VkAllocationCallbacks *pAllocator,
|
||||
VkDeviceMemory *pMem)
|
||||
{
|
||||
V3DV_FROM_HANDLE(v3dv_device, device, _device);
|
||||
struct v3dv_device_memory *mem;
|
||||
/* struct v3dv_physical_device *pdevice = &device->instance->physicalDevice; */
|
||||
|
||||
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);
|
||||
|
||||
if (pAllocateInfo->allocationSize > MAX_MEMORY_ALLOCATION_SIZE)
|
||||
return VK_ERROR_OUT_OF_DEVICE_MEMORY;
|
||||
|
||||
mem = vk_alloc2(&device->alloc, pAllocator, sizeof(*mem), 8,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
||||
if (mem == NULL)
|
||||
return vk_error(NULL, VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
|
||||
/* FIXME: assert(pAllocateInfo->memoryTypeIndex < pdevice->memory.type_count); */
|
||||
/* FIXME: mem->type = &pdevice->memory.types[pAllocateInfo->memoryTypeIndex]; */
|
||||
mem->map = NULL;
|
||||
mem->map_size = 0;
|
||||
|
||||
/* FIXME: stub */
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
void
|
||||
v3dv_FreeMemory(VkDevice _device,
|
||||
VkDeviceMemory _mem,
|
||||
const VkAllocationCallbacks *pAllocator)
|
||||
{
|
||||
V3DV_FROM_HANDLE(v3dv_device, device, _device);
|
||||
V3DV_FROM_HANDLE(v3dv_device_memory, mem, _mem);
|
||||
|
||||
if (mem == NULL)
|
||||
return;
|
||||
|
||||
if (mem->map)
|
||||
v3dv_UnmapMemory(_device, _mem);
|
||||
|
||||
/* FIXME: stub */
|
||||
|
||||
vk_free2(&device->alloc, pAllocator, mem);
|
||||
}
|
||||
|
||||
VkResult
|
||||
v3dv_MapMemory(VkDevice _device,
|
||||
VkDeviceMemory _memory,
|
||||
VkDeviceSize offset,
|
||||
VkDeviceSize size,
|
||||
VkMemoryMapFlags flags,
|
||||
void **ppData)
|
||||
{
|
||||
V3DV_FROM_HANDLE(v3dv_device, device, _device);
|
||||
V3DV_FROM_HANDLE(v3dv_device_memory, mem, _memory);
|
||||
|
||||
if (mem == NULL) {
|
||||
*ppData = NULL;
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
/* FIXME: stub */
|
||||
|
||||
return vk_error(device->instance, VK_ERROR_MEMORY_MAP_FAILED);
|
||||
}
|
||||
|
||||
void
|
||||
v3dv_UnmapMemory(VkDevice _device,
|
||||
VkDeviceMemory _memory)
|
||||
{
|
||||
/* FIXME: stub */
|
||||
}
|
||||
|
||||
VkResult
|
||||
v3dv_FlushMappedMemoryRanges(VkDevice _device,
|
||||
uint32_t memoryRangeCount,
|
||||
const VkMappedMemoryRange *pMemoryRanges)
|
||||
{
|
||||
/* FIXME: stub (although note that both radv and tu just returns success
|
||||
* here. Pending further research)
|
||||
*/
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VkResult
|
||||
v3dv_InvalidateMappedMemoryRanges(VkDevice _device,
|
||||
uint32_t memoryRangeCount,
|
||||
const VkMappedMemoryRange *pMemoryRanges)
|
||||
{
|
||||
/* FIXME: stub (although note that both radv and tu just returns success
|
||||
* here. Pending further research)
|
||||
*/
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,6 +53,14 @@
|
|||
|
||||
#include "vk_alloc.h"
|
||||
|
||||
/*
|
||||
* FIXME: confirm value
|
||||
*
|
||||
* FIXME: seems like a good idea having something like this, as anv, but both
|
||||
* tu/radv doesn't check for this issue. Need to revisit.
|
||||
*/
|
||||
#define MAX_MEMORY_ALLOCATION_SIZE (1ull << 31)
|
||||
|
||||
struct v3dv_instance;
|
||||
|
||||
struct v3dv_device {
|
||||
|
|
@ -123,6 +131,14 @@ struct v3dv_cmd_buffer {
|
|||
/* FIXME: stub */
|
||||
};
|
||||
|
||||
struct v3dv_device_memory {
|
||||
/* FIXME: stub */
|
||||
/* FIXME: likely would include links to structures similar to v3d_bo
|
||||
* (perhaps we should refactor existing v3d_bo?) */
|
||||
VkDeviceSize map_size;
|
||||
void *map;
|
||||
};
|
||||
|
||||
uint32_t v3dv_physical_device_api_version(struct v3dv_physical_device *dev);
|
||||
|
||||
int v3dv_get_instance_entrypoint_index(const char *name);
|
||||
|
|
@ -173,6 +189,20 @@ void v3dv_loge_v(const char *format, va_list va);
|
|||
return (__VkType) _obj; \
|
||||
}
|
||||
|
||||
#define V3DV_DEFINE_NONDISP_HANDLE_CASTS(__v3dv_type, __VkType) \
|
||||
\
|
||||
static inline struct __v3dv_type * \
|
||||
__v3dv_type ## _from_handle(__VkType _handle) \
|
||||
{ \
|
||||
return (struct __v3dv_type *)(uintptr_t) _handle; \
|
||||
} \
|
||||
\
|
||||
static inline __VkType \
|
||||
__v3dv_type ## _to_handle(struct __v3dv_type *_obj) \
|
||||
{ \
|
||||
return (__VkType)(uintptr_t) _obj; \
|
||||
}
|
||||
|
||||
#define V3DV_FROM_HANDLE(__v3dv_type, __name, __handle) \
|
||||
struct __v3dv_type *__name = __v3dv_type ## _from_handle(__handle)
|
||||
|
||||
|
|
@ -182,5 +212,6 @@ V3DV_DEFINE_HANDLE_CASTS(v3dv_instance, VkInstance)
|
|||
V3DV_DEFINE_HANDLE_CASTS(v3dv_physical_device, VkPhysicalDevice)
|
||||
V3DV_DEFINE_HANDLE_CASTS(v3dv_queue, VkQueue)
|
||||
|
||||
V3DV_DEFINE_NONDISP_HANDLE_CASTS(v3dv_device_memory, VkDeviceMemory)
|
||||
|
||||
#endif /* V3DV_PRIVATE_H */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue