私はdirect3dを使用してyuvビデオデータをレンダリングしています。基本的なプロセスは次のとおりです。
このサーフェスでCreateOffscreenPlainlockrectangleを使用してyv12サーフェスを作成し、データポインターを取得し、yuvデータをコピーします。このサーフェスからバックバッファ呼び出しが存在するまでのstretchrectangleは、バックバッファを表示します。
LockRectangle呼び出しには、LockFlagsパラメーターがあり、LockFlags.Discardを使用しています。これは、バッファー全体を上書きすることを意味しているように聞こえます。
これにより、一部のIntelオンボードグラフィックスデバイスでいくつかの問題(現在の例外)が発生するようですが、LockFlagsをLockFlags.Noneに変更すると、問題は解決するようです。これを行うことで競合状態を作成しましたか?
ここでロックの必要性を理解する必要があると思います。表示は32ビットのrgbであるため、yuvからrgbへの変換はstretchrectangle呼び出しで行われると思います。このプロセスは同期または非同期であると想定されていますか?現在は非同期であることを読んだと思いますが、それは私が直接触れないバックバッファーの操作であるため、私には関係ありません。
質問が意味をなさない場合はお詫び申し上げます。これまでのところ、これをうまく処理できていないと思います。