Starting Out

Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
This commit is contained in:
2024-12-09 12:51:29 +02:00
parent 7e6be94c65
commit 4ec57bbd79
47 changed files with 2069 additions and 0 deletions
+84
View File
@@ -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);
}