2017-09-03 19 views
0

私はimageStore経由で書き込むイメージを持っています。この部分では、このイメージは一般的なレイアウトです。しかし、このパスの最後では、レイアウトをSHADER_READ_ONLYに変更するイメージメモリバリアを作成します。それは「一種の誤り」だった。その後、このイメージをLayoutという一般的なレイアウトのDescriptorImageInfoに渡します。レイヤーからのエラーはありません(正常に動作しますが、NVIDIAを使用しているので正常です)。しかし、明細書を読んだ後、それはライトであるディスクリプタセットと自動レイアウトの切り替え

imageLayoutはImageViewのより親近感のサブリソースが、この記述にアクセスする時であろうレイアウトです。 imageLayoutは、VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE、VK_DESCRIPTOR_TYPE_STORAGE_IMAGE、VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER、およびVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTタイプのディスクリプタ更新で使用されます。

私は自動レイアウトの移行について考えさせてくれます。私は正しい?違う?私が間違っていると、なぜ層がそれを教えてくれないのですか?それはバグですか?

+0

Btw、はい、Nvidiaではレイアウトを間違えたときに「ちょうどうまくいく」ものは普通です。なぜならそれらはあまり使用しないからです。他のベンダーにとっては、レイアウトを正しくすることが非常に重要です。 –

+0

ええ、私は、nvidiaがレイアウトに依存していないことを知っています。しかし、AMDは、そういうわけで私が正しいかどうかを知りたかったのです。:)私は問題を記入しています:)。ありがとう –

答えて

2

「ここにいる」とは自動遷移を意味するものではありません。記述子を使用して画像にアクセスする際に画像がそのレイアウトに配置されるように指示します。

バリデーションレイヤーは、そのディスクリプタをアクティブにして描画し、イメージがディスクリプタが予期していないレイアウトと異なる場合、エラーを発行する必要があります。そうでない場合は、それは検証バグです。ここにはhttps://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayersというファイルがあります。

関連する問題