Get appropriate VkBufferUsageFlags for creation based on Usage.
251{
252 vk::BufferUsageFlags flags = vk::BufferUsageFlagBits::eTransferSrc | vk::BufferUsageFlagBits::eTransferDst;
253
256 break;
259 flags |= vk::BufferUsageFlagBits::eStorageBuffer;
260 break;
262 flags |= vk::BufferUsageFlagBits::eVertexBuffer | vk::BufferUsageFlagBits::eStorageBuffer;
263 break;
265 flags |= vk::BufferUsageFlagBits::eIndexBuffer;
266 break;
268 flags |= vk::BufferUsageFlagBits::eUniformBuffer;
269 break;
271 flags |= vk::BufferUsageFlagBits::eUniformBuffer
272 | vk::BufferUsageFlagBits::eShaderDeviceAddress;
273 break;
275 flags |= vk::BufferUsageFlagBits::eStorageBuffer
276 | vk::BufferUsageFlagBits::eShaderDeviceAddress;
277 break;
278 }
279
280 return flags;
281}
@ STORAGE_BDA
Storage buffer with device address query support.
@ UNIFORM
Uniform buffer (host-visible)
@ COMPUTE
Storage buffer for compute shaders.
@ STAGING
Host-visible staging buffer (CPU-writable)
@ UNIFORM_BDA
Uniform buffer with device address query support.
@ DEVICE
Device-local GPU-only buffer.