35 lines
1.0 KiB
C
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);
|
|
}
|