MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ to_buffer_usage_flags()

vk::BufferUsageFlags MayaFlux::Portal::Graphics::to_buffer_usage_flags ( BufferUsageHint  hint)
inline

Resolve the extra vk::BufferUsageFlags a BufferUsageHint requires, on top of whatever base usage the caller already applies.

Definition at line 36 of file ShaderUtils.hpp.

37{
38 switch (hint) {
39 case BufferUsageHint::INDIRECT:
40 return vk::BufferUsageFlagBits::eIndirectBuffer | vk::BufferUsageFlagBits::eStorageBuffer;
41 case BufferUsageHint::COMPUTE_STORAGE:
42 return vk::BufferUsageFlagBits::eStorageBuffer;
43 default:
44 break;
45 }
46
47 vk::BufferUsageFlags flags = vk::BufferUsageFlagBits::eTransferSrc | vk::BufferUsageFlagBits::eTransferDst;
48
49 switch (hint) {
50 case BufferUsageHint::STAGING:
51 break;
52 case BufferUsageHint::DEVICE:
53 case BufferUsageHint::COMPUTE:
54 flags |= vk::BufferUsageFlagBits::eStorageBuffer;
55 break;
56 case BufferUsageHint::VERTEX:
57 flags |= vk::BufferUsageFlagBits::eVertexBuffer | vk::BufferUsageFlagBits::eStorageBuffer;
58 break;
59 case BufferUsageHint::INDEX:
60 flags |= vk::BufferUsageFlagBits::eIndexBuffer;
61 break;
62 case BufferUsageHint::UNIFORM:
63 flags |= vk::BufferUsageFlagBits::eUniformBuffer;
64 break;
65 case BufferUsageHint::UNIFORM_BDA:
66 flags |= vk::BufferUsageFlagBits::eUniformBuffer
67 | vk::BufferUsageFlagBits::eShaderDeviceAddress;
68 break;
69 case BufferUsageHint::STORAGE_BDA:
70 flags |= vk::BufferUsageFlagBits::eStorageBuffer
71 | vk::BufferUsageFlagBits::eShaderDeviceAddress;
72 break;
73 case BufferUsageHint::HOST_STORAGE:
74 flags |= vk::BufferUsageFlagBits::eStorageBuffer;
75 break;
76 default:
77 break;
78 }
79
80 return flags;
81}

References COMPUTE, COMPUTE_STORAGE, DEVICE, HOST_STORAGE, INDEX, INDIRECT, STAGING, STORAGE_BDA, UNIFORM, UNIFORM_BDA, and VERTEX.

Referenced by MayaFlux::Yantra::GpuResourceManager::ensure_buffer(), MayaFlux::Yantra::GpuResourceManager::ensure_shared_buffer(), and MayaFlux::Buffers::VKBuffer::get_usage_flags().

+ Here is the caller graph for this function: