Browse Source

[vk] Handling threading missuse of VkQueue

showcase
CamilleLaVey 1 month ago
parent
commit
6c1fc4b4ed
  1. 2
      src/video_core/renderer_vulkan/renderer_vulkan.cpp
  2. 3
      src/video_core/renderer_vulkan/vk_blit_screen.cpp

2
src/video_core/renderer_vulkan/renderer_vulkan.cpp

@ -177,6 +177,8 @@ try
RendererVulkan::~RendererVulkan() {
scheduler.RegisterOnSubmit([] {});
// Acquire submit_mutex before WaitIdle to prevent simultaneous queue access
std::scoped_lock lock{scheduler.submit_mutex};
void(device.GetLogical().WaitIdle());
}

3
src/video_core/renderer_vulkan/vk_blit_screen.cpp

@ -30,7 +30,8 @@ BlitScreen::~BlitScreen() = default;
void BlitScreen::WaitIdle() {
present_manager.WaitPresent();
scheduler.Finish();
device.GetLogical().WaitIdle();
// Note: scheduler.Finish() already waits for GPU and synchronizes submit_mutex
// Calling device.WaitIdle() here causes threading errors (simultaneous queue access)
}
void BlitScreen::SetWindowAdaptPass() {

Loading…
Cancel
Save