diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_stream_buffer.cpp | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/src/video_core/renderer_vulkan/vk_stream_buffer.cpp b/src/video_core/renderer_vulkan/vk_stream_buffer.cpp index 2d28a6c47..a5526a3f5 100644 --- a/src/video_core/renderer_vulkan/vk_stream_buffer.cpp +++ b/src/video_core/renderer_vulkan/vk_stream_buffer.cpp | |||
| @@ -122,30 +122,27 @@ void VKStreamBuffer::CreateBuffers(VkBufferUsageFlags usage) { | |||
| 122 | // Substract from the preferred heap size some bytes to avoid getting out of memory. | 122 | // Substract from the preferred heap size some bytes to avoid getting out of memory. |
| 123 | const VkDeviceSize heap_size = memory_properties.memoryHeaps[preferred_heap].size; | 123 | const VkDeviceSize heap_size = memory_properties.memoryHeaps[preferred_heap].size; |
| 124 | const VkDeviceSize allocable_size = heap_size - 9 * 1024 * 1024; | 124 | const VkDeviceSize allocable_size = heap_size - 9 * 1024 * 1024; |
| 125 | 125 | buffer = device.GetLogical().CreateBuffer({ | |
| 126 | VkBufferCreateInfo buffer_ci; | 126 | .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, |
| 127 | buffer_ci.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; | 127 | .pNext = nullptr, |
| 128 | buffer_ci.pNext = nullptr; | 128 | .flags = 0, |
| 129 | buffer_ci.flags = 0; | 129 | .size = std::min(PREFERRED_STREAM_BUFFER_SIZE, allocable_size), |
| 130 | buffer_ci.size = std::min(PREFERRED_STREAM_BUFFER_SIZE, allocable_size); | 130 | .usage = usage, |
| 131 | buffer_ci.usage = usage; | 131 | .sharingMode = VK_SHARING_MODE_EXCLUSIVE, |
| 132 | buffer_ci.sharingMode = VK_SHARING_MODE_EXCLUSIVE; | 132 | .queueFamilyIndexCount = 0, |
| 133 | buffer_ci.queueFamilyIndexCount = 0; | 133 | .pQueueFamilyIndices = nullptr, |
| 134 | buffer_ci.pQueueFamilyIndices = nullptr; | 134 | }); |
| 135 | |||
| 136 | buffer = device.GetLogical().CreateBuffer(buffer_ci); | ||
| 137 | 135 | ||
| 138 | const auto requirements = device.GetLogical().GetBufferMemoryRequirements(*buffer); | 136 | const auto requirements = device.GetLogical().GetBufferMemoryRequirements(*buffer); |
| 139 | const u32 required_flags = requirements.memoryTypeBits; | 137 | const u32 required_flags = requirements.memoryTypeBits; |
| 140 | stream_buffer_size = static_cast<u64>(requirements.size); | 138 | stream_buffer_size = static_cast<u64>(requirements.size); |
| 141 | 139 | ||
| 142 | VkMemoryAllocateInfo memory_ai; | 140 | memory = device.GetLogical().AllocateMemory({ |
| 143 | memory_ai.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; | 141 | .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, |
| 144 | memory_ai.pNext = nullptr; | 142 | .pNext = nullptr, |
| 145 | memory_ai.allocationSize = requirements.size; | 143 | .allocationSize = requirements.size, |
| 146 | memory_ai.memoryTypeIndex = GetMemoryType(memory_properties, required_flags); | 144 | .memoryTypeIndex = GetMemoryType(memory_properties, required_flags), |
| 147 | 145 | }); | |
| 148 | memory = device.GetLogical().AllocateMemory(memory_ai); | ||
| 149 | buffer.BindMemory(*memory, 0); | 146 | buffer.BindMemory(*memory, 0); |
| 150 | } | 147 | } |
| 151 | 148 | ||