bugfix> vulkan > 投稿

イベントで何らかのクリティカルセクションを実装したい-いつ頂点バッファーをホスト更新できるかを知る必要があります。このために、ホストでイベントを設定します( vkSetEvent() )コマンドバッファーを記録する前に、イベントをリセットするコマンドを記録する( vkCmdResetEvent )。 vkCmdResetEvent イベントが通知されるタイミングを決定するには、ソースステージマスクを指定する必要があります。そして、ここで私はステージについて確信が持てず、仕様に必要な文言を見つけることができませんでした。 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT を使用する場合ステージの終わりにイベントがリセットされるという保証はありますか?それともステージの始まりですか?

回答 2 件
  • ソースステージマスクは、同期する操作のソースを指定します。ソースを頂点シェーダーステージとして指定する場合、同期しようとしている操作はVSまたはその前のいずれかで発生したと言います。

    vkCmdResetEvent の場合 、イベントをテストするコマンドが発生する前にリセットコマンドが実行されないように、同期が必要です。したがって、ホストはイベントを設定し、後のコマンドでテストします(おそらく vkCmdWaitEvents で 、 VK_PIPELINE_STAGE_HOST_BIT を使用  そのソースとして)、および vkCmdResetEvent  リセットする必要があります。さて、後者のコマンドは、ソースとして vkCmdWaitEvents のステージを使用する必要があります  そのとして設定。これにより、待機が完了する前にリセットコマンドが実行されないことが保証されます。

  • stageFlagsは、同期操作を挿入するパイプラインを指定します。

    これは、ソース 前のコマンドがステージを完了した後の段階 次のコマンドがそれらの段階で開始される前の段階です。

あなたの答え