JP4620129B2 - プログラム可能なハードウェアを用いたリアルタイムディスプレイの後処理 - Google Patents

プログラム可能なハードウェアを用いたリアルタイムディスプレイの後処理 Download PDF

Info

Publication number
JP4620129B2
JP4620129B2 JP2007546981A JP2007546981A JP4620129B2 JP 4620129 B2 JP4620129 B2 JP 4620129B2 JP 2007546981 A JP2007546981 A JP 2007546981A JP 2007546981 A JP2007546981 A JP 2007546981A JP 4620129 B2 JP4620129 B2 JP 4620129B2
Authority
JP
Japan
Prior art keywords
frame
post
image
processing
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007546981A
Other languages
English (en)
Other versions
JP2008524720A (ja
Inventor
ダンカン, エー. リアック,
ジョン, エム ダンスキン,
ジョナ, エム. アルベン,
マイケル, エー. オグリンク,
アンソニー, マイケル タマシ,
Original Assignee
エヌヴィディア コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エヌヴィディア コーポレイション filed Critical エヌヴィディア コーポレイション
Publication of JP2008524720A publication Critical patent/JP2008524720A/ja
Application granted granted Critical
Publication of JP4620129B2 publication Critical patent/JP4620129B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1423Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
    • G06F3/1431Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display using a single graphics controller
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/04Partial updating of the display screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/125Frame memory handling using unified memory architecture [UMA]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/127Updating a frame memory using a transfer of data from a source area to a destination area
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/399Control of the bit-mapped memory using two or more bit-mapped memories, the operations of which are switched in time, e.g. ping-pong buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)

Description

