@@ -1273,6 +1273,72 @@ namespace VkContext
12731273 CHECK (false , " Could not resolve StoreOp" );
12741274 return VK_ATTACHMENT_STORE_OP_DONT_CARE ;
12751275 }
1276+
1277+ VkBufferUsageFlags BufferUsageFlagsToVkBufferUsageFlags (EOS ::BufferUsageFlags bufferUsageFlags)
1278+ {
1279+ VkBufferUsageFlags usageFlags{};
1280+
1281+ if (bufferUsageFlags & EOS ::BufferUsageFlags::Index)
1282+ {
1283+ usageFlags |= VK_BUFFER_USAGE_INDEX_BUFFER_BIT ;
1284+ }
1285+
1286+ if (bufferUsageFlags & EOS ::BufferUsageFlags::Vertex)
1287+ {
1288+ usageFlags |= VK_BUFFER_USAGE_VERTEX_BUFFER_BIT ;
1289+ }
1290+
1291+ if (bufferUsageFlags & EOS ::BufferUsageFlags::Uniform)
1292+ {
1293+ usageFlags |= VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR ;
1294+ }
1295+
1296+ if (bufferUsageFlags & EOS ::BufferUsageFlags::Storage)
1297+ {
1298+ usageFlags |= VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR ;
1299+ }
1300+
1301+ if (bufferUsageFlags & EOS ::BufferUsageFlags::Indirect)
1302+ {
1303+ usageFlags |= VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR ;
1304+ }
1305+
1306+ if (bufferUsageFlags & EOS ::BufferUsageFlags::ShaderBindingTable)
1307+ {
1308+ usageFlags |= VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR ;
1309+ }
1310+
1311+ if (bufferUsageFlags & EOS ::BufferUsageFlags::AccelStructBuildInputReadOnly)
1312+ {
1313+ usageFlags |= VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR ;
1314+ }
1315+
1316+ if (bufferUsageFlags & EOS ::BufferUsageFlags::AccelStructStorage)
1317+ {
1318+ usageFlags |= VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR ;
1319+ }
1320+
1321+ return usageFlags;
1322+ }
1323+
1324+ VkMemoryPropertyFlags StorageTypeToVkMemoryPropertyFlags (EOS ::StorageType storage)
1325+ {
1326+ VkMemoryPropertyFlags memFlags{0 };
1327+
1328+ switch (storage)
1329+ {
1330+ case EOS ::StorageType::Device:
1331+ memFlags |= VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT ;
1332+ break ;
1333+ case EOS ::StorageType::HostVisible:
1334+ memFlags |= VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT ;
1335+ break ;
1336+ case EOS ::StorageType::Memoryless:
1337+ memFlags |= VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT ;
1338+ break ;
1339+ }
1340+ return memFlags;
1341+ }
12761342};
12771343
12781344namespace VkSynchronization
0 commit comments