vkfullscreenquad: set enable_clear as TRUE by default
authorVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Wed, 29 Mar 2023 09:04:20 +0000 (11:04 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 30 Mar 2023 18:08:09 +0000 (19:08 +0100)
commit11824d6279b16ca08f095d505616d666d2b8db0f
tree5ccb1c2d86260cd15539c0f2eefb84fbe1865fc0
parentbdbae4e700a0e2c25cd7a17ca211c11cc0229570
vkfullscreenquad: set enable_clear as TRUE by default

While using the validation layer with this pipeline:

gst-launch-1.0 videotestsrc num-buffers=10 ! vulkanupload ! vulkancolorconvert ! vulkansink

The validation layer throws this message:

Code 0 : Validation Error: [ VUID-VkAttachmentDescription-format-06699 ]
Object 0: handle = 0x5555562e9610, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x52b3229e |
vkCreateRenderPass: pCreateInfo->pAttachments[0] format is
VK_FORMAT_B8G8R8A8_UNORM and loadOp is VK_ATTACHMENT_LOAD_OP_LOAD, but
initialLayout is VK_IMAGE_LAYOUT_UNDEFINED.
The Vulkan spec states: If format includes a color or depth aspect and loadOp is
VK_ATTACHMENT_LOAD_OP_LOAD, then initialLayout must not be VK_IMAGE_LAYOUT_UNDEFINED

When creating the render pass the loadOp can be either
`VK_ATTACHMENT_LOAD_OP_CLEAR` or `VK_ATTACHMENT_LOAD_OP_LOAD` depending on
`enable_clear`. While `enable_clear` is FALSE by default (which means
`VK_ATTACHMENT_LOAD_OP_LOAD`). Nonetheless, its value is explicitly changed by
`vkoverlaycompositor` to FALSE too!

This behavior was introduced in merge request #2470 where
`VK_ATTACHMENT_LOAD_OP_CLEAR` was a fixed value for loadOp. Thus, the bug
consists in a missing initialization of `enable_clear` to TRUE from that merge
request.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4311>
subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkfullscreenquad.c