summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp
diff options
context:
space:
mode:
authorRodrigo Locatti <reinuseslisp@airmail.cc>2020-04-13 22:08:04 +0200
committerGitHub <noreply@github.com>2020-04-13 22:08:04 +0200
commit7e4a132a77fd1c2d48b1410ac1f1da81869daa90 (patch)
tree79f2f04b5d7233eb3b57f86af3281f6ef5f30282 /src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp
parentMerge pull request #3651 from ReinUsesLisp/line-widths (diff)
parentrenderer_vulkan: Drop Vulkan-Hpp (diff)
downloadyuzu-7e4a132a77fd1c2d48b1410ac1f1da81869daa90.tar
yuzu-7e4a132a77fd1c2d48b1410ac1f1da81869daa90.tar.gz
yuzu-7e4a132a77fd1c2d48b1410ac1f1da81869daa90.tar.bz2
yuzu-7e4a132a77fd1c2d48b1410ac1f1da81869daa90.tar.lz
yuzu-7e4a132a77fd1c2d48b1410ac1f1da81869daa90.tar.xz
yuzu-7e4a132a77fd1c2d48b1410ac1f1da81869daa90.tar.zst
yuzu-7e4a132a77fd1c2d48b1410ac1f1da81869daa90.zip
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp')
-rw-r--r--src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp b/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp
index 374959f82..94d954d7a 100644
--- a/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp
+++ b/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp
@@ -13,6 +13,7 @@
#include "video_core/renderer_vulkan/vk_resource_manager.h"
#include "video_core/renderer_vulkan/vk_scheduler.h"
#include "video_core/renderer_vulkan/vk_staging_buffer_pool.h"
+#include "video_core/renderer_vulkan/wrapper.h"
namespace Vulkan {
@@ -71,17 +72,23 @@ VKBuffer* VKStagingBufferPool::TryGetReservedBuffer(std::size_t size, bool host_
}
VKBuffer& VKStagingBufferPool::CreateStagingBuffer(std::size_t size, bool host_visible) {
- const auto usage =
- vk::BufferUsageFlagBits::eTransferSrc | vk::BufferUsageFlagBits::eTransferDst |
- vk::BufferUsageFlagBits::eUniformBuffer | vk::BufferUsageFlagBits::eStorageBuffer |
- vk::BufferUsageFlagBits::eIndexBuffer;
const u32 log2 = Common::Log2Ceil64(size);
- const vk::BufferCreateInfo buffer_ci({}, 1ULL << log2, usage, vk::SharingMode::eExclusive, 0,
- nullptr);
- const auto dev = device.GetLogical();
+
+ VkBufferCreateInfo ci;
+ ci.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
+ ci.pNext = nullptr;
+ ci.flags = 0;
+ ci.size = 1ULL << log2;
+ ci.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT |
+ VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
+ VK_BUFFER_USAGE_INDEX_BUFFER_BIT;
+ ci.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
+ ci.queueFamilyIndexCount = 0;
+ ci.pQueueFamilyIndices = nullptr;
+
auto buffer = std::make_unique<VKBuffer>();
- buffer->handle = dev.createBufferUnique(buffer_ci, nullptr, device.GetDispatchLoader());
- buffer->commit = memory_manager.Commit(*buffer->handle, host_visible);
+ buffer->handle = device.GetLogical().CreateBuffer(ci);
+ buffer->commit = memory_manager.Commit(buffer->handle, host_visible);
auto& entries = GetCache(host_visible)[log2].entries;
return *entries.emplace_back(std::move(buffer), scheduler.GetFence(), epoch).buffer;