発明の背景
[0001]本発明は、広く、グラフィックプロセッサに関するものであり、より詳細には、プログラム可能なハードウェアを用いたリアルタイムディスプレイの後処理に関するものである。
[0002]コンピュータによる画像レンダリングは、通常、シーンの形状記述によって始まる。様々なオブジェクトが、シーン内に配置することができるプリミティブ(通常は、三角形のような単純なポリゴン、並びに、点及び線)の集合として記述される。そして、視点座標系が選択され、プリティブが当該座標系へと変換される。プリミティブは、次いで、2次元(2−D)「フラグメント」の配列表現に変換される。ここで、各フラグメントは、色を有し、奥行き座標又は面法線のような他の属性を有することがある。照明、テクスチャ、フォグ(霧)、及び、視覚リアルズムを強化する種々の他の効果を、プリミティム及び/又はフラグメントステージにおいて導入することもある。レンダリングプロセスが終了すると、各フラグメント用のデータ(一般的には、少なくとも色値)が、画像バッファに格納される。画像バッファは、スキャンアウトプロセスによって読み取られ、当該スキャンアウトプロセスが、ピクセルをディスプレイデバイスに所定のスクリーンリフレッシュレートで供給するよう、等時間間隔で動作する。リアルタイムのアニメーションは、レンダリングプロセスが約30Hzのレートで新しい画像を供給することを要求する。典型的なディスプレイデバイスは、約60〜80Hzのスクリーンリフレッシュレートで動作する。
[0003]これら処理レートの要件を満たすために、多くのコンピュータシステムは、専用のグラフィックコプロセッサを備え、当該コプロセッサが、中央処理ユニット(CPU)によって提供されるデータに対してレンダリングオペレーションを実行し、また、等時間間隔のスキャンアウトオペレーションを実行してディスプレイデバイスを駆動する。典型的なグラフィックプロセッサは、レンダリングオブジェクトとスキャンアウトエンジンを備えており、これらは互いに非同期的に動作する。レンダリングオブジェクトは、「バック」画像バッファにおいて新規の画像用のフラグメントデータを生成し、スキャンアウトエンジンは、「フロント」画像バッファ内の以前にレンダリングされた画像を用いてディスプレイを駆動する。新規の画像のレンダリングが完了すると、「バック」バッファ及び「フロント」バッファが切り替えられて、スキャンアウトエンジンが、新たにレンダリングされた画像を表示し始め、レンダリングオブジェクトが次の画像に移行する。一般に、スキャンアウトエンジンは、同じ画像を、次の画像のレンダリングが完了する前に2〜3回読むことがある。
[0004]レンダリングオブジェクト及びスキャンアウトエンジンは、通常、実装について大きく異なる。レンダリングオブジェクトは、一般的に、フレキシブルでありプログラム可能である。典型的なレンダリングオブジェクトは、任意のオペレーションのシーケンスを実行するよう命令され得る機能ユニットと共に、実行コア(又は複数の並列実行コア)を備えている。適切なプログラミングを用いて、実行コアは、任意の組み合わせのレンダリングアルゴリズムを実行して特定の画像を生成するように作ることができるものであり、当該アルゴリズムは、要求に応じて異なり得るものである。
[0005]スキャンアウトエンジンは、逆に、通常、制限された処理能力を有しており、プログラム可能ではない。代わりに、スキャンアウトエンジンは、フラグメントデータが流れる一連のパイプライン化された専用処理回路を、フラグメントデータをピクセル値に変換する種々のオペレーションを実行する処理回路と共に、有している。例えば、幾つかのスキャンアウトエンジンは、レンダリングされる画像よりも高レートで更新され得るオーバーレイ(例えば、カーソル又はビデオオーバーレイ)の追加、色補正(例えば、ディスプレイの応答の非線形性を考慮するためのガンマ補正)、又は、スクリーン上の複数のピクセルを整合させるためのフラグメントデータのフィルタリング(例えば、アンチエイリアス処理)をサポートする。上記専用回路は、一般的には、固定の待ち時間で動作するよう設計されており、ピクセルデータがディスプレイデバイスに等時間間隔で供給されるようにする。
[0006]幾つかのプロセッサでは、種々のスキャンアウトタイムオペレーションを有効又は無効にすることができ、又は、当該オペレーションのパラメータ(例えば、ガンマ補正用のパラメータ又はオーバーレイの位置)を変更することができる(例えば、オーバーレイを動作させたり、又は、停止させることができる)。しかしながら、各オペレーションが異なる専用回路で実装されているので、一般的には、パイプラインに新規のオペレーションを追加すること、オペレーションのシーケンスを変更すること、又は、特定のオペレーションを実装するアルゴリズムを変更することは、異なるスキャンアウトエンジンを構築すること無くしては、行い得ない。したがって、スキャンアウトエンジンを再構成する能力は、非常に限られている。新規の特徴を追加することは、一般には、回路の変更を要し、チップ面積及びスケジューリングに影響し、コスト及び遅延が増加する。
[0007]リアルタイムのレンダリング技術が進化し続けるにつれて、より強力且つフレキシブルであり、ディスプレイのレートで種々の効果を追加することが可能なスキャンアウトエンジンに対する要求が増加してきている。加えて、グラフィックプロセッサによって駆動されるディスプレイデバイスの範囲も増加してきており、従来のCRTモニタに加えて、グラフィックデバイスを用いて、LCDモニタや、デジタルマイクロミラープロジェクタ、プラズマモニタ等を駆動することが可能となっている。各種のディスプレイデバイスは、そのピクセルを駆動するための要件が異なっており、これら要件の全てを単一のハードウェアパイプラインで満たすことは困難である。したがって、フラグメントからピクセルへの変換処理に関するより優れたフレキシビリティに対する要求は高い。
[0008]従って、ディスプレイの周期(cadence)で任意のシーケンスのオペレーションを実行する能力を有するグラフィックプロセッサを提供することが望まれるであろう。
発明の簡単な概要
[0009]本発明の実装の形態は、グラフィックプロセッサを提供するものであり、当該グラフィックプロセッサにおいては、レンダリングオブジェクト及び後処理オブジェクトが、ホストプロセッサへのアクセスを、プログラム可能な実行コアを用いて共有する。レンダリングオブジェクトは、画像用のフラグメントデータを幾何データから生成し、フラグメントデータを画像バッファに書き込むように動作する。後処理オブジェクトは、フレームのピクセルデータを一以上の完成したフレームバッファにおけるフラグメントデータから生成し、当該ピクセルデータをフレームバッファに書き込むよう動作する。ホストプロセッサのオペレーションと並行して、スキャンアウトエンジンが、以前に生成されたフレーム用のピクセルデータをフレームバッファから読み取り、当該ピクセルデータをディスプレイデバイスに供給する。スキャンアウトエンジンは、ホストプロセッサを周期的にトリガして、次のフレームを生成するよう後処理オブジェクトを動作させる。スキャンアウトエンジンと後処理オブジェクトとの間のタイミングは、スキャンアウトエンジンが現在のフレームの読み取りを終了した時に表示すべき次のフレームがフレームバッファ内に準備されているように好適に制御される。
[0010]本発明の一側面によれば、グラフィックプロセッサが、プログラム可能な実行コアと、調停ユニットと、スキャンアウトエンジンと、を備える。プログラム可能な実行コアは、複数のコンテキスト間で切り替えることができるように構成されており、更に、切り替えられた(switched−to)コンテキストに関連するプログラム命令を実行するように構成されている。調停ユニットは、実行コアに結合されており、異なるコンテキスト間での実行コアの切り替えを制御するよう構成されている。スキャンアウトエンジンは、フレームの生成されたピクセルデータをディスプレイポートに等時間間隔で伝送するように構成されており、トリガ信号を調停ユニットに周期的に伝送するように結合されている。コンテキストは、画像データを生成するための第1のシーケンスのプログラム命令に関連するレンダリングコンテキスト、及び、画像データからフレームのピクセルデータを生成するための第2のシーケンスのプログラム命令に関連する後処理コンテキストを含む。調停ユニットは、更に、トリガ信号に応答して、実行コアを後処理コンテキストに切り替えるように構成されている。幾つかの実施の形態では、スキャンアウトエンジンは、更に、トリガ信号がフレーム終端のイベントに実質的に固定の時間関係をもたせるように構成されている。
[0011]幾つかの実施の形態では、調停ユニットは、更に、フレーム終端イベントが第2のストリープのプログラム命令において検出されるまでの間、実行コアを後処理コンテキストに維持して、その後、実行コアをレンダリングコンテキストに切り替えるように構成されている。フレーム終端イベントは、例えば、第2のストリームのプログラム命令において当該第2のストリームのプログラム命令の開始ポイントをターゲットとした無条件ジャンプ命令が発生することに対応してもよい。
[0012]本発明の他の側面によれば、画像を生成する方法が提供される。プロセッサの共有実行コアでは、レンダリングオブジェクトが動作され、レンダリングオブジェクトが、画像用のフラグメントデータを、第1のシーケンスのプログラム命令に応答して生成する。レンダリングオブジェクトを動作させることと並行して、スキャンアウトエンジンが、フレームのピクセルデータをディスプレイデバイスに等時間間隔で供給するよう動作され、当該スキャンアウトエンジンが、周期的にトリガ信号を生成する。トリガ信号に応答して、後処理オブジェクトが、プロセッサの共有実行コアにおいて動作され、当該後処理オブジェクトは、第2のシーケンスのプログラム命令に応答して、新規フレームのピクセルデータを、一以上の画像用のフラグメントデータから生成し、新規フレームのピクセルデータが、スキャンアウトエンジンに利用可能とされる。幾つかの実施の形態では、第2のシーケンスのプログラム命令は、例えば、画像のフラグメントデータをダウンフィルタリングための命令、画像用のフラグメントデータをアップフィルタリングするための命令、及び/又は、2以上の異なる画像用のフラグメントデータを用いた合成画像を形成するための命令を含む。
[0013]本発明の更に別の側面によれば、グラフィック処理システムが、画像バッファ、フレームバッファ、及びマルチプロセッサを備える。各画像バッファは、画像用のフラグメントデータを格納するように構成されており、各フレームバッファは、フレーム用のピクセルデータを格納するように構成されている。マルチプロセッサは、プログラム可能な実行コア、調停ユニット、及びスキャンアウトエンジンを備える。プログラム可能な実行コアは、複数のコンテキスト間で切り替え可能なように構成されており、これによって、実行コアは切り替えられたコンテキストに関連するプログラム命令を実行するようになっている。調停ユニットは、実行コアに結合されており、コンテキスト間での実行コアの切り替えを制御するように構成されている。スキャンアウトエンジンは、フレームのピクセルデータをフレームバッファからディスプレイポートに等時間間隔で伝送するように構成されており、トリガ信号をマルチプロセッサの調停ユニットに周期的に伝送するように結合されている。コンテキストは、画像用のフラグメントデータを生成し、画像バッファの一つに各画像用のフラグメントデータを書き込むための第1のシーケンスのプログラム命令に関連するレンダリングコンテキスト、及び、フレームのピクセルデータを画像バッファ内のフラグメントデータから生成し、フレーム用のピクセルデータをフレームバッファの一つに書き込むための第2のシーケンスのプログラム命令に関連する後処理コンテキストを含む。調停ユニットは、更に、実行コアを後処理コンテキストに、トリガ信号に応答して切り替えるように構成されている。
[0014]以下の詳細な説明、及び添付の図面によって、本発明の本質と利点がより理解されるようになる。
発明の詳細な説明
<概略及び専門用語>
[0029]本発明の実施の形態は、グラフィックプロセッサを提供するものであり、当該グラフィックプロセッサにおいては、レンダリングオブジェクト及び後処理オブジェクトがホストプロセッサへのアクセスを、プログラム可能な実行コアを用いて共有する。レンダリングオブジェクトは、レンダリングの周期で動作するものであり、幾何データから画像用のフラグメントデータを生成し、当該フラグメントデータを画像バッファに書き込む。後処理オブジェクトは、スキャンアウト(表示)の周期で動作するものであり、ピクセルデータを、一以上の完成した画像バッファにおけるフラグメントデータから生成し、当該ピクセルデータをフレームバッファに書き込む。並行して、スキャンアウトエンジンが、以前に生成されたフレーム用のピクセルデータを、異なるフレームバッファから読み取り、ピクセルをディスプレイデバイスに供給する。スキャンアウトオペレーションと同時に、スキャンアウトエンジンは、ホストプロセッサをトリガして、後処理オブジェクトをスキャンアウトの周期で実行し、スキャンアウトエンジンが現在のフレームの読み取りを終了する時に次のフレームが準備されているようにする。
[0030]本明細書では、以下の専門用語を使用する。
[0031]画像との用語は、あるピクチャの記述を構成する「フラグメント」の配列を指し、各フラグメントは色を有しており、奥行き、透明度等の他の属性を有することもある。フラグメントの色は、赤/緑/青(RGB)、輝度−色差(YCrCb)、色相/明度/彩度(HLS)、単色強度値、又は他のフォーマットを含む任意の好都合なフォーマットにおいて、任意の所望の解像度で、表現することができる。フラグメントは、数及び配列について、ディスプレイデバイスのピクセルに如何なる特定の関係をもつ必要がなく、フラグメントのアレイは、フラグメント間で均一の間隔を有していても、また、有していなくてもよい。
[0032]「レンダリング」は、一般的に、シーンデータから画像又はフラグメントデータを生成するプロセスを指し、当該シーンデータは、通常は、プリミティブ及び関連の幾何データを含む。レンダリングプロセスは、頂点処理(スクリーン空間への変換)、セットアップ(スクリーン空間において関心のある属性及びプリミティブの選択)、ラスタライズ(フラグメント位置の配列をサンプリングして各フラグメントをカバーするプリミティブを決定する)、シェーディング(フラグメント用の属性を、フラグメントを覆うプリミティブに応じて生成する)、及び、ポストシェーディングラスタオペレーション(フラグメントアレイを、例えばダウンフィルタリングによって変換する)のような多数のステージを含む。画像のレンダリングは、一般的に、平均速度(「レンダリングの周期」)で発生し、当該平均速度は、幾つかの実施の形態では、アニメーションに適した速度、例えば、1秒につき約30画像である。レンダリングプロセスの詳細は、本発明にとって重要なことではなく、レンダリングスピードは、画像によって変動することがある。
[0033]レンダリングされた画像は、ピクセルの配列又はラスタを用いるディスプレイデバイスに表示され、それらの各々が、ピクセル値の関数である駆動信号に応答して色を表示する。上述したように、ディスプレイデバイスのピクセルは、レンダリングされた画像の単一のフラグメントに対応していても、対応していなくてもよい。「フレーム」とは、本明細書に使用するように、一般的には、ピクセルラスタ用のピクセル値の完全なセットを指す。新規のフレームは、所定のスクリーンリフレッシュレート、又は「ディスプレイ周期」(例えば、80Hz)で表示される。これは、ユーザが選択可能なパラメータである。連続するフレームは、同じ画像又は異なる画像を表示することがある。
[0034]「後処理」は、一般的に、フレームのピクセルデータを生成するための一以上の画像用のフラグメントデータの処理を指す。後処理は、ディスプレイ周期(スクリーンリフレッシュレート)で好適になされるものであり、一般的には、アニメーションの速度よりも早い。多数の後処理オペレーションを、本発明に従って実装することができる。以下に、幾つかの例を示すが、本発明は、後処理オペレーションの如何なる特定の組み合わせ又はシーケンスにも限定されるものではない。
[0035]一つの後処理オペレーションはフィルタリングであり、ある画像からの異なるフラグメントの値を混合して、単一のピクセル値を得ることを含む。フィルタリングによって、フラグメントの数とは異なる個数のピクセルが得られる。ある実施の形態では、フラグメントをダウンフィルタリングして、フラグメントの数よりも少ない数のピクセルを生成することができる。例えば、各ピクセル値を、近傍のフラグメント値の重み付け平均とすることができる。ダウンフィルダリングを使用して、画像のサイズを縮小し、オーバーサンプリング(例えば、マルチサンプリング)オペレーションの最終ステージとしてアンチエイリアス処理を実施すること等が可能である。或いは、フラグメントをアップフィルタリングして、フラグメントの数より多い数のピクセルを生成することができる。例えば、補間を用いて、入力フラグメント値の間又は適所に、更なるピクセル値を追加することができる。アップフィルタリングは、例えば、画像を表示用に拡大するために用いられることがある。
[0036]別の後処理オペレーションは、合成処理であり、これは、一般的には、二以上の画像からのフラグメントを最終画像へと組み合わせることを指す。例えば、カーソル画像が、スクリーン画像の一部に重ねられることがあり、又は、ビデオ画像(例えば、映画)が、デスクトップ上のウィンドウに重ねられることがある。幾つかの実施の形態では、組み合わされる画像が、異なるレートで更新されることがあり、ディスプレイ周期以外では、画像を正確に組み合わせることを困難にしている。ある実施の形態では、合成処理がまた、画像を混合して、フェイドイン、フェイドアウト、又はディゾルブのような遷移効果を生成することもある。これらの効果のために、古い画像及び新規の画像を、時間の関数として変化するそれぞれに対応の重みを用いて混合することができる。
[0037]更に別の後処理オペレーションは、表面マッピングであり、これは、一般的には、画像用のフラグメントデータを、2−D又は3−Dの表面上にマッピングして、当該表面をピクセルの配列上に投影することを指す。ある実施の形態では、フラグメントデータを、台形表面にマップして、プロジェクタであるディスプレイデバイス用の「キーストーン」補正を提供することができ、台形表面の形状及びサイズは、プロジェクタからのビームの軸線がスクリーン又は他のディスプレイ表面に対して法線方向にないときに発生する公知の歪みを補償するよう、ユーザが調整することができる。他の実施の形態では、フラグメントデータを任意形状の表面にマップすることも可能である。この表面は、所望の視覚効果を生成するように、又は、非平面の表面(例えば、円柱又は半球)に少ない歪みで投影が行えるように、定義することができる。
[0038]更なる後処理オペレーションは、表面の回転であり、これは、画像用のフラグメントデータを、画像の法線方向の軸線周りにある角度で回転された2−D表面にマッピングすることを指す。例えば、90°の時計回りの回転によって、画像の上部左隅におけるフラグメントは、ピクセル配列の上部右角に現れ、画像における水平の線はピクセル配列における垂直の線となる。表面の回転は、上述した表面マッピングオペレーションの特殊ケースとして見ることができる。ある実施の形態では、表面の回転が、タブレットPCのディスプレイや幾つかのフラットパネルモニタの場合のように、回転可能に搭載されたディスプレイデバイスに用いられる。
[0039]更に別の後処理オペレーションは、輝度補償である。例えば、画像がスクリーン上に投影される場合に、プロジェクタから遠く離れたピクセルは、より近くにあるピクセルよりも暗くなる傾向がある。また、スクリーン周囲の環境光が均一でない場合に、スクリーンの一部が、残りの部分より明るく見えることがある。輝度補償は、かかる影響を、スクリーン位置の関数としてピクセルの強度を変更することによって補正することができ、ユーザは、種々の輝度補償パラメータを所望のように調整することが可能である。
[0040]他の後処理オペレーションは、特定のディスプレイデバイスの特性を補償するものである。例えば、ガンマ補正は、アナログ信号によって駆動されるディスプレイデバイスにおける非線形の電圧応答を補償するために、ピクセル値を指数関数的にスケーリングする。別の例として、LCDモニタでは、応答時間を、部分的には所望の強度に応じており、部分的には強度を前のフレームに関連して変化させる量に応じた各ピクセル用の駆動値を提供することによって、改善することができる。他のタイプのディスプレイデバイスに特化した他の補償オペレーションを、後処理において実施してもよい。
[0041]幾つかの実施の形態では、後処理オペレーションは、LCDのオーバードライブ又は合成といった正確な結果を生成するために、ディスプレイ周期で成されるべきオペレーションである。レンダリングがスキャンアウトと非同期の場合、レンダリング時には、レンダリング周期をディスプレイ周期に如何に一致させるかを決定することが困難であるか、又は不可能であることが多く、従って、後処理オペレーションがレンダリングの期間になされる場合に、正確な結果を保証することも困難であるか、又は不可能である。
[0042]「スキャンアウト」は、一般的に、フレーム(後処理後)のピクセルデータを、ディスプレイデバイスに接続する出力経路に転送することを指す。後処理と同様に、スキャンアウトは、ディスプレイ周期で発生する。幾つかの実施の形態では、後処理によって生成されたピクセルデータは、既に、ディスプレイデバイスを駆動するために適切なフォーマットになっている。他の実施の形態では、スキャンアウトは、ピクセルデータを適切なフォーマットに変換することを含むことがあり、また、再スケーリング、デジタル−アナログ変換、及び他の信号処理技術を含むことがある。
<システムの概略>
[0043]図1は、本発明の実施の形態にかかるコンピュータシステム100のブロック図である。コンピュータシステム100は、バス106を介して通信する中央処理ユニット(CPU)102及びシステムメモリ104を備えている。ユーザ入力は、バス106に結合された一以上のユーザ入力デバイス108(例えば、キーボード、マウス)から受け取られる。視覚出力は、システムバス106に結合されたグラフィック処理サブシステム112の制御の下で動作するピクセルベースのディスプレイデバイス110(例えば、従来のCRT又はLCD)で提供される。システムディスク107、及び、一以上のリムーバブルストレージデバイス109(例えば、フロッピーディスクドライブ、コンパクトディスク(CD)ドライブ、及び/又はDVDドライブ)のような他のコンポーネントが、システムバス106に結合されていてもよい。システムバス106は、一以上の様々なバスプロトコルを用いて実装することができ、当該プロトコルには、PCI(Peripheral Component Interconnect)、AGP(Advanced Graphics Processing)、及び/又はPCI−Express(PCI−T)があり、ノースブリッジ及びサウスブリッジ(図示せず)のような適切な「ブリッジ」チップを、種々のコンポーネント及び/又はバスの相互接続のために提供することができる。
[0044]グラフィック処理サブシステム112は、グラフィック処理ユニット(GPU)114及びグラフィックメモリ116を備えており、これらは、例えば、プログラム可能なプロセッサ、特定用途向け集積回路(ASIC)、及びメモリデバイスのような一以上の集積回路デバイスを用いて、実装することができる。GPU114は、マルチプロセッサ120、メモリインタフェイスモジュール122、及び、スキャンアウトエンジン124を備えている。
[0045]マルチプロセッサ120は、グラフィック処理サブシステム112のレンダリング及び後処理のタスクを実行するよう構成されている。マルチプロセッサ120は、プログラム可能な実行コア(図1には明示せず)を備えており、二以上のプロセスの同時実行が可能である。一つのプロセスは、「レンダリングオブジェクト」132であり、このレンダリングオブジェクト132は、CPU102上で実行する種々のプログラムによって提供される2−D又は3−Dのシーンデータから、画像(フラグメント)データを生成するよう構成されている。別のプロセスは、「後処理オブジェクト」134であり、この後処理オブジェクト134は、フラグメントデータを、ディスプレイデバイス110上の表示用に準備したピクセルデータへと変換するよう構成されている。ある実施の形態では、これらプロセスの一つのみが、任意の所与の時間においてマルチプロセッサ120でアクティブになり、異なるプロセスが切り替えられて(スイッチイン及びスイッチアウトされて)、同時処理の効果が提供される。幾つかの実施の形態では、レンダリングオブジェクト132及び後処理オブジェクト134は、物理的に同じ処理エンジンに実装されていてもよく、このエンジンは、好適には、両オブジェクトをサポートするためにコンテキストを切り替えることが可能である。他の実施の形態では、レンダリングオブジェクト132及び後処理オブジェクト134は、別個の処理エンジンに実装されており、両オブジェクト間のコンテキストの切り替えが不要である。マルチプロセッサ120の具体的な実施の形態を、以下に更に説明する。
[0046]メモリインタフェイスモジュール122は、マルチプロセッサ120及びスキャンアウトエンジン124に接続しており、グラフィックメモリとの全ての相互実行を管理する。メモリインタフェイスモジュール122は、システムバス106から受け取るフラグメント又はピクセルデータを、グラフィックメモリ116内の適切な記憶位置に、マルチプロセッサ120によって処理することなく書き込むための経路を有している。メモリインタフェイスモジュール122の特定の構成は、必要に応じて変更することができ、その詳細な説明は、本発明の理解に重要でないので省略する。
[0047]グラフィックメモリ116は、一般的な従来の構成をもつ一以上の集積回路メモリデバイスを用いて、実装することができるものであり、物理的又は論理的な区画、例えば、レンダリングバッファ126、ディスプレイバッファ127、レンダリングコマンドバッファ128、及び後処理(PP)コマンドバッファ129、を含んでいる。レンダリングバッファ126は、レンダリングオブジェクト132又はCPU102での種々のプロセスの実行によって生成された一以上の画像用のフラグメントデータを格納する。レンダリングバッファ126は、好適には、同じプロセスによって生成された画像のシーケンスを含む複数の異なる画像をバッファリングし、第1の画像用のフラグメントデータが後処理されているときに、後の画像用のフラグメントデータが、レンダリングバッファ126の異なる領域に書き込まれるようにする。
[0048]ディスプレイバッファ127は、後処理オブジェクト134によってレンダリングバッファ126のフラグメントデータから生成されたピクセルデータを格納する。ディスプレイバッファ127は、好適には、少なくとも二つの完全なフレームのピクセルデータを格納し、一つのフレーム用のピクセルデータが「フロント」バッファからスキャンアウトされ、一方、次のフレーム用のピクセルデータが「バック」バッファに書き込まれるようにする。
[0049]レンダリングコマンドバッファ128及びPPコマンドバッファ129は、マルチプロセッサ120による実行のためにシステムバス106を介して受け取られるコマンドをキューイングするために使用される。以下に説明するように、レンダリングコマンドバッファ128内のコマンドは、レンダリングオブジェクト132によって実行され、一方、PPコマンドバッファ129内のコマンドは、後処理オブジェクト134によって実行される。
[0050]グラフィックメモリ116の他の部分は、GPU114によって要求されるデータ(例えば、デキスチャデータ、カラールックアップテーブル等)、GPU114用の実行可能プログラムコード等を格納するために使用することができる。
[0051]スキャンアウトエンジン124は、単一のチップにマルチプロセッサ120と共に集積することができるものであり、ディスプレイバッファ127からピクセルデータを読み取り、当該データを表示すべきディスプレイデバイス110に伝送する。ある実施の形態では、スキャンアウトエンジン124は、等時間間隔で動作して、フレームのピクセルデータを所定のスクリーンリフレッシュレートで、GPU114又はシステム100の別のところで発生し得る任意の他のアクティビティとは無関係に、スキャンアウトする。幾つかの実施の形態では、所定のリフレッシュレートは、ユーザが選択可能なパラメータであってもよく、スキャンアウトの順序は、ディスプレイフォーマットに適するように変更することができる(例えば、インタレース又はプログレッシブスキャン)。スキャンアウトエンジン124は、データのフォーマット、デジタル−アナログ変換用の回路、及び、ピクセルデータをディスプレイデバイス用の適切なフォーマットに変換する他の信号処理回路を含むことがある。スキャンアウトエンジン124の特定の構成は、必要に応じて変更してもよい。
[0052]システム100の動作時に、CPU102は、オペレーティングシステムプログラム、アプリケーションプログラム、及び、グラフィック処理サブシステム112用の一以上のドライバプログラムといった種々のプログラムを実行する。ドライバプログラムは、従来のアプリケーションプログラムインタフェイス(API)、例えば、OpenGL、Microsoft DirectX、又はD3Dを実装することができ、当該APIは、アプリケーション及びオペレーティングシステムプログラムが、グラフィック処理サブシステム112の種々の関数を、当該技術分野で知られているように、呼び出すことを可能とする。
[0053]グラフィック処理サブシステム112のオペレーションは、好適には、システム100の他のオペレーションとは非同期である。例えば、幾つかの実施の形態では、レンダリングコマンドバッファ128及びPPコマンドバッファ129は、GPU114による実行のためにシステムバス106を介して受け取ったコマンドをキューイングする。より詳細には、CPU102上で実行しているグラフィックドライバは、レンダリングコマンドストリーム又はプログラムを、レンダリングコマンドバッファ128に書き込み、後処理コマンドストリーム又はプログラムをPPコマンドバッファ129に書き込む。コマンドストリームは、GPU114がそれらを処理する準備ができるまでの間、それぞれに対応のコマンドバッファ128及び129に保持される。
[0054]レンダリングコマンドバッファ128は、好適には、ファーストインファーストアウトバッファ(FIFO)として実装され、CPU102によって(より詳細には、CPU102上で実行するグラフィックドライバによって)書き込まれ、GPU114によって(より詳細には、マルチプロセッサ120のレンダリングオブジェクト132によって)読み取られる。読み取り及び書き込みは、非同期に発生することができる。ある実施の形態では、グラフィックドライバは、周期的に、新たなコマンド及びデータを、「プット」ポインタによって決定される記憶位置においてレンダリングコマンドバッファ128に書き込み、このポインタをグラフィックドライバが各書き込みの後にインクリメントする。非同期に、レンダリングオブジェクト132は、以前にレンダリングコマンドバッファ128に格納されたコマンド及びデータを、順次に読み取って処理する。レンダリングオブジェクト132は、「ゲット」ポインタを保持して、コマンドバッファ128における現在の読み取り位置を特定し、このゲットポインタは、各読み取りの後にインクリメントされる。グラフィックドライバがレンダリングオブジェクト132に対して十分に先行している場合、GPU114は、CPU102を待つアイドルタイムを招くことなく、画像をレンダリングすることができる。幾つかの実施の形態では、レンダリングコマンドバッファ128のサイズとシーンの複雑さとに応じて、グラフィックドライバは、幾つかの画像用のデータ及びコマンドを、レンダリングオブジェクト132によって現在レンダリングされている画像に先行して書き込んでもよい。レンダリングコマンドバッファ128は、固定サイズ(例えば、5メガバイト)であってもよく、ラップアラウンド式(例えば、最後のロケーションに書き込んだ後に、グラフィックドライバが、「プット」ポインタを最初のロケーションにリセットし、同様に、最後のロケーションからの読み取り後に、レンダリングオブジェクト132が、「ゲット」ポインタを最初のロケーションにリセットすることができる)で書き込まれ、また、読み取られてもよい。
[0055]PPコマンドバッファ129は、好適には、循環キューとして実装される。各フレーム用の後処理コマンドの新たなストリームを書き込むのではなく、グラフィックドライバプログラムは、後処理ストリーム又はプログラムを、PPコマンドバッファ129に一度書き込み、後処理プログラムが変更される場合にのみ、新たなストリーム又はプログラムを書き込む。マルチプロセッサ120の後処理オブジェクトは、以下に説明するように各フレームに対してストリームを実行し、実行されたコマンドは、PPコマンドバッファ129内に、次の再実行のために留まる。PPコマンドバッファ129は、固定サイズ(例えば、1メガバイト)であってもよく、コマンドストリームは、次のフレームの処理のためにコマンドストリームの最初に制御を戻す無条件「ジャンプ」コマンドで終了してもよい。
[0056]ある実施の形態では、マルチプロセッサ120によるレンダリングオブジェクト132のオペレーションは、他の如何なるオペレーションとも非同期であり、一方、後処理オブジェクト134のオペレーションは、スキャンアウトエンジン124のオペレーションと同期されており、後処理がディスプレイ周期で発生するようになっている。例えば、マルチプロセッサ120は、周期的に(例えば、フレームのスキャンアウト毎に1回)、レンダリングオブジェクト132を一時的に停止し、後処理オブジェクト134を、当該後処理オブジェクトがフレームのスクリーンピクセルデータを生成してディスプレイバッファ127に当該データを書き込むことを可能とするのに十分長い時間、動作させる。好適なオペレーションを提供する制御メカニズムの例を以下に説明する。
[0057]本明細書に説明するシステムは、例示的なものであり、変更及び改良が可能であることが理解されよう。GPUは、好適な技術を用いて、例えば、一以上の集積回路デバイスとして実装されてもよい。GPUは、一以上のこのようなプロセッサを有する拡張カード上に搭載されていてもよく、システムのマザーボードに直接搭載されていてもよく、システムのチップセットのコンポーネント(例えば、PCシステムアーキテクチャに一般的に使用されるコンポーネントのノースブリッジチップ)に集積されていてもよい。グラフィック処理サブシステムは、任意の量の専用のグラフィックメモリ(幾つかの実装形態では、専用グラフィックメモリは不要である)を有することができ、システムメモリと専用グラフィックメモリを任意の組み合わせで使用することができる。スキャンアウト回路は、GPUと共に集積されていてもよく、又は、別個のチップ上に提供されていてもよく、また、例えば、一以上のASIC、プログラム可能なプロセッサエレメント、他の集積回路技術、又は、これらの任意の組み合わせを用いて実装されてもよい。本発明を実施するGPUは、種々のデバイスに組み込むことができ、例えば、汎用コンピュータシステム、ビデオゲームコンソール及び他の専用コンピュータシステム、DVDプレーヤ、モバイルフォン又はパーソナルデジタルアシスタントのようなハンドヘルドデバイス、等に組み込むことができる。
<データフローの概略>
[0058]図2は、グラフィック処理サブシステム112用のデータフロー図であり、更に、マルチプロセッサ120、レンダリングオブジェクト132、後処理オブジェクト134、及びスキャンアウトエンジン124の間の関係を示している。データの伝播は実践の矢印で示されており、コマンドの伝播は中空の矢印で示されており、制御信号の伝播は点線の矢印で示されている。
[0059]図2では、レンダリングバッファ126が、三つの画像バッファ226(本明細書では個別にA、B、Cとして参照する)、及び、セマフォストレージ領域206を有するように示されている。画像バッファ226は、一つの画像用のフラグメントデータの全てを格納するに足る大きさを各々有しており、レンダリングオブジェクト132は、好適には、ある画像用のフラグメントデータをバッファAに書き込み、次の画像用のフラグメントデータの全てをバッファBに書き込むといったように動作する。任意の数の画像バッファ226を提供してもよいことが理解されよう。セマフォ領域206は、画像バッファ226へのアクセスを、以下に説明するように制御するために使用される。
[0060]ディスプレイバッファ127は、二つのフレームバッファ227(本明細書では個別にX及びYとして参照する)、及び、バッファ選択(BSEL)ストレージアリア208を有するように示されている。フレームバッファ227は各々、完全なフレーム用のピクセルデータの全てを格納するに足る大きさを有しており、後処理オブジェクト134は、あるフレームをバッファXに書き込み、次のフレームをバッファYに書き込むといったように動作する。BSELストレージ領域208は、フレームバッファ227のうちのどのバッファがスキャンアウトエンジン124によって読み取られるべきかを一意に特定する値を格納するに足る大きさを有している。ある実施の形態では、BSELストレージ領域208は、フレームバッファX(ビットがゼロの場合に)、又はフレームバッファY(ビットが1の場合)を特定する単一のビットを格納する。別の実施の形態では、BSELストレージ領域208は、フレームバッファX又はフレームバッファYのうち一方のためのグラフィックメモリ116における開始アドレスの識別子(例えば、オフセット値)を格納する。他の識別子も用いることが可能である。
[0061]この実施の形態では、レンダリングオブジェクト132が幾何データを、例えば、システムバス106を介して受け取る。受け取られた幾何データは、グラフィックメモリ116、マルチプロセッサ120のオンチップデータキャッシュ(図示せず)、又は他の場所に格納される。レンダリングオブジェクト132は、幾何データを、レンダリングコマンドバッファ128によって提供されるコマンドに基づいて処理して、画像用のフラグメントデータを生成する。フラグメントデータは、画像バッファ226の一つ、例えば、バッファAに書き込まれる。
[0062]後処理オブジェクト134は、画像バッファ226内のフラグメントデータを、PPコマンドバッファ129から受け取るコマンドに基づいて処理して、フレーム用のピクセルデータを生成する。ピクセルデータは、フレームバッファ227の一つ、例えば、バッファXに書き込まれる。この実施の形態では、後処理オブジェクト134は、レンダリングオブジェクト132によって現在書き込まれているものを除いて、任意の画像バッファ226から、例えば、レンダリングオブジェクト132がバッファAに書き込んでいる場合には、バッファB及び/又はCから、フラグメントデータを取得する。
[0063]スキャンアウトエンジン124は、フレームバッファ227の一つからピクセルデータを読み取り、当該データをディスプレイデバイスに提供する。この実施の形態では、スキャンアウトエンジン124は、BSELストレージ領域208において特定されているフレームバッファ227から読み取りを行ない、好適には、このフレームバッファは、後処理オブジェクト134によって書き込まれているフレームバッファと同じでなく、例えば、後処理オブジェクト134がフレームバッファXに書き込んでいる場合には、スキャンアウトエンジン124は、バッファYから読み取りを行なう。スキャンアウトエンジン124は、ピクセルデータを変更せずに渡してもよく、或いは、デジタル−アナログ変換、及び/又は、他の信号処理アルゴリズムを適用して、ディスプレイデバイスへの供給のためにデータを適切にフォーマットしてもよい。幾つかの実施の形態では、デジタル−アナログ変換以外の全てのフレーム毎の処理が、後処理オブジェクト134によって、ピクセルデータをフレームバッファ227に書き込む前に実行されるが、他の実施の形態では、スキャンアウトエンジン124がある処理を実行してもよい。
[0064]スキャンアウトエンジン124は、好適には、各フレーム用のピクセルの供給をディスプレイデバイスの要件に同調しており、スクリーンピクセルの行の終端(水平帰線として当該分野で知られたもの)や、スクリーンの終端(垂直帰線として当該分野で知られたもの)といったイベントを検出することができる。従来の技術を使用して、スキャンアウトエンジン124を実装してもよい。
[0065]代替の実施の形態では、スキャンアウトエンジン124は、交互のフレームに対してバッファX及びYを読み取り、後処理オブジェクト134は、バッファY及びXに、交互のフレームに対して書き込みを行なう。この実施の形態では、BSELストレージ領域208を用いて、セマフォを格納することができ、当該セマフォは、初期化時にのみ、スキャンアウトエンジン124及び後処理オブジェクト134のオペレーションを同期させるために使用される。例えば、スキャンアウトすべき第1のバッファ(例えば、バッファX)用のセマフォは、BSELストレージ領域208に格納されてもよい。システムのセットアップ時には、このセマフォは、例えば単一のビットであり、スキャンアウトエンジン124がバッファXの読み取ることを防止するロック(即ち、獲得)状態にセットされる。後処理オブジェクト134が第1のフレームをバッファXに書き込んだ後に、当該後処理オブジェクト134は、セマフォを解放し、スキャンアウトエンジン124によるバッファXからの読み取りオペレーションを可能にする。その後、セマフォは、解放状態に留まることができ、適切な同期が維持される。
<同期技術>
[0066]スキャンアウトエンジン124及び後処理オブジェクト134のオペレーションは、好適には、フレーム毎に同期される。このことは、スキャンアウトエンジン124によってディスプレイバッファ127から読み取られる各フレームについて、後処理オブジェクト134が、一つの新規のフレームをディスプレイバッファ127に書き込むことを意味する。例えば、後処理オブジェクト134は、好適には、一つのフレームをフレームバッファXに書き込み、一方、スキャンアウトエンジン124は、一つのフレームをフレームバッファYから読み取る。スキャンアウトエンジン124がフレームバッファYの終端に至ったときに、スキャンアウトエンジン124は、フレームバッファXの読み取りに切り替え、一方、後処理オブジェクト134は、一つのフレームをフレームバッファYに書き込む。
[0067]ある実施の形態では、この同期は、トリガ信号を用いて取り扱われる。このトリガ信号は、「トリガ」経路246上でスキャンアウトエンジン124にアサートされる。トリガ信号は、フレーム毎に一回、生成され、好ましくは、フレーム終端イベントと固定された時間関係で生成される。フレーム終端イベントは、垂直帰線(又はvsync)イベントのようなフレームの終端又はその近くにあるスキャンアウトエンジン124に、最後(又は最後からN番目)のピクセルを読み取っていること等を伝える任意のイベントであることができる。トリガ信号のアサートに応答して、マルチプロセッサ120は、後処理オブジェクト134を動作させ、一つの新規のフレームのピクセルデータを生成する。この新たなフレームが生成された後、マルチプロセッサ120は、後処理オブジェクト134を、次のトリガ信号のアサートまでの間、動作停止させる。
[0068]バッファの同期は、好適には、後処理オブジェクト134がフレームバッファ227に書き込むことを、当該バッファがスキャンアウトされている間、防止するよう提供される。ある実施の形態では、後処理オブジェクト134が新たなフレームを生成し終える度に、当該後処理オブジェクト134は、当該新たなフレーム用のフレームバッファ227(例えば、X又はY)の識別子をBSELストレージ領域208に、「BSEL書き込み」経路242によって示すように、書き込む。各フレームの開始時には、スキャンアウトエンジン124は、どのフレームバッファ227を読み取るべきかを、「BSEL読み取り」経路244によって示すように、BSELストレージ領域208をアクセスすることによって決定する。BSELストレージ領域208がフレーム毎に一度のみ読み取られ、フレーム毎に一度だけ書き込まれる限り、これらオペレーションのタイミングを、競合状態を避けるよう調整することができる。例えば、スキャンアウトエンジン124は、BSELストレージ領域208を、トリガ信号を生成する直前で、後処理オブジェクト134が次のフレームを生成してBSELの値を更新し終えた後に、アクセスすることができる。
[0069]レンダリングオブジェクト132及び後処理オブジェクト134のオペレーションは、好適には、互いに同期しない。これは、後処理オブジェクト134が、ディスプレイの周期でフレームを生成する一方で、レンダリングオブジェクト132がレンダリングの周期で画像を生成し、当該レンダリングの周期がディスプレイの周期と異なってもよい(ディスプレイの周期より遅くてもよい)からである。幾つかの実施の形態では、バッファ同期技術を用いて、後処理オブジェクト134は、ある画像(又は画像のグループ)を用いてフレームの一部を生成し、異なる画像(又は画像のグループ)を用いて同じフレームの別の一部を生成する状況を避け、同様に、後処理エンジン132がバッファ226から読み取りを行なっている間に、レンダリングオブジェクト132が画像バッファ226に書き込む状況を防止する。特に、画像バッファ226へのアクセスを制御して、後処理オブジェクト143が、レンダリングオブジェクト132によって現在書き込まれている画像バッファ226からの読み取りを行なわないようにし、また、レンダリングオブジェクト132が、後処理オブジェクト134によって依然として必要とされている画像バッファ226を上書きしないようにすることができる。バッファの同期メカニズムは、更に、後処理オブジェクト134によって読み取るべき画像バッファの選択に関する変更が、後処理されているフレーム間で生じることを定めてもよい。これによって、ティアリング(裂け目)、又は、表示されるフレームの異なる部分における他の視覚的な不一致を避けることができる。
[0070]図2は、制御信号経路232、234、236を介した画像バッファ226用の非対称セマフォ及びバッファインデックスに基づくバッファ同期技術を示している。レンダリングバッファ126のセマフォ領域206は、レンダリングオブジェクト132による画像バッファ226へのアクセスを制御するためのセマフォ207(SA、SB、SC)を格納し、後処理オブジェクト134が当該バッファ226に存在する古いフラグメントデータを終了するまでの間、新たなフラグメントデータが画像バッファに書き込まれないようにする。各セマフォ207は、好適には、「獲得」状態及び「解放」状態を有しており、以下に説明するようにアクセスを制御するために用いられる。一般的な従来のセマフォデータの構造及びフォーマットを、セマフォ207を実装するために採用することが可能である。
[0071]レンダリングオブジェクト132が新たな画像用のフラグメントデータを書き込み始める前に、レンダリングオブジェクト132は、フラグメントデータが書き込まれるべき画像バッファ226に対応するセマフォ207を、「獲得」経路232によって示すように、獲得する試みを行なう。レンダリングオブジェクト132は、画像バッファ用のセマフォを、後処理オブジェクト134が当該セマフォを解放した後にのみ獲得することができ、更に以下に説明するように、セマフォの解放は、後処理オブジェクト134が関連の画像バッファをもはや必要としなくなった時に、発生する。セマフォ207が即座に得られない場合には、レンダリングオブジェクト132は、そのコマンド処理を停止して、セマフォを獲得できる時まで待機し、その後にレンダリングを進める。後処理オブジェクト134がディスプレイの周期(スキャンアウトフレームにつき一回)でバッファを解放する場合、レンダリングオブジェクト132は、通常は、待機する必要はない。他の実施の形態では、レンダリングオブジェクト132の実行の遅延は、ディスプレイ周期より速いレートで新たな画像をレンダリングすることが要求されない限り、許容し得る。
[0072]レンダリングオブジェクト132が画像用のフラグメントデータを画像バッファ226の一つに書き込み終えると、当該レンダリングオブジェクト132は、当該バッファ用のセマフォ207を、「解放」経路234によって示すように、解放する。セマフォ207(例えば、セマフォSA)の解放は、当該セマフォ207が後処理オブジェクト134によって以下に説明するように解放されるまでの間、レンダリングオブジェクト132が関連のバッファ226(例えば、バッファA)へアクセスすることを防止する。セマフォ207の解放後(又はそれと同時に)、レンダリングオブジェクト132は、PPコマンドバッファ129に新たなインデックス値を、「インデックス書き込み」経路236によって示すように、書き込む。インデックス値は、完了したばかりの画像バッファ226を特定し、後処理オブジェクト134に、この画像バッファ226が現在、処理に利用可能であることを示す。
[0073]各フレームの開始時に、後処理オブジェクト134は、インデックス値をPPコマンドバッファ129から「インデックス読み取り」経路238によって示すように、読み取る。ある実施の形態では、インデックスは、PPコマンドバッファ129内のコマンドの一つの引数として読み取られる。インデックス値に基づいて、後処理オブジェクト134は、当該後処理オブジェクト134がどの画像バッファ226を後処理用に必要としているかを決定し、必要でない任意の画像バッファ226用のセマフォを、「解放」経路240によって示すように解放する。そのセマフォ207が後処理オブジェクト134によって解放されている画像バッファ226は、レンダリングオブジェクト132に利用可能となる。
[0074]後処理オブジェクト134は、好適には、インデックス値が最後のフレームから変化していない場合には、待機又は停止しないことに留意されたい。幾つかの実施の形態では、後処理オブジェクト134は、同じ後処理を、インデックス値が変化しているか否かに拘らず、実行し、インデックス値が変化していない場合には、後処理オブジェクト134によって生成される新たなフレームは、前のフレームと同一である。他の実施の形態では、後処理オブジェクトのあるアクティビティ又は全てのアクティビティが、インデックスが変化しているか否かを条件とする。かかる実施の形態では、後処理オブジェクト134は、好適には、前のフレームに使用されたインデックス値を記憶し、それをPPコマンドバッファ129におけるインデックスと比較して、インデックスが変化しているか否かを決定する。インデックスが変化していない場合には、後処理オブジェクト134は、何も行なわないか、又は、異なるセットの命令を実行する。
[0075]本明細書での同期メカニズムは、セマフォ207が後処理オブジェクト134のオペレーションではなくレンダリングオブジェクト132のオペレーションを留めさせる点で、「非対称」である。この構成によって、レンダリングオブジェクト132が新しい画像を生成するレートとは無関係に、新たなフレームをディスプレイの周期で生成することが可能となる。デッドロックを避けるために、画像バッファ226の数は、好適には、後処理オブジェクト134によって使用されていない少なくとも一つの画像バッファ226が常に存在するに十分多くなるよう選択される。例えば、後処理オブジェクト134が、M個の最新の画像を、実行すべき特定のオペレーション用に必要とする場合には、少なくともM+1個の画像バッファが提供される。追加の画像バッファを提供することによって、レンダリングエンジンが、スキャンアウトエンジンに更に先行して動作することが可能になる。追加の画像バッファを用い、レンダリングオブジェクト132においてトリプルバッファのレンダリングを、必要に応じて実装することもできる。
[0076]本明細書に説明した特定の同期技術は、例示的なものであり、他の技術を使用してもよいことを理解すべきである。幾つかの実施の形態では、バッファの同期を完全に省略し、表示されるフレームにおけるティアリングを許容することもある。
<コマンドストリーム>
[0077]幾つかの実施の形態では、レンダリングコマンドストリーム及び後処理コマンドストリームが別に管理される。より具体的には、上述したように、レンダリングコマンドバッファ128が、好適には、当該レンダリングコマンドバッファ128内のレンダリングコマンドが、レンダリングオブジェクト132によって一度実行され、新たなコマンドのセットが、レンダリングすべき各画像用にレンダリングコマンドバッファ128に書き込まれるように、実装される。一方、後処理オペレーションの所望のセットは、通常、あるフレームから次ぎのフレームへと一貫しており、同一セットの後処理コマンドを各フレームについて書き込むことは非効率である。PPコマンドバッファ129が無限ループで動作している場合には、新しい後処理コマンドをPPコマンドバッファ129に書き込むことは更に複雑である。後処理オブジェクト134の実行はグラフィックドライバとは非同期であり、ドライバは、通常、後処理オブジェクト134が任意の所与の時間で実行されるか否か、又は、ループ内のどのコマンドが実行されるのかを知らない。
[0078]したがって、PPコマンドバッファ129は、好適には、グラフィックドライバが、後処理コマンドの全プログラムをコマンドストリームとしてPPコマンドバッファ129に書き込むことができるように、実装される。このプログラムは、同じプログラムを全フレームに対して再実行できるよう、実行後もPPコマンドバッファ129内に維持される。したがって、新しい後処理コマンドは、後処理が変更されるべき場合にのみ、PPコマンドバッファ129に書き込まれる必要がある。
[0079]レンダリングコマンドバッファ128及びPPコマンドバッファ129用のコマンドストリームの構造の例を、ここで、説明する。
[0080]図3Aは、本発明の実施の形態に係るレンダリングコマンドバッファ128内にバッファリングすることができるレンダリングコマンドストリーム300の一部を概略的に示す図である。各新規の画像について、コマンドシーケンスは、「ACQ」コマンド306及び308で始まり、当該コマンドは、レンダリングオブジェクト132に書き込むべき次の画像バッファ226用のセマフォ207を処理前に獲得するよう命令する(例えば、ACQコマンド306の場合にバッファA用のセマフォSA、ACQコマンド208の場合にバッファB用のセマフォSB)。上述したように、セマフォ207が獲得できない場合には、レンダリングオブジェクト132は、それを獲得できるまでの間、待機する。
[0081]「RCMD」コマンド310及び312は各々、画像をレンダリングするためのコマンド及びデータの完全なセットである。実際には、任意の数のレンダリングコマンドが、画像毎に含まれることがある。例えば、RCMDコマンド310及び312は、頂点(又は幾何)処理コマンド、ラスタライズコマンド、フラグメントシェーディングコマンド等の任意の組み合わせを含むことがある。RCMDコマンド310及び312は、種々のレンダリングコマンドに関連づけられた適切なデータ(例えば、変換マトリックス、頂点のピリミティブへのグルーピング、等)を含み得る。ある実施の形態では、レンダリングコマンドは、マルチプロセッサ120による実行に適したマイクロ命令として供給されることがあり、他の実施の形態では、実行前のホスト120によるコマンドのデコードが必要となることがある。幾つかの実施の形態では、レンダリングコマンドのシーケンスがまた、ループ、if−thenステートメント等といったフロー制御コマンドを含むこともある。一般的に、RCMDコマンド310及び312は、本質的に従来からのものであり、その詳細な説明は本発明の理解に重要ではないので省略する。
[0082]各画像の最後には、「FLIP」コマンド314及び316があり、当該コマンドは、現在の画像のレンダリングが完了したことを示す。FLIPコマンドに応答して、レンダリングオブジェクト132は、好適には、その書き込みの対象を現在のレンダリングバッファから次ぎのレンダリングバッファに切り替え(例えば、FLIPコマンド314の場合にはバッファAからバッファBに切り替え)、また、直前に完了したレンダリングバッファ用のセマフォ207を解放する(例えば、FLIPコマンド314の場合には、セマフォSAを解放する)。セマフォ207の解放後、レンダリングオブジェクト132は、PPコマンドバッファ129内のインデックス値を、直前に完了したレンダリングバッファを特定する新たな値(例えば、FLIPコマンド314の場合にはバッファA)で更新する。加えて、FLIPコマンドの処理には、カウンタ、又はレンダリングオブジェクト132によって維持される他の変数をリセットすることもある。他の従来の画像終了(end-of-image)処理も、FLIPコマンドに応答して実行される。
[0083]図3Bは、本発明の実施の形態に係るPPコマンドバッファ129に格納される後処理プログラム(又はストリーム)320を概略的に示す図である。この実施の形態では、プログラム320は、無限ループを実装しており、当該無限ループは、その引数が、上述したようにレンダリングオブジェクト132によって書き込まれ、また、上書きされるインデックスであるインデックスコマンド322、一以上の後処理(「PCMD」)コマンド326及び328、一以上のロケーション(「LOC」)コマンド330及び332、BSEL更新(「BUPD」)コマンド334、並びに、ループの開始に戻るための最終無条件ジャンプ(「JMPB」)コマンド336を含む。
[0084]インデックスコマンド322は、最初に実行されるものであり、現在のインデックス値を後処理オブジェクト134に提供する。幾つかの実施の形態では、後処理オブジェクト134が、現在のインデックス値を、後処理オブジェクト134によってアクセス可能な状態レジスタ(図2又は図3Bには図示せず)に記憶されている直前に使用されたインデックス値と比較し、更なる処理が、この比較の結果に基づいて制御される。例えば、インデックス値が変更されていない例では、次の表示フレームは、現在の表示フレームと同じとなる。その場合には、後処理オブジェクト134は、新たなフレームを生成せず、BSEL値を変更せずに記憶位置208(図2)に残して、スキャンアウトエンジン124が、同じフレームバッファ227を、インデックス値が変化するまでの間、複数回連続して単に読み取るようにする。他の実施の形態では、後処理オブジェクト134が、インデックス値が変更されていない場合でも、LCDオーバードライブ値の調整、又は、フェイドイン、フェイドアウト、又はディゾルブといった遷移効果を経て進行するようなあるアクションを行なうことが望ましいことがある。他の実施の形態では、後処理オブジェクト134は、インデックス値が変更されているか否かに拘らず、同じコマンドを実行する。初期化時には、インデックス値は、ナル(null)値に設定され、画像バッファ226に画像がレンダリングされていないことを示し、後処理オブジェクト134が、好適には、ナル値を検出して、適切なアクションを行なう(例えば、フレームバッファ227の全ピクセルにブランクスクリーン値を書き込む)。
[0085]PCMDコマンド326及び328は、実行すべき種々の後処理オペレーション用の命令を表す。実際には、任意の数のPCMDコマンドがコンテンツ320に含まれることがある。上述したRCMD(レンダリング)コマンドと同様に、PCMDコマンドは、マルチプロセッサ120による直接の実行に適した形の命令で供給されてもよく、他の実施の形態では、実行前にホスト120によるコマンドのデコードが要求されてもよい。また、RCMDコマンドと同様に、PCMDコマンドは、フロー制御コマンドを必要に応じて含んでいてもよい(例えば、幾つかのコマンドは、インデックスエントリ324内のインデックス値が変化しているか否かを条件としてもよい)。
[0086]更に以下に説明するように、幾つかの実施の形態では、後処理オブジェクト134は、レンダリングオブジェクト132と同じ処理エンジンを用いて実行され、その結果、RCMDコマンド310及び312(図3A)として与えることができるコマンドのシーケンスは何れも、PCMDコマンド326及び328として与えることが可能である。加えて、後処理オペレーションに特有の専用のPCMDコマンドが、定義されていてもよい。原則として、(上述した一以上の例を含む)後処理オペレーションの任意の組み合わせを、PCDMコマンド326及び328の適切なシーケンスを介して実装することができる。幾つかの実施の形態では、PCMDコマンド326及び328は、LCDオーバードライブ又はカーソルオーバーレイといったフレーム毎に発生する処理用にのみ使用される。しかしながら、広範な後処理オペレーションをPCMDコマンド326及び328を介してプログラムできることを理解されたい。
[0087]LCDコマンド330及び332は、一以上の画像バッファ226を特定のPCMDコマンド又はPCMDコマンドのグループ用のデータソースとして特定するために、インデックスエントリ324と共に使用される。インデックスエントリ324は、レンダリングオブジェクト132によって上述したFLIPコマンドに応答して書き換えられるものであり、直前に完了した画像バッファ226を特定する。LOCコマンド330及び332は、直前に完了した画像バッファ226、又は、以前に完了した画像バッファ226を、必要に応じて参照することができる。ある実施の形態では、LOCコマンド330及び332は、直前に完了した画像バッファと相対的に画像バッファ226を特定する。例えば、N個の画像バッファ226が存在しており、これら画像にインデックス値0,1,...,N−1が割り当てられており、インデックスエントリ324内の値をRによって示すものとする。LOCコマンドは、LOC=Rの形式を採って直前に完了した画像バッファを特定し、又は、LOC=(R−1)modNの形式を採って次ぎに直前のものを特定する等できる。相対的な参照を使用する場合には、インデックスエントリが更新されるときにLOCコマンド330及び332を変更する必要はない。幾つかの実施の形態では、全てのPCMDコマンドに適用可能な一セットのLOCコマンド、又は一つのLOCコマンドが存在してもよい。
[0088]BUPDコマンド334及びJMPBコマンド336は、後処理ループを完了する。BUPDコマンド334は、後処理オブジェクト134に、新たに書き込まれたフレームバッファ227の識別子を、BSELストレージロケーション208に書き込むよう命令し、スキャンアウトエンジン124が、次のフレームとして、それを読み込むようにする。JMPBコマンド336は、破線の矢印338によって示すように、制御をプログラム320の始めに戻す。以下に説明するように、JMPBコマンド336は、後処理プログラム用の完了信号(本明細書では、「フレーム完了イベント」とも称する信号)としても働くことができる。即ち、後処理オブジェクト134がJMPBコマンド336に遭遇すると、後処理オブジェクト134は、アイドル状態に入って、次のトリガイベントを待つ。例えば、以下に説明するように、後処理オブジェクト134は、JMPBコマンド336に至った際に、コンテキストを切り替えられる(スイッチアウトされる)ことがある。
[0089]幾つかの実施の形態では、PCMDコマンド326及び328が、関連の状態パラメータを有している。例えば、倍率パラメータは、拡大又は縮小を実装するPCMDコマンドに関連付けられ、或いは、オーバーレイサイズ又は位置パラメータは、合成処理を実装するPCMDコマンドに関連づけられる。これらパラメータは、後処理コマンドのストリームに含められてもよく、或いは、後処理オブジェクトがアクセス可能な異なる記憶位置(例えば、PPコマンドバッファ内のパラメータセクション、別個のバッファ、又は、実行コア内のパラメータレジスタ)に書き込まれてもよい。パラメータの更新は、後処理コマンドストリームを再書き込みすること、後処理コマンドストリームを選択的に変更すること、或いは、バッファ又はレジスタの内容を変更することによって、処理することができる。コマンド及びパラメータの変更について、更に、以下に説明する。
[0090]本明細書に説明するプログラムストリームは、例示的なものであり、変更及び改良が可能であることを理解されたい。任意の適切なコマンドセットを用いて、RCMD及びPCMDコマンドを実施してもよい。JMPBコマンドではなく、他の条件をフレーム完了イベントとして用いて、後処理プログラムの終了を示してもよい。例えば、PPコマンドバッファが、「put」ポインタ及び「get」ポインタ(図1におけるレンダリングコマンドバッファ128を参照して上述したポインタに類似するもの)を用いて実装されている場合には、「put」ポインタは、プログラムにおける最後のコマンドの位置を参照する。「get」ポインタが「put」ポインタと同じ位置を参照する場合には、最後のコマンドに到達している。このことの発生を、後処理オブジェクトがフレームを完了したことを示すフレーム完了イベントとして用いることも可能である。他の実施の形態では、フレーム用の後処理の完了に一意に関連づけられた任意のイベント又は条件を、フレーム完了イベントとして使用することができる。
<マルチプロセッサ>
[0091]図4は、本発明の実施の形態に係るマルチプロセッサ120の簡易化したブロック図である。マルチプロセッサ120は、調停ユニット402及び実行コア404備えており、実行コア404は、コンテキストマネージャ406を有している。
[0092]実行コア404は、略従来型のデザインを有しており、任意の所望のマイクロアーキテクチャ及び/又は命令セットを実施する。幾つかの実施の形態では、実行コア404は、種々のオペレーション(加算、乗算、ベクトル演算、算術機能、フィルタリングアルゴリズム、メモリアクセス、等)を実行するための複数の機能ユニット405を、関連の制御ロジック407と共に、備えている。この制御ロジック407は、到来するコマンドを機能ユニット用の実行可能な命令へとデコードし、各命令用に必要なオペランドを特定して収集し、機能ユニットに命令を発行し、結果を他の機能ユニット又はレジスタファイル(明示せず)に転送するためのものである。実行コア404は、ハードウェアの状態のアスペクトを維持する種々の他のレジスタを備えていてもよい。実行コア404はまた、(図1に示すようにグラフィックメモリ116内に存在し得る)レンダリングバッファ126及びディスプレイバッファ127にアクセスするように構成されている。幾つかの実施の形態では、複数の並列実行コア404が、各コア404がシーン、画像、又はフレームの異なる部分について動作するように、提供されてもよい。実行コア404の特定のアーキテクチャは本発明に重要ではなく、特定の要素も同様である。
[0093]ある実施の形態では、実行コア404は、二つの独立の処理チャンネルをサポートしており、それらは、後処理オブジェクト134(図1)を実施する高優先度チャンネル(HPC)とレンダリングオブジェクト132を実施する通常優先度チャンネル(NPC)である。個別のアーキテクチャの状態(コンテキスト)は、各チャンネルに対してコンテキストマネージャ406によって維持される。より詳細には、NPCコンテキストブロック408は、NPC用に格納されたアーキテクチャの状態を含んでおり、HPCコンテキストブロック410は、HPC用に格納されたアーキテクチャの状態を含んでいる。アーキテクチャの状態は、レジスタ又は他の適切なハードウェアに格納されてもよい。
[0094]コンテキストマネージャ406は、実行コア404の機能ユニット405及び制御ロジック407が、現在アクティブなチャンネル用の適切なアーキテクチャへアクセスすることを可能とし、その処理の間のあるポイントで切り替えられた(スイッチアウトされた)チャンネルが、スイッチバックされるときに同じポイントで再開することを可能とする。幾つかの実施の形態では、実行コア404は、アクティブなレジスタのセット(図4には図示せず)を有しており、コンテキストマネージャ406は、チャンネルの切り替え(例えば、HPCからNPCへのスイッチ)を、最初に「古い」チャンネル(例えば、HPC)のアーキテクチャの状態をアクティブなレジスタのセットから適切なコンテキストブロック(例えば、HPCコンテキストブロック410)にコピーし、次いで、「新しい」チャンネル(例えば、NPC)のアーキテクチャの状態を適切なコンテキストブロック(例えば、NPCコンテキストブロック408)からアクティブなレジスタのセットにコピーすることによって、実行する。他の実施の形態では、実行コア404は、NPCコンテキストブロック408又はHPCコンテキストブロック410の何れかにおける対応のレジスタに選択的にアクセスすることができ、コンテキストマネージャ406は、実行コア404をコンテキストに依存した方式で適切なレジスタに向ける。コンテキスト切り替えの特定の実装形態は、本発明にとって重要ではなく、ある実施の形態では、十分に高速(例えば、300マイクロ秒又はそれより高速)なコンテキストの切り替えを提供する任意の実装形態が使用される。
[0095]調停ユニット402は、どのチャンネルが任意の所与の時間においてアクティブとなるべきかを決定する。ある実施の形態では、調停ユニット402は、レンダリングコマンドバッファ128から候補コマンドを受け取るNPC入力412、及び、後処理コマンドバッファ129から候補コマンドを受け取るHPC入力414を有している。調停ユニット402はまた、(図2を参照して上述した)トリガ信号をスキャンアウトエンジンから受け取るトリガ入力416、及び、イベント信号を実行コア404から受け取るイベント入力418を有している。これら入力に基づいて、各サイクルの間に、調停ユニット402は、HPC又はNPCの何れかをアクティブチャンネルとして選択し、実行コア404に、選択したチャンネルを特定するコンテキスト信号を(経路422上で)送信し、選択したチャンネル用の候補コマンドを(経路422上で)送信する。選択されていない候補コマンドは、次のサイクルで再び入力に現れ、その時に、当該候補コマンドは、選択されることもあり、選択されないこともある。適切なタイミング及び制御回路(図4には図示せず)を使用して、実行コア404が当該コマンド用の正しいコンテキスを有するときに、選択されたコマンドが実行されるようにしてもよく、かかる回路は、略従来型の構成を有していてもよい。
[0096]図5は、調停ユニット402において実施することができる選択ロジックプロセス500のフロー図である。この実施の形態では、スキャンアウトエンジン124は、トリガ信号を経路424上に、各垂直帰線(又は別のフレームの終端)イベントと実質的に同期して生成する。後処理コマンドバッファ129は、無限ループ用のコマンドを、無条件JMPBコマンドと共に、図3Bに示すように含む。
[0097]初期化後(ステップ501)、調停ユニット402は、NPCに切り替える(スイッチインする)(ステップ502)。各サイクルにおいて、調停ユニット402は、トリガ信号のアサートをチェックする(ステップ504)。トリガ信号がアサートされていない限り、レンダリングコマンドバッファ128からのコマンドが、続けて選択される(ステップ506)。レンダリングコマンドバッファ128内のコマンドに従って、画像が、レンダリングされ、フラグメントデータがレンダリングバッファ126に書き込まれる。即ち、レンダリングオブジェクト132が動作する。HPCは、この時間においては、非アクティブである。
[0098]トリガ信号がステップ504において検出されると、調停ユニット402は、コンテキストをHPCに切り替え(ステップ508)、PPコマンドバッファ129からの選択コマンドを開始する(ステップ510)。調停ユニット402は、PPコマンドバッファ129からのコマンドを、無条件JMPBコマンドがステップ512において検出されるまでの間、選択し続ける。PPコマンドバッファ129内のコマンドに従って、後処理がレンダリングバッファ126内のフラグメントデータに対して実行され、得られたスクリーンピクセルデータがディスプレイバッファ127に書き込まれる。即ち、後処理オブジェクト134が動作する。フレームに対する後処理の完了は、JMPBコマンドによって、上述したように示される。このコマンドが検出されると(ステップ512)、当該コマンドは、調停ユニット402がNPCコンテキストに切り替えを行なった(スイッチインした)後に、コア404に転送されて(ステップ514)、ステップ502に戻る。幾つかの実施の形態では、JMPBコマンドは、調停ユニット402にのみ影響し、コア404には転送されない。その時点において、レンダリングオブジェクト132が再開する。
[0099]プロセス500は、ディスプレイフレームレート(例えば80Hz)に対応する時間間隔で、レンダリングを一時停止して、後処理が、デジスプレイ周期で成されるようにする。一般的に、この後処理のための周期的なレンダリングの一時停止は、後処理によって費やされる時間が新しい画像を所望の速度(例えば、30Hz)でレンダリングし得ない程に長くない限り、グラフィックサブシステムの全パフォーマンスに悪影響を及ぼさない。現代の実行コア及び典型的な後処理オーレーションのシーケンスに利用可能な処理パワーを考えれば、許容可能なパフォーマンスを維持することが可能である。
[0100]本明細書に説明したマルチプロセッサ及び調停ロジックは、例示的なものであり、変更及び改良が可能であることが理解されよう。「コンテキストの切り替え(コンテキストスイッチ)」は、あるストリームの命令から他のストリームの命令へ、第1のストリームの任意のポイントにおいて切り替えを行ない、次いで原則的に同じポイントにおいて第1のストリームへ戻ることができるプロセッサのオペレーションを説明するための一般的な用語として本明細書で使用されており、当該用語は如何なる特定のプロセッサアーキテクチャに限定されるものではない。従来のマルチスレッドアーキテクチャを含む如何なるマルチスレッドアーキテクチャも、採用することができ、如何なるメカニズムを用いて、一時的にアイドルのプロセス又はコンテキストの状態を保存してもよい。加えて、HPCは、当該HPCが新たなフレームをディスプレイ周期によって定まるスケジュールで確実に生成し終えることができる限り、NPCより絶対的な優先度を与えられる必要はない。また、本明細書に説明した例示の調停ロジックがイベント入力418を使用せず、異なる調停ロジックが当該入力を使用してもよいことに留意すべきである。例えば、後処理オブジェクト134が、入力経路418上にイベント信号を生成して、当該後処理オブジェクト134がフレームを終了していることを調停ユニット402に知らせることができる。
[0101]別の実施の形態では、レンダリングオブジェクト及び後処理オブジェクトを、個別のバッファ読み取り経路をもつ独立した処理エンジンを用いて実施してもよい。この実施の形態では、レンダリングオブジェクト及び後処理オブジェクトは並列に実行することができ、これらオブジェクト間のコンテキストの切り替えは必要ない。
<後処理プログラムの変更>
[0102]上述した実施の形態では、PPコマンドバッファ129は、一般的に、フレーム毎に更新されない。PPコマンドバッファ128は、例えば、図1のCPU102上で動作するグラフィックドライバによって、後処理オブジェクト134がアイドルとなっている任意の時間に、更新されてもよい。しかしながら、かかる更新は、如何なる特定の画像の表示とも同期されない。代わりに、PPコマンドバッファ129の更新は、一般的に、更新後に次のフレームに対して実施される。複数の更新が成される場合には、全ての更新が同じフレームに対して実施されることは保証されない。
[0103]他の実施の形態では、後処理オペレーションの変更を特定の画像に同期することが可能である。このオプションの特徴はまた、制御すべき複数の更新を同じフレームに対して実施することを可能にする。かかる同期は、例えば、複数のPPコマンドバッファ129を実装し、レンダリングオブジェクト132がPPコマンドバッファ129のコンテンツ、及び、選択が任意の所与の時間において読み取られるべきPPコマンドバッファ129の選択を制御することで、提供することができる。
[0104]図6は、複数のPPコマンドバッファ602(1)〜602(3)を実装する本発明の実施の形態に係るマルチプロセッサ600の簡易化したブロック図である。マルチプロセッサ600は、調停ユニット602、及び、コンテキストマネージャ608を有する実行コア606を備えている。これらコンポーネントは、上述した調停ユニット402、実行コア404、及びコンテキストマネージャ406に略類似するものであり、したがって、ホスト600は、後処理オブジェクト134を実施するHPC、及び、レンダリングオブジェクト132を実施するNPCを提供する。マルチプロセッサ600はまた、PPCコマンドバッファ602(1)〜602(3)の選択を制御する更なるロジックを備えている。
[0105]より詳細には、PPコマンドバッファ602(1)〜602(3)の各々は、候補後処理コマンドを選択回路(例えばマルチプレクサ)610に供給する。選択回路610は、当該候補のうちの一つを、ホスト600のPPインデックスレジスタ612に格納された「PPインデックス」値に応答して選択する。選択された候補は、HPC候補命令として調停ユニット604に提供される。調停ユニット604は、上述したHPC及びNPCの候補命令から選択を行なうことができる。
[0106]PPインデックスレジスタ612は、ホスト600へレンダリングコマンドバッファ614を介して供給されるレンダリングコマンドストリームに含めることができる特定のコマンドに応答して、NPCによって、書き込まれる。図7は、適切なコマンドを有するレンダリングコマンドストリーム700の一部を示す図である。ストリーム700では、ACQコマンド702、RCMDコマンド704、及び、FLIPコマンド710は、図3Aを参照して上述したコマンドに略類似するものである。PPコマンドバッファ選択(「SELPP」)コマンド706、及びPPコマンドバッファ書き込み(「WRPP」)コマンド708は、特定の画像に同期される後処理オペレーションの変更を実施する。
[0107]より詳細には、SELPPコマンドは、(NPCにおいて実施されている)レンダリングオブジェクト132に、コマンドバッファ602(1)〜602(3)のうちの書き込むべき一つのバッファを選択するよう、命令する。上述(図2)したセマフォ207に類似のセマフォメカニズム、又は他の制御メカニズムを使用して、レンダリングオブジェクトが後処理オブジェクト134によって未だ使用されているPPコマンドバッファ602を選択することを防止することができる。
[0108]WRPPコマンド708は、好適には、データを(図7には明示せず)、選択されたPPコマンドバッファ602に書き込むべき後処理プログラムの形態で伴う。このプログラムは、図3Bに示す形態を有することができ、また、必要に応じて異なる形態を有することができる。レンダリングオブジェクト132は、WRPPコマンド708を、関連のプログラムを選択されたPPコマンドバッファ602に、図6に示す「PPC書き込み」経路616を介して書き込むことによって、実行する。経路616は、プログラム情報をPPコマンドバッファ602(1)〜603(3)のうちの一つのみに選択的に導く適切な回路を有していてもよく、かかる回路は、従来の構成を有していてもよい。幾つかの実施の形態では、レンダリングオブジェクト132によって完了されたところの画像バッファを特定するインデックスのエントリが、WRPPコマンド708の実行の間に、PPコマンドバッファ602に書き込まれる。
[0109]その後、レンダリングオブジェクト132は、FLIPコマンド710を実行し、選択されたPPコマンドバッファ602の識別子をPPインデックスレジスタ612に、「PPI書き込み」経路618を介して書き込む。適切なインターロック(例えば、調停ユニット604によって制御されるラッチ又はトランスミッションゲート)を、経路618に提供して、PPインデックスレジスタ612の更新を、HPCがアクティブとなっている間に行なわれないようにしてもよい。例えば、レンダリングオブジェクト132によるPPインデックス書き込みオペレーションの実行を、PPインデックスレジスタ612が後処理オブジェクト134によって使用されている間は、引き延ばしてもよい。この実施の形態では、WRPPコマンドが、適切なインデックス値を選択されたPPコマンドバッファ602に書き込むことを含み、別個のインデックスの更新オペレーションが必要でないことに留意されたい。
[0110](HPCにおいて実施されている)後処理オブジェクト134は、どのPPコマンドバッファ602が、最後の反復で読み取られたか、また、「PPI読み取り」経路620を介したPPインデックスレジスタ612への読み取りアクセス権をもっていたかに関する履歴を保持する。従って、後処理オブジェクト134は、(PPインデックスレジスタ612によって特定される)現在のPPコマンドバッファ602と最後に読み取られたPPコマンドバッファ602が同じであるか否かを判定することができ、同じでない場合には、後処理オブジェクト134が、最後に読み取られたPPコマンドバッファ602用のセマフォを解放し、同じ場合には、最後に読み取られたPPコマンドバッファ602を再書き込みのために解放する。
[0111]幾つかの実施の形態では、SELPPコマンド706及びWRPPコマンド708が、レンダリングコマンドストリーム700内に、後処理プログラムが変更されるべき画像のためのみに、含められている。他のフレームについては、これらコマンドは省略することができ、この場合には、FLIPコマンド710は、好適には、PPインデックスレジスタ612内に格納された値を変更しない。代わりに、現在のPPコマンドバッファ602用のインデックスの更新を実行してもよい。したがって、同じPPコマンドバッファ602を、任意の数の連続するフレームに使用することができ、新たなPPコマンドバッファ602を、後処理プログラムが実際に変更される場合にのみに使用することができる。
[0112]他の実施の形態では、PPコマンドバッファ602内の後処理プログラムは、完全に書き換えられるのではなく、WRPPコマンドバッファによって増分的に更新される。例えば、初期化において、各PPコマンドバッファ602には、同じ「デフォルト」の後処理プログラムがロードされてもよい。レンダリングオブジェクト132は、プログラムの部分(例えば種々のオペレーション用のパラメータ)を必要に応じて変更し、インデックス値を更新する。上述したSELPP及びWRPPコマンドを、この実施の形態に採用して、WRPPコマンドが、新たなコマンド(又はパラメータ値だけ)と同様に上書きすべき選択されたPPコマンドバッファ602内のエントリを特定してもよい。
[0113]当業者は、他の同期スキームも可能であることを認識するであろう。例えば、どのPPコマンドバッファが次に読み取られるべきかに関する情報は、調停ユニット内、HPCコンテキスト内のメモリ、又は、必要に応じて他の場所に格納されてもよい。
<複数のディスプレイヘッド>
[0114]当該技術においては公知のように、GPUは、複数のディスプレイデバイスを駆動するための複数のディスプレイヘッドを用いて設計されている。別個のスキャンアウトエンジンが、通常、各ディスプレイヘッドに提供される。これは、異なるディスプレイデバイスが、異なるピクセル又はフレームレートで動作することがあり、又は、異なるピクセルフォーマットの要件を有することがあるからである。
[0115]図8は、本発明の実施の形態に係り、ディスプレイデバイス0(明示せず)を駆動するための第1のスキャンアウトエンジン802(1)、及び、ディスプレイデバイス1を駆動するための第2のスキャンアウトエンジン802(2)をサポートするマイクロプロセッサ804を示す簡易化したブロック図である。マルチプロセッサ804は、調停ユニット806と、コンテキストマネージャ810を有する実行コア808と、を備えている。これらコンポーネントは、マルチプロセッサ804が二つのHPC(本明細書では、HPC0及びHPC1として示す)及び一つのNPCをサポートすることを除いて、図4における対応のコンポーネントと略同様である。各HPCは、異なる後処理オブジェクトを実装し、HPC0はディスプレイデバイス0用であり、HPC1はディスプレイデバイス1用であり、NPCは、両後処理オブジェクトによって使用されるべき画像を提供するインスタンス化されたレンダリングオブジェクトを含んでいる。幾つかの実施の形態では、複数のレンダリングオブジェクトが存在し、当該レンダリングオブジェクトによって生成された画像が一以上の後処理オブジェクトによって所望の任意の方式で使用されてもよい。したがって、実行コア808は、少なくとも三つのコンテキストをサポートし、調停ユニット806は、後述するように3方の(又はそれより多い)調停を実行する。
[0116]各スキャンアウトエンジン802(1)及び802(2)は、それぞれに対応のディスプレイデバイス用の適切なパラメータ(例えば、ピクセルレート、フレームレート)で動作する。異なるディスプレイデバイス用の後処理オペレーションは異なってもよいので、HPC0に実装された後処理オブジェクトは、好適には、ディスプレイバッファ820(1)にフレームを書き込み、HPC1に実装された後処理オブジェクトは、物理的に又は論理的に別個のディスプレイバッファ820(2)にフレームを書き込む。ディスプレイバッファ820(1)は、スキャンアウトエンジン802(1)によって読み取られ、ディスプレイバッファ820(2)は、スキャンアウトエンジン802(2)によって読み取られる。HPC0及びHPC1は、両者共に、同じレンダリングバッファ822から読み取りを行なってもよく、また、そこに格納された同じ画像又は異なる画像を読み取ってもよく、或いは、異なるレンダリングバッファ822から読み取りを行なってもよい。
[0117]調停ユニット806は、NPC用の候補コマンドストリームをレンダリングコマンドバッファ812経由で、HPC0用の候補コマンドストリームをPPコマンドバッファ814(1)経由で、HPC1用の候補コマンドストリームをPPコマンドバッファ814(2)経由で、受け取る。一般的に、PPコマンドバッファ814(1)及び814(2)は、異なるディスプレイデバイス用の所望の後処理オペレーションが異なることがあるので、異なる後処理プログラムを、提供してもよい。
[0118]調停ユニット806は、トリガ信号を、各スキャンアウトエンジン802から独立に受け取り、トリガ0の経路824(1)は、スキャンアウトエンジン802(1)からのトリガ信号を提供し、トリガ1の経路824(2)は、スキャンアウトエンジン802(2)からのトリガ信号を提供する。トリガ0の信号に応答して、調停ユニット806はHPC0に切り替えを行い(スイッチインし)、HPC0が動作してフレームを完了し(上述した他の実施の形態におけるように)、トリガ1の信号に応答して、調停ユニット806がHPC1に切り換えを行い(スイッチインして)、HPC1が動作して、フレームを完成する。
[0119]幾つかの例では、重複したトリガイベントも可能である。例えば、調停ユニット806は、トリガ0の信号に応答してHPC0に切り替えを行ない(スイッチイン)し、HPC0がそのフレームを終える前にトリガ1の信号を受け取ってもよい。ある実施の形態では、調停ユニット806は、HPC0がそのフレームを終えて直ぐにHPC1に切り替えを行なう(スイッチインする)ことを可能とする。同様のロジックを使用して、トリガ1の信号が最初に到着する他の重複するシナリオを取り扱ってもよい。このアルゴリズムは、HPC0及びHPC1の各々がフレームを生成するのに要する総時間が、フレーム時間(二つのディスプレイデバイスが異なるフレームレートを有する場合には速いほうのフレームレート)より実質的に少なく、且つ、NPCが、許容可能なレートで新しい画像をレンダリングするのに十分な処理時間を残されている限り、効果的である。
[0120]他の実施の形態では、種々のオブジェクトのうち幾つか又は全てが、別個の処理エンジンに実装され、並列処理能力が向上されてもよい。例えば、三つのエンジンの場合、NPC及び二つのHPCは、それぞれ、別個のエンジンで実施し得る。
[0121]別の実施の形態では、複数のディスプレイヘッドを、二つのスキャンアウトエンジン及び一つのHPCを提供し、当該スキャンアウトエンジンのうち一方がHPCを排他的に使用することによって、サポートすることができる。他のディスプレイヘッド用のスキャンアウトエンジンは、必要に応じて従来の特定用途回路を用いて、限定された後処理能力を実施してもよい。更に別の実施の形態では、単一のHPCを、二つの(又はそれよい多い)スキャンアウトエンジンからのトリガ信号によってトリガすることができる。
<後処理の例>
[0122]上述したように、後処理は、多様なオペレーションを含んでいていてもよい。本発明の範囲を限定せずに、後処理オペレーションの幾つかの例を、ここで説明する。
[0123]一つの後処理オペレーション合成処理であり、この処理では、異なるバッファからの画像を、互いに一つのフレームを生成するよう重ねることができる。例えば、図9は、三つの異なる画像バッファから生成された合成フレーム900を示している。背景画像バッファ902は、背景領域904におけるピクセルを生成するために使用されるフラグメントデータを提供し、映像バッファ906は、映像領域908におけるピクセルを生成するために使用されるフラグメントデータを提供し、カーソル画像バッファ910は、カーソル領域912におけるピクセルを生成するために使用されるフラグメントデータを提供する。
[0124]この例では、どの画像のコンテンツ及び/又は位置も、独立にフレームからフレームへと変化することができ、異なる画像の更新レートが異なっていてもよい。例えば、領域904の背景画像は、デスクトップの壁紙であり、殆ど変化することがなくてもよく、領域908の映像は、30Hz又はそれより大きいレートで変化してもよく、カーソル画像バッファ910も、例えば、現在のシステムのアクティビティを示すために、実質的にリアルタイムに変化してもよい。カーソル領域912の位置はまた、実質的にリアルタイムで変化して、ユーザによって操作されるポインティングデバイスの運動を反映してもよい。
[0125]本発明の実施の形態によれば、合成画像を、複数の独立の画像バッファ(又は画像バッファのグループ)を後処理オブジェクト用のフラグメントデータのソースとして提供することによって、生成することができる。図10は、複数の画像を独立に生成するよう構成されたマルチプロセッサ1000を示すブロック図である。この実施の形態では、マルチプロセッサ1000は、後処理オブジェクトを実施する一つのHPCと、二つのNPCと、をサポートしており、NPCFが、フルスクリーン用のレンダリングオブジェクトを実施し、NPCCがカーソル画像用のレンダリングオブジェクトを実施する。二つのNPCが図10には示されているが、任意の数のNPCを、組み合わせる必要のある任意の数の画像ソースを生成するために、提供してもよいことを理解されたい。さらに、オブジェクトは、任意の数の個別の処理エンジンを用いて実施してもよく、例えば、一つのエンジンが三つのオブジェクトを実施してもよく、別個のエンジンが各オブジェクト用に提供されてもよく、或いは、複数のエンジンが各オブジェクトに提供されてもよい。
[0126]グラフィックメモリ1002は、上述したグラフィックメモリ116に略類似するものであり、二つのレンダリングバッファ1004及び1006を備えており、これらバッファの各々は、好適には、上述したように複数の画像を格納する。レンダリングバッファ1004は、NPCFによってレンダリングされたフルスクリーン画像用のフラグメントデータを格納し、レンダリングバッファ1006は、NPCCによってレンダリングされたカーソル画像用のフラグメントデータを格納する。カーソル画像は、フルスクリーン画像より相当に少ないフラグメントを有することがあり、従って、レンダリングバッファ1006は、レンダリングバッファ1004より相当に小さくてもよいことに留意されたい。グラフィックメモリ1002はまた、HPCによって生成されたフレーム用のピクセルデータを格納するディスプレイバッファ1008を有している。
[0127]ホスト1000は、調停ユニット1010と、コンテキストマネージャ1014を有する実行コア1012を備えており、これらは上述した対応のコンポーネントに略類似するものであってもよい。この例では、コンテキストマネージャ1014は、三つの異なるコンテキスト(NPCCコンテキスト1011、NPCFコンテキスト1013、及びHPCコンテキスト1015)を格納し、調停ユニット1010は、三つの異なるコンテキストから選択を行なう。フルスクリーン画像及びカーソル画像用の別個のレンダリングコマンドのストリームが、それぞれに対応のレンダリングコマンドバッファ1016(フルスクリーン用)及び1018(カーソル画像用)に提供される。これらレンダリングストリームは、図3Aのレンダリングストリーム300と略同様のものであってもよい。
[0128]調停ユニット1010は、スキャンアウトエンジン1030からのトリガ信号に応答して(上述したように)、HPCを選択し、HPCがアイドルとなっているときにNPCC及びNPCFから選択を行なう。ラウンドロビン方式の選択、イベント駆動の選択(例えば、実行コア1012から「イベント」経路1017を介して受け取られるイベント信号に基づく選択)、又は、他の選択アルゴリズムを使用することができる。
[0129]PPコマンドバッファ1020は、後処理プログラムを提供するものであり、当該プログラムの例を図11に示す。後処理プログラム1100は、図3Bの後処理プログラム320に略類似するものであり、複数のインデックスエントリ1104及び1106が提供されている点において異なる。インデックスエントリ1104は、新規のカーソル画像の完成の際にNPCCによって更新されるカーソルインテックス値(INDC)を格納し、インデックスエントリ1106は、新規のフルスクリーン画像の完成の際にNNPCFによって更新されるフルスクリーンインデックス値(INDF)を格納する。INDC値及びINDF値は、互いに独立に、且つ、異なるレートで、更新されてもよいことに留意されたい。
[0130]この実施の形態では、後処理オブジェクトは、好適には、新規のフレームを、それがトリガされる度に、インデックスエントリの何れかが更新されているか否かに拘らず、生成する。これによって、画面上のカーソル位置が、頻繁に所望されるように、ディスプレイの周期で更新されるようにする。
[0131]ある実施の形態では、PCMDコマンド1110及び1112は、現在のカーソル位置を適切なレジスタから(これは従来の構成である)、又はメモリ位置から読み取るコマンド、現在のカーソルサイズ(これは、PPコマンドバッファ1020内のコマンドによって設定されることがある)を決定するコマンド、どのピクセルがカーソルエリア内にあるかを決定するコマンド、及び、各ピクセル用の一以上のフラグメントを、(インデックス値INDCによって特定される)現在のカーソル画像又は(INDF値によって特定される)現在のフルスクリーン画像の何れかから、どのピクセルがカーソルエリア内にあるかに応じて、選択するコマンドを含む。合成アルゴリズム自体は、既存のハードウェアベースのアルゴリズムに類似していてもよいが、好適には、専用のハードウェアではなく、実行コア912で実行することができるプログラムコードで実装される。カーソルとその下にあるフルスクリーン画像の部分との間の透明又はエッジブレンディングのような特徴を、適切なプログラムコードを介して実装してもよい。
[0132]再び図10を参照する。スキャンアウトエンジン1030は、上述した種々のスキャンアウトエンジンと同一のものであってもよい。この実施の形態では、全ての合成は、ホスト1000において、HPC内の後処理オブジェクトによって成され、スキャンアウトエンジン1030のオペレーションは、ディスプレイバッファ1008内のピクセルを生成した方法とは独立している。
[0133]別の後処理オペレーションは、LCDオーバードライブ(当該技術においては、「LCDフィードフォワード」又は「応答時間補償」(RTC)とも呼ばれるもの)である。当該技術では公知のように、LCDスクリーンは、ピクセルを駆動する信号が、フレームからフレームへと、所望の新規の強度に部分的に基づいて、且つ、所望の新規の強度と前の強度との間の差に部分的に基づいて調整される場合に、より高速に応答することができる。本発明の実施の形態によれば、LCDオーバードライブは、適切なコマンドを含む後処理プログラムを実行する後処理オブジェクトにおいて実施することができる。
[0134]例えば、画像の各フラグメントがフレームの一つのピクセルに対応している状況を考える。(本発明は、この場合に限定されるものではなく、この状況は、例示の目的で本明細書において使用されている)。図12は、フレームを生成するプロセス1200を示しており、当該プロセスは、後処理オブジェクト134(例えば、図2を参照)で適切な後処理プログラムを介して(例えば、図3Bに示すように)実施することができる。プロセス1200は、好適には、直前に完成した画像がインデックス値Rをもつ画像バッファ226(図2)に格納され、直前の先行する画像がインデックス値(R−1)modNをもつ異なる画像バッファ226に格納され、これら画像バッファ226の両者が後処理オブジェクト134によってロックされ続ける実施の形態で実施される。
[0135]ステップ1202において、後処理オブジェクト134は、PPコマンドバッファ129におけるインデックスエントリをチェックする。ステップ1024において、インデックス値が変化しているか否かが判定される。変化していない場合には、次いで、ステップ1206において、フレームにおける全ピクセルのデルタ値がゼロにセットされ、所望のピクセル値の何れもが変化していないことが反映される。インデックス値が変化している場合には、次いで、ステップ1208において、デルタ値が、各ピクセルについて、バッファR内のフラグメント値及びバッファ(R−1)modN内のフラグメント値に基づいて計算される。ある実施の形態では、デルタ値は、単純に、二つのバッファ内の対応するフラグメント用の値の間の差である。
[0136]ステップ1210において、所望のピクセル強度が、バッファR内のフラグメント値から求められる。ある実施の形態では、フラグメント値は、所望のピクセル強度であり、他の実施の形態では、所望のピクセ強度が、フラグメント値の関数値である(例えば、ガンマ補正を組み込んだもの)。
[0137]ステップ1212においては、ピクセル用のオーバードライブ値が、所望の強度とデルタ値とに基づいて求められる。ある実施の形態では、関数が、オーバードライブ信号を計算するために予め定められていてもよい。別の実施の形態では、オーバードライブ信号は、所望の強度とデルタ値(又は新規及び古い強度値)を用いてインデックスされるルックアップテーブルから求められ、実行コア404は、このテーブル参照を実行するように構成された機能ユニットを備えることができる。
[0138]プロセス1200は、例示的なものであり、変更及び改良が可能であることが理解されよう。ステップは、各フラグメントに対して逐次的に実行されてもよく、或いは、フラグメントのグループに対して(又は全てのフラグメントに対して)並列に実行されてもよく、ステップの順序が変更されてもよく、また、ステップが変更又は結合されてもよい。異なる定義のデルタ値に置き換えてもよく、また、フラグメント値に対する別の変更が導入されてもよい。加えて、プロセス1200は、フラグメントデータからピクセルデータを生成する更なるステップ(例えば、ダウンフィルタリング、アップフィルタリング、合成等)を結合することができる。
[0139]プロセス1200によってピクセル用に生成されたオーバードライブ信号は、フレームバッファ227に格納される最終のピクセル値である必要はない。後続の操作が、更なる後処理コマンドを用いて実施されてもよい。
[0140]後処理オペレーションの第3の例は、表面の回転であり、ここでは、画像用のフラグメントデータが、画像の法線方向軸線周りにある角度(例えば90°)で回転された2−D表面上にマップされる。この軸線と画像平面との交差地点、及び/又は回転の角度は、設定可能なパラメータである。ある実施の形態では、交差地点は、画像の中心(又はその近く)に固定され、角度は、90°の倍数(例えば、0°、90°、180°、270°)に設定可能である。交差地点及び回転の角度に基づいて、画像バッファ内の各フラグメントの位置を、フレームバッファ内の対応のピクセル位置にマップすることができる。したがって、表面の回転は、フラグメント位置とピクセル位置の間のマッピングを定義し、このマッピングを用い、フラグメントが読み取られたアドレスに基づいて各ピクセル用の書き込みアドレスを求めることによって、後処理オブジェクトで実施することができる。マッピングは、例えば、画像バッファ用の位置オフセットによってアクセス可能なルックアップテーブルとして、又は、ピクセルバッファ用の位置オフセットを画像バッファ用の位置オフセットから計算するための関数として、提供することができる。ある実施の形態では、許可された幾つかの回転角度用のマッピングが、画像バッファの位置オフセットと現在の回転角度によってアクセス可能なルックアップテーブルを用いて、提供されてもよい。
[0141]図13は、回転したフレームを生成するためのプロセス1300のフロー図であり、当該プロセス1300は、後処理オブジェクト134(例えば、図2を参照)で、適切な後処理プログラムを介して(例えば、図3Bに示すように)、実施することができる。ステップ1302においては、所望の回転に基づいて、マッピングが、画像バッファ内の各フラグメント位置とピクセルバッファ内の対応のピクセル位置との間で、定義される。マッピングは、例えば、レンダリングオブジェクトの初期化の際に一度生成されて、回転パラメータが変化するときにのみ更新されてもよい。ある実施の形態では、後処理コマンドを使用して、マッピングを提供し、別の実施の形態では、後処理オブジェクトが適切なマッピングを計算するか選択するために使用することができるパラメータを、後処理コマンドが提供する。
[0142]ステップ1304において、フラグメントデータが画像バッファ位置(本明細書ではソース位置と呼ぶ)から読み取られ、ステップ1306において、フラグメントデータが処理されて、ピクセル値が生成される。任意のタイプの後処理オペレーションをステップ1306に含めてもよく、例えば、合成及び/又はLCDオーバードライブオペレーションを含めることができる。処理が完了すると、ステップ1308において、フレームバッファ内の目的位置が、ソース位置とステップ1302で定義したマッピングを用いることによって、ピクセル値用に求められる。ステップ1310において、ピクセル値が、目的位置に書き込まれる。ステップ1312において、処理すべき更なるフラグメントが残っているか否かが判定される。フラグメントが残っている場合には、プロセス100は、ステップ1304に戻り、次のフラグメントを処理し、現在の画像の全フラグメントが処理されている場合には、プロセス1300は終了する(ステップ1314)。
[0143]プロセス1300は例示的なものであり、変更及び改良が可能であることが理解されよう。逐次的なものとして説明したステップは、並列に実行されてもよく、ステップの順序が変更されてもよく、ステップが変更されてもよく、又は、結合されてもよい。例えば、複数のフラグメントが並列に処理されてもよい。幾つかの実施の形態では、ソース位置と目的位置との間のマッピングが、一対一であってもよく、例えば、回転された画像が、ピクセル配列の大きさに適合するように、縮小又は拡大されてもよい。縮小及び拡大は、一つのピクセル値を生成するために、幾つかのフラグメント値のブレンディングを伴ってもよい。プロセス1300は、あるフラグメントの位置をピクセルへのマッピングを定義する目的でソース位置として使用することができる限り、このケースに採用することができる。他の実施の形態では、マッピングは、各ピクセル位置用に使用すべき一以上のソース位置が特定されるように、定義されてもよい。
[0144]合成及びLCDオーバードライブオペレーションは、本明細書では、後処理オブジェクトで実施することができるオペレーションの例として使用されている。他のオペレーションもまた、これらの例に加えて、又はこれらの例に代えて実装されてもよく、幾つかの例は、「概略及び専門用語」のサブセクションにおいて上述されている。しかしながら、本発明は、特定の後処理オペレーションに限定されるものではない。当業者は、後処理オブジェクを、好適には、ディスプレイ周期での実行が正確な動作のために望ましいか又は必須である任意のオペレーションを実施するために使用することができることを認識するであろう。後処理オブジェクトに含められるオペレーションの数及び複雑さは、新規のフレームをディスプレイの周期で生成することができる限り、変更し得る。
<後処理プログラム用のソース>
[0145]上述したように、後処理プログラムは、PPコマンドバッファにグラフィックドライバプログラムによって書き込まれる。このドライバは、コマンドを直接に(例えば、図1の実施の形態では、システムバス106を介してPPコマンドバッファ129のメモリ位置にコマンドを伝送することによって)書き込んでもよく、又は、間接的に(例えば、図7を参照して上述したように、WRPPコマンドをレンダリングコマンドバッファ128に書き込むことによって)書き込むことができる。
[0146]後処理プログラム用のソースについて、ここで説明する。幾つかの実施の形態では、グラフィックドライバが、後処理プログラムを、種々の後処理オペレーションを実装する予め定義されたプログラムセグメントのライブラリからアセンブルする。グラフィックドライバは、適切なアプリケーションプログラムインタフェイス(API)を提供し、アプリケーション開発者が使用することを望む後処理オペレーション及び任意の関連のパラメータを特定することを可能にしてもよい。API自体は、一般的にスキャンアウトタイム処理を制御するための従来のAPIと同様であってもよいが、グラフィックドライバ内での実装が異なる。具体的には、API命令に応答して、グラフィックドライバは、ライブラリから適切なプログラムセグメントを選択し、セグメントを完全なプログラムへと結合し(例えば、上述したインデックスチェック及びジャンプコマンドのような制御コマンドを加えて)、プログラムをPPコマンドバッファに書き込み、或いは、適切なWRPPコマンドをレンダリングコマンドストリームに挿入する。
[0147]他の実施の形態では、アプリケーション開発者が、「カスタム」の後処理プログラムを定義することも可能である。例えば、グラフィックドライバが、任意の後処理プログラム又はプログラムセグメントをアプリケーション又はオペレーティングシステムプログラムから受け入れるAPIを提供してもよい。カスタム後処理プログラムを書くための命令及び/又は示唆を有する開発者キットを提供してもよい。更に別の実施の形態では、ライブラリプログラムセグメントとカスタムプログラムセグメントの組み合わせをサポートしてもよい。
[0148]上述した実施の形態では、グラフィックドライバが、後処理プログラムをPPコマンドバッファに書き込むように特定されている。幾つかの実施の形態では、グラフィックドライバプログラムが、ドライバプログラムが実行されるハードウェア及び/又はオペレーティングシステムの詳細を隠蔽する抽象度で実装される。例えば、リソースマネージャプログラムを提供して、グラフィックドライバプログラムとシステムハードウェアコンポーネントとの相互動作をサポートしてもよい。リソースマネージャは、オペレーティングシステムプログラム及び/又はアプリケーションプログラムからの処理リクエストに応答してグラフィックドライバによって呼び出される低レベルのハードウェア及び動作特有の機能を実施する。この追加の抽象度によれば、リソースマネージャの異なる実装を提供することによって、同じドライバコードを異なるハードウェア構成に採用することが可能となる。リソースマネージャが実装されている場合には、後処理プログラムのPPコマンドバッファへの実際の書き込みは、それがドライバに透過的となるように、リソースマネージャによって取り扱われてもよい。
[0149]更に別の実施の形態では、従来のスキャンアウト制御コマンドを、ドライバによって発行することができる。かかるコマンドは、GPU内の適切なコマンドインタフェイスコンポーネントによって受け取られ、後処理オブジェクト用の制御構造へと変更される。例えば、スキャンアウトコマンドの受領の際に、コマンドインタフェイスコンポーネントは、PPコマンドバッファ内にコマンド又はパラメータを書き込み、又は上書きすることができ、或いは、適切なSELPP及び/又はWRPPコマンドをレンダリングコマンドストリームに挿入することができる。したがって、PPコマンドバッファ及び後処理オブジェクトは、グラフィックドライバ(リソースマネージャを含む)に透過的になっていてもよく、本発明を未変更の従来のグラフィックドライバと共に使用してもよい。PPコマンドバッファ以外のGPUの適切なコマンドインタフェイスコンポーネントによって動作される制御構造は、後処理オブジェクトの振る舞いを制御するために使用することができることが理解されよう。
<更なる実施の形態>
[0150]上述したように、本発明の実施の形態は、GPUの実行コアにおいて利用可能な膨大な処理パワーを、ディスプレイ周期でのピクセル処理に活用することを可能にする。さらに、本明細書に説明した後処理オブジェクトのプログラム能力は、実行することができるディスプレイの後処理の量及び種類に関して、従来の特定用途回路で達成することができたものよりも、相当に優れたフレキシビリティをもたらす。また更に、本発明の幾つかの実施の形態によれば、従来のGPUにおける特定用途の後処理回路の量を相当に削減するか、又は排除することが可能となり、チップ面積及び消費電力に関する利点がもたらされる。
[0151]本発明を、特定の実施の形態について説明してきたが、当業者は多数の変更が可能であることを認識するであろう。例えば、本発明は如何なる特定の実行コア又はコンテキスト管理アーキテクチャにも限定されるものではない。加えて、後処理オペレーションの特定の例を説明してきたが、本明細書において具体的に説明したオペレーションを含めて、任意のオペレーション又はオペレーションの組み合わせを、本発明の範囲内で実施し得ることが理解されよう。
[0152]本明細書における説明は、レンダリングオブジェクト及び後処理オブジェクトのような処理オブジェクトを参照している。この内容において、「オブジェクト」とは、状態及び振る舞いのアスペクトを有するエンティティを指すことが理解されよう。当業者は、複数のオブジェクトがマルチプロセッサにおいて種々の方法で実施され得ることを認識するであろう。例えば、単一の処理エンジンを、コンテキストスイッチ特徴を用いて実施して、異なるオブジェクトを適切にスイッチイン及びスイッチアウトすることが可能である。或いは、本明細書に示した任意のオブジェクト又は全てのオブジェクトを、オブジェクトの状態及び振る舞いのアスペクトを実現可能な別個の処理エンジンを用いて実施してもよい。
[0153]さらに、本発明を、特定のハードウェア及びソフトウェアコンポーネントを参照して説明してきたが、当業者は、ハードウェア及び/又はソフトウェアコンポーネントの異なる組み合わせを使用することができ、また、ハードウェアに実装されるように説明した特定のオペレーションをソフトウェア又はハードウェアに実装することができることを理解するであろう。
[0154]本発明の種々の特徴を組み込んだコンピュータプログラムは、種々のコンピュータ読み取り可能媒体に、格納及び/又は伝送の為に、コード化することができ、適切な媒体には、磁気ディスク又はテープ、CD(コンパクトディスク)又はDVD(デジタル多用途ディスク)のような光学式記憶媒体、フラッシュメモリ、インターネットを含む種々のプロトコルに準拠する有線、光、及び/又は無線ネットワークを介した伝送用に採用される搬送波信号等が含まれる。プログラムコードがコード化されたコンピュータ読み取り可能媒体は、互換性のあるデバイスと共にパッケージ化されてもよく、又は、他のデバイスとは別個に提供(例えば、インターネットを介して)されてもよい。
[0155]以上、本発明を特定の実施の形態に関して説明してきたが、本発明は特許請求の範囲内の全ての変更態様及び均等物を含むことを意図していることが理解されよう。
本発明の実施の形態に係るコンピュータシステムのハイレベルのブロック図である。 本発明の実施の形態に係るグラフィック処理サブシステム用のデータフロー図である。 本発明の実施の形態に係るレンダリングコマンドストリームを示す図である。 本発明の実施の形態に係る後処理プログラムを示す図である。 本発明の実施の形態に係るマルチプロセッサのコンポーネントを示すブロック図である。 本発明の実施の形態に係る調停ロジックのプロセスのフロー図である。 本発明の別の実施の形態に係るマルチプロセッサのコンポーネントを示すブロック図である。 本発明の実施の形態に係る後処理プログラムを書き込むくためのコマンドを有するレンダリングコマンドストリームを示す図である。 本発明の実施の形態に係る二つのスキャンアウトエンジンをサポートするマルチプロセッサのブロック図である。 合成画像を示す図である。 本発明の実施の形態に係る合成画像をサポートするマルチプロセッサのブロック図である。 本発明の実施の形態に係る合成画像を形成するための後処理プログラムを示す図である。 本発明の実施の形態に係るLCDのオーバードライブ値を生成するためのプロセスのフロー図である。 本発明の実施の形態に係る画像の回転用のプロセスのフロー図である。

