Parcourir la source

GPU: Hold submit lock before waiting for device idle

(cherry picked from commit e699f3dca1c03051a2736cde6fb6d45839f33062)
Beyley Cardellio il y a 1 mois
Parent
commit
2287c43b59
1 fichiers modifiés avec 10 ajouts et 3 suppressions
  1. 10 3
      src/gpu/vulkan/SDL_gpu_vulkan.c

+ 10 - 3
src/gpu/vulkan/SDL_gpu_vulkan.c

@@ -10495,11 +10495,18 @@ static bool VULKAN_Wait(
     VkResult result;
     Sint32 i;
 
-    result = renderer->vkDeviceWaitIdle(renderer->logicalDevice);
+    SDL_LockMutex(renderer->submitLock);
 
-    CHECK_VULKAN_ERROR_AND_RETURN(result, vkDeviceWaitIdle, false);
+    result = renderer->vkDeviceWaitIdle(renderer->logicalDevice);
 
-    SDL_LockMutex(renderer->submitLock);
+    if (result != VK_SUCCESS) {
+        if (renderer->debugMode) {
+            SDL_LogError(SDL_LOG_CATEGORY_GPU, "%s %s", "vkDeviceWaitIdle", VkErrorMessages(result));
+        }
+        SDL_SetError("%s %s", "vkDeviceWaitIdle", VkErrorMessages(result));
+        SDL_UnlockMutex(renderer->submitLock);
+        return false;
+    }
 
     for (i = renderer->submittedCommandBufferCount - 1; i >= 0; i -= 1) {
         commandBuffer = renderer->submittedCommandBuffers[i];