Open2

vkCmdClearColorImage の謎

okuokuokuoku

やっとこさ最初の描画(クリアだけ)ができたけど、なんかRenderDocのバリデーションがおかしい。

ここの VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR が、

https://github.com/okuoku/yuniframe/blob/6365c0cbbcd6eb20f830c7395b30d3e94ff555f4/cwgl/src-vulkan/cwgl-vk-draw.c#L600

RenderDocでは

RDOC 030944: [19:23:08] vk_core.cpp(3927) - Warning - [VUID-vkCmdClearColorImage-imageLayout-00005] Validation Error: [ VUID-vkCmdClearColorImage-imageLayout-00005 ] Object 0: handle = 0x4a512c0000000089, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x9740ed23 | vkCmdClearColorImage(): Layout for cleared image is VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR but can only be TRANSFER_DST_OPTIMAL or GENERAL. The Vulkan spec states: imageLayout must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL

のように警告される。が、ドキュメントでは、

https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearColorImage.html

imageLayout specifies the current layout of the image subresource ranges to be cleared, and must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, VK_IMAGE_LAYOUT_GENERAL or VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL.

のように、 VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR も使用可になっている。