vkCmdClearColorImage の謎
やっとこさ最初の描画(クリアだけ)ができたけど、なんかRenderDocのバリデーションがおかしい。
ここの VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
が、
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
のように警告される。が、ドキュメントでは、
imageLayout
specifies the current layout of the image subresource ranges to be cleared, and must beVK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
,VK_IMAGE_LAYOUT_GENERAL
orVK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
.
のように、 VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
も使用可になっている。
1.2 specだと消えている
確かに、1.2仕様だと消えている。
... よく見ると "SHARED" って入ってるな。。欲しいのは VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
で、 これは普通にBarrierを挿入しないといけない 。