From 6583f9b746c67d3ec9ca9e7332fd4b0490bd022b Mon Sep 17 00:00:00 2001 From: Sean Purcell Date: Tue, 24 Jul 2018 13:36:40 -0400 Subject: [PATCH] Fix overdraw case where clear values weren't set properly --- gapis/api/vulkan/overdraw.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/gapis/api/vulkan/overdraw.go b/gapis/api/vulkan/overdraw.go index 9ec1d901a6..0db8ff906a 100644 --- a/gapis/api/vulkan/overdraw.go +++ b/gapis/api/vulkan/overdraw.go @@ -1729,10 +1729,13 @@ func (s *stencilOverdraw) createCommandBuffer(ctx context.Context, newArgs.SetRenderPass(renderInfo.renderPass) newArgs.SetFramebuffer(renderInfo.framebuffer) - clearCount := uint32(newArgs.ClearValues().Len()) + rpInfo := st.RenderPasses().Get(renderInfo.renderPass) + attachmentIdx := uint32(rpInfo.AttachmentDescriptions().Len()) - 1 newClear := NewU32ː4ᵃ(a) - if renderInfo.depthIdx != ^uint32(0) { + if renderInfo.depthIdx != ^uint32(0) && + rpInfo.AttachmentDescriptions().Get(renderInfo.depthIdx).LoadOp() == + VkAttachmentLoadOp_VK_ATTACHMENT_LOAD_OP_CLEAR { newClear.Set(0, newArgs. ClearValues(). Get(renderInfo.depthIdx). @@ -1740,8 +1743,13 @@ func (s *stencilOverdraw) createCommandBuffer(ctx context.Context, Uint32(). Get(0)) } + for j := uint32(0); j < attachmentIdx; j++ { + if !newArgs.ClearValues().Contains(j) { + newArgs.ClearValues().Add(j, NilVkClearValue) + } + } // 0 initialize the stencil buffer - newArgs.ClearValues().Add(clearCount, + newArgs.ClearValues().Add(attachmentIdx, // Use VkClearColorValue instead of // VkClearDepthValue because it doesn't // seem like the union is set up in the