diff --git a/src/gpu/vulkan/SDL_gpu_vulkan.c b/src/gpu/vulkan/SDL_gpu_vulkan.c index 5324c0a327..5a41450808 100644 --- a/src/gpu/vulkan/SDL_gpu_vulkan.c +++ b/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,