|
@@ -122,30 +122,27 @@ void VKStreamBuffer::CreateBuffers(VkBufferUsageFlags usage) {
|
|
|
// Substract from the preferred heap size some bytes to avoid getting out of memory.
|
|
// Substract from the preferred heap size some bytes to avoid getting out of memory.
|
|
|
const VkDeviceSize heap_size = memory_properties.memoryHeaps[preferred_heap].size;
|
|
const VkDeviceSize heap_size = memory_properties.memoryHeaps[preferred_heap].size;
|
|
|
const VkDeviceSize allocable_size = heap_size - 9 * 1024 * 1024;
|
|
const VkDeviceSize allocable_size = heap_size - 9 * 1024 * 1024;
|
|
|
-
|
|
|
|
|
- VkBufferCreateInfo buffer_ci;
|
|
|
|
|
- buffer_ci.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
|
|
|
|
- buffer_ci.pNext = nullptr;
|
|
|
|
|
- buffer_ci.flags = 0;
|
|
|
|
|
- buffer_ci.size = std::min(PREFERRED_STREAM_BUFFER_SIZE, allocable_size);
|
|
|
|
|
- buffer_ci.usage = usage;
|
|
|
|
|
- buffer_ci.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
|
|
|
|
- buffer_ci.queueFamilyIndexCount = 0;
|
|
|
|
|
- buffer_ci.pQueueFamilyIndices = nullptr;
|
|
|
|
|
-
|
|
|
|
|
- buffer = device.GetLogical().CreateBuffer(buffer_ci);
|
|
|
|
|
|
|
+ buffer = device.GetLogical().CreateBuffer({
|
|
|
|
|
+ .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
|
|
|
|
|
+ .pNext = nullptr,
|
|
|
|
|
+ .flags = 0,
|
|
|
|
|
+ .size = std::min(PREFERRED_STREAM_BUFFER_SIZE, allocable_size),
|
|
|
|
|
+ .usage = usage,
|
|
|
|
|
+ .sharingMode = VK_SHARING_MODE_EXCLUSIVE,
|
|
|
|
|
+ .queueFamilyIndexCount = 0,
|
|
|
|
|
+ .pQueueFamilyIndices = nullptr,
|
|
|
|
|
+ });
|
|
|
|
|
|
|
|
const auto requirements = device.GetLogical().GetBufferMemoryRequirements(*buffer);
|
|
const auto requirements = device.GetLogical().GetBufferMemoryRequirements(*buffer);
|
|
|
const u32 required_flags = requirements.memoryTypeBits;
|
|
const u32 required_flags = requirements.memoryTypeBits;
|
|
|
stream_buffer_size = static_cast<u64>(requirements.size);
|
|
stream_buffer_size = static_cast<u64>(requirements.size);
|
|
|
|
|
|
|
|
- VkMemoryAllocateInfo memory_ai;
|
|
|
|
|
- memory_ai.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
|
|
|
|
|
- memory_ai.pNext = nullptr;
|
|
|
|
|
- memory_ai.allocationSize = requirements.size;
|
|
|
|
|
- memory_ai.memoryTypeIndex = GetMemoryType(memory_properties, required_flags);
|
|
|
|
|
-
|
|
|
|
|
- memory = device.GetLogical().AllocateMemory(memory_ai);
|
|
|
|
|
|
|
+ memory = device.GetLogical().AllocateMemory({
|
|
|
|
|
+ .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
|
|
|
|
|
+ .pNext = nullptr,
|
|
|
|
|
+ .allocationSize = requirements.size,
|
|
|
|
|
+ .memoryTypeIndex = GetMemoryType(memory_properties, required_flags),
|
|
|
|
|
+ });
|
|
|
buffer.BindMemory(*memory, 0);
|
|
buffer.BindMemory(*memory, 0);
|
|
|
}
|
|
}
|
|
|
|
|
|