Parcourir la source

GPU Vulkan: Clean up in Submit in headless mode (#12744)

(cherry picked from commit 33f90f2e41a1567b2d40c00e8e8869e9573ca4e5)
Evan Hemsley il y a 2 semaines
Parent
commit
c4fba75a12
1 fichiers modifiés avec 5 ajouts et 4 suppressions
  1. 5 4
      src/gpu/vulkan/SDL_gpu_vulkan.c

+ 5 - 4
src/gpu/vulkan/SDL_gpu_vulkan.c

@@ -10461,7 +10461,9 @@ static bool VULKAN_Submit(
     Uint32 swapchainImageIndex;
     VulkanTextureSubresource *swapchainTextureSubresource;
     VulkanMemorySubAllocator *allocator;
-    bool presenting = (vulkanCommandBuffer->presentDataCount > 0);
+    bool performCleanups =
+        (renderer->claimedWindowCount > 0 && vulkanCommandBuffer->presentDataCount > 0) ||
+        renderer->claimedWindowCount == 0;
 
     SDL_LockMutex(renderer->submitLock);
 
@@ -10484,7 +10486,7 @@ static bool VULKAN_Submit(
             swapchainTextureSubresource);
     }
 
-    if (presenting &&
+    if (performCleanups &&
         renderer->allocationsToDefragCount > 0 &&
         !renderer->defragInProgress) {
         if (!VULKAN_INTERNAL_DefragmentMemory(renderer, vulkanCommandBuffer))
@@ -10568,8 +10570,7 @@ static bool VULKAN_Submit(
             (presentData->windowData->frameCounter + 1) % renderer->allowedFramesInFlight;
     }
 
-    // If presenting, check if we can perform any cleanups
-    if (presenting) {
+    if (performCleanups) {
         for (Sint32 i = renderer->submittedCommandBufferCount - 1; i >= 0; i -= 1) {
             vulkanResult = renderer->vkGetFenceStatus(
                 renderer->logicalDevice,