(57)【特許請求の範囲】
【請求項１】
連続して与えられる複数の画素データを画像メモリに連続的に読み込みおよび書き込み処理する画像メモリ制御装置であって、
与えられた第１の画素データを前記画像メモリ内に記憶する記憶手段と、
記憶された前記第１の画素データの座標と当該第１の画素データの次に連続して与えられた第２の画素データの座標とを比較する座標比較手段と、
前記第１の画素データの有効性を示すデータフラグと前記第２の画素データの有効性を示すデータフラグとを比較するデータフラグ比較手段と、
前記座標比較手段の比較結果および前記データフラグ比較手段の比較結果から、前記第２の画素データの処理待機を制御する待機制御手段と、
を有し、
前記待機制御手段は、前記第１の画素データの前記座標と、前記第２の画素データの前記座標とが同じ場合であり、且つ前記第１の画素データの前記データフラグと、前記第２の画素データの前記データフラグとの少なくとも一方が無効である場合、前記第１の画素データの処理の後に前記第２の画素データの処理を待機させることなく連続して行う
画像メモリ制御装置。
【請求項２】
前記待機制御手段は、前記第１の画素データの前記データフラグと、前記第２の画素データの前記データフラグとの両方が有効である場合、前記第２の画素データの処理を所定時間待機させる
請求項１記載の画像メモリ制御装置。
【請求項３】
前記第１および第２の画素データから前記画像メモリ内にアドレスを生成するアドレス生成手段と、
生成された前記アドレスを記憶するアドレス記憶手段と、
を更に有し、
前記座標比較手段では、前記アドレス記憶手段に記憶された前記第１の画素データのアドレスと、前記アドレス生成手段で生成された前記第２の画素データのアドレスとを比較する
請求項１記載の画像メモリ制御装置。
【請求項４】
立体モデルを複数の単位図形を組み合わせて２次元画面上に表現するグラフィック演算装置であって、
前記単位図形を形成する画素データを記憶する画像メモリと、
前記画素データの有効画素データフラグを記憶するデータフラグ記憶手段と、新たに処理する新規画素データを、当該新規画素データの直前に処理された画素データに連続して処理する演算手段と、
前記データフラグ記憶手段において記憶された前記画素データの有効画素データフラグと、前記新規画素データの新規有効画素データフラグを比較するデータフラグ比較手段と、
前記データフラグ比較手段によるデータフラグ比較結果を参照して前記新規画素データの処理のウェイト制御を行うウェイト制御手段と、
を有するグラフィック演算装置。
【請求項５】
更に、前記画素データに対応して前記画像メモリ内にアドレスを生成するアドレス生成手段と、
生成された前記アドレスを記憶するアドレス記憶手段と、前記アドレス記憶手段に記憶されている前記画素データのアドレスを読み出す読み出し制御手段と、読み出された前記アドレスと、前記新規画素データの新規アドレスとを演算して比較するアドレス演算比較手段と、
前記新規アドレスの演算比較されたデータを前記画像メモリに書き込む書き込み制御手段と、
を更に有し、
前記ウェイト制御手段は、前記データフラグ比較結果と共に、前記アドレス演算比較手段のアドレス比較結果を参照して前記ウェイト制御を行う
請求項４記載のグラフィック演算装置。
【請求項６】
前記グラフィック演算装置は、複数の前記画像メモリを有し、
複数の前記画像メモリは、前記２次元画面上の複数の画素を組として、同一の組を構成する前記複数の画素のいずれかの前記画素データを記憶し、
前記アドレス生成手段は、前記組を構成する前記複数の画素に同一の前記アドレスを生成し、前記読み出し制御手段は、前記生成されたアドレスを用いて、前記組を構成する前記複数の画素の前記画素データを同時に読み出し、
前記演算手段は、前記組を構成する前記複数の画素の前記画素データを同時に演算し、
前記書き込み制御手段は、前記生成されたアドレスを用いて、前記組を構成する前記複数の画素の前記画素データを同時に書き込む
請求項５記載のグラフィック演算装置。
【請求項７】
記憶手段と、座標比較手段と、データフラグ比較手段と、待機制御手段と、を有し、連続して与えられる複数の画素データを画像メモリに連続的に読み込みおよび書き込み処理する画像メモリ制御装置のレンダリング処理方法であって、
前記記憶手段が、処理する新規画素データを受け取り、
前記座標比較手段が、前回処理した旧画素データと前記新規画素データのアドレスが一致するかどうかを判断し、
前記データフラグ比較手段が、前記旧画素データと前記新規画素データのｖａｌｉｄフラグが有効かどうかを判断し、
前記待機制御手段が、前記旧画素データと前記新規画素データのアドレスが一致し、且つ前記旧画素データと前記新規画素データのうち少なくとも一方のｖａｌｉｄフラグが無効である場合に、前記旧画素データの後に前記新規画素データを待機させることなく連続処理する要求を行う
レンダリング処理方法。
【請求項８】
前記待機制御手段が、前記旧画素データと前記新規画素データのアドレスが一致し、且つ前記旧画素データと前記新規画素データのｖａｌｉｄフラグが有効である場合に、前記旧画素データの処理と前記新規画素データの処理との間にウェイト処理する要求を行う
請求項７記載のレンダリング処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、リードモディファイライト操作を高速に実現できる画像メモリ制御装置、グラフィック演算装置およびレンダリング処理方法に関する。
【０００２】
【従来の技術】
種々のＣＡＤ(Computer Aided Design)システムや、アミューズメント装置などにおいて、コンピュータグラフィックスがしばしば用いられている。特に、近年の画像処理技術の進展に伴い、３次元コンピュータグラフィックスを用いたシステムが急速に普及している。このような３次元コンピュータグラフィックスでは、各画素（ピクセル）に対応する色を決定するときに、各画素の色の値を計算し、この計算した色の値を、当該画素に対応するディスプレイバッファ（フレームバッファ）のアドレスに書き込むレンダリング(Rendering)処理を行う。レンダリング処理の手法の一つに、ポリゴン（Polygon）レンダリングがある。この手法では、立体モデルを三角形の単位図形（ポリゴン）の組み合わせとして表現しておき、このポリゴンを単位として描画を行うことで、表示画面の色を決定する。
【０００３】
ポリゴンレンダリングでは、物理座標系における三角形の各頂点についての、座標（ｘ，ｙ，ｚ）と、色データ（Ｒ，Ｇ，Ｂ，α）と、張り合わせのイメージパターンを示すテクスチャデータの同次座標（ｓ，ｔ）および同次項ｑの値とを入力とし、これらの値を三角形の内部で補間する処理が行われる。ここで、同次項ｑは、簡単にいうと、拡大縮小率のようなもので、実際のテクスチャバッファのＵＶ座標系における座標、すなわち、テクスチャ座標データ（ｕ，ｖ）は、同次座標（ｓ，ｔ）を同次項ｑで除算した「ｓ／ｑ」および「ｔ／ｑ」に、それぞれテクスチャサイズＵＳＩＺＥおよびＶＳＩＺＥを乗じたものとなる。このようなポリゴンレンダリングを用いた３次元コンピュータグラフィックシステムでは、描画を行う際に、テクスチャデータをテクスチャメモリから読み出し、この読み出したテクスチャデータをモデルの表面に貼り付けるテクスチャマッピング処理を行う。このテクスチャマッピング処理された画像データは、所定の処理を施された後に、ディスプレイメモリ（フレームメモリ）に書き込まれる。なお、上述した画像データは、有効な画素及び無効な画素からなる。
【０００４】
【発明が解決しようとする課題】
ところで、上述した３次元コンピュータグラフィックシステムでは、例えばテクスチャマッピング処理された画像データは、フレームメモリから読み出された画像データの間でいくつかの演算の処理を行い、フレームメモリに書き込む、リードモディファイライト操作を行う。このようなリードモディファイライト操作は、同一の座標の画像データに関して、必ず前回のリードモディファイライト操作が終了している必要がある。そのため、同一の座標を処理する場合は、前回のリードモディファイライト動作の終了を待ってからリードモディファイライト操作を行っており、リードモディファイライト操作に時間がかかっていた。
【０００５】
本発明は、このような技術的課題に基づいてなされたもので、高速なリードモディファイライト操作を実現できる画像メモリ制御装置等を提供することを主たる目的とする。
【０００６】
かかる目的のもと、本発明の画像メモリ制御装置は、連続して与えられる複数の画素データを画像メモリに連続的に読み込みおよび書き込み処理する画像メモリ制御装置であって、与えられた第１の画素データを前記画像メモリ内に記憶する記憶手段と、記憶された前記第１の画素データの座標と当該第１の画素データの次に連続して与えられた第２の画素データの座標とを比較する座標比較手段と、前記第１の画素データの有効性を示すデータフラグと前記第２の画素データの有効性を示すデータフラグとを比較するデータフラグ比較手段と、前記座標比較手段の比較結果および前記データフラグ比較手段の比較結果から、前記第２の画素データの処理待機を制御する待機制御手段と、を有し、前記待機制御手段は、前記第１の画素データの前記座標と、前記第２の画素データの前記座標とが同じ場合であり、且つ前記第１の画素データの前記データフラグと、前記第２の画素データの前記データフラグとの少なくとも一方が無効である場合、前記第１の画素データの処理の後に前記第２の画素データの処理を待機させることなく連続して行う。
【０００７】
また、本発明のグラフィック演算装置は、立体モデルを複数の単位図形を組み合わせて２次元画面上に表現するグラフィック演算装置であって、前記単位図形を形成する画素データを記憶する画像メモリと、前記画素データの有効画素データフラグを記憶するデータフラグ記憶手段と、新たに処理する新規画素データを、当該新規画素データの直前に処理された画素データに連続して処理する演算手段と、前記データフラグ記憶手段において記憶された前記画素データの有効画素データフラグと、前記新規画素データの新規有効画素データフラグを比較するデータフラグ比較手段と、前記データフラグ比較手段によるデータフラグ比較結果を参照して前記新規画素データの処理のウェイト制御を行うウェイト制御手段と、を有する。
【０００８】
また、本発明のレンダリング処理方法は、記憶手段と、座標比較手段と、データフラグ比較手段と、待機制御手段と、を有し、連続して与えられる複数の画素データを画像メモリに連続的に読み込みおよび書き込み処理する画像メモリ制御装置のレンダリング処理方法であって、前記記憶手段が、処理する新規画素データを受け取り、前記座標比較手段が、前回処理した旧画素データと前記新規画素データのアドレスが一致するかどうかを判断し、前記データフラグ比較手段が、前記旧画素データと前記新規画素データのｖａｌｉｄフラグが有効かどうかを判断し、前記待機制御手段が、前記旧画素データと前記新規画素データのアドレスが一致し、且つ前記旧画素データと前記新規画素データのうち少なくとも一方のｖａｌｉｄフラグが無効である場合に、前記旧画素データの後に前記新規画素データを待機させることなく連続処理する要求を行う。
【００１５】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいてこの発明を詳細に説明する。
図１は、本実施の形態の３次元コンピュータグラフィックシステム（グラフィック演算装置）１のシステム構成例を示す図である。３次元コンピュータグラフィックシステム１は、任意の３次元物体モデルに対する所望の３次元画像をＬＣＤ(Liquid Crystal Display)などのディスプレイ上に高速に表示することができるものであり、例えば、ゲーム機や携帯型情報端末などに適用されるものである。
【００１６】
３次元コンピュータグラフィックシステム１は、メインメモリ２、メインバスコントローラ３、ＣＰＵ４、ベクトル演算回路５、Ｉ／Ｏインターフェース回路７、曲面処理回路・ジオメトリ演算回路８、外部メモリコントローラ９、レンダリング回路１０（画像メモリ制御装置）、グラフィックメモリ１１を備え、それぞれメインバス６を介して接続されている。Ｉ／Ｏインターフェース回路７は外部インターフェース部５０に接続され、外部メモリコントローラ９は外部メモリ５１に接続され、レンダリング回路１０は図示しないインターフェース部を介してＬＣＤ（液晶ディスプレイ）５２に接続されている。
【００１７】
図２は、図１に示すレンダリング回路１０の構成例を示す図である。
レンダリング回路１０は、図２に示すように、ＤＤＡ(Digital Differential Anarizer)セットアップ回路１１０、トライアングルＤＤＡ回路１１１、テクスチャエンジン回路１１２、メモリＩ／Ｆ回路１１３（座標比較手段、データフラグ比較手段、待機制御手段、ウェイト制御手段）、ＬＣＤコントローラ回路１１４およびＳＲＡＭ１１５（画像メモリ）を有する。ＳＲＡＭ１１５は、テクスチャデータを記憶するテクスチャバッファ１２０、ＬＣＤに出力してディスプレイに表示する表示データを記憶するディスプレイバッファ１２１、ｚデータを記憶するｚバッファ１２２を備えている。
【００１８】
この３次元コンピュータグラフィックシステム１では、立体モデルを単位図形である三角形（ポリゴン）の組み合わせとして表現し、このポリゴンを描画することで表示画面の各画素の色を決定し、ディスプレイに表示するポリゴンレンダリング処理を行う。また、３次元コンピュータグラフィックシステム１では、平面上の位置を表現する（ｘ，ｙ）座標の他に、奥行きを表すｚ座標を用いて３次元物体を表し、この（ｘ，ｙ，ｚ）の３つの座標で３次元空間の任意の一点を特定する。
【００１９】
ここで、ポリゴンレンダリングデータの説明をする。ポリゴンレンダリングデータは、ポリゴンの各３頂点の（ｘ，ｙ，ｚ，Ｒ，Ｇ，Ｂ，α，ｓ，ｔ，ｑ，Ｆ）のデータを含んでいる。
（ｘ，ｙ，ｚ）データは、ポリゴンの頂点の３次元座標を示している。
（Ｒ，Ｇ，Ｂ）データは、それそれ（ｘ，ｙ，ｚ）の３次元座標における赤、緑、青の輝度値を示している。
αデータは、これから描画する画素と、ディスプレイバッファ１２１に既に記憶されている画素とのＲ，Ｇ，Ｂデータのブレンド（混合）係数を示している。
（ｓ，ｔ，ｑ）データのうち、（ｓ，ｔ）は、対応するテクスチャの同次座標を示しており、ｑは同次項を示している。ここで、「ｓ／ｑ」および「ｔ／ｑ」に、それぞれテクスチャサイズＵＳＩＺＥおよびＶＳＩＺＥを乗じてテクスチャ座標データ（ｕ，ｖ）が得られる。テクスチャバッファ１２０に記憶されたテクスチャデータへのアクセスは、テクスチャ座標データ（ｕ，ｖ）を用いて行われる。
Ｆデータは、フォグのα値を示している。すなわち、ポリゴンレンダリングデータは、三角形の各頂点の物理座標値と、それぞれの頂点の色とテクスチャおよびフォグの値のデータを示している。
【００２０】
以下、３次元コンピュータグラフィックシステム１における各構成要素の機能および画像処理について説明する。
３次元コンピュータグラフィックシステム１では、ＣＰＵ４は、例えば、アプリケーションの進行状況などに応じて、メインメモリ２から必要なシーンデータをベクトル演算回路５へ送出する。ベクトル演算回路５は、グラフィックデータを生成し、曲面処理回路・ジオメトリ演算回路８へ送出する。
【００２１】
曲面処理回路・ジオメトリ演算回路８は、このグラフィックデータに対してクリッピング(Clipping)処理、ライティング(Lighting)処理、ジオメトリ(Geometry)処理等を行い、ポリゴンレンダリングデータＳ１０９を生成する。生成されたポリゴンレンダリングデータＳ１０９を、ＣＰＵ４が、メインバス６を介してレンダリング回路１０に出力する。
また、Ｉ／Ｏインタフェース回路７は、必要に応じて、外部からポリゴンレンダリングデータＳ１０９を入力し、入力されたデータをメインバス６を介してレンダリング回路１０に出力する。
【００２２】
レンダリング回路１０において、図２に示すＤＤＡセットアップ回路１１０は、次のトライアングルＤＤＡ回路１１１において物理座標系上の三角形各頂点の値を線形補間して三角形の内部の各画素の色と深さ情報を求めるに先立ち、ポリゴンレンダリングデータＳ１０９が示す（ｚ，Ｒ，Ｇ，Ｂ，α，ｓ，ｔ，ｑ，Ｆ）データについてセットアップ演算を行う。このセットアップ演算は三角形の辺と水平方向の差分などを求めるものであり、具体的には、開始点の値と終点の値と、開始点と終点との距離を用いて、単位長さ移動した場合における、求めようとしている値の変分を算出する。ＤＤＡセットアップ回路１１０は、算出した変分データＳ１１０をトライアングルＤＤＡ回路１１１に出力する。
【００２３】
トライアングルＤＤＡ回路１１１は、ＤＤＡセットアップ回路１１０から出力され変分データＳ１１０を用いて、三角形内部の各画素における線形補間された（ｚ，Ｒ，Ｇ，Ｂ，α，ｓ，ｔ，ｑ，Ｆ）データを算出する。トライアングルＤＤＡ回路１１１は、各画素の（ｘ，ｙ）データと、当該（ｘ，ｙ）座標における（ｚ，Ｒ，Ｇ，Ｂ，α，ｓ，ｔ，ｑ，Ｆ）データとを、ＤＤＡデータ（補間データ）Ｓ１１１としてテクスチャエンジン回路１１２に出力する。このとき、トライアングルＤＤＡ回路１１１は、並行して処理を行う矩形内に位置する４（＝２×２）画素分のＤＤＡデータＳ１１１をテクスチャエンジン回路１１２に出力する。また、ＤＤＡデータＳ１１１は、４（＝２×２）画素分データのうち、各画素における有効データを示すｖａｌｉｄフラグを含む。
【００２４】
ここで、４（＝２×２）画素およびｖａｌｉｄフラグの説明をする。
図３は、画素による図形の描写の説明図である。図４は、４（＝２×２）画素におけるｖａｌｉｄフラグの説明図であり、(a)はフラグを有する組の位置を示し、(b)はＤＤＡデータＳ１１１のデータ例を示している。
図３では、画素６０がマトリックス状にｘｙ方向へ連続して並んでいる。この個々の画素６０における有効と無効、並びに有効な場合における色等を制御することで、例えば図３に示すような三角形６１を描画する。具体的にこの三角形６１は、三角形６１内の画素６０が有効(enable)となり、それ以外の画素６０が無効(disable)となり、有効な画素６０の色等が制御されて描画されている。このような制御において、本実施の形態では４（＝２×２）画素ごとにデータの処理が行われている。例えば４（＝２×２）の画素グループ６２を例に取り上げて説明する。
【００２５】
図３に示す画素グループ６２は、図４(a)に示すようにｖａｌｉｄフラグを有する４つの組(i)〜(iv)から構成されている。ここでは、有効の場合が"１"で表され、無効の場合が"０"で表されている。すなわち、画素グループ６２のＤＤＡデータＳ１１１では、個々の組(i)〜(iv)は、図４(b)に示すように有効か無効かのデータを有する。さらにＤＤＡデータＳ１１１は、アドレスとして（ｘ，ｙ）データと、そのアドレスにおける（ｚ，Ｒ，Ｇ，Ｂ，α，ｓ，ｔ，ｑ，Ｆ）データを有する。なおアドレスは、(i)の組におけるアドレスが決定すれば、おのずと他の隣接するアドレスも決定される。例えば(i)の組が（ｘ，ｙ）であれば、(ii)は（ｘ＋１，ｙ）、(iii)は（ｘ，ｙ−１）、(iv)は（ｘ−１，ｙ−１）となる。したがって、ＤＤＡデータＳ１１１における、(ii)〜(iv)の組におけるアドレスは処理必要時に計算によって適宜算出される。
なお、本実施の形態では、このように各画素グループ６２におけるレンダリングデータが刻々と処理されることにより、例えば三角形６１の位置、大きさ、色、その他が変化して動画が作成される。
【００２６】
このようなＤＤＡデータＳ１１１をトライアングルＤＤＡ回路１１１から受け取ったテクスチャエンジン回路１１２は、「ｓ／ｑ」および「ｔ／ｑ」の算出処理、テクスチャ座標データ（ｕ，ｖ）の算出処理、テクスチャバッファ１２０からの（Ｒ，Ｇ，Ｂ，α）データの読み出し処理、および、混合処理（αブレンディング処理）を順にパイプライン方式で行う。なお、テクスチャエンジン回路１１２は、所定の矩形内に位置する４画素についての処理を同時に並行して行う。
【００２７】
具体的には、まずテクスチャエンジン回路１１２は、ＤＤＡデータＳ１１１が有する（ｓ，ｔ，ｑ）データについて、ｓデータをｑデータで除算する演算と、ｔデータをｑデータで除算する演算とを行う。そして、除算結果である「ｓ／ｑ」および「ｔ／ｑ」に、それぞれテクスチャサイズＵＳＩＺＥおよびＶＳＩＺＥを乗じて、テクスチャ座標データ（ｕ，ｖ）を生成する。
【００２８】
また、テクスチャエンジン回路１１２は、メインバス６を介してメインメモリ２に、あるいはメモリＩ／Ｆ回路１１３を介して、ＳＲＡＭ１１５に、前記生成したテクスチャ座標データ（ｕ，ｖ）を含む読み出し要求を出力し、メインバス６を介してメインメモリ２に、あるいはメモリＩ／Ｆ回路１１３を介して、ＳＲＡＭ１１５に記憶されているテクスチャ座標データ（ｕ，ｖ）を読み出すことで、（ｓ，ｔ）データに対応したテクスチャアドレスに記憶された（Ｒ，Ｇ，Ｂ，α）データＳ１１７を得る。
【００２９】
さらにテクスチャエンジン回路１１２は、読み出した（Ｒ，Ｇ，Ｂ，α）データＳ１１７の（Ｒ，Ｇ，Ｂ）データと、前段のトライアングルＤＤＡ回路１１１からのＤＤＡデータＳ１１１に含まれる（Ｒ，Ｇ，Ｂ）データとを、（Ｒ，Ｇ，Ｂ，α）データＳ１１７に含まれるαデータ（テクスチャα）が示す割合で混合し、画素データＳ１１２を生成する。この画素データＳ１１２は、ＤＤＡデータＳ１１１に含まれるｖａｌｉｄフラグを含む。
【００３０】
このようにして得られた画素データＳ１１２を、テクスチャエンジン回路１１２が、画素データが用意できたことを示すライトイネーブル信号（ｗｅ）をイネーブルにすることによって、メモリＩ／Ｆ回路１１３に出力する。なお、テクスチャバッファ１２０には、ＭＩＰＭＡＰ（複数解像度テクスチャ）などの複数の縮小率に対応したテクスチャデータが記憶されている。ここで、何れの縮小率のテクスチャデータを用いるかは、所定のアルゴリズムを用いて、前記三角形単位で決定される。
【００３１】
次に、メモリＩ／Ｆ回路１１３は、テクスチャエンジン回路１１２から入力された画素データＳ１１２に対応するｚデータと、ｚバッファ１２２に記憶されているｚデータとの比較を行う。この比較では、今回入力した画素データＳ１１２によって描画される画像が、前回、ディスプレイバッファ１２１に書き込まれた画像より、手前（視点側）に位置するか否かを判断する。すなわち、画素データＳ１１２のアドレスにおいて、直前に描画した画像の位置と、今回描画しようとする画像の位置とがｚ方向（奥行き方向）において重なっているかどうかを判断する。今回描画しようとする画像が手前に位置すると判断された場合には、画素データＳ１１２に対応するｚデータでｚバッファ１２２に記憶されたｚデータを更新する、いわゆるｚテスト処理を行う。
【００３２】
さらに、メモリＩ／Ｆ回路１１３は、必要に応じて、画素データＳ１１２に含まれる（Ｒ，Ｇ，Ｂ）データと、既にディスプレイバッファ１２１に記憶されている（Ｒ，Ｇ，Ｂ）データとを、画素データＳ１１２に対応するαデータが示す混合値で混合する、いわゆるαブレンディング処理を行い、混合後の（Ｒ，Ｇ，Ｂ）データをディスプレイバッファ１２１に書き込む。
【００３３】
ＬＣＤコントローラ回路１１４は、水平および垂直同期信号に同期して、図示しないＬＣＤに表示するアドレスを発生し、ディスプレイバッファ１２１から表示データを読み出す要求をメモリＩ／Ｆ回路１１３に出力する。この要求に応じて、メモリＩ／Ｆ回路１１３は、ディスプレイバッファ１２１から一定の固まりで表示データを読み出す。ＬＣＤコントローラ回路１１４は、ディスプレイバッファ１２１から読み出した表示データを記憶するラインメモリを内蔵し、一定の時間間隔で、図１に示すような外部のＬＣＤ５２にＲＧＢカラー値を出力する。
【００３４】
ここで、本実施の形態において注目すべきメモリＩ／Ｆ回路１１３における画像データ処理について更に詳しく説明する。図５は、メモリＩ／Ｆ回路１１３の構成、メモリＩ／Ｆ回路１１３における処理の流れ、およびＳＲＡＭ１１５の構成を具体的に説明する図である。
【００３５】
メモリＩ／Ｆ回路１１３は、図５に示すように、ＦＩＦＯ(First In First Out)回路２００、メモリコントローラ２０１、アドレスコンバータ２０２、ピクセルバッファ２０３、リード回路２０４、ライト回路２０５、ｚテスト回路２０６、αブレンディング回路２０７を有する。
【００３６】
ＳＲＡＭ１１５は、図５に示すように、物理的にメモリモジュール１５０，１５１，１５２，１５３を有している。メモリモジュール１５０は、バンク１６０，１６１を有する。メモリモジュール１５１は、バンク１６２，１６３を有する。メモリモジュール１５２は、バンク１６４，１６５を有する。メモリモジュール１５３は、バンク１６６，１６７を有する。なおそれぞれのメモリモジュール１５０，１５１，１５２，１５３が、４（＝２×２）画素分のデータにおける個々の画素に対応している。
【００３７】
まず、ＦＩＦＯ(First In First Out)回路２００は、テクスチャエンジン回路１１２からのライトイネーブル信号ｗｅ、ｖａｌｉｄフラグ、（ｘ，ｙ）データおよび（ｚ，Ｒ，Ｇ，Ｂ，α）データを取り込み、メモリコントローラ２０１からの制御信号によりｖａｌｉｄフラグ、（ｘ，ｙ）データをアドレスコンバータ２０２に出力する。また、（ｚ，Ｒ，Ｇ，Ｂ，α）データをピクセルバッファ２０３に出力する。このとき、並行して処理を行う矩形内に位置する４（＝２×２）画素分のデータを処理する。
【００３８】
メモリコントローラ２０１は、メモリＩ／Ｆ回路１１３の動作を制御し、リード動作、ｚテストおよびαブレンディング操作、ライト動作等の一連の操作からなる、いわゆるリードモディファイライト操作をパイプラインで行うための制御信号を生成する。生成された制御信号およびｖａｌｉｄフラグは、ＦＩＦＯ(First In First Out)回路２００、アドレスコンバータ２０２、ピクセルバッファ２０３、リード回路２０４、ライト回路２０５、ｚテスト回路２０６およびαブレンディング回路２０７に出力される。
【００３９】
アドレスコンバータ２０２は、２次元座標（ｘ，ｙ）の画素の画素データが記憶されている、メモリモジュール１５０，１５１，１５２，１５３を示すチップセレクト信号ｃｓと、バンク１６０〜１６７を示すバンクセレクト信号ｂｓと、アドレスを示すアドレス信号ａｄとを生成し、これらをリードイネーブル信号ｒｅとｖａｌｉｄフラグと共にリード回路２０４に出力する。またアドレスコンバータ２０２は、チップセレクト信号ｃｓと、バンクセレクト信号ｂｓと、アドレス信号ａｄとを一定時間保留した後、メモリコントローラ２０１からの制御信号により、ライトイネーブル信号ｗｅと共にライト回路２０５に出力する。
【００４０】
ピクセルバッファ２０３は、（ｚ，Ｒ，Ｇ，Ｂ，α）データを一定時間保留した後、メモリコントローラ２０１からの制御信号により、ｚデータをｚテスト回路２０６に出力し、（Ｒ，Ｇ，Ｂ，α）データをαブレンディング回路２０７に出力する。
【００４１】
リード回路２０４は、アドレスコンバータ２０２からのチップセレクト信号ｃｓと、バンクセレクト信号ｂｓと、アドレス信号ａｄとを、リードイネーブル信号ｒｅと共にバス２２０を介してＳＲＡＭ１１５に出力する。また、ＳＲＡＭ１１５より入力した、ｚデータをｚテスト回路２０６に出力し、（Ｒ，Ｇ，Ｂ）データをαブレンディング回路２０７に出力する。
【００４２】
ライト回路２０５は、アドレスコンバータ２０２からのチップセレクト信号ｃｓと、バンクセレクト信号ｂｓと、アドレス信号ａｄと、ｚテスト回路２０６より入力したｚデータと、αブレンディング回路２０７より入力した（Ｒ，Ｇ，Ｂ）データとを、ライトイネーブル信号ｗｅと共にバス２２０を介してＳＲＡＭ１１５に出力する。
【００４３】
ｚテスト回路２０６は、ピクセルバッファ２０３より入力したｚデータと、リード回路２０４より入力したｚデータとの間で比較を行い、結果に応じて、ｚ・ｖａｌｉｄフラグを生成する。ｚ・ｖａｌｉｄフラグによりピクセルバッファ２０３より入力したｚデータか、リード回路２０４より入力したｚデータかを選択する。選択後のｚデータをライト回路２０５に出力する。また、メモリコントローラ２０１より入力したｖａｌｉｄフラグとｚ・ｖａｌｉｄフラグの論理積をとり、結果のｖａｌｉｄフラグをライト回路２０５に出力する。
【００４４】
αブレンディング回路２０７は、ピクセルバッファ２０３より入力した（Ｒ，Ｇ，Ｂ）と、リード回路２０４より入力した（Ｒ，Ｇ，Ｂ）とを、ピクセルバッファ２０３より入力したαデータが示す混合値で混合する。混合後の（Ｒ，Ｇ，Ｂ）データをライト回路２０５に出力する。
【００４５】
リード回路２０４およびライト回路２０５から出力されたメモリモジュール１５０，１５１，１５２，１５３はバス２２０中を流れる。バス２２０を流れるこれら信号を、ＳＲＡＭ１１５のメモリモジュール１５０，１５１，１５２，１５３が監視し、対応するバンクセレクト信号ｂｓが示すバンク１６０〜１６７のアドレス信号ａｄが示すアドレスのメモリに記憶されているデータを読み出し、ｚテスト回路２０６およびαブレンディング回路２０７に出力する。また、チップセレクト信号ｃｓおよびライトイネーブル信号ｗｅを監視し、対応するバンクセレクト信号ｂｓが示すバンク１６０〜１６７のアドレス信号ａｄが示すアドレスのメモリに、ｚテスト回路２０６およびαブレンディング回路２０７より入力したデータを書き込む。
【００４６】
ここで、上記のようにしてメモリＩ／Ｆ回路１１３におけるリード動作、ｚテストおよびαブレンディング操作、ライト動作等のリードモディファイライト操作を行うにあたり、同一の座標の画像データを連続して処理する場合には、前回の画像処理におけるリードモディファイライト操作が終了している必要がある。そこで、本実施の形態では、前回の画像処理における４（＝２×２）の画素グループのアドレスと、今回の画像処理における４（＝２×２）の画素グループのアドレスの比較、並びに前回（直前）の画像処理における４（＝２×２）の画素グループのｖａｌｉｄフラグと今回の画像処理における４（＝２×２）の画素グループのｖａｌｉｄフラグの比較処理をする。これにより、メモリコントローラ２０１から出力される制御信号を制御し、前回の画像処理におけるリードモディファイライト操作が終了するのを待つウェイト動作を減らすことができる。以下、アドレスとｖａｌｉｄフラグの比較処理について詳細を説明する。
【００４７】
図６は、アドレスとｖａｌｉｄフラグの比較処理を説明するフロー図である。
まず、前回の画像処理における４（＝２×２）の画素グループのアドレスと、今回の画像処理における４（＝２×２）の画素グループのアドレスの比較処理を行う（ステップＳ３０１）。具体的には、アドレスコンバータ２０２より入力した、メモリモジュール１５０，１５１，１５２，１５３を示すチップセレクト信号ｃｓと、バンク１６０〜１６７を示すバンクセレクト信号ｂｓと、アドレスを示すアドレス信号ａｄの組からなるアドレスを、前回の画像処理におけるチップセレクト信号ｃｓと、バンクセレクト信号ｂｓと、アドレス信号ａｄの組からなるアドレスと比較する。比較処理は、上記したように画素グループを単位として比較されるが、実質的には画素グループの(i)の組のアドレスの比較のみが行われる。
【００４８】
ステップＳ３０１において、今回の画像処理におけるアドレスが、前回の画像処理におけるアドレスと一致しないと判断した場合、前回の画像処理では異なるアドレスを処理していることになるので、ウェイト動作をすることなく今回の画像処理におけるがリードモディファイライト操作が進められる（ステップＳ３０８）。
一方、今回の画像処理におけるアドレスが、前回の画像処理におけるアドレスと一致すると判断した場合、画素グループの(i)の組におけるｖａｌｉｄフラグの比較処理が行われる（ステップＳ３０２）。
【００４９】
ステップＳ３０２では、アドレスコンバータ２０２より入力した今回の画像処理における画素グループの(i)の組のｖａｌｉｄフラグと、前回の画像処理におけるリードモディファイライト操作の際の(i)の組のｖａｌｉｄフラグとを比較処理する。両方のｖａｌｉｄフラグが有効であると判断した場合は、処理のパイプラインを止め、前回の画像処理におけるリードモディファイライト操作が終了するまでウェイト動作を行う（ステップＳ３０３）。
一方、どちらかのｖａｌｉｄフラグが無効であると判断した場合は、上記(i)の組と同様にして、(ii)の組のｖａｌｉｄフラグの比較処理を行う（ステップＳ３０４）。
【００５０】
ステップＳ３０４において、今回の画像処理における画素グループの(ii)の組のｖａｌｉｄフラグと、前回の画像処理におけるリードモディファイライト操作の際の(i)の組のｖａｌｉｄフラグの両方が有効であると判断した場合は、処理のパイプラインを止め、前回のリードモディファイライト操作が終了するまでウェイト動作を行う（ステップＳ３０３）。一方、今回と前回のどちらかのｖａｌｉｄフラグが無効であると判断した場合は、上記(i)の組と同様にして、(iii)の組のｖａｌｉｄフラグの比較処理を行う（ステップＳ３０５）。
【００５１】
ステップＳ３０５において、今回と前回の両方の(iii)の組のｖａｌｉｄフラグの両方が有効であると判断した場合、ウェイト動作を行う（ステップＳ３０３）。一方、どちらかのｖａｌｉｄフラグが無効であると判断した場合は、上記(ii)の組と同様にして、(iv)の組のｖａｌｉｄフラグの比較処理を行う（ステップＳ３０６）。一方、今回と前回のどちらかのｖａｌｉｄフラグが無効であると判断した場合は、ウェイト動作をすることなく今回の画像処理におけるリードモディファイライト操作が進められる（ステップＳ３０８）。
【００５２】
具体例を挙げて上記比較処理を説明する。
図７は、順次処理される画素グループのアドレスを処理と時間(t)の流れを示す説明図である。図７では、１回目の画像処理として、アドレス（０，０）を有する画素グループの画像処理が行われた後、２回目の画像処理としてアドレス（２，０）を有する画素グループ、３回目の画像処理としてアドレス（４，０）を有する画素グループの画像処理が順に行われている。このように、異なるアドレスが連続する場合には、リードモディファイライト操作、すなわちリード処理（Read）、モディファイ操作(Modify-0およびModify-1)、およびライト処理は、ウェイト動作をすることなく連続して行われる。
【００５３】
図８(a)(b)(c)は、それぞれ画素グループのｖａｌｉｄフラグの具体例を示す図であり、画素グループ７０、７１、７２はそれぞれ同じアドレス（０，０）を有するものである。
図８(a)に示す画素グループ７０が１回目の画像処理として処理され、これに連続して図８(b)に示す画素グループ７１が２回目の画像処理として処理される場合、画素グループ７０、７１のアドレス（０，０）は互いに同じであるため、図６に示すフローに従って各組におけるｖａｌｉｄフラグの比較処理が行われる。この場合、画素グループ７０の(i)の組と、画素グループ７１の(i)の組との両方が“１”であり、即ち両方が有効となっている。その結果、画像処理においては図９に示すように、１回目の画像処理と２回目の画像処理との間にウェイト動作が行われ、１回目の画像処理のリードモディファイライト操作の所定の操作が終了した後に２回目の画像処理が開始される。このように、リードモディファイライト操作の際のｖａｌｉｄフラグとを参照し、今回と前回における(i)〜(iv)の組を比較し、どれか１組でも両方が有効の場合は、パイプラインを止め、リードモディファイライト操作が終了するまでウェイト動作を行う。
【００５４】
図８(b)に示す画素グループ７１が１回目の画像処理として処理され、これに連続して図８(c)に示す画素グループ７２が２回目の画像処理として処理される場合、各組におけるｖａｌｉｄフラグを比較すると、(i)〜(iv)のどの組においても“１”即ち有効となってはいない。その結果、画像処理に置いては図１０に示すように、同じアドレスを有する画素グループ７１、７２を連続処理するものであっても、リード処理（Read）、モディファイ操作(Modify-0およびModify-1)、およびライト処理は、ウェイト動作をすることなく連続して行われる。このように、リードモディファイライト操作の際のｖａｌｉｄフラグとを参照し、今回と前回における(i)〜(iv)の組を比較し、両方が有効である組が無い場合は、ウェイト動作を行わない。
【００５５】
以上のように、本実施の形態では、画像処理を行う画像グループのアドレスと、前回に描画した画像処理の画像グループのアドレスが連続して同じであっても、今回のｖａｌｉｄフラグと前回のｖａｌｉｄフラグとを比較する。そして、比較結果において、どちらかのｖａｌｉｄフラグが無効の場合は、処理のパイプラインを止めるウェイト動作がない。したがって、従来と比較してリードモディファイライト操作におけるウェイト動作の回数を低減でき、メモリアクセスを効率的に行い、高速なリードモディファイライト操作を実現できる。
また、本発明の画像メモリ制御装置と、それを用いたグラフィック演算装置によれば、複数の画素の画素データを同時に書き換えることで、さらに高速なリードモディファイライト操作を実現できる。
【００５６】
このようなリードモディファイライト操作は、例えば表示手段のマトリクス状に配置された複数の画素の画素データを、画像メモリに記憶し、連続して与えられた画素データ及び画素データの２次元座標及び有効画素データフラグにより、与えられた画素データと２次元座標の画像メモリに記憶された画素データとの演算を行い、演算の結果の画素データを生成し、２次元座標の画像メモリに記憶するという一連の操作を連続して行い、連続して与えられた第１の画素データの２次元座標と第２の画素データの２次元座標とが同一の座標かつ第１の画素データの有効画素データフラグと第２の画素データの有効画素データフラグが、両方共に有効画素データを示す場合は、第１の画素データによる一連の操作が終了するまで、第２の画素データによる一連の操作を行わず、ウェイトする画像メモリ制御装置に適用することができる。
【００５７】
その他、本実施の形態では、４つの画素からなる画素グループを１単位として処理しているが、１つの画素を１単位として、または２つや５つ以上の画素からなるグループを１単位として処理することも可能である。
これ以外にも、本発明の主旨を逸脱しない限り、上記実施の形態で挙げた構成を取捨選択したり、他の構成に適宜変更することが可能である。
【００５８】
【発明の効果】
以上説明したように、本発明の画像メモリ制御装置、グラフィック演算装置またはレンダリング処理方法によれば高速なリードモディファイライト操作を実現できる。
【図面の簡単な説明】
【図１】  本実施の形態の３次元コンピュータグラフィックシステム１のシステム構成例を示す図である。
【図２】  図１に示すレンダリング回路１０の構成例を示す図である。
【図３】  画素による図形の描写の説明図である。
【図４】  画素グループのデータの一例を示し、(a)は画素グループ６２におけるｖａｌｉｄフラグの構成例を示す図であり、(b)は(a)に対応するＤＤＡデータの具体例を示す図である。
【図５】  メモリＩ／Ｆ回路１１３の構成、メモリＩ／Ｆ回路１１３における処理の流れ、およびＳＲＡＭ１１５の構成を具体的に説明する図である。
【図６】  アドレスとｖａｌｉｄフラグの比較処理を説明するフロー図である。
【図７】  順次処理される画素グループのアドレスを処理と時間(t)の流れを示す説明図である。
【図８】  (a)(b)(c)は、それぞれ画素グループ７０〜７２のｖａｌｉｄフラグの具体例を示す図である。
【図９】  ウェイト動作が行われる場合における順次処理される画素グループのアドレスを処理と時間(t)の流れを示す説明図である。
【図１０】  ウェイト動作が行われない場合における順次処理される画素グループのアドレスを処理と時間(t)の流れを示す説明図である。
【符号の説明】
１…３次元コンピュータグラフィックシステム（グラフィック演算装置）、２…メインメモリ、３…メインバスコントローラ、４…ＣＰＵ、５…ベクトル演算回路、６…メインバス、７…Ｉ／Ｏインターフェース回路、８…曲面処理回路・ジオメトリ演算回路、９…外部メモリコントローラ、１０…レンダリング回路（画像メモリ制御装置）、１１…グラフィックメモリ、５０…外部インターフェース部、５１…外部メモリ、５２…ＬＣＤ（液晶ディスプレイ）、６０…画素、６１…三角形、６２、７０、７１、７２…画素グループ、１１０…ＤＤＡセットアップ回路、１１１…トライアングルＤＤＡ回路、１１２…テクスチャエンジン回路、１１３…メモリＩ／Ｆ回路（座標比較手段、データフラグ比較手段、待機制御手段、ウェイト制御手段）、１１４…ＬＣＤコントローラ回路、１１５…ＳＲＡＭ（画像メモリ）、１２０…テクスチャバッファ、１２１…ディスプレイバッファ、１２２…ｚバッファ、１５０、１５１、１５２、１５３…メモリモジュール、１６０〜１６７…バンク、２００…ＦＩＦＯ(First In First Out)回路、２０１…メモリコントローラ、２０２…アドレスコンバータ、２０３…ピクセルバッファ、２０４…リード回路、２０５…ライト回路、２０６…ｚテスト回路、２０７…αブレンディング回路、２２０…バス
【図１】
0004622165.tif 000002
【図２】
0004622165.tif 000003
【図３】
0004622165.tif 000004
【図４】
0004622165.tif 000005
【図５】
0004622165.tif 000006
【図６】
0004622165.tif 000007
【図７】
0004622165.tif 000008
【図８】
0004622165.tif 000009
【図９】
0004622165.tif 000010
【図１０】
0004622165.tif 000011