forked from MoonsideGames/Refresh
fix depth attachment barriers
parent
8f1cdf190f
commit
17524fd30b
|
@ -7362,19 +7362,20 @@ static void VULKAN_BeginRenderPass(
|
||||||
vulkanCommandBuffer->commandBuffer,
|
vulkanCommandBuffer->commandBuffer,
|
||||||
RESOURCE_ACCESS_COLOR_ATTACHMENT_READ_WRITE,
|
RESOURCE_ACCESS_COLOR_ATTACHMENT_READ_WRITE,
|
||||||
VK_IMAGE_ASPECT_COLOR_BIT,
|
VK_IMAGE_ASPECT_COLOR_BIT,
|
||||||
vulkanFramebuffer->colorTargets[i]->layer,
|
|
||||||
1,
|
|
||||||
0,
|
0,
|
||||||
1,
|
vulkanFramebuffer->colorTargets[i]->texture->layerCount,
|
||||||
|
0,
|
||||||
|
vulkanFramebuffer->colorTargets[i]->texture->levelCount,
|
||||||
0,
|
0,
|
||||||
vulkanFramebuffer->colorTargets[i]->texture->image,
|
vulkanFramebuffer->colorTargets[i]->texture->image,
|
||||||
&vulkanFramebuffer->colorTargets[i]->texture->resourceAccessType
|
&vulkanFramebuffer->colorTargets[i]->texture->resourceAccessType
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (depthStencilClearValue != NULL)
|
if (vulkanFramebuffer->depthStencilTarget != NULL)
|
||||||
{
|
{
|
||||||
depthAspectFlags = VK_IMAGE_ASPECT_DEPTH_BIT;
|
depthAspectFlags = VK_IMAGE_ASPECT_DEPTH_BIT;
|
||||||
|
|
||||||
if (IsStencilFormat(
|
if (IsStencilFormat(
|
||||||
vulkanFramebuffer->depthStencilTarget->texture->format
|
vulkanFramebuffer->depthStencilTarget->texture->format
|
||||||
)) {
|
)) {
|
||||||
|
@ -7387,9 +7388,9 @@ static void VULKAN_BeginRenderPass(
|
||||||
RESOURCE_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_WRITE,
|
RESOURCE_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_WRITE,
|
||||||
depthAspectFlags,
|
depthAspectFlags,
|
||||||
0,
|
0,
|
||||||
1,
|
vulkanFramebuffer->depthStencilTarget->texture->layerCount,
|
||||||
0,
|
0,
|
||||||
1,
|
vulkanFramebuffer->depthStencilTarget->texture->levelCount,
|
||||||
0,
|
0,
|
||||||
vulkanFramebuffer->depthStencilTarget->texture->image,
|
vulkanFramebuffer->depthStencilTarget->texture->image,
|
||||||
&vulkanFramebuffer->depthStencilTarget->texture->resourceAccessType
|
&vulkanFramebuffer->depthStencilTarget->texture->resourceAccessType
|
||||||
|
@ -7448,6 +7449,7 @@ static void VULKAN_EndRenderPass(
|
||||||
VulkanRenderer* renderer = (VulkanRenderer*) driverData;
|
VulkanRenderer* renderer = (VulkanRenderer*) driverData;
|
||||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
||||||
VulkanTexture *currentTexture;
|
VulkanTexture *currentTexture;
|
||||||
|
VkImageAspectFlags depthAspectFlags;
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
|
||||||
renderer->vkCmdEndRenderPass(
|
renderer->vkCmdEndRenderPass(
|
||||||
|
@ -7476,6 +7478,36 @@ static void VULKAN_EndRenderPass(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (vulkanCommandBuffer->currentFramebuffer->depthStencilTarget != NULL)
|
||||||
|
{
|
||||||
|
currentTexture = vulkanCommandBuffer->currentFramebuffer->depthStencilTarget->texture;
|
||||||
|
|
||||||
|
if (currentTexture->usageFlags & VK_IMAGE_USAGE_SAMPLED_BIT)
|
||||||
|
{
|
||||||
|
depthAspectFlags = VK_IMAGE_ASPECT_DEPTH_BIT;
|
||||||
|
|
||||||
|
if (IsStencilFormat(
|
||||||
|
currentTexture->format
|
||||||
|
)) {
|
||||||
|
depthAspectFlags |= VK_IMAGE_ASPECT_STENCIL_BIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
VULKAN_INTERNAL_ImageMemoryBarrier(
|
||||||
|
renderer,
|
||||||
|
vulkanCommandBuffer->commandBuffer,
|
||||||
|
RESOURCE_ACCESS_ANY_SHADER_READ_SAMPLED_IMAGE,
|
||||||
|
depthAspectFlags,
|
||||||
|
0,
|
||||||
|
currentTexture->layerCount,
|
||||||
|
0,
|
||||||
|
currentTexture->levelCount,
|
||||||
|
0,
|
||||||
|
currentTexture->image,
|
||||||
|
¤tTexture->resourceAccessType
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
vulkanCommandBuffer->currentGraphicsPipeline = NULL;
|
vulkanCommandBuffer->currentGraphicsPipeline = NULL;
|
||||||
vulkanCommandBuffer->currentFramebuffer = NULL;
|
vulkanCommandBuffer->currentFramebuffer = NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue