Files
evk/evk/evkBuffer.c
2025-07-02 12:37:15 +03:00

35 lines
1.0 KiB
C

#include "evkBuffer.h"
#include "evk/evkMemory.h"
evkBuffer evkCreateBuffer(evkDevice* device, evkBufferCreateInfo createInfo)
{
VkBufferCreateInfo bufferCreateInfo = {
.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
.pNext = NULL,
.flags = createInfo.flags,
.usage = createInfo.usage,
.sharingMode = createInfo.exclusive?VK_SHARING_MODE_EXCLUSIVE:VK_SHARING_MODE_CONCURRENT,
.queueFamilyIndexCount = createInfo.exclusive?0:vec_len(&createInfo.queueFamilyIndices),
.pQueueFamilyIndices = createInfo.queueFamilyIndices,
.size = createInfo.sizeInBytes,
};
evkBuffer buffer = evkGPUCreateBuffer(createInfo.allocationCreateInfo, &bufferCreateInfo);
if(buffer.vk != VK_NULL_HANDLE)
{
buffer.sizeInBytes = createInfo.sizeInBytes;
buffer.address = vkGetBufferDeviceAddressKHR(device->vk, &(VkBufferDeviceAddressInfo){
.sType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
.buffer = buffer.vk
});
}
return buffer;
}
void evkDestroyBuffer(evkBuffer buf)
{
evkGPUDestroyBuffer(buf);
}