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

(cherry picked from commit 33f90f2e41)
This commit is contained in:
Evan Hemsley
2025-04-04 14:27:18 -07:00
committed by cosmonaut
parent 5b052e6f8c
commit c4fba75a12

View File

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