説明

グラフィックスシステム、自動グラフィックス動作方法およびグラフィックスプロセッサ

【課題】 選択可能なトリガリングメカニズムを用いて自動的に各種グラフィックス動作を実現するための方法および装置を提供する。
【解決手段】 ホストコンピュータと、ホストコンピュータに接続されたフレームバッファメモリと、ホストコンピュータおよびフレームバッファメモリに接続されているグラフィックスプロセッサであって、第1のグラフィックス動作を開始する第1のトリガリング回路、およびプログラマブルレジスタを有し、第1のトリガリング回路に接続されているブロック転送エンジンであって、フレームバッファメモリへの転送および該フレームファイルメモリからの転送を制御し、かつ、プログラマブルレジスタの内容に基づき、第1のトリガリング回路に応答して第1のグラフィックス動作を実行する、ブロック転送エンジンを有しているグラフィックスプロセッサと、を備える。

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は高性能グラフィックスシステムの分野に関する。より詳細には、本発明はホストコンピュータとグラフィックスプロセッサとの間のインタフェースおよびインタラクションに関する。
【0002】
【従来の技術】典型的な高性能グラフィックスアプリケーションは、各種汎用能力を有するホストコンピュータ、および専用の各種グラフィック動作を実行する特殊ハードウェアグラフィックスプロセッサから構成される。グラフィックスプロセッサは、例えば直線を描く動作、ブロックを塗りつぶす動作、ブロック転送(BLT)といった時間のかかる各種タスクを実行する内蔵型ハードウェア回路を備えている。また、大多数のグラフィックスプロセッサは、ビデオ表示用のビデオ制御信号を発生するようにプログラムすることが可能である。ホストコンピュータは、グラフィックスプロセッサに対してコマンドを送り、その全ソフトウェアの一部としてグラフィックスプロセッサからステータスを受け取る。ホストからコマンドを受け取るとただちに、グラフィックスプロセッサは、各種動作を独立して実行することができる。また、ホストは、内部レジスタにアクセスすることによって、またはある場合にはグラフィックスプロセッサ信号をモニタすることによって、グラフィックスプロセッサの状態を読み取ることができる。しかし、情報をやりとりする際には、それでもいくらかのオーバーヘッドがもたらされることになる。このような問題は、ホストが一連のコマンドをグラフィックスプロセッサに送ることを望む場合には、より顕著になる。したがって、グラフィックス動作およびビデオ制御機能を管理するタスクをホストに負わせないようにするためには、ホストとグラフィックスプロセッサとの間のインタラクションを最適化することが必要である。
【0003】
【発明が解決しようとする課題】いくつかのインタラクションスキームをホストは採用することができる。まず、ポーリングスキームの場合には、ホストは(例えば状態ビットを読み取ることによって)グラフィックスプロセッサをモニタし、それによって直前の1セットのコマンドが遂行されたどうかを判定することができる。その結果、ホストは新しいセットのコマンドを送ることが可能になる。このポーリングスキームの最も深刻な欠点は、ホストの時間が浪費されることである。なぜなら、ホストは、全グラフィックシーケンスが遂行されるまでその通常の機能に戻ることができないからである。次に、割り込みスキームの場合には、グラフィックスプロセッサは、1セットのコマンドを完了した時に、割り込み信号をホストに送ることができる。この割り込みスキームに伴う問題は、ホストが応答可能になるまでに依然としてアイドル時間が存在することであり、連続的に割り込みをおこなうとホストの能率が低下する可能性があることである。したがって、ホストとグラフィックスプロセッサとが互いに依存する度合いを緩和できるように、ホストとグラフィックスプロセッサとの間のインタラクションを最小限にとどめることを可能にする、さらに優れたインタラクションスキームを開発するのが望ましい。
【0004】アニメーションやビデオの処理にあたっては、インタラクションの問題はさらに深刻になる。このような用途では、2種類の更新レートがある。すなわちアニメーション更新(またはイメージ更新)とスクリーンリフレッシュの2つである。アニメーション更新レートとは、古いイメージを新しいイメージに置き換える際のレートのことである。スクリーンリフレッシュレートとは、ビデオコントローラが新しい垂直帰線サイクルを開始する際のレートのことである。アニメーション更新レートが、イメージシーケンスの性格や、グラフィックスプロセッサの速度に依存する一方で、スクリーンリフレッシュレートは、表示モニタのタイプや、プログラムされたビデオ制御パラメータに依存する。これら2つの更新レートは、互いに全く独立したものである。
【0005】表示メモリにおけるイメージを更新するスキームとしては、基本的には2つのスキームがある。第1のスキームにおいては、表示が更新されている間に表示メモリに書き込みがおこなわれる。表示メモリのどの部分が現在表示されており、また、どの部分が現在変更されているかということに関して、両者の調整が図られることはないので、表示には「バンディング(banding)」あるいは「ティアリング(tearing)」と呼ばれる悪影響が及ぼされることがある。その場合、古いイメージの一部と新しいイメージの一部とが表示されるので、イメージがジャンプしたり、歪んだりする。第2のスキームにおいては、新しいイメージまたは新しいイメージの一部が、目に見えないメモリスペースに書き込まれる。スクリーンリフレッシュがバンディングが起こりうる点を過ぎるとき、このメモリの内容が表示メモリに転送される。このスキームに伴う問題は、転送コマンドを送るのに安全な点にいつスクリーンリフレッシュがいたるかということを、ホストが独立して予測できないことである。この理由としては、スクリーンリフレッシュがホストから独立した動作であること、および表示クロックとホストクロックとの間には何の関係もないことが挙げられる。割り込みの場合でも、ソフトウェアオーバーヘッド、初期化および信頼性に関わる問題が依然としてある。
【0006】本発明は、上記課題を解決するためになされたものであり、その目的とするところは、以上の従来技術の概略から明らかなように、遅延を最小限にとどめ、グラフィックに悪影響が及ぼされる事態を回避するために、ホストとグラフィックスプロセッサとの間のインタラクションスキームを最適化することにある。そうすれば、ホストの介入なしに、各種グラフィックス動作を自動的に実行することが可能となる。
【0007】
【課題を解決するための手段】本発明によるグラフィックスシステムは、自動的にグラフィックス動作を実行するグラフィックスシステムであって、ホストコンピュータと、該ホストコンピュータに接続されたフレームバッファメモリと、該ホストコンピュータおよび該フレームバッファメモリに接続されているグラフィックスプロセッサであって、第1のグラフィックス動作を開始する第1のトリガリング回路、およびプログラマブルレジスタを有し、該第1のトリガリング回路に接続されているブロック転送エンジンであって、該フレームバッファメモリへの転送および該フレームファイルメモリからの転送を制御し、かつ、該プログラマブルレジスタの内容に基づき、該第1のトリガリング回路に応答して該第1のグラフィックス動作を実行する、ブロック転送エンジンを有しているグラフィックスプロセッサと、を備えており、そのことにより上記目的が達成される。
【0008】ある実施形態では、前記グラフィックスプロセッサが、前記ブロック転送エンジンに接続されており、第2のグラフィックス動作を開始する第2のトリガリング回路をさらに備えており、該ブロック転送エンジンにおける前記プログラマブルレジスタが、該プログラマブルレジスタの内容に基づき、該第2のトリガリング回路に応答して該第2のグラフィックス動作を実行する。
【0009】ある実施形態では、前記グラフィックスプロセッサが、複数のプログラマブルレジスタの内容に基づき、前記第1のトリガリング回路または前記第2のトリガリング回路に応答して複数のグラフィックス動作を実行する、前記プログラマブルレジスタを複数個備えている。
【0010】ある実施形態では、前記プログラマブルレジスタが、垂直走査線の最小値と該垂直走査線の最大値とを格納する複数のレジスタからなる。
【0011】ある実施形態では、前記プログラマブルレジスタが、イネーブルビットが第1のイネーブル状態にある時には前記第1のトリガリング回路をトリガし、該イネーブルビットが第2のイネーブル状態にある時には前記第2のトリガリング回路をトリガするイネーブルビットを有している。
【0012】ある実施形態では、前記グラフィックスプロセッサが垂直カウンタ値をインクリメントするビデオ制御回路をさらに備えており、前記イネーブルビットが前記第1のイネーブル状態にある時に前記第1のトリガリング回路がトリガされ、かつ、該垂直カウンタ値が、前記垂直走査線の前記最小値と前記最大値との間の値である。
【0013】ある実施形態では、1サブセットの前記プログラマブルレジスタの内容に基づいて前記第1のグラフィックス動作が実行され、該1サブセットの該プログラマブルレジスタが、第1および第2の連鎖イネーブル状態を有する連鎖イネーブルビットと、次のサブセットの該プログラマブルレジスタのアドレスを示す少なくとも1つの位置ポインタと、を含んでいる。
【0014】ある実施形態では、前記グラフィックスプロセッサが、前記次のサブセットの前記プログラマブルレジスタの内容を前記アドレスから取り出し、前記連鎖イネーブルビットが前記第1の連鎖イネーブル状態にある時には前記第1のグラフィックス動作を実行し、かつ、該連鎖イネーブルビットが前記第2の連鎖イネーブル状態にある時には通常のモードに戻る。
【0015】本発明による自動グラフィックス動作方法は、ホストコンピュータに接続されたフレームバッファメモリを設けるステップと、第1のグラフィックス動作を開始する第1のトリガリング回路を有するグラフィックスプロセッサであって、該ホストコンピュータおよび該フレームバッファメモリに接続されているグラフィックスプロセッサを設けるステップと、該第1のトリガリング回路に接続されており、該フレームバッファメモリからの転送および該フレームバッファメモリへの転送を制御するブロック転送エンジンであって、プログラマブルレジスタの内容に基づき、該第1のトリガリング回路に応答して該第1のグラフィックス動作を実行するのに用いられるプログラマブルレジスタを有している、ブロック転送エンジンを設けるステップと、を含んでおり、そのことにより上記目的が達成される。
【0016】ある実施形態では、前記グラフィックスプロセッサを設ける前記ステップが、前記ブロック転送エンジンに接続されており、第2のグラフィックス動作を開始する第2のトリガリング回路を設けるステップをさらに備えており、該ブロック転送エンジンにおける前記プログラマブルレジスタが、該プログラマブルレジスタの内容に基づき、該第2のトリガリング回路に応答して該第2のグラフィックス動作を実行する。
【0017】ある実施形態では、前記ブロック転送エンジンを設ける前記ステップが、複数のプログラマブルレジスタの内容に基づき、前記第1のトリガリング回路または前記第2のトリガリング回路に応答して複数のグラフィックス動作を実行する前記プログラマブルレジスタを複数個設けるステップをさらに備えている。
【0018】ある実施形態では、前記ブロック転送エンジンを設ける前記ステップにおいて、前記プログラマブルレジスタが、垂直走査線の最小値と該垂直走査線の最大値とを格納する複数のレジスタからなる。
【0019】ある実施形態では、前記ブロック転送エンジンを設ける前記ステップにおいて、前記プログラマブルレジスタが、イネーブルビットが第1のイネーブル状態にある時には前記第1のトリガリング回路をトリガし、該イネーブルビットが第2のイネーブル状態にある時には前記第2のトリガリング回路をトリガするイネーブルビットを有している。
【0020】ある実施形態では、前記グラフィックスプロセッサを設ける前記ステップにおいて、前記グラフィックスプロセッサが垂直カウンタ値をインクリメントするビデオ制御回路をさらに備えており、前記イネーブルビットが前記第1のイネーブル状態にある時に前記第1のトリガリング回路がトリガされ、かつ、該垂直カウンタ値が、前記垂直走査線の前記最小値と前記最大値との間の値である。
【0021】ある実施形態では、前記グラフィックスプロセッサを設ける前記ステップにおいて、1サブセットの前記プログラマブルレジスタの内容に基づいて前記第1のグラフィックス動作が実行され、該1サブセットの該プログラマブルレジスタが、第1および第2の連鎖イネーブル状態を有する連鎖イネーブルビットと、次のサブセットの該プログラマブルレジスタのアドレスを示す少なくとも1つの位置ポインタと、を含んでいる。
【0022】ある実施形態では、前記グラフィックスプロセッサを設ける前記ステップにおいて、前記グラフィックスプロセッサが、前記次のサブセットの前記プログラマブルレジスタの内容を前記アドレスから取り出し、前記連鎖イネーブルビットが前記第1の連鎖イネーブル状態にある時には前記第1のグラフィックス動作を実行し、かつ、該連鎖イネーブルビットが前記第2の連鎖イネーブル状態にある時には通常のモードに戻る。
【0023】本発明によるグラフィックスプロセッサは、ホストコンピュータおよびフレームバッファメモリに接続されており、自動的にグラフィックス動作を実行するグラフィックスプロセッサであって、第1のグラフィックス動作を開始する第1のトリガリング回路と、プログラマブルレジスタを有し、該第1のトリガリング回路に接続されているブロック転送エンジンであって、該プログラマブルレジスタの内容に基づき、該第1のトリガリング回路に応答して該第1のグラフィックス動作を実行する、ブロック転送エンジンと、を備えており、そのことにより上記目的が達成される。
【0024】ある実施形態では、前記ブロック転送エンジンに接続されており、第2のグラフィックス動作を開始する第2のトリガリング回路をさらに備えており、該ブロック転送エンジンにおける前記プログラマブルレジスタが、該プログラマブルレジスタの内容に基づき、該第2のトリガリング回路に応答して該第2のグラフィックス動作を実行する。
【0025】ある実施形態では、前記グラフィックスプロセッサが、複数のプログラマブルレジスタの内容に基づき、前記第1のトリガリング回路または前記第2のトリガリング回路に応答して複数のグラフィックス動作を実行する前記プログラマブルレジスタを複数個備えている。
【0026】ある実施形態では、前記プログラマブルレジスタが、垂直走査線の最小値と該垂直走査線の最大値とを格納する複数のレジスタからなる。
【0027】ある実施形態では、前記プログラマブルレジスタが、イネーブルビットが第1のイネーブル状態にある時には前記第1のトリガリング回路をトリガし、該イネーブルビットが第2のイネーブル状態にある時には前記第2のトリガリング回路をトリガするイネーブルビットを有している。
【0028】ある実施形態では、前記グラフィックスプロセッサが垂直カウンタ値をインクリメントするビデオ制御回路をさらに備えており、前記イネーブルビットが前記第1のイネーブル状態にある時に前記第1のトリガリング回路がトリガされ、かつ、該垂直カウンタ値が、前記垂直走査線の前記最小値と前記最大値との間の値である。
【0029】ある実施形態では、1サブセットの前記プログラマブルレジスタの内容に基づいて前記第1のグラフィックス動作が実行され、該1サブセットの該プログラマブルレジスタが、第1および第2の連鎖イネーブル状態を有する連鎖イネーブルビットと、次のサブセットの該プログラマブルレジスタのアドレスを示す少なくとも1つの位置ポインタと、を含んでいる。
【0030】ある実施形態では、前記グラフィックスプロセッサが、前記次のサブセットの前記プログラマブルレジスタの内容を前記アドレスから取り出し、前記連鎖イネーブルビットが前記第1の連鎖イネーブル状態にある時には前記第1のグラフィックス動作を実行し、かつ、該連鎖イネーブルビットが前記第2の連鎖イネーブル状態にある時には通常のモードに戻る。
【0031】以下に作用を説明する。
【0032】本発明は、新規なハードウェア内蔵型の特徴を多数含む高性能グラフィックスプロセッサを備えている。本発明のグラフィックスプロセッサの重要な部分は、中央コントローラとして作用し、フェッチおよびプロセスを開始し、リクエストを格納するBLTエンジンである。このBLTエンジンの、本発明に関わる主要な特徴は、自動トリガリングにある。自動BLTは、以下に示す2つの方法のいずれかによってトリガされる。すなわち、(1)スクリーン垂直カウントが所定値に達したとき、あるいは(2)トリガビットがホストにより設定されるとき、の2つである。第1の方法によれば、ホストは、CRTコントローラにおける安全領域を指定するために値をプログラムし、垂直カウンタがこの安全な範囲に達すると、BLTがトリガされることになる。この方法により、ホストプロセッサの介入なしに、スクリーンリフレッシュを用いてイメージを更新する際の同期の問題を解決することができる。第2の方法においては、ホストは、自動BLTをトリガする時間を直接に制御することができる。
【0033】自動BLTの間に、BLTに対する各種変数は、フレームバッファから制御パスへと転送されなければならない。これらの変数には、ソースおよびデスティネーションの位置および範囲、ならびに連鎖における次のBLTのソースが含まれる。1シーケンスのBLT動作の連鎖は、グラフィックスプロセッサにおけるLNCNTLレジスタのビットを設定することによって実現される。
【0034】本発明は、自動グラフィックス動作を実現するために、CRT制御トリガリングメカニズムおよびグラフィックスプロセッサの自動的連鎖を活用する。
【0035】第1の構成によれば、ホストは、1セットのグラフィックス動作をバッファメモリにおける目に見えない部分(オフスクリーンメモリ)における一連のヘッダファイルとして組み立てる。各ヘッダファイルは、レジスタデータとグラフィックス制御データとを含んでいる。ヘッダファイルにおける最後のエントリは、実行すべき次の動作を指示する。最後のヘッダファイルは、連鎖プロセスをディセーブルするLNCNTL用の値を含んでいる。1シーケンスのヘッダファイルをオフスクリーンメモリに書き込んだ後、ホストはグラフィックスプロセッサに実行開始のコマンドを与え、第1のヘッダファイルの位置を与える。グラフィックスプロセッサは、これらのヘッダファイルを読み取り、ディセーブルされた連鎖ビットを含むヘッダに到達するまで、指定された各種グラフィックス動作を実行する。この時点において、すべての動作が完了する。全期間を通じて、ホストはその通常のタスクを自由に実行することができる。
【0036】第2の構成によれば、上述したケースと同様に、ホストは1シーケンスのヘッダファイルを組み立てる。さらに、ホストは、グラフィックス動作を開始する点が含まれる垂直走査線範囲を指定できるように、レジスタをプログラムする。すると、ホストは、自由にその通常のタスクに戻ることができる。CRTコントローラが指定された垂直走査線範囲内にあるときには、グラフィックスプロセッサは、上述したケースと同様に、グラフィックス動作を開始する。
【0037】
【発明の実施の形態】本発明は、典型的な好ましい実施形態の説明により、最もよく理解することができる。
【0038】図1は、グラフィックスシステムの典型的構成例を図示している。ホストコンピュータ10は、メモリ、周辺機器およびグラフィックスプロセッサとの間のインタフェースとして作用するだけの通常のパワーおよび能力を有する汎用のプロセッサであればどんなものでもよい。グラフィックスプロセッサ20は、グラフィックス動作およびビデオ制御機能をより高速に実行する、内蔵型ハードウェア回路を有するプロセッサである。ホストコンピュータ10は、インタフェースバス30を介してグラフィックスプロセッサ20と通信する。ホストコンピュータ10およびグラフィックスプロセッサ20の両者ともに、フレームバッファメモリ40から情報を得ることができる。また、グラフィックスプロセッサ20は、表示モニタ50に対してビデオおよび各種ビデオ制御信号を発生する。
【0039】好ましい実施形態においては、ホストコンピュータ10は、例えばインテルX86型グラフィックスプロセッサやパワーPCプロセッサのような拡張型プロセッサ20を備えている。グラフィックスプロセッサ20は、例えばビデオ制御機能、BLTエンジンおよび自動BLT動作のようなハードウェア内蔵の各種特徴を備えた高性能グラフィックスコントローラである。また、インタフェースバス30は、周辺機器相互接続(PCI)ローカルバスでも、VLビデオエレクトロニクス標準接続(VESA)ローカルバスでもよい。PCIバスおよびVLバスは、ホストと、例えばグラフィックスコントローラのような周辺機器とを局所的に相互接続するために広く用いられているバスである。PCIバスは、フレームバッファメモリ40へのアクセスに際しては、ホストに対するインタフェースとして作用する。
【0040】図2は、図1のグラフィックスプロセッサ20を図示する詳細ブロック図である。
【0041】以下の各種特徴は、すべて本発明に関わるものである。
【0042】1.ホストインタフェース52グラフィックスプロセッサ20は、どのようなPCIローカルバスあるいはVLローカルバス30にも直接に接続される。また、グラフィックスプロセッサ20は、フレームバッファメモリ40に対するインタフェースとして作用する。フレームバッファメモリ40は、少なくとも(1)加速された表示領域、(2)SVGA(スーパーVGA)表示領域、および(3)オートBLTパラメータ領域の3つに割り当てることができる。オートBLTパラメータ領域は、ホスト10がヘッダファイルを書き込み、グラフィックスプロセッサ20がヘッダファイルを取り出す領域である。
【0043】2.BLTエンジン54BLTエンジン54は、グラフィックス動作に対するマスタコントローラである。BLTエンジン54は、データがフレームバッファメモリ40から内部スタティックRAM56へとフェッチされるようにし、画素パス制御動作を開始し、かつ、その結果がフレームバッファメモリ40、SRAM56またはホスト10に格納しなおされるようにする。
【0044】BLTエンジン54は、コマンドパイプから受け取ったコマンドを復号化する。これらのコマンドは、通常、ホストインタフェース52を通して伝えられてくる。BLTエンジン54は、各種低レベルグラフィックス機能において用いられる複数のレジスタ56のすべてを含んでいる。これらのレジスタ56は、フレームバッファ40、SRAM56、およびBLTの範囲に対するポインタを含んでおり、BLTのソースおよび制御レジスタのサイズを再び決める。
【0045】3.グラフィックス加速器レジスタグラフィックスプロセッサ20は、BLTエンジン54内に位置決めされており、メモリ空間の16キロバイトを占めるメモリマップされたレジスタ56としてアクセス可能である、1セットのグラフィックス加速器レジスタ56を有している。これらのレジスタ56は、典型的にはホスト10による書き込みの対象となり、グラフィックスプロセッサ20によって実行される各種グラフィックス動作をセットアップする。関連するレジスタ56をいくつか以下に掲げる。
【0046】LNCNTL:ライン制御およびオートBLT制御フラグCOMMAND:コマンド/データレジスタOP{0〜2}_opRDRAM:カラーRDRAMアドレスレジスタRESIZE(A〜C)_opRDRAM:自動BLTヘッダソースアドレスレジスタSTART_BLT_i(i=1、2、3):ウィンドウi(i=1、2、3)のオートBLTをスタートするSTOP_BLT_i(i=1、2、3):ウィンドウi(i=1、2、3)のオートBLTをストップするLNCNTL(ライン制御)レジスタは16ビットを有している。また、LNCNTLレジスタは、複数のオートBLTを連鎖させるのに用いられる連鎖イネーブルビットも有している。このビットがハイである時、オートBLTは新しいヘッダを(完全である場合には)フェッチする。ローである時には、連鎖は終了する。
【0047】COMMANDレジスタは、32ビットである。このレジスタは、ホストとBLTエンジンとの間のライトFIFOに直接アクセスすることを可能にする。
【0048】CONTROLレジスタは16ビットである。このレジスタは、コマンドパイプおよびリード/ライトFIFOの各部分の状態を制御し、それらの状態をリターンする。CONTROLレジスタは、AUTO_BLT_ENビットを有している。AUTO_BLT_ENが0である時、オートBLTアーム/トリガメカニズムがディセーブルされる。1である時には、メカニズムは通常どおりに動作する。
【0049】OP{0〜2}_opRDRAMレジスタは、32ビットであり、RDRAMのXおよびYアドレスを選択されたOFU(オペランドフェッチユニット)に供給する。OP0_opRDRAMレジスタは、結果として得られたXバイトおよびYラインアドレスを格納することができる。
【0050】RESIZE{A〜C}_opRDRAMレジスタは、32ビットであり、自動リサイズBLTに対するソースアドレスと、自動グラフィックス動作用の制御ビットとを含んでいる。各レジスタは、CRTコントローラから与えられた適切な垂直カウントによってトリガされる別個のソースアドレスを含んでいる。また、各レジスタは、TRIGGERおよびARMからなる2つの制御ビットを有している。TRIGGERビットは、オートBLTをトリガするために用いられる。TRIGGERがハイである時、レジスタに書き込みがおこなわれるとただちににオートBLTがトリガされる。TRIGGERがローである時には、レジスタはCRTコントローラが適切な垂直カウントに達するのを待つ。ARMビットは、自動BLTを準備するために用いられる。ARMがハイである時、自動BLTはアームド(armed)になる。つまり、CRTコントローラが適切な垂直カウントに達すると、オートBLTがスタートすることになる。ARMがローである時、オートBLTは外部からアームドにされねばならない。これらの制御ビットは、以下のように要約される。
【0051】トリガアーム 動作0 0 外部からアームド0 1 自動的にアームドされる。垂直カウントに達するとトリガする。
【0052】1 0 レジスタに書き込みが行われるとただちにオートBLTをトリガする。
【0053】1 1 無効RESIZE{A〜C}_opRDRAMの残りのビットは、ソースデータがRDRAMメモリに存在する垂直および水平方向の位置を指定するために用いられる。
【0054】START_BLT_1の8ビットレジスタは、スキャンリフレッシュ時にどこで(32スキャンラインの倍数単位で)ウィンドウ1のオートBLTがイネーブルされるかを規定し、それによってウィンドウのティアリングを防止する。オートBLTは、 START_BLT_1≦現在のスキャンライン<STOP_BLT_1である時にイネーブルされる。このレジスタは、RESIZEA_opRDRAMのビット31が1である時にディセーブルされる。
【0055】STOP_BLT_1の8ビットレジスタは、スキャンリフレッシュ時にどこで(32スキャンラインの倍数単位で)ウィンドウ1のオートBLTがディセーブルされるかを規定し、それによってウィンドウのティアリングを防止する。このレジスタは、RESIZEA_opRDRAMのビット31が1である時にディセーブルされる。また、このレジスタのビット7(MSB)は、ウィンドウ1をイネーブルするのに用いられる。もしこのビットが1であるのなら、ウィンドウ1はイネーブルされる。一方、もしこのビットが0であるのなら、ウィンドウ1はディセーブルされる。つまり、オートBLTはトリガされない。
【0056】START_BLT_1は、STOP_BLT_1とは違っていなければならない。
【0057】START_BLT_2、STOP_BLT_2、START_BLT_3およびSTOP_BLT_3は、それぞれRESIZEB_opRDRAMおよびRESIZEC_opRDRAMが代わりに用いられる点を除いて同様である。したがって、互いに異なる3つの安全領域を用いて、3つのウィンドウを同時にアクティブに設定することができる。
【0058】START_BLT_iおよびSTOP_BLT_i(i=1、2、3)は、垂直カウント値によってトリガされるオートBLTに対応する安全領域を規定することによって、悪影響を全く及ぼすことなく、各種グラフィックス動作を実行する。
【0059】自動BLT動作自動BLT動作を実現するためには、2つのことをする必要がある。第1に、実行すべきグラフィックス動作を指定するためには、ヘッダファイルを作成しなければならない。このヘッダファイルは、本来、グラフィックスエンジンにロードされるグラフィックス変数を含んでいる。第2に、ヘッダファイルを作成した後に、トリガリングメカニズムを選択しなければならない。
【0060】1.ヘッダファイルヘッダファイルは、適切なグラフィックスエンジンにロードされるべきデータを含んでいる。ヘッダファイルは、ホストによってフレームバッファメモリ40の目に見えない領域に書き込まれる。グラフィックスプロセッサは、このヘッダファイルを読み出し、指定された複数のレジスタをそのヘッダファイルに含まれている複数の値で満たす。ヘッダファイルにおいてその値が指定されるレジスタは28個ある。それぞれの値が16ビットを必要としているので、ヘッダファイルを満たすのに必要な総バイト数は56となる。ヘッダファイルにおけるレジスタの順番には従わなければならない。
【0061】2.トリガリングメカニズム自動BLT動作は、スクリーンリフレッシュおよびホスト直接制御の2つの方法のいずれかによってトリガすることができる。
【0062】(1)スクリーンリフレッシュグラフィックスプロセッサ20は、例えば水平sync、垂直syncおよび画素クロックのような各種ビデオ制御信号を発生する固有のビデオ制御回路を有している。いったん初期化されると、グラフィックスプロセッサ20は、BLTエンジン54およびホスト10から独立して、これらの信号を発生する。スクリーンリフレッシュは、ビデオスクリーンが新しいイメージによって更新されるメカニズムとして参照される。このことは、本質的に垂直syncによって要求されることである。グラフィックスプロセッサ20は、垂直ラインカウントをインクリメントする垂直syncカウンタを有している。アニメーションやビデオなどに適用する際には、イメージの更新とスクリーンリフレッシュとの間の同期をとることによって、表示に悪影響が及ぼされる事態を回避することが重要である。
【0063】RESIZE{A〜C}_opRDRAMにおけるTRIGGERビットおよびARMビットが、それぞれ0および1にプログラムされている時、垂直syncトリガリングメカニズムがイネーブルされる。START_BLT_iおよびSTOP_BLT_iレジスタは、オートBLTがトリガされる垂直カウント範囲を与える。垂直カウント値が対応するSTART_BLT_iを超えると、(グラフィックスエンジンが他のタスクを実行するのに忙しくなければ)オートBLTがただちにスタートする。グラフィックスエンジンが他のタスクを実行するのに忙しいのなら、グラフィックスエンジンはそのタスクを完了した後(垂直カウント値が対応するSTOP_BLT_iにおける値未満である限り)ただちにオートBLT動作をスタートする。したがって、START_BLT_i値およびSTOP_BLT_i値によって、オートBLT動作をスタートできる最も早いフレームタイムと最も遅いフレームタイムとが得られる。いったんスタートされると、オートBLT動作は、垂直カウント値には関わりなく、最後まで実行される。したがって、現在表示されているイメージの全部または一部に上書きすることなく、グラフィックス動作を安全かつ確実に進めることができるようにするためには、START_BLT_iおよびSTOP_BLT_iに書き込まれる値を慎重に選択しなければならない。
【0064】スクリーンリフレッシュによってこのオートBLT動作をおこなうためのレジスタとしては、3セットの独立したレジスタがあるのだから、スクリーン上の3つのウィンドウをそれぞれ独立してリフレッシュする(例えば、更新する)ことができる。
【0065】図3は、オートBLTレジスタと、スクリーン上のウィンドウとの間の対応関係を図示している。スクリーン110は、イメージを表示するモニタのスクリーンである。スクリーン上におけるウィンドウ111、112および113は、スクリーン上に表示され、同時にアクティブとなる3つのウィンドウである。パラメータセット121、122および123は、ウィンドウ111、112および113にそれぞれ対応している。ウィンドウ111、112および113の位置は、パラメータセット121、122および123における値によってそれぞれ指定される。これらパラメータセットの位置は、RESIZE{A〜C}_opRDRAMにより指定される。垂直ライントリガリング用の安全領域は、対応するSTART_BLT_iおよびSTOP_BLT_iレジスタにおいて指定される。
【0066】図4は、ホスト10とグラフィックスプロセッサ20との間のインタラクションを説明するフローチャートを図示している。ブロック200は、ホスト10により実行される各ステップを含んでいる。ブロック220は、グラフィックスプロセッサ20により実行される各ステップを含んでいる。どちらのブロックにおいても、ホストコンピュータ10は、各種周辺機器の保守管理や、メインプログラムの実行や、割り込みへの応答といった、実行すべき通常のタスクが他にあるものとする。同様に、グラフィックスプロセッサ20にも、例えばビデオ制御信号の発生といった専念すべき通常のタスクが他にある。ホストコンピュータ10が自動グラフィックス動作を開始する準備ができた状態になると、ホスト10は、まず、1個のヘッダファイルあるいは1シーケンスのヘッダファイルを作成する。この場合、(後述するように)連鎖が用いられることになる。ステップ210において、ホスト10は、ヘッダファイルの56バイトをバッファメモリ40に書き込む。ステップ211において、ホスト10は、安全領域を確定するために、垂直走査線のスタート値およびストップ値を書き込む。3つのアクティブウィンドウ、または3セットの自動グラフィックス動作に対応して、3つ以下の安全領域を確定することができる。ステップ212において、ホスト10は、対応するRESIZE{A〜C}_opRDRAMレジスタのTRIGGERを0に、ARMを1にプログラムすることによって、スクリーンリフレッシュトリガリングメカニズムをイネーブルする。グラフィックスプロセッサ20がこれらの値によってプログラムされるとすぐに、グラフィックスプロセッサ20は自動動作の準備完了状態になる。すると、ホスト10は、ステップ213でその通常のタスクに戻ることができる。ブロック220は、グラフィックスプロセッサによって実行される各ステップを示している。以下の説明では、ただ1つのウィンドウがアクティブであると仮定する。ただし、好ましい実施形態では、3つのウィンドウを同時にイネーブルすることができる。ステップ221において、もしホスト10がスクリーンリフレッシュトリガリングのオプションをイネーブルしていないのなら、ステップ230に示されているように、グラフィックスプロセッサ20は通常の動作を継続する。いったんスクリーンリフレッシュトリガリングのオプションがイネーブルされると、グラフィックスプロセッサ20は、内部垂直カウンタと、ホスト10によってプログラムされたスタート値およびストップ値との比較をイネーブルする。この比較は、グラフィックスエンジンから独立したハードウェアによりなされるので、グラフィックスプロセッサ20は、このタスクのみに縛られるわけではない。各動作の終了時にはいつも、ステップ222に示すように、グラフィックスプロセッサ20はこの比較の結果をチェックする。もし垂直カウンタが安全領域により確定された範囲外にあるのなら、グラフィックスエンジンは、ステップ230で通常の動作を継続する。一方、もし垂直カウンタがこの範囲内にあれば、ステップ223に示すように、グラフィックスエンジンは通常の動作を中断し、自動BLTヘッダをフェッチする。次に、これらの値がレジスタに格納された(ステップ224)後、ステップ225で自動BLTが実行される。いったん自動BLTが完了すると、グラフィックスプロセッサ20はステップ221に戻る。
【0067】(2)ホスト直接制御スクリーンリフレッシュトリガリングメカニズムによってBLT動作とスクリーンリフレッシュとの間の同期をとることが可能になるとはいえ、ホストにより自動BLT動作を直接に制御するほうが望ましい状況もある。換言すれば、グラフィックスエンジンは、ホスト10によってプログラムされた後ただちに、オートBLT動作を実行することになる。
【0068】図5は、ホスト10とグラフィックスプロセッサ20との間のインタラクションを説明するフローチャートを図示している。ブロック300はホストにより実行される各ステップからなり、ブロック320はグラフィックスプロセッサにより実行される各ステップからなる。(1)の場合と同様に、ホスト10は、ステップ301でまずヘッダファイルをセットアップする。ホスト10がオートBLT動作の準備完了状態になると、ステップ302で、ホスト10はTRIGGERビットおよびARMビットをそれぞれ1および0にプログラムする。すると、ホスト10は、ステップ303で通常のタスクに戻ることができる。グラフィックスプロセッサの側では、もしステップ321でホスト10が自動BLTをトリガしていないのなら、ステップ330で通常の動作が継続される。一方、もしトリガがイネーブルされているのなら、ステップ322で自動動作がスタートする。
【0069】グラフィックス動作の連係たしかに各ヘッダファイルはグラフィックス動作を完全におこなうのに十分な情報を含んではいるが、多数のヘッダファイルを連鎖させることによって、ホスト10を割り込ませずに1シーケンスのグラフィックス動作を実行可能とするのが望ましい。そうすれば、非常に複雑なグラフィックスタスクを遂行することができる。これは、グラフィックスエンジンには連鎖イネーブルビットが存在するのであるから、実現可能である。連鎖をイネーブルするには、LNCNTLレジスタの連鎖イネーブルビットを用いる。このビットがハイであれば連鎖はイネーブルされ、ローであれば連鎖はディセーブルされる。各ヘッダファイルは、次のヘッダファイルに対するポインタを有している。これらのポインタは、NEXT_HEAD.pt.x.およびNEXT_HEAD.pt.y.である(なお、バッファメモリの目に見えない領域は、目に見える領域を2次元的に拡大したものとみなされること、および、ヘッダファイルは、ライン上のどの位置(X値)を選択してもよいのと同様に、どの「ライン」(Y値)に書き込んでもよいことには注意が必要である)。連鎖がイネーブルされると、第1のBLT動作が完了した後、グラフィックスエンジンは、NEXT_HEAD.pt.x.およびNEXT_HEAD.pt.y.により指定された位置から新しいパラメータセットを読み出し、新しいBLTを実行する。LNCNTLの連鎖イネーブルビットがローとなり、現在のヘッダファイルがシーケンスにおける最後のヘッダファイルであることが示されるまで、連鎖は継続される。
【0070】連鎖は、トリガリングメカニズムとは独立している。したがって、上述したように、スクリーンリフレッシュまたはホストのいずれかによって、1シーケンスのオートBLT動作を連鎖させ、トリガすることができる。
【0071】図6は、連鎖と表示との間の対応関係を説明する図である。表示スクリーン400は、3つのアクティブウィンドウWA401、WBB’402およびWC403を示す通常のスクリーンである。レジスタセットRA411、RB412およびRC413は、それぞれWA、WBB’およびWCに対応するXY位置および安全領域を指定するためのレジスタを含んでいる。ヘッダメモリ領域HA414およびHC417は、0であり連鎖をディセーブルするLNCNTL連鎖イネーブルビットを含んでいる。したがって、オートBLT動作は、ヘッダメモリ領域HA414およびHC417のみにおいて指定されるとおりに実行される。ヘッダメモリ領域HBは、連鎖を有している。すなわち、その連鎖ビットは1である。HBにおける次のヘッダポインタがHB’416を指示しており、HB’ヘッダは0である連鎖イネーブルビットを含んでいると仮定する。その場合、ヘッダメモリ領域BにおけるBLT動作が完了すると、グラフィックスエンジンは、HB’ヘッダメモリ領域に含まれているパラメータをフェッチし、そのBLT動作を実行する。HB’BLT動作が完了した後、グラフィックスエンジンはその通常のモードに戻る。したがって、ウィンドウWBB’402は、HBおよびHB’における2つのBLT動作の結果を示している。
【0072】スクリーンリフレッシュあるいはホスト10のいずれかによりトリガされる自動グラフィックス動作と、連鎖法とを組み合わせることによって、ホストの大幅なオーバーヘッドをもたらすことなく、非常に複雑で強化されたグラフィックス動作を実行することができる。したがって、ホストのインタラクションを最小限にとどめることができる。本質的には、グラフィックスプログラムは、ホスト10によってバッファメモリ40内に作成されうるものであり、また、本発明による連鎖を用いることによって、ホストの介入なしに、そのようなグラフィックスプログラムを実行し、結果を表示することができる。
【0073】最後に一言付け加えておくと、以上に本発明による自動グラフィックス動作を好ましい実施形態に即して開示し、説明してきたが、本発明の装置および方法には、本発明の着想および範囲を超えることなくさまざまな改変を加えることが可能であることは理解されたい。
【0074】
【発明の効果】本発明によれば、遅延を最小限にとどめ、グラフィックに悪影響が及ぼされる事態を回避するために、ホストとグラフィックスプロセッサとの間のインタラクションスキームを最適化するグラフィックスシステムを提供することができる。
【図面の簡単な説明】
【図1】ホストコンピュータおよびビデオ制御を備えた典型的グラフィックスシステムを示すブロック図である。
【図2】図1のグラフィックスプロセッサ20を示す詳細ブロック図である。
【図3】1シーケンスのヘッダファイルとグラフィックス表示との間の対応関係を示す図である。
【図4】スクリーンリフレッシュトリガリングメカニズムを用いて自動BLT動作を実行するための各ステップを示すフローチャートである。
【図5】ホストトリガリングメカニズムを用いて自動BLT動作を実行するための各ステップを示すフローチャートである。
【図6】ヘッダファイルの連鎖を示す図である。
【符号の説明】
20 グラフィックスプロセッサ
30 インタフェースバス
40 フレームバッファメモリ
54 BLTエンジン
56 内部スタティックRAM

