resource acquire fixes
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
74112396ec
commit
2ef3c04e8e
|
@ -833,7 +833,7 @@ typedef struct VulkanSwapchainData
|
|||
|
||||
/* Swapchain images */
|
||||
VkExtent2D extent;
|
||||
VulkanTexture *textures;
|
||||
VulkanTextureContainer *textureContainers;
|
||||
uint32_t imageCount;
|
||||
|
||||
/* Synchronization primitives */
|
||||
|
@ -3695,17 +3695,19 @@ static void VULKAN_INTERNAL_DestroySwapchain(
|
|||
{
|
||||
VULKAN_INTERNAL_RemoveRenderTargetsContainingTexture(
|
||||
renderer,
|
||||
&swapchainData->textures[i]
|
||||
swapchainData->textureContainers[i].vulkanTexture
|
||||
);
|
||||
|
||||
renderer->vkDestroyImageView(
|
||||
renderer->logicalDevice,
|
||||
swapchainData->textures[i].view,
|
||||
swapchainData->textureContainers[i].vulkanTexture->view,
|
||||
NULL
|
||||
);
|
||||
|
||||
SDL_free(swapchainData->textureContainers[i].vulkanTexture);
|
||||
}
|
||||
|
||||
SDL_free(swapchainData->textures);
|
||||
SDL_free(swapchainData->textureContainers);
|
||||
|
||||
renderer->vkDestroySwapchainKHR(
|
||||
renderer->logicalDevice,
|
||||
|
@ -4946,11 +4948,11 @@ static uint8_t VULKAN_INTERNAL_CreateSwapchain(
|
|||
NULL
|
||||
);
|
||||
|
||||
swapchainData->textures = SDL_malloc(
|
||||
sizeof(VulkanTexture) * swapchainData->imageCount
|
||||
swapchainData->textureContainers = SDL_malloc(
|
||||
sizeof(VulkanTextureContainer) * swapchainData->imageCount
|
||||
);
|
||||
|
||||
if (!swapchainData->textures)
|
||||
if (!swapchainData->textureContainers)
|
||||
{
|
||||
SDL_OutOfMemory();
|
||||
renderer->vkDestroySurfaceKHR(
|
||||
|
@ -4985,7 +4987,9 @@ static uint8_t VULKAN_INTERNAL_CreateSwapchain(
|
|||
|
||||
for (i = 0; i < swapchainData->imageCount; i += 1)
|
||||
{
|
||||
swapchainData->textures[i].image = swapchainImages[i];
|
||||
swapchainData->textureContainers[i].vulkanTexture = SDL_malloc(sizeof(VulkanTexture));
|
||||
|
||||
swapchainData->textureContainers[i].vulkanTexture->image = swapchainImages[i];
|
||||
|
||||
imageViewCreateInfo.image = swapchainImages[i];
|
||||
|
||||
|
@ -4993,7 +4997,7 @@ static uint8_t VULKAN_INTERNAL_CreateSwapchain(
|
|||
renderer->logicalDevice,
|
||||
&imageViewCreateInfo,
|
||||
NULL,
|
||||
&swapchainData->textures[i].view
|
||||
&swapchainData->textureContainers[i].vulkanTexture->view
|
||||
);
|
||||
|
||||
if (vulkanResult != VK_SUCCESS)
|
||||
|
@ -5004,30 +5008,30 @@ static uint8_t VULKAN_INTERNAL_CreateSwapchain(
|
|||
NULL
|
||||
);
|
||||
SDL_stack_free(swapchainImages);
|
||||
SDL_free(swapchainData->textures);
|
||||
SDL_free(swapchainData->textureContainers);
|
||||
SDL_free(swapchainData);
|
||||
LogVulkanResultAsError("vkCreateImageView", vulkanResult);
|
||||
return 0;
|
||||
}
|
||||
|
||||
swapchainData->textures[i].resourceAccessType = RESOURCE_ACCESS_NONE;
|
||||
swapchainData->textureContainers[i].vulkanTexture->resourceAccessType = RESOURCE_ACCESS_NONE;
|
||||
|
||||
/* Swapchain memory is managed by the driver */
|
||||
swapchainData->textures[i].usedRegion = NULL;
|
||||
swapchainData->textureContainers[i].vulkanTexture->usedRegion = NULL;
|
||||
|
||||
swapchainData->textures[i].dimensions = swapchainData->extent;
|
||||
swapchainData->textures[i].format = swapchainData->swapchainFormat;
|
||||
swapchainData->textures[i].is3D = 0;
|
||||
swapchainData->textures[i].isCube = 0;
|
||||
swapchainData->textures[i].layerCount = 1;
|
||||
swapchainData->textures[i].levelCount = 1;
|
||||
swapchainData->textures[i].sampleCount = REFRESH_SAMPLECOUNT_1;
|
||||
swapchainData->textures[i].usageFlags =
|
||||
swapchainData->textureContainers[i].vulkanTexture->dimensions = swapchainData->extent;
|
||||
swapchainData->textureContainers[i].vulkanTexture->format = swapchainData->swapchainFormat;
|
||||
swapchainData->textureContainers[i].vulkanTexture->is3D = 0;
|
||||
swapchainData->textureContainers[i].vulkanTexture->isCube = 0;
|
||||
swapchainData->textureContainers[i].vulkanTexture->layerCount = 1;
|
||||
swapchainData->textureContainers[i].vulkanTexture->levelCount = 1;
|
||||
swapchainData->textureContainers[i].vulkanTexture->sampleCount = REFRESH_SAMPLECOUNT_1;
|
||||
swapchainData->textureContainers[i].vulkanTexture->usageFlags =
|
||||
VK_IMAGE_USAGE_TRANSFER_DST_BIT |
|
||||
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
|
||||
swapchainData->textures[i].aspectFlags = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
swapchainData->textures[i].resourceAccessType = RESOURCE_ACCESS_NONE;
|
||||
swapchainData->textures[i].msaaTex = NULL;
|
||||
swapchainData->textureContainers[i].vulkanTexture->aspectFlags = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
swapchainData->textureContainers[i].vulkanTexture->resourceAccessType = RESOURCE_ACCESS_NONE;
|
||||
swapchainData->textureContainers[i].vulkanTexture->msaaTex = NULL;
|
||||
}
|
||||
|
||||
SDL_stack_free(swapchainImages);
|
||||
|
@ -7064,7 +7068,7 @@ static Refresh_Buffer* VULKAN_CreateBuffer(
|
|||
bufferContainer->vulkanBuffer = buffer;
|
||||
buffer->container = bufferContainer;
|
||||
|
||||
return (Refresh_Buffer*) buffer;
|
||||
return (Refresh_Buffer*) bufferContainer;
|
||||
}
|
||||
|
||||
/* Setters */
|
||||
|
@ -9721,7 +9725,7 @@ static Refresh_Texture* VULKAN_AcquireSwapchainTexture(
|
|||
WindowData *windowData;
|
||||
VulkanSwapchainData *swapchainData;
|
||||
VkResult acquireResult = VK_SUCCESS;
|
||||
VulkanTexture *swapchainTexture = NULL;
|
||||
VulkanTextureContainer *swapchainTextureContainer = NULL;
|
||||
VulkanPresentData *presentData;
|
||||
|
||||
windowData = VULKAN_INTERNAL_FetchWindowData(windowHandle);
|
||||
|
@ -9784,7 +9788,7 @@ static Refresh_Texture* VULKAN_AcquireSwapchainTexture(
|
|||
}
|
||||
}
|
||||
|
||||
swapchainTexture = &swapchainData->textures[swapchainImageIndex];
|
||||
swapchainTextureContainer = &swapchainData->textureContainers[swapchainImageIndex];
|
||||
|
||||
VULKAN_INTERNAL_ImageMemoryBarrier(
|
||||
renderer,
|
||||
|
@ -9796,8 +9800,8 @@ static Refresh_Texture* VULKAN_AcquireSwapchainTexture(
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
swapchainTexture->image,
|
||||
&swapchainTexture->resourceAccessType
|
||||
swapchainTextureContainer->vulkanTexture->image,
|
||||
&swapchainTextureContainer->vulkanTexture->resourceAccessType
|
||||
);
|
||||
|
||||
/* Set up present struct */
|
||||
|
@ -9846,7 +9850,7 @@ static Refresh_Texture* VULKAN_AcquireSwapchainTexture(
|
|||
*pWidth = swapchainData->extent.width;
|
||||
*pHeight = swapchainData->extent.height;
|
||||
|
||||
return (Refresh_Texture*) swapchainTexture;
|
||||
return (Refresh_Texture*) swapchainTextureContainer;
|
||||
}
|
||||
|
||||
static Refresh_TextureFormat VULKAN_GetSwapchainFormat(
|
||||
|
@ -10228,8 +10232,8 @@ static void VULKAN_Submit(
|
|||
0,
|
||||
1,
|
||||
0,
|
||||
currentCommandBuffer->presentDatas[j].windowData->swapchainData->textures[swapchainImageIndex].image,
|
||||
¤tCommandBuffer->presentDatas[j].windowData->swapchainData->textures[swapchainImageIndex].resourceAccessType
|
||||
currentCommandBuffer->presentDatas[j].windowData->swapchainData->textureContainers[swapchainImageIndex].vulkanTexture->image,
|
||||
¤tCommandBuffer->presentDatas[j].windowData->swapchainData->textureContainers[swapchainImageIndex].vulkanTexture->resourceAccessType
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue