プロが教えるわが家の防犯対策術!

グラフィックボードにあるフレームロックについて教えてください。

NVIDIAのQuadro等にあるフレームロックの説明には、
『複数のシステムをマルチディスプレイでフレームレンダリングし、
1台以上のシステムを共通のソースに同期化することができるようになります。』
とありまして、複数のシステム間で

・どのように通信をしていて何で同期を取っているのか?
・60fps等ディスプレイに表示する全てのフレームで同期が取れるのか?

ご存知の方どうか教えてください。

A 回答 (3件)

>1点目:


>GPU間だけで同期するにはどうしたらよいのでしょうか?

フレームロックを利用するには、こういうものが追加で必要なのですがご存知ですか?
(同等機能が内蔵されているモデルもあります)
http://www.nvidia.co.jp/page/quadrofx_gsync.html

>2点目:
その解釈は、目的と手段とを取り違えています。

現実の世界(場面B)をデジカメで動画撮影すると、
ディスプレイ上に現実世界のビデオ(画面B0)を表示できますよね。
2台のデジカメを利用して、並びをうまく調整すれば、
2台のディスプレイ上に現実世界のビデオ2画面分(画面B0と画面B1)が切れ目なく表示できますよね。


3Dグラフィックスとは、これを仮想の世界で行っているだけです。つまり。。。
仮想の世界(場面A)を仮想デジカメで動画撮影すると、
ディスプレイ上に仮想世界のビデオ(画面A0)が表示されます。
2台の仮想デジカメを利用して、並びをうまく調整すれば、
2台のディスプレイ上に仮想世界のビデオ2画面分(画面A0と画面A1)を切れ目なく表示できます。

>アプリケーションが、
>"A0"と"A1"は元は同じ画面Aと判断する為に
>何か"しるし"を付けたりするのでしょうか?

前述のとおり、仮想世界(場面A)が最初にあって
場面Aから画面A0と画面A1を撮影するので、"しるし"を付ける必要がありません。
あえて"しるし"的なものを挙げると、仮想現実内での時刻ですかね。
# 同じ場所でも12:00の場面と、12:30の場面では、違う撮影結果になりますよね?

なお、仮想現実内での時刻は、回答#1で書いている「現在の積算描画フレーム数」から簡単に計算できます。
# 60fpsなら、今の時刻は「スタート時刻」+「(現在の積算描画フレーム数)/60」秒。
    • good
    • 1
この回答へのお礼

素人質問に、丁寧にご回答頂き本当にありがとうございました!
すごくわかりやすくて助かりました!ありがとうございます!

お礼日時:2010/12/12 20:19

>ゲンロックは下記資料を見て概要は知っているつもりなのですが、


>フレームロックとの違いが、恥ずかしながら、わかっておりません。
外部ソースからGENLOCK同期クロックを受信する場合は、機能面でゲンロック=フレームロック。
外部ソースからGENLOCK同期クロックを受信しない、GPU間だけで同期している場合は、フレームロックはゲンロックしていない。

となるように思います。


>例えば分割した画面にどうやって元が同じ1つの画面と判断して
この判断はアプリケーションで実装します。つまり、
シーン同期(同一シーンのデータ共有)はアプリケーションが保証する必要があります。
画面分割は同一シーンに対する射影変換を差し替えるだけですよね?

>レンダリング等の同期を行っているのか?
レンダリング同期もアプリケーションが保証する必要があります。

なお、レンダリング同期やシーン同期を補助するQuandro機能として、現在の積算描画フレーム数~全GPUで値同期が保証されている~を取得するAPIがあります。


最後に、レンダリング結果の画面出力開始タイミングの同期、つまり、ダブルバッファリングの
バッファスワップ同期は、Quandro機能が保証してくれます。(スワップロック機能)

まとめると、
「Quandroとしては、スワップロックとフレームロックで画面同期を保証」
「アプリケーションとしては、シーン同期やレンダリング同期で画面同期を保証」
という作業分担になっています。
    • good
    • 0
この回答へのお礼

とても丁寧な回答頂きましてありがとうございます!

理解が悪く何度も申し訳ないのですが、
2点もう少し詳しく教えてください。

1点目:
>外部ソースからGENLOCK同期クロックを受信しない、GPU間だけで同期している
場合は、フレームロックはゲンロックしていない。
GPU間だけで同期するにはどうしたらよいのでしょうか?

2点目:
>>例えば分割した画面にどうやって元が同じ1つの画面と判断して
>この判断はアプリケーションで実装します。つまり
>シーン同期(同一シーンのデータ共有)はアプリケーションが保証する必要が
あります。
>画面分割は同一シーンに対する射影変換を差し替えるだけですよね?
についてなのですが、
元々の画像"A"を
画面"A0"と画面"A1"の"A"の半分ずつのサイズに分割して
2つのGPUで処理する場合、

アプリケーションが、
"A0"と"A1"は元は同じ画面Aと判断する為に
何か"しるし"を付けたりするのでしょうか?
何かが無いと
元は同じ画面A0やA1に、シーン同期とレンダリング同期
A0とA1の画面出力開始に、スワップ同期
がそれぞれ出来ないと思いまして。

度々申し訳ございませんが、
ご存知でしたら教えてください。

お礼日時:2010/11/25 01:03

>・どのように通信をしていて何で同期を取っているのか?



TMDSトランスミッタからの出力を同期する話(モニタへの信号送出タイミングの同期)であれば、
http://ja.wikipedia.org/wiki/%E5%90%8C%E6%9C%9F% …
上記ページに記載がある「GENeratorLOCK・ゲンロック」の話そのままです。

>・60fps等ディスプレイに表示する全てのフレームで同期が取れるのか?
TMDSトランスミッタの出力が同期しているので、
全映像フレームが同期します。


最後に、勘違いを避けるため、念のため確認させてください。
・TMDSトランスミッターの送出フレーム数(=モニタ垂直同期周波数)
・GPUがレンダリングしたフレーム数(=3Dベンチマーク等で計測されるFPS)
が異なるのはご存じでしょうか?
    • good
    • 0
この回答へのお礼

回答頂きましてありがとうございます!

>最後に、勘違いを避けるため、念のため確認させてください。
>・TMDSトランスミッターの送出フレーム数(=モニタ垂直同期周波数)
>・GPUがレンダリングしたフレーム数(=3Dベンチマーク等で計測されるFPS)
>が異なるのはご存じでしょうか?
はい。モニタへの垂直周波数と
レンダリングのフレーム数(GPUの出来高)
は存じております。

ゲンロックは下記資料を見て概要は知っているつもりなのですが、
http://www.national.com/vcm/national3/ja_JP/reso …
フレームロックとの違いが、恥ずかしながら、わかっておりません。
例えば分割した画面にどうやって元が同じ1つの画面と判断して
レンダリング等の同期を行っているのか?
GPUが出来高だったらズレたりしないのか?
ゲンロックだけでそろってしまうものなのか?

素人で申し訳ございませんが、
ご存知でしたら教えてください。

お礼日時:2010/11/18 01:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!