メインメニューを開く

「コマンドキュー」を編集中

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
 
'''コマンドキュー'''(英語:command queue)とは、特定のコマンド(処理)を[[キュー]]に格納しておくと、別の[[プロセス]]や[[スレッド]]が適宜それを取り出して実行する方式のことである。
 
'''コマンドキュー'''(英語:command queue)とは、特定のコマンド(処理)を[[キュー]]に格納しておくと、別の[[プロセス]]や[[スレッド]]が適宜それを取り出して実行する方式のことである。
  
名称に「[[キュー]]」とあるが、ほとんどの実装は[[アルゴリズム]]の教科書に載っているような単純なキューではなく、キューの中においてコマンドの実行順序を並べ替えたりコマンドを結合したりといった[[最適化]]が行われているものが多い。
+
一部の実装では単純なキューではなく、キューの中においてコマンドの実行順序を並べ替えたりコマンドを結合したりといった最適化が行われることがある。
  
 
[[マルチスレッド]]における「[[スレッドプール]]」もほぼ同じ概念である。スレッドプールでは汎用的な処理を格納することができるが、コマンドキューの場合は前述のような最適化が行いやすいように単純なコマンドであることが多い。
 
[[マルチスレッド]]における「[[スレッドプール]]」もほぼ同じ概念である。スレッドプールでは汎用的な処理を格納することができるが、コマンドキューの場合は前述のような最適化が行いやすいように単純なコマンドであることが多い。
13行目: 13行目:
  
 
=== GPUのコマンドリスト ===
 
=== GPUのコマンドリスト ===
最近の[[GPU]]では「1フレーム分の描画処理」をコマンドキューに格納して実行する方式が主流となっている。こちらは「[[CPU]]が[[GPU]]の処理完了を待たないための機構」という意味合いが強く、GPUが別スレッドのような扱いになる。
+
最近の[[GPU]]では1フレームの描画処理をコマンドキューに格納して実行する方式が主流となっている。こちらは「[[CPU]]が[[GPU]]の処理完了を待たないための機構」という意味合いが強く、GPUが別スレッドのような扱いになる。
  
 
架空のコマンドセットを示す。
 
架空のコマンドセットを示す。
26行目: 26行目:
 
     GraphicsDevice.SubmitCommands(cl);   
 
     GraphicsDevice.SubmitCommands(cl);   
  
     // ここでGPUでの処理完了を待てば従来同様になる。
+
     // ここで処理完了を待てば従来同様になる。
 
     // ただWaitForIdle()している間はCPUが遊んでしまう。
 
     // ただWaitForIdle()している間はCPUが遊んでしまう。
 
     GraphicsDevice.WaitForIdle();   
 
     GraphicsDevice.WaitForIdle();   
32行目: 32行目:
 
</source>
 
</source>
  
[[GPU]]での描画処理の場合は、前回の描画処理が未完了なのに次の描画処理を始めると残念なことになる。そこで「[[フェンス]]」と呼ばれる[[シグナル状態]]を保持する[[変数]]を用いて適切に処理する必要がある。
+
[[GPU]]での描画処理の場合は、前回の描画処理が未完了なのに次の描画処理を始めると残念なことになる。そこで「フェンス」と呼ばれる[[シグナル状態]]を保持する[[変数]]を用いて適切に処理する必要がある。
 
<source lang="csharp">
 
<source lang="csharp">
 
var fence;
 
var fence;

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)