在約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內存可用,因爲它已經由隱含屏障執行了。 –