vkWaitForFences
を呼び出すとき、デバイスハンドルへのアクセスを同期させる必要がありますか?この仕様にはこれに関する必要は言及されていませんが、どちらもフリースレッドであるとは言えません。いくつかの場所、つまりほとんどのvkCreateXXX
では、これを要件として言及しています。スペックの明示的な性質が与えられれば、より正確な言葉遣いが(この場合は全くではなく)期待されます。Vulkan:vkWaitForFencesはVkDeviceへのアクセスを同期化します
答えは「いいえ」と思われますが、私はこのAPIまたは実装の背後にある実装で私の直感を信じることができません。
この関数の呼び出しを守る必要がある場合は、奇妙な(実際は役に立たない)でしょう。
TBH内部で同期化されたVulkanにはほとんど何もないことを考慮すると、「外部同期」と「ホスト同期」という用語も混乱しています。おそらく、すべてのコマンドパラメータを「読み込みアクセス」とみなし、「ホスト同期」にリストされているすべてのものを「書き込みアクセス」と考えると便利です。 read-readは同期を必要としません。ライト・リードおよびライト・ライトは行いません。 – krOoze
はい、「書き込みアクセス」という考えは参考になりますが、これも私がやっていることです。いくつかの場合を除き、コマンド*がパラメータへの書き込みアクセスを必要とする場合、そのパラメータは外部的に同期されます。しかし、多くの実装では、そのパラメータのAPI可視状態を変更しないパラメータへの付随的な書き込みアクセスが必要な場合があります。したがって、これらは外部同期されておらず(例外はいくつかあります)、インプリメンテーションで順序付けされたアクセスが必要な場合は、内部的に同期化する必要があります。 VkDeviceコマンドの多くは、そのカテゴリに分類されます。 –