必要に応じて、コンテンツの保存と分類を行います。システムにおけるさまざまな非同期操作の依存関係を明示的に記述します。このフレームワークにより、カーネルからユーザー空間までにあるドライバ同士、およびユーザー空間プロセス同士で同期プリミティブを渡すこともできます。実行する作業をキューに入れるとします。その画像の描画を開始します。コンポジタに渡されます。コントローラに渡します。処理も事前に行われます。コントローラは直ちに画像を表示します。コンポーネントで同期リソースを利用することも可能です。パイプラインを可視化できます。バッファのプロデューサーとコンシューマーがそれぞれバッファの使用を終了したときにシグナルで通知を行うことを可能にするものです。明示的な同期はカーネル空間に実装されます。明示的な同期のメリットには次のものがあります。インスタンスごとに実装する必要があります。特定のハードウェアのカーネルに送信されたジョブをカウントします。よって操作の順序が保証され、ハードウェア固有の実装が可能になります。実装する際のガイドラインは次のとおりです。デバッグを簡略化するために、すべてのドライバ、タイムライン、フェンスに実用的な名前を付けます。演算子をタイムラインに実装します。データへのアクセス権を付与します。関する情報を渡せます。ユーザー空間での明示的なフェンスの作成やフェンスのシグナルを許容しないでください。シグナルまたはフェンスを明示的に作成することは、パイプライン機能を停止させるサービス拒否攻撃につながります。各要素に明示的にアクセスしないでください。つの値またはポイントです。ポイントはアクティブ状態から始まり、シグナル状態またはエラー状態に遷移します。シグナルされ、画像プロデューサーはバッファに再度書き込めるようになったことを認識します。)が異なることも多くあります。ドライバとユーザー空間が依存関係を伝えるために使用する主要なプリミティブです。ブロックはコマンドを順番に実行するため、フェンスがシグナル状態になることによって、フェンスの前に発行されたすべてのコマンドが完了したことが保証されます。つの関数パラメータで依存関係の情報を伝えることができます。フェンスの背後にはファイル記述子があり、カーネル空間からユーザー空間に渡されます。つのフェンスに含めることができます。このフェンスが送信されると、画像プロデューサーは両方のコンシューマーが使用を完了したことを認識します。値のようなフェンスはアクティブ状態で始まって、それぞれのポイントの状態に基づいて状態が変化します。シグナル状態になります。全体がエラー状態になります。メンバーを変更することはできません。目のフェンスに追加するマージを実施します。目のフェンスもシグナル状態になりません。明示的な同期を実装するには、以下が必要です。ドライバの同期フレームワークを実装するカーネル空間サブシステム。通信するドライバは、一般的にフェンスを認識する必要があります。重要なファイルには以下のものがあります。関数に対して、適切な同期フェンスをパラメータとして用意する必要があります。ドライバを開発します。オブジェクトを受け取ってそれらのバッファをディスプレイに配置し、バッファが表示されている間、他の作業をブロックするという方法が採られていました。関数はより複雑になります。ディスプレイにバッファを配置すると、バッファが使用可能になる時期を示すフェンスに関連付けられます。作業をキューに入れておき、フェンスのクリア後に開始することができるようになります。作業をキューに入れてフェンスのクリア後に開始する方法を採ると、作業をブロックする必要はなくなります。その代わりに、バッファがディスプレイを占有しなくなったことが保証できるタイミングを示す独自のフェンスを直ちに返すようにします。バッファをキューに入れると、カーネルが同期フレームワークで依存関係の一覧を表示します。フレームワークのユーザー空間部分および相互に通信する必要があるドライバと統合する方法について説明します。カーネル空間のオブジェクトは、ユーザー空間でファイル記述子として表されます。インターフェースの規則を遵守してください。ファイル記述子を閉じる必要があります。関数に渡す場合はファイル記述子を閉じないでください。記述子を複製する必要があります。通過するたびに名前が変更されます。出力とバグレポートに表示されるため、デッドロックの発生元を特定するデバッグに対して有用です。フェンスを認識します。それぞれフェンスに関するパラメータがあります。フェンスのファイル記述子をラップまたは作成できます。