From 34db5097da95983c3b694c5fad70ef69d5af7ed7 Mon Sep 17 00:00:00 2001 From: Billy Laws Date: Sun, 9 Oct 2022 13:14:04 +0100 Subject: [PATCH] Avoid using a shared_ptr reference to cycle for command buffer submission Somehow without this we can sometimes get crashes during appending to circular queue --- app/src/main/cpp/skyline/gpu/command_scheduler.cpp | 2 +- app/src/main/cpp/skyline/gpu/command_scheduler.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/cpp/skyline/gpu/command_scheduler.cpp b/app/src/main/cpp/skyline/gpu/command_scheduler.cpp index 6e63001d..0092db84 100644 --- a/app/src/main/cpp/skyline/gpu/command_scheduler.cpp +++ b/app/src/main/cpp/skyline/gpu/command_scheduler.cpp @@ -76,7 +76,7 @@ namespace skyline::gpu { return {pool->buffers.emplace_back(gpu.vkDevice, commandBuffer, pool->vkCommandPool)}; } - void CommandScheduler::SubmitCommandBuffer(const vk::raii::CommandBuffer &commandBuffer, const std::shared_ptr &cycle) { + void CommandScheduler::SubmitCommandBuffer(const vk::raii::CommandBuffer &commandBuffer, std::shared_ptr cycle) { { std::scoped_lock lock(gpu.queueMutex); gpu.vkQueue.submit(vk::SubmitInfo{ diff --git a/app/src/main/cpp/skyline/gpu/command_scheduler.h b/app/src/main/cpp/skyline/gpu/command_scheduler.h index 050d6b0e..02f19290 100644 --- a/app/src/main/cpp/skyline/gpu/command_scheduler.h +++ b/app/src/main/cpp/skyline/gpu/command_scheduler.h @@ -114,7 +114,7 @@ namespace skyline::gpu { * @note The supplied command buffer and cycle **must** be from AllocateCommandBuffer() * @note Any cycle submitted via this method does not need to destroy dependencies manually, the waiter thread will handle this */ - void SubmitCommandBuffer(const vk::raii::CommandBuffer &commandBuffer, const std::shared_ptr &cycle); + void SubmitCommandBuffer(const vk::raii::CommandBuffer &commandBuffer, std::shared_ptr cycle); /** * @brief Submits a command buffer recorded with the supplied function synchronously