diff --git a/src/video_core/renderer_vulkan/vk_master_semaphore.cpp b/src/video_core/renderer_vulkan/vk_master_semaphore.cpp index 1251536f0..d7e58d2b5 100644 --- a/src/video_core/renderer_vulkan/vk_master_semaphore.cpp +++ b/src/video_core/renderer_vulkan/vk_master_semaphore.cpp @@ -99,8 +99,7 @@ void MasterSemaphoreTimeline::SubmitWork(vk::CommandBuffer cmdbuf, vk::Semaphore try { instance.GetGraphicsQueue().submit(submit_info); } catch (vk::DeviceLostError& err) { - LOG_CRITICAL(Render_Vulkan, "Device lost during submit: {}", err.what()); - UNREACHABLE(); + UNREACHABLE_MSG("Device lost during submit: {}", err.what()); } } @@ -114,7 +113,10 @@ MasterSemaphoreFence::MasterSemaphoreFence(const Instance& instance_) : instance wait_thread = std::jthread([this](std::stop_token token) { WaitThread(token); }); } -MasterSemaphoreFence::~MasterSemaphoreFence() = default; +MasterSemaphoreFence::~MasterSemaphoreFence() { + std::ranges::for_each(free_queue, + [this](auto fence) { instance.GetDevice().destroyFence(fence); }); +} void MasterSemaphoreFence::Refresh() {} @@ -153,8 +155,7 @@ void MasterSemaphoreFence::SubmitWork(vk::CommandBuffer cmdbuf, vk::Semaphore wa try { instance.GetGraphicsQueue().submit(submit_info, *fence); } catch (vk::DeviceLostError& err) { - LOG_CRITICAL(Render_Vulkan, "Device lost during submit: {}", err.what()); - UNREACHABLE(); + UNREACHABLE_MSG("Device lost during submit: {}", err.what()); } std::scoped_lock lock{wait_mutex}; @@ -181,8 +182,7 @@ void MasterSemaphoreFence::WaitThread(std::stop_token token) { const vk::Result result = device.waitForFences(*fence.handle, true, WAIT_TIMEOUT); if (result != vk::Result::eSuccess) { - LOG_CRITICAL(Render_Vulkan, "Fence wait failed with error {}", vk::to_string(result)); - UNREACHABLE(); + UNREACHABLE_MSG("Fence wait failed with error {}", vk::to_string(result)); } device.resetFences(*fence.handle); diff --git a/src/video_core/renderer_vulkan/vk_master_semaphore.h b/src/video_core/renderer_vulkan/vk_master_semaphore.h index 875e1b8d4..f0e8a7b00 100644 --- a/src/video_core/renderer_vulkan/vk_master_semaphore.h +++ b/src/video_core/renderer_vulkan/vk_master_semaphore.h @@ -72,6 +72,8 @@ private: }; class MasterSemaphoreFence : public MasterSemaphore { + using Waitable = std::pair; + public: explicit MasterSemaphoreFence(const Instance& instance); ~MasterSemaphoreFence() override; diff --git a/src/video_core/renderer_vulkan/vk_swapchain.cpp b/src/video_core/renderer_vulkan/vk_swapchain.cpp index 4fe70bfe0..3dcbf3bee 100644 --- a/src/video_core/renderer_vulkan/vk_swapchain.cpp +++ b/src/video_core/renderer_vulkan/vk_swapchain.cpp @@ -254,10 +254,8 @@ void Swapchain::RefreshSemaphores() { if (instance.HasDebuggingToolAttached()) { for (u32 i = 0; i < image_count; ++i) { - Vulkan::SetObjectName(device, image_acquired[i], - "Swapchain Semaphore: image_acquired {}", i); - Vulkan::SetObjectName(device, present_ready[i], "Swapchain Semaphore: present_ready {}", - i); + SetObjectName(device, image_acquired[i], "Swapchain Semaphore: image_acquired {}", i); + SetObjectName(device, present_ready[i], "Swapchain Semaphore: present_ready {}", i); } } } @@ -269,7 +267,7 @@ void Swapchain::SetupImages() { if (instance.HasDebuggingToolAttached()) { for (u32 i = 0; i < image_count; ++i) { - Vulkan::SetObjectName(device, images[i], "Swapchain Image {}", i); + SetObjectName(device, images[i], "Swapchain Image {}", i); } } } diff --git a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp index 2db1a9c39..deb34a121 100644 --- a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp @@ -207,9 +207,9 @@ Handle MakeHandle(const Instance* instance, u32 width, u32 height, u32 levels, T vk::UniqueImageView image_view = instance->GetDevice().createImageViewUnique(view_info); if (!debug_name.empty() && instance->HasDebuggingToolAttached()) { - Vulkan::SetObjectName(instance->GetDevice(), image, debug_name); - Vulkan::SetObjectName(instance->GetDevice(), image_view.get(), "{} View({})", debug_name, - vk::to_string(aspect)); + SetObjectName(instance->GetDevice(), image, debug_name); + SetObjectName(instance->GetDevice(), image_view.get(), "{} View({})", debug_name, + vk::to_string(aspect)); } return Handle{ @@ -1088,7 +1088,7 @@ void Surface::ScaleUp(u32 new_scale) { vk::PipelineStageFlagBits::eTopOfPipe, vk::DependencyFlagBits::eByRegion, {}, {}, barriers); }); - LOG_INFO(HW_GPU, "Surface scale up!"); + for (u32 level = 0; level < levels; level++) { const VideoCore::TextureBlit blit = { .src_level = level,