Claims (24)

  1. 複数のオブジェクトを実行するよう構成されたマルチプロセッサを備え、
    前記複数のオブジェクトが、
    画像データを生成するための第1のシーケンスのプログラム命令を実行するよう構成されたレンダリングオブジェクトと、
    前記画像データからフレームのピクセルデータを生成するための第2のシーケンスのプログラム命令を実行するよう構成された後処理オブジェクトと、を含み、
    前記マルチプロセッサが、
    前記複数のオブジェクトの実行を制御するよう構成された調停ユニットと、
    フレームの生成されたピクセルデータをディスプレイポートに等時間間隔で伝送するよう構成され、且つ、トリガ信号を前記調停ユニットに周期的に伝送するよう結合されたスキャンアウトエンジンと、を有し、
    前記調停ユニットが、更に、前記トリガ信号に応答して後処理オブジェクトを動作させて新規フレームのピクセルデータを生成するよう構成されている、グラフィックプロセッサ。
  2. 前記マルチプロセッサが、
    レンダリングオブジェクトを実行するよう構成された第1のプログラム可能な処理エンジンと、
    後処理オブジェクトを実行するよう構成された第2のプログラム可能な処理エンジンと、を有する請求項1記載のグラフィックプロセッサ。
  3. 前記マルチプロセッサが、
    コンテキスト切り替え可能な処理コアと、
    前記複数の処理オブジェクトの各々に対応するそれぞれのコンテキストを維持するよう構成されたコンテキストマネージャと、を有し、
    前記調停ユニットが、更に、前記後処理オブジェクトに対応するコンテキストが前記トリガ信号に応答してアクティブ化されるよう、前記コンテキストマネージャによって維持されている前記コンテキストからの現在のコンテキストの選択を制御する、請求項1記載のグラフィックプロセッサ。
  4. 複数のコンテキスト間で切り替え可能であるように構成され、更に、前記複数のコンテキストのうち切り替えられた一つのコンテキストに関連するプログラム命令を実行するよう構成されたプログラム可能な実行コアと、
    前記実行コアに結合され、且つ、前記複数のコンテキストのうち異なるコンテキスト間での前記実行コアの切り替えを制御するよう構成された調停ユニットと、
    フレームの生成されたピクセルデータをディスプレイポートに等時間間隔で伝送するよう構成され、且つ、トリガ信号を前記調停ユニットに伝送するよう結合されたスキャンアウトエンジンと、を備え、
    前記複数のコンテキストが、
    画像データを生成するための第1のシーケンスのプログラム命令と関連を有しているレンダリングコンテキストと、
    前記画像データからフレームのピクセルデータを生成するための第2のシーケンスのプログラム命令と関連を有する後処理コンテキストと、を含み、
    前記調停ユニットが、更に、トリガ信号に応答して、前記実行コアを前記後処理コンテキストに切り替えるよう構成されている、グラフィックプロセッサ。
  5. 前記スキャンアウトエンジンが、更に、前記トリガ信号を、フレーム毎に一度、伝送するよう構成されている、請求項4記載のグラフィックプロセッサ。
  6. 前記スキャンアウトエンジンは、更に、前記トリガ信号がフレーム終端イベントと固定の時間関係を有するように構成されている、請求項5記載のグラフィックプロセッサ。
  7. 前記調停ユニットは、更に、フレーム完了イベントが前記第2のシーケンスのプログラム命令によって検出されるまでの間、前記実行コアを維持し、次いで、前記実行コアを前記レンダリングコンテキストへ切り替えるよう構成されている、請求項4記載のグラフィックプロセッサ。
  8. 前記フレーム完了イベントは、前記第2のシーケンスのプログラム命令における、無条件ジャンプ命令の発生に対応しており、該無条件命令は、前記第2のシーケンスのプログラム命令の開始点に向けられている、請求項7記載のグラフィックプロセッサ。
  9. 前記第1のシーケンスのプログラム命令は、更に、複数の画像バッファのうちの一つを選択する命令と、前記画像データを選択した画像バッファに書き込む命令を含む、請求項4記載のグラフィックプロセッサ。
  10. 前記第2のシーケンスのプログラム命令が、更に、前記画像データを前記複数の画像バッファのうち一以上から読み取る命令を含む、請求項9記載のグラフィックプロセッサ。
  11. 前記第1のシーケンスのプログラム命令が、更に、前記選択された画像バッファ用のインデックス値をインデックス記憶位置に書き込むための命令を含み、前記インデックス値を書き込む該命令は、前記画像データを前記選択された画像バッファに書き込むための前記命令の実行後に実行され、
    前記第2のシーケンスのプログラム命令は、更に、前記インデックス記憶位置から前記インデックス値を読み取るための命令を含む、請求項10記載のグラフィックプロセッサ。
  12. 前記第2のシーケンスのプログラム命令は、更に、前記インデックス記憶位置から読み取られた前記インデックス値が該インデックス記憶位置から以前に読み取られた古いインデックス値と異なるか否かを条件とする少なくとも一つの命令を含む、請求項11記載のグラフィックプロセッサ。
  13. 条件付きの前記少なくとも一つの命令は、前記複数の画像バッファのうち一つを、前記レンダリングコンテキストによる後の使用のために解放する命令を含む、請求項12記載のグラフィックプロセッサ。
  14. 前記第2のシーケンスのプログラム命令は、複数のフレームバッファのうち一つを選択するための命令と、選択されたフレームバッファにフレーム用のピクセルデータを書き込むための命令と、を含む、請求項4記載のグラフィックプロセッサ。
  15. 前記スキャンアウトエンジンは、更に、前記複数のフレームバッファのうち一つを特定するディスプレイインデックス値を第1の記憶位置から読み取り、且つ、フレーム用のピクセルデータを特定されたフレームバッファから読み取るように構成されており、
    前記第2のシーケンスのプログラム命令は、更に、前記選択されたフレームバッファに対応する前記ディスプレイインデックス値を前記第1の記憶位置に、前記フレーム用の前記ピクセルデータの前記選択されたフレームバッファへの書き込みが完了した後に、書き込むための命令を含む、請求項14記載のグラフィックプロセッサ。
  16. 各々が画像用のフラグメントデータを格納するよう構成された複数の画像バッファと、
    各々がフレーム用のピクセルデータを格納するよう構成された複数のフレームバッファと、
    複数のコンテキストのうちの切り替えられた一つのコンテキストに関連する命令を実行するように該複数のコンテキスト間で切り替え可能であるよう構成されたプログラム可能な実行コア、及び
    前記実行コアに結合され、且つ、前記複数のコンテキストのうち異なるコンテキスト間での前記実行コアの切り替えを制御するよう構成された調停ユニット、
    を有するマルチプロセッサと、
    フレームのピクセルデータを、前記フレームバッファからディスプレイポートへ等時間間隔で伝送するよう構成され、且つ、トリガ信号を、前記マルチプロセッサの前記調停ユニットへ周期的に伝送するよう結合されたスキャンアウトエンジンと、を備え、
    前記複数のコンテキストが、
    複数の画像用のフラグメントデータを生成するための命令、及び、各画像用の前記フラグメントデータを前記画像バッファのうちの一つに書き込むための命令を含む第1のシーケンスのプログラム命令に関連を有するレンダリングコンテキストと、
    前記画像バッファ内の前記フラグメントデータからフレームのピクセルデータを生成するための命令、及び、前記フレームバッファのうち一つに前記フレーム用の前記ピクセルデータを書き込むための命令を含む第2のシーケンスのプログラム命令に関連を有する後処理コンテキストと、を含み、
    前記調停ユニットが、更に、前記トリガ信号に応答して、前記実行コアを前記後処理コンテキストへ切り替えるよう構成されている、グラフィック処理システム。
  17. 画像を生成するための方法であって、
    プロセッサの共有実行コア内で、第1のシーケンスのプログラム命令に応答して画像用のフラグメントデータを生成するレンダリングオブジェクトを動作させるステップと、
    前記レンダリングオブジェクトの動作と並列して、ディスプレイデバイスにフレームのピクセルデータを等時間間隔で供給するようスキャンアウトエンジンを動作させるステップであって、該スキャンアウトエンジンが周期的にトリガ信号を生成する、該ステップと、
    前記トリガ信号に応答して、前記プロセッサの前記実行コア内で、第2のシーケンスのプログラム命令に応答して一以上の画像用の前記フラグメントデータから新規フレームのピクセルデータを生成する後処理オブジェクトを動作させるステップであって、前記新規フレームのピクセルデータが前記スキャンアウトエンジンに利用可能とされる、該ステップと、を含む方法。
  18. 前記トリガ信号は、フレーム終端イベントに固定の時間関係を有する、請求項17記載の方法。
  19. 前記レンダリングオブジェクトの動作が、前記後処理オブジェクトの動作の間、一時停止され、前記後処理オブジェクトが前記新規フレームのピクセルデータを生成し終えた後に再開される、請求項17記載の方法。
  20. 前記第2のシーケンスのプログラム命令が、画像用の前記フラグメントデータをダウンフィルタリングするための命令を含む、請求項17記載の方法。
  21. 前記第2のシーケンスのプログラム命令が、画像用の前記フラグメントデータをアップフィルタリングするための命令を含む、請求項17記載の方法。
  22. 前記第2のシーケンスのプログラム命令が、前記フレームの各ピクセル用にLCDオーバードライブ値を計算するための命令を含む、請求項17記載の方法。
  23. 前記第2のシーケンスのプログラム命令が、二以上の異なる画像用のフラグメントデータを用いて、合成画像を形成するための命令を含む、請求項17記載の方法。
  24. 前記第2のシーケンスのプログラム命令が、前記画像を表面にマッピングするための命令を含む、請求項17記載の方法。
