セカンダリコマンドバッファの使用を試みて問題に遭遇しました。ウィンドウのサイズを変更すると、プライマリとセカンダリの両方のコマンドバッファが再記録されます。二次コマンドバッファが更新され、主要なコマンドバッファは、それらが含まれていることが、まだ提出されていない場合
は、検証層がセカンダリコマンドバッファの再書き込み
Calling vkBeginCommandBuffer() on active CB 0x0x166dbc0 before it has completed. You must check CB fence before this call.
エラーをスローします。これを修正するために、私は現在、セカンダリコマンドバッファを更新する前に、すべてのプライマリコマンドバッファが少なくとも一度はサブミットされていることを確認しています。
このソリューションでは、最大7フレーム(スワップチェーンのフレームバッファ数)のレンダリングが浪費されるため、この問題を回避する簡単な方法はありますか?
ポイントされていないこと。問題は、サイズ変更操作が完了した後に発生します。それはresize->第1のプライマリコマンドバッファを提出する(6左) - > vkDeviceIdle - >セカンダリコマンドバッファを更新する:エラーメッセージ。vkBeginCommandBuffer()の直前でvkDeviceWaitIdle()を呼び出したが、問題は、コマンドバッファは決して提出されていませんでした。 – camelCase
私は、おそらくこのケースもカバーしている編集をしていたことが分かりました。 (私はこれからいくつかのデジャヴを手に入れています - 私は同じ問題が書かれているのを見たところで少し調べるべきです...) – krOoze
申し訳ありませんが、この詳細を逃した。 vkDeviceWaitIdleはここでは動作しないので、すべてのプライマリコマンドバッファを送信するのは非常にコストがかかります。セカンダリコマンドバッファを実行状態が保留状態から記録状態に戻す方法はありますか? – camelCase