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

From 33f90f2e41a1567b2d40c00e8e8869e9573ca4e5 Mon Sep 17 00:00:00 2001
From: Evan Hemsley <[EMAIL REDACTED]>
Date: Fri, 4 Apr 2025 14:27:18 -0700
Subject: [PATCH] GPU Vulkan: Clean up in Submit in headless mode (#12744)

---
 src/gpu/vulkan/SDL_gpu_vulkan.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/gpu/vulkan/SDL_gpu_vulkan.c b/src/gpu/vulkan/SDL_gpu_vulkan.c
index c740e9bae5c40..ebfeb2dd7465a 100644
--- a/src/gpu/vulkan/SDL_gpu_vulkan.c
+++ b/src/gpu/vulkan/SDL_gpu_vulkan.c
@@ -10433,7 +10433,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);
 
@@ -10456,7 +10458,7 @@ static bool VULKAN_Submit(
             swapchainTextureSubresource);
     }
 
-    if (presenting &&
+    if (performCleanups &&
         renderer->allocationsToDefragCount > 0 &&
         !renderer->defragInProgress) {
         if (!VULKAN_INTERNAL_DefragmentMemory(renderer, vulkanCommandBuffer))
@@ -10540,8 +10542,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,