Vulkan: ignore BGFX_CLEAR_STENCIL if depth attachment has no stencil (#2413)

This commit is contained in:
pezcode 2021-03-01 00:16:19 +01:00 committed by GitHub
parent 8e75b38207
commit ece0c4e1a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4424,19 +4424,20 @@ VK_IMPORT_DEVICE
rect[0].layerCount = 1;
uint32_t numMrt = 1;
VkImageAspectFlags depthAspectMask = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
FrameBufferHandle fbh = m_fbh;
if (isValid(fbh) )
{
const FrameBufferVK& fb = m_frameBuffers[fbh.idx];
numMrt = fb.m_num;
depthAspectMask = isValid(fb.m_depth) ? m_textures[fb.m_depth.idx].m_aspectMask : 0;
rect[0].layerCount = fb.m_attachment[0].numLayers;
}
VkClearAttachment attachments[BGFX_CONFIG_MAX_FRAME_BUFFERS];
uint32_t mrt = 0;
if (true //NULL != m_currentColor
&& BGFX_CLEAR_COLOR & _clear.m_flags)
if (BGFX_CLEAR_COLOR & _clear.m_flags)
{
if (BGFX_CLEAR_COLOR_USE_PALETTE & _clear.m_flags)
{
@ -4469,13 +4470,14 @@ VK_IMPORT_DEVICE
}
}
if (true //NULL != m_currentDepthStencil
if (0 != depthAspectMask
&& (BGFX_CLEAR_DEPTH | BGFX_CLEAR_STENCIL) & _clear.m_flags)
{
attachments[mrt].colorAttachment = mrt;
attachments[mrt].aspectMask = 0;
attachments[mrt].aspectMask |= (_clear.m_flags & BGFX_CLEAR_DEPTH ) ? VK_IMAGE_ASPECT_DEPTH_BIT : 0;
attachments[mrt].aspectMask |= (_clear.m_flags & BGFX_CLEAR_STENCIL) ? VK_IMAGE_ASPECT_STENCIL_BIT : 0;
attachments[mrt].aspectMask &= depthAspectMask;
attachments[mrt].clearValue.depthStencil.stencil = _clear.m_stencil;
attachments[mrt].clearValue.depthStencil.depth = _clear.m_depth;