JP2007546981A 2004-12-20 2005-12-14 プログラム可能なハードウェアを用いたリアルタイムディスプレイの後処理 Active JP4620129B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/019,414 US7586492B2 (en) 2004-12-20 2004-12-20 Real-time display post-processing using programmable hardware
PCT/US2005/045834 WO2006068985A2 (en) 2004-12-20 2005-12-14 Real-time display post-processing using programmable hardware

Publications (2)

Publication Number Publication Date
JP2008524720A JP2008524720A (ja) 2008-07-10
JP4620129B2 true JP4620129B2 (ja) 2011-01-26

Family

ID=36595080

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007546981A Active JP4620129B2 (ja) 2004-12-20 2005-12-14 プログラム可能なハードウェアを用いたリアルタイムディスプレイの後処理

Country Status (6)

Country Link
US (1) US7586492B2 (ja)
JP (1) JP4620129B2 (ja)
KR (2) KR20090045349A (ja)
CN (1) CN101080698B (ja)
TW (1) TWI406185B (ja)
WO (1) WO2006068985A2 (ja)

Families Citing this family (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6963348B2 (en) * 2002-05-31 2005-11-08 Nvidia Corporation Method and apparatus for display image adjustment
JP4260734B2 (ja) * 2004-12-21 2009-04-30 株式会社ソニー・コンピュータエンタテインメント 描画処理装置、ラスタライザ、および描画処理方法
US20060282604A1 (en) * 2005-05-27 2006-12-14 Ati Technologies, Inc. Methods and apparatus for processing graphics data using multiple processing circuits
US20070038939A1 (en) * 2005-07-11 2007-02-15 Challen Richard F Display servers and systems and methods of graphical display
US7463263B2 (en) * 2005-07-15 2008-12-09 Sap Portals Israel Ltd. Declarative specification of model visualizations
GB0519597D0 (en) * 2005-09-26 2005-11-02 Imagination Tech Ltd Scalable multi-threaded media processing architecture
US7397478B2 (en) * 2005-09-29 2008-07-08 Intel Corporation Various apparatuses and methods for switching between buffers using a video frame buffer flip queue
US8466859B1 (en) * 2005-12-06 2013-06-18 Nvidia Corporation Display illumination response time compensation system and method
WO2007095127A1 (en) * 2006-02-10 2007-08-23 Qualcomm Mems Technologies, Inc. Method and system for updating of displays showing deterministic content
US8952974B2 (en) * 2006-04-20 2015-02-10 Cisco Technology, Inc. Latency reduction in a display device
US7882380B2 (en) * 2006-04-20 2011-02-01 Nvidia Corporation Work based clock management for display sub-system
US8130227B2 (en) * 2006-05-12 2012-03-06 Nvidia Corporation Distributed antialiasing in a multiprocessor graphics system
US7937606B1 (en) 2006-05-18 2011-05-03 Nvidia Corporation Shadow unit for shadowing circuit status
US8493388B2 (en) * 2006-08-09 2013-07-23 Siemens Medical Solutions Usa, Inc. Modular volume rendering using visual programming
SG140508A1 (en) * 2006-08-31 2008-03-28 St Microelectronics Asia Multimode filter for de-blocking and de-ringing
US7876313B2 (en) * 2006-09-29 2011-01-25 Intel Corporation Graphics controller, display controller and method for compensating for low response time in displays
JP2008098911A (ja) * 2006-10-11 2008-04-24 Sony Corp 画像処理装置および方法、並びにプログラム
WO2008044098A1 (en) * 2006-10-13 2008-04-17 Freescale Semiconductor, Inc. Image processing apparatus for superimposing windows displaying video data having different frame rates
US8149242B2 (en) * 2006-11-10 2012-04-03 Sony Computer Entertainment Inc. Graphics processing apparatus, graphics library module and graphics processing method
US8269782B2 (en) * 2006-11-10 2012-09-18 Sony Computer Entertainment Inc. Graphics processing apparatus
JP4968778B2 (ja) * 2006-11-27 2012-07-04 ルネサスエレクトロニクス株式会社 表示制御用半導体集積回路
US8134567B1 (en) * 2007-11-06 2012-03-13 Nvidia Corporation Active raster composition and error checking in hardware
US7999815B1 (en) * 2007-11-06 2011-08-16 Nvdia Corporation Active raster composition and error checking in hardware
US9292069B1 (en) * 2007-11-12 2016-03-22 Nvidia Corporation System and method for controlling mode switches in hardware
US8826294B2 (en) 2007-12-26 2014-09-02 Advanced Micro Devices, Inc. Efficient state management system
US9418171B2 (en) 2008-03-04 2016-08-16 Apple Inc. Acceleration of rendering of web-based content
US8477143B2 (en) 2008-03-04 2013-07-02 Apple Inc. Buffers for display acceleration
KR100948510B1 (ko) * 2008-04-21 2010-03-23 주식회사 코아로직 하드웨어 방식의 벡터 그래픽 가속기, 그 가속기를 포함한어플리케이션 프로세서 및 단말기, 및 그 프로세서에서그래픽 가속방법
US8578192B2 (en) 2008-06-30 2013-11-05 Intel Corporation Power efficient high frequency display with motion blur mitigation
US8319780B2 (en) * 2008-07-30 2012-11-27 Nvidia Corporation System, method, and computer program product for synchronizing operation of a first graphics processor and a second graphics processor in order to secure communication therebetween
US8373708B2 (en) * 2008-07-30 2013-02-12 Nvidia Corporation Video processing system, method, and computer program product for encrypting communications between a plurality of graphics processors
US20100141664A1 (en) * 2008-12-08 2010-06-10 Rawson Andrew R Efficient GPU Context Save And Restore For Hosted Graphics
KR102057881B1 (ko) * 2009-02-06 2019-12-20 가부시키가이샤 한도오따이 에네루기 켄큐쇼 표시 장치 구동 방법
US8243088B2 (en) * 2009-02-26 2012-08-14 Presagis Two dimensional memory access controller
US8624907B2 (en) * 2009-06-26 2014-01-07 Intel Corporation Graphics analysis techniques
US8405666B2 (en) 2009-10-08 2013-03-26 Advanced Micro Devices, Inc. Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine
GB0922126D0 (en) 2009-12-17 2010-02-03 Advanced Risc Mach Ltd Graphics processing systems
US8730251B2 (en) * 2010-06-07 2014-05-20 Apple Inc. Switching video streams for a display without a visible interruption
CN101976183B (zh) * 2010-09-27 2012-02-22 广东威创视讯科技股份有限公司 一种多窗口图像同时更新时图像更新的方法及装置
WO2012106419A1 (en) 2011-02-03 2012-08-09 L3 Communications Corporation Graphics processing architecture for an fpga
US8640047B2 (en) * 2011-06-01 2014-01-28 Micorsoft Corporation Asynchronous handling of a user interface manipulation
KR101926570B1 (ko) 2011-09-14 2018-12-10 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
CN103024404A (zh) * 2011-09-23 2013-04-03 华晶科技股份有限公司 处理影像旋转的方法与装置
WO2013048532A1 (en) 2011-10-01 2013-04-04 Intel Corporation Using a graphics engine to process print requests
WO2013097071A1 (en) * 2011-12-26 2013-07-04 Intel Corporation Direct link synchronization communication between co-processors
US9626216B2 (en) * 2012-05-09 2017-04-18 Nvidia Corporation Graphics processing unit sharing between many applications
CN102810294A (zh) * 2012-08-01 2012-12-05 京东方科技集团股份有限公司 一种显示方法、装置及系统
TWI540466B (zh) 2012-09-06 2016-07-01 財團法人工業技術研究院 可摺疊式顯示器及其影像處理方法
DE102013219581B4 (de) * 2012-10-02 2016-11-24 Nvidia Corporation Apparat, Verfahren und Computer-Programm-Produkt zum Bereitstellen einer dynamischen Anzeigeauffrischung
US8797340B2 (en) * 2012-10-02 2014-08-05 Nvidia Corporation System, method, and computer program product for modifying a pixel value as a function of a display duration estimate
US8937623B2 (en) 2012-10-15 2015-01-20 Apple Inc. Page flipping with backend scaling at high resolutions
US9489245B2 (en) * 2012-10-26 2016-11-08 Nvidia Corporation Work-queue-based graphics processing unit work creation
US9135081B2 (en) * 2012-10-26 2015-09-15 Nvidia Corporation Work-queue-based graphics processing unit work creation
US20140184629A1 (en) * 2012-12-31 2014-07-03 Nvidia Corporation Method and apparatus for synchronizing a lower bandwidth graphics processor with a higher bandwidth display using framelock signals
US9086813B2 (en) * 2013-03-15 2015-07-21 Qualcomm Incorporated Method and apparatus to save and restore system memory management unit (MMU) contexts
US9646412B1 (en) * 2013-07-19 2017-05-09 Dassault Systemes Solidworks Corporation Pre-sorted order independent transparency
US9940686B2 (en) * 2014-05-14 2018-04-10 Intel Corporation Exploiting frame to frame coherency in a sort-middle architecture
JP6812973B2 (ja) * 2015-08-11 2021-01-13 ソニー株式会社 情報処理装置、および情報処理方法、並びにプログラム
JP6489985B2 (ja) * 2015-09-24 2019-03-27 ルネサスエレクトロニクス株式会社 プログラム開発支援装置およびプログラム開発支援ソフトウェア
US10068554B2 (en) 2016-08-02 2018-09-04 Qualcomm Incorporated Systems and methods for conserving power in refreshing a display panel
KR102606693B1 (ko) * 2016-08-23 2023-11-28 삼성전자 주식회사 전자 장치 및 전자 장치의 동작 제어 방법
US10147227B2 (en) * 2017-02-17 2018-12-04 Microsoft Technology Licensing, Llc Variable rate shading
US10115223B2 (en) * 2017-04-01 2018-10-30 Intel Corporation Graphics apparatus including a parallelized macro-pipeline
CN107220019B (zh) * 2017-05-15 2021-01-08 固安县朔程燃气有限公司 一种基于动态vsync信号的渲染方法、移动终端及存储介质
JP6612292B2 (ja) 2017-05-17 2019-11-27 株式会社ソニー・インタラクティブエンタテインメント 変換システム、映像出力装置及び変換方法
CA3010471C (en) * 2017-07-06 2024-04-23 Aidan Fabius Display buffering methods and systems
US10853965B2 (en) 2017-08-07 2020-12-01 Standard Cognition, Corp Directional impression analysis using deep learning
US10474988B2 (en) 2017-08-07 2019-11-12 Standard Cognition, Corp. Predicting inventory events using foreground/background processing
US10445694B2 (en) 2017-08-07 2019-10-15 Standard Cognition, Corp. Realtime inventory tracking using deep learning
US10474991B2 (en) 2017-08-07 2019-11-12 Standard Cognition, Corp. Deep learning-based store realograms
US11200692B2 (en) 2017-08-07 2021-12-14 Standard Cognition, Corp Systems and methods to check-in shoppers in a cashier-less store
US11232687B2 (en) 2017-08-07 2022-01-25 Standard Cognition, Corp Deep learning-based shopper statuses in a cashier-less store
US11250376B2 (en) 2017-08-07 2022-02-15 Standard Cognition, Corp Product correlation analysis using deep learning
US11023850B2 (en) 2017-08-07 2021-06-01 Standard Cognition, Corp. Realtime inventory location management using deep learning
US10650545B2 (en) 2017-08-07 2020-05-12 Standard Cognition, Corp. Systems and methods to check-in shoppers in a cashier-less store
US11232531B2 (en) * 2017-08-29 2022-01-25 Intel Corporation Method and apparatus for efficient loop processing in a graphics hardware front end
US10957020B2 (en) * 2017-12-04 2021-03-23 Nvidia Corporation Systems and methods for frame time smoothing based on modified animation advancement and use of post render queues
CN108156520B (zh) * 2017-12-29 2020-08-25 珠海市君天电子科技有限公司 视频播放方法、装置、电子设备及存储介质
US10636392B2 (en) * 2018-05-02 2020-04-28 Apple Inc. Electronic display partial image frame update systems and methods
US10269167B1 (en) 2018-05-21 2019-04-23 Apple Inc. Indirect command buffers for graphics processing
CA3044477A1 (en) 2018-06-01 2019-12-01 Gregory Szober Display buffering methods and systems
JP6499364B1 (ja) * 2018-09-26 2019-04-10 株式会社Cygames 情報処理プログラム、端末装置、及び情報処理方法
CN111400024B (zh) * 2019-01-03 2023-10-10 百度在线网络技术(北京)有限公司 渲染过程中的资源调用方法、装置和渲染引擎
US11164496B2 (en) 2019-01-04 2021-11-02 Channel One Holdings Inc. Interrupt-free multiple buffering methods and systems
US11232575B2 (en) 2019-04-18 2022-01-25 Standard Cognition, Corp Systems and methods for deep learning-based subject persistence
CN112925592A (zh) * 2019-12-05 2021-06-08 超威半导体公司 渲染主页面的内核软件驱动的颜色重新映射
US11303853B2 (en) 2020-06-26 2022-04-12 Standard Cognition, Corp. Systems and methods for automated design of camera placement and cameras arrangements for autonomous checkout
US11361468B2 (en) 2020-06-26 2022-06-14 Standard Cognition, Corp. Systems and methods for automated recalibration of sensors for autonomous checkout
TWI756771B (zh) * 2020-08-05 2022-03-01 偉詮電子股份有限公司 影像轉換方法
CN115225615B (zh) * 2022-06-30 2024-02-23 如你所视(北京)科技有限公司 虚幻引擎像素流送方法及装置
CN115223516B (zh) * 2022-09-20 2022-12-13 深圳市优奕视界有限公司 图形渲染与lcd驱动一体化芯片及相关方法和设备

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2575885B1 (fr) * 1985-01-04 1987-02-20 Thomson Csf Renforcateur de contraste pour images video
GB2181318B (en) * 1985-10-04 1989-12-28 Sony Corp Two-dimensional finite impulse response filters
WO1992009947A1 (en) * 1990-11-30 1992-06-11 Vpl Research, Inc. Method and apparatus for rendering graphical images
FR2680292B1 (fr) * 1991-08-09 1993-11-12 Sgs Thomson Microelectronics Sa Filtre bidimensionnel a reponse impulsionnelle finie.
JP3278525B2 (ja) * 1994-02-28 2002-04-30 株式会社東芝 周波数データ変換装置およびメータ装置
JPH10187124A (ja) * 1996-12-24 1998-07-14 Sony Corp 描画装置および描画方法
JP2000514987A (ja) * 1997-03-12 2000-11-07 松下電器産業株式会社 Hdtvダウン変換システムのためのアップサンプリングフィルタおよび半画素生成器
DE69909437T2 (de) * 1998-02-17 2004-04-15 Sun Microsystems, Inc., Santa Clara Graphisches system mit superabtasten mit veränderlicher auflösung
US6188394B1 (en) * 1998-08-28 2001-02-13 Ati Technologies, Inc. Method and apparatus for video graphics antialiasing
US6243107B1 (en) * 1998-08-10 2001-06-05 3D Labs Inc., Ltd. Optimization of a graphics processor system when rendering images
US6374279B1 (en) * 1999-02-22 2002-04-16 Nvidia U.S. Investment Company System and method for increasing dual FIR filter efficiency
US6496160B1 (en) * 1999-04-29 2002-12-17 Evans & Sutherland Computer Corporation Stroke to raster converter system
US6353439B1 (en) * 1999-12-06 2002-03-05 Nvidia Corporation System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline
US6452595B1 (en) * 1999-12-06 2002-09-17 Nvidia Corporation Integrated graphics processing unit with antialiasing
US6646688B1 (en) * 2000-11-10 2003-11-11 Koninklijke Philips Electronics N.V. High quality video and graphics pipeline
US6680739B1 (en) * 2000-11-17 2004-01-20 Hewlett-Packard Development Company, L.P. Systems and methods for compositing graphical data
US6919900B2 (en) * 2001-03-23 2005-07-19 Microsoft Corporation Methods and systems for preparing graphics for display on a computing device
US7038690B2 (en) * 2001-03-23 2006-05-02 Microsoft Corporation Methods and systems for displaying animated graphics on a computing device
US6885374B2 (en) * 2001-06-29 2005-04-26 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a time allocator
JP2003029713A (ja) * 2001-07-06 2003-01-31 Internatl Business Mach Corp <Ibm> 液晶表示装置、液晶ディスプレイ駆動回路、液晶ディスプレイの駆動方法、およびプログラム
US7234144B2 (en) * 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
US6778188B2 (en) * 2002-02-28 2004-08-17 Sun Microsystems, Inc. Reconfigurable hardware filter for texture mapping and image processing
US6731288B2 (en) * 2002-03-01 2004-05-04 3Dlabs Inc., Ltd. Graphics engine with isochronous context switching
DE60317001D1 (de) * 2002-03-12 2007-12-06 Sun Microsystems Inc Dynamische Anpassung der Musterdichte und/oder der Anzahl der Wiedergabedurchgänge in einem Graphiksystem
US6776186B2 (en) * 2002-06-07 2004-08-17 Machine Design Specialists, Inc. Dispensing tool for evacuating and charging a fluid system
US20050140688A1 (en) * 2003-12-29 2005-06-30 Kim Pallister Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems

Also Published As

Publication number Publication date
KR20070091356A (ko) 2007-09-10
US20060132491A1 (en) 2006-06-22
US7586492B2 (en) 2009-09-08
KR20090045349A (ko) 2009-05-07
WO2006068985A3 (en) 2007-01-11
CN101080698B (zh) 2010-08-11
WO2006068985A2 (en) 2006-06-29
CN101080698A (zh) 2007-11-28
KR100902973B1 (ko) 2009-06-15
JP2008524720A (ja) 2008-07-10
TW200632775A (en) 2006-09-16
TWI406185B (zh) 2013-08-21

Similar Documents

Publication Publication Date Title
JP4620129B2 (ja) プログラム可能なハードウェアを用いたリアルタイムディスプレイの後処理
US10120187B2 (en) Sub-frame scanout for latency reduction in virtual reality applications
US6816161B2 (en) Vertex assembly buffer and primitive launch buffer
US6806883B2 (en) System and method for handling display device requests for display data from a frame buffer
US5835096A (en) Rendering system using 3D texture-processing hardware for accelerated 2D rendering
US5701444A (en) Three-dimensional graphics subsystem with enhanced support for graphical user interface
US5727192A (en) Serial rendering system with auto-synchronization on frame blanking
US5798770A (en) Graphics rendering system with reconfigurable pipeline sequence
US5764243A (en) Rendering architecture with selectable processing of multi-pixel spans
US5764228A (en) Graphics pre-processing and rendering system
US7941645B1 (en) Isochronous pipelined processor with deterministic control
US6025853A (en) Integrated graphics subsystem with message-passing architecture
US8074224B1 (en) Managing state information for a multi-threaded processor
US5815166A (en) Graphics subsystem with slaveable rasterizer
US6924808B2 (en) Area pattern processing of pixels
US6864892B2 (en) Graphics data synchronization with multiple data paths in a graphics accelerator
US7484076B1 (en) Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q&lt;P)
US7545380B1 (en) Sequencing of displayed images for alternate frame rendering in a multi-processor graphics system
US6952217B1 (en) Graphics processing unit self-programming
US7310103B2 (en) Pipelined 2D viewport clip circuit
US6833831B2 (en) Synchronizing data streams in a graphics processor
US6867778B2 (en) End point value correction when traversing an edge using a quantized slope value
US6963342B2 (en) Arbitration scheme for efficient parallel processing
US7145570B2 (en) Magnified texture-mapped pixel performance in a single-pixel pipeline
US6885375B2 (en) Stalling pipelines in large designs

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100820

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100928

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101027

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4620129

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250