【特許請求の範囲】
【請求項1】 ホストプロセッサとグラフィックスディスプレイとに接続して、該グラフィックスディスプレイ上に表示された画像を更新する際の該ホストプロセッサと該グラフィックスプロセッサとの間の相互作用を最小にするグラフィックスプロセッサであって、該グラフィックスディスプレイに接続して、制御するビデオ制御回路と、垂直線カウント値をカウントする垂直線カウンタと、該ホストプロセッサに接続して、自動グラフィックス動作を該グラフィックスプロセッサにより実行されるように設定する、複数のプログラマブルレジスタと、該グラフィックスディスプレイ上に表示された画像を更新するトリガに応答してグラフィックス動作を自動的に実行するブロック転送エンジンとを含む、グラフィックスプロセッサ。
【請求項2】 前記トリガが、前記垂直線カウンタによってカウントされた前記垂直線カウント値が前記複数のプログラマブルレジスタ内に格納された安全な垂直線カウント値の範囲内にあるときに起こるスクリーンリフレッシュトリガであり、前記ブロック転送エンジンが、該安全な垂直線カウント値の範囲内にある前記垂直線カウント値に応答したスクリーンリフレッシュ中に、前記グラフィックスディスプレイ上に表示された画像を更新するグラフィックス動作を自動的に実行する、請求項1に記載のグラフィックスプロセッサ。
【請求項3】 前記グラフィックスプロセッサが、前記垂直線カウンタによってカウントされた前記垂直線カウント値と、前記安全な垂直線カウント値の範囲を規定するスタート値およびストップ値とを比較する、請求項2に記載のグラフィックスプロセッサ。
【請求項4】 前記トリガが、前記グラフィックスプロセッサに接続された前記ホストプロセッサによって前記複数のプログラマブルレジスタのうちの1つに書込みが行われたときに起こるホスト直接制御トリガであり、前記ブロック転送エンジンが、該ホストプロセッサが該複数のプログラマブルレジスタのうちの1つに書込みを行った直後に、前記グラフィックスディスプレイ上に表示された画像を更新するグラフィックス動作を自動的に実行する、請求項1に記載のグラフィックスプロセッサ。
【請求項5】 前記グラフィックスプロセッサは、フレームバッファリングを提供するメモリに接続されたメモリ制御ユニットをさらに含み、該メモリ制御ユニットが、該メモリ内の、少なくとも1つのヘッダファイルが前記ホストプロセッサによって格納されている目に見えないメモリ位置を読み出し、該ヘッダファイルが、該グラフィックスプロセッサによって行われるべきグラフィックス動作と該グラフィックスプロセッサの前記複数のプログラマブルレジスタにロードされるべきグラフィックス変数とを特定する、請求項1に記載のグラフィックスプロセッサ。
【請求項6】 前記グラフィックスプロセッサは、前記ホストコンピュータによって中断されることなく動作するように、前記少なくとも1つのヘッダファイルが少なくとも1つの別のヘッダファイルに連鎖されて該グラフィックスプロセッサのための一連の自動グラフィックス動作を連鎖させることを示す、前記複数のレジスタのうちの1つの1ビットを有しており、該少なくとも1つのヘッダファイルが該少なくとも1つの別のヘッダファイルの位置に対するポインタを含む、請求項5に記載のグラフィックスプロセッサ。
【請求項7】 前記複数のレジスタのうちの1つが、前記少なくとも1つのヘッダファイルを含む前記メモリ位置をポイントするアドレスを含む、請求項5に記載のグラフィックスプロセッサ。
【請求項8】 グラフィックスディスプレイ上に表示された画像を更新する際のホストプロセッサとグラフィックスプロセッサとの間の相互作用を最小にする方法であって、該グラフィックスディスプレイを制御するビデオ制御回路と、垂直線カウント値をカウントする垂直線カウンタと、複数のレジスタと、該グラフィックスディスプレイ上に画像を表示するトリガに応答してグラフィックス動作を自動的に実行するブロック転送エンジンとを有する該グラフィックスプロセッサを提供するステップと、該ホストプロセッサが、自動グラフィックス動作を該グラフィックスプロセッサに接続されたメモリに格納するステップと、該グラフィックスプロセッサが、メモリを読み出して自動グラフィックス動作を決定し、該自動グラフィックス動作に関連するパラメータを該複数のレジスタに格納するステップであって、該パラメータのセットが、該自動グラフィックス動作を自動的にスタートさせるための安全な垂直線カウント値の範囲を含む該複数のレジスタに格納される、ステップと、該グラフィックスプロセッサが、比較を行って、該垂直線カウント値が該安全な垂直線カウント値の範囲内にあるか否かを決定するステップと、該比較が該垂直線カウント値が該安全な垂直線カウント値の範囲内にあると決定した場合に、該グラフィックスプロセッサが、該自動グラフィックス動作を自動的に実行するステップとを包含する方法。

【図1】
image rotate


【図3】
image rotate


【図6】
image rotate


【図2】
image rotate


【図4】
image rotate


【図5】
image rotate


【公開番号】特開2002−175174(P2002−175174A)
【公開日】平成14年6月21日(2002.6.21)
【国際特許分類】
【出願番号】特願2001−280826(P2001−280826)
【分割の表示】特願平8−290658の分割
【出願日】平成8年10月31日(1996.10.31)
【出願人】(595158337)シーラス ロジック,インコーポレイテッド (44)
【氏名又は名称原語表記】Cirrus Logic,Inc.
【住所又は居所原語表記】3100 West Warren Avenue,Fremont,California 94538,U.S.A.
【Fターム(参考)】