Starting Out
Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
#pragma once
|
||||
|
||||
#include "evkMemory.h"
|
||||
|
||||
evkGPUAllocator evkGPUCreateAllocator(evkDevice device)
|
||||
{
|
||||
VmaVulkanFunctions vmaFunctions = {
|
||||
.vkGetPhysicalDeviceProperties = vkGetPhysicalDeviceProperties,
|
||||
.vkGetPhysicalDeviceMemoryProperties = vkGetPhysicalDeviceMemoryProperties,
|
||||
.vkAllocateMemory = vkAllocateMemory,
|
||||
.vkFreeMemory = vkFreeMemory,
|
||||
.vkMapMemory = vkMapMemory,
|
||||
.vkUnmapMemory = vkUnmapMemory,
|
||||
.vkFlushMappedMemoryRanges = vkFlushMappedMemoryRanges,
|
||||
.vkInvalidateMappedMemoryRanges = vkInvalidateMappedMemoryRanges,
|
||||
.vkBindBufferMemory = vkBindBufferMemory,
|
||||
.vkBindImageMemory = vkBindImageMemory,
|
||||
.vkGetBufferMemoryRequirements = vkGetBufferMemoryRequirements,
|
||||
.vkGetImageMemoryRequirements = vkGetImageMemoryRequirements,
|
||||
.vkCreateBuffer = vkCreateBuffer,
|
||||
.vkDestroyBuffer = vkDestroyBuffer,
|
||||
.vkCreateImage = vkCreateImage,
|
||||
.vkDestroyImage = vkDestroyImage,
|
||||
.vkCmdCopyBuffer = vkCmdCopyBuffer,
|
||||
};
|
||||
|
||||
VmaAllocatorCreateInfo createInfo = {
|
||||
.physicalDevice = device._physicalDevice,
|
||||
.device = device.vk,
|
||||
.instance = device._instance.vk,
|
||||
.vulkanApiVersion = device._instance.apiVersion,
|
||||
.pVulkanFunctions = &vmaFunctions,
|
||||
};
|
||||
|
||||
evkGPUAllocator alloc;
|
||||
vmaCreateAllocator(&createInfo, &alloc.vma);
|
||||
|
||||
return alloc;
|
||||
}
|
||||
|
||||
void evkGPUDestroyAllocator(evkGPUAllocator alloc)
|
||||
{
|
||||
vmaDestroyAllocator(alloc.vma);
|
||||
}
|
||||
|
||||
evkImage evkGPUCreateImage(evkGPUAllocationCreateInfo allocationCreateInfo, VkImageCreateInfo* imageCreateInfo)
|
||||
{
|
||||
evkImage img;
|
||||
|
||||
VmaAllocationCreateInfo vmaAllocCreateInfo = {
|
||||
.usage = allocationCreateInfo.memoryUsage,
|
||||
.flags = allocationCreateInfo.allocationFlags,
|
||||
.pool = allocationCreateInfo.pool.vma,
|
||||
};
|
||||
|
||||
vmaCreateImage(allocationCreateInfo.allocator.vma, imageCreateInfo, &vmaAllocCreateInfo, &img.vk, &img.allocData.allocation.vma, &img.allocData.allocationInfo.vma);
|
||||
|
||||
return img;
|
||||
}
|
||||
|
||||
void evkGPUDestroyImage(evkImage img)
|
||||
{
|
||||
vmaDestroyImage(img.allocData.allocator.vma, img.vk, img.allocData.allocation.vma);
|
||||
}
|
||||
|
||||
evkBuffer evkGPUCreateBuffer(evkGPUAllocationCreateInfo allocationCreateInfo, VkBufferCreateInfo* imageCreateInfo)
|
||||
{
|
||||
evkBuffer buf;
|
||||
|
||||
VmaAllocationCreateInfo vmaAllocCreateInfo = {
|
||||
.usage = allocationCreateInfo.memoryUsage,
|
||||
.flags = allocationCreateInfo.allocationFlags,
|
||||
.pool = allocationCreateInfo.pool.vma,
|
||||
};
|
||||
|
||||
vmaCreateBuffer(allocationCreateInfo.allocator.vma, imageCreateInfo, &vmaAllocCreateInfo, &buf.vk, &buf.allocData.allocation.vma, &buf.allocData.allocationInfo.vma);
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
void evkGPUDestroyBuffer(evkBuffer buf)
|
||||
{
|
||||
vmaDestroyBuffer(buf.allocData.allocator.vma, buf.vk, buf.allocData.allocation.vma);
|
||||
}
|
||||
Reference in New Issue
Block a user