在约HOST_WRITE_BIT的规格是写:HOST_WRITE有用或验证图层错误?
对于主机写入到由后续命令缓冲器的操作可以看出,从VK_ACCESS_HOST_WRITE_BIT源和VK_PIPELINE_STAGE_HOST_BIT到相关设备的流水线级和访问的目的地的管道屏障类型必须执行。另外,这样的屏障在每个命令缓冲区提交隐式执行,所以显式屏障仅很少需要
但是,当过渡(通过vkCmdPipelineBarrier(所以在commandBuffer))从预先初始化布局与一种图像一个srcAccessMask到0,而不是HOST_WRITE_BIT,则得到一个错误:
验证层:源AccessMask 0 [无]必须具有所需的访问位16384时布局VK_IMAGE_LAYOUT_PREINITIALIZED,除非该应用以前添加的屏障[VK_ACCESS_HOST_WRITE_BIT]为了这个转变。
从规格中是否有错误?从验证层?我们谈论的障碍是纯粹的执行障碍而不是记忆吗?我错过了什么吗?
好的就在你回答之前,我在github上做了一个问题^^。 所以这是一个警告,而不是一个错误,你是对的。 我不明白TOP_OF_PIPE是从哪里来的^^ –
那么,你所说的声明说,根本不需要**屏障。按照这个逻辑,如果你有障碍,那么非阻塞的('src = TOP_OF_PIPE')就足够了,不是吗? – krOoze
要转换图像布局,您必须使用内存屏障。但恕我直言,你不需要告诉Vulkan内存可用,因为它已经由隐含屏障执行了。 –