What is the difference of clearing colors by vkCmdBeginRenderPass and vkCmdClearColorImage?

Problem:

I try to create a texture with initial value by clear color parameter of vkCmdBeginRenderPass. However, renderdoc display the texture as layout_undefined, and no validation error occurs.

Detail:

Here is my usage of this texture. The texture is created with multiple mip map. I initial the texture by clear value parameter of vkCmdBeginRenderPass. The level 0 of the texture is used as shader input, the leve 1 is used as render target. The following pseudocode is how I did.

SetImageLayout(texture.level1, renderpass.initialLayout)
BeginRenderpass(clearValue)
SetImageLayout(texture.level0, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)
vkCmdDraw()
EndRenderpass()

There is no validation error, which should mean the image layout transition is correct. However, the renderdoc capture display the texture as layout_undefined. Is the way of clearing color wrong? Do I need to use the vkCmdClearColorImage?

I have figured out. The level 0 of the texture is not render target, clear value parameter of vkCmdBeginRenderPass does not affect it

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.