インライン画像回転
【課題】画像のインライン回転を遂行する方法及び装置を提供する。
【解決手段】この装置は、実行されるべき指定の回転に基づく順序でソース画像からピクセルを読み取るための回転ユニットを備えている。ソース画像は、複数のタイルへ区画化され、それらのタイルは、回転画像内でどこに位置するかに基づいて処理され、そして各タイルは、タイルバッファに記憶される。タイルバッファ内のターゲットピクセルアドレスが計算されてルックアップテーブルに記憶され、そしてピクセルが回転ユニットによりソース画像から検索されるときに、ルックアップテーブルを読み取って、対応するタイルバッファ内のどこにピクセルを書き込むべきか決定する。
【解決手段】この装置は、実行されるべき指定の回転に基づく順序でソース画像からピクセルを読み取るための回転ユニットを備えている。ソース画像は、複数のタイルへ区画化され、それらのタイルは、回転画像内でどこに位置するかに基づいて処理され、そして各タイルは、タイルバッファに記憶される。タイルバッファ内のターゲットピクセルアドレスが計算されてルックアップテーブルに記憶され、そしてピクセルが回転ユニットによりソース画像から検索されるときに、ルックアップテーブルを読み取って、対応するタイルバッファ内のどこにピクセルを書き込むべきか決定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的に、グラフィック情報処理に関するもので、より特定すれば、画像を回転する方法及びメカニズムに関する。
【背景技術】
【0002】
コンピューティング装置、特に、移動装置は、多くの場合、制限されたメモリリソース及びバッテリのような限定された電源を有する。ディスプレイを伴うコンピューティング装置は、通常、ビデオ及び画像を操作及び表示するために異なる形式のグラフィックハードウェアを備えている。グラフィックハードウェアは、表示するように意図された画像を発生及び処理するために多数の異なる形式の動作を遂行する。グラフィックハードウェアにより遂行される1つの共通の動作は、画像の回転である。典型的に、画像を回転するために大きなバッファが使用される。しかしながら、それらのバッファは、多量のシリコンエリアを必要とし、付加的な電力を消費し、グラフィックハードウェアのコストを増加させ、移動装置のバッテリ寿命を短縮させる。
【発明の概要】
【0003】
画像を回転するためのシステム及び方法が提供される。
【0004】
種々の実施形態において、ソース画像のインライン回転を遂行して回転画像を発生する装置が提供される。この装置は、多段グラフィック処理パイプラインの一部分である。この装置は、メモリからソース画像ピクセルをフェッチするためのフェッチユニットを備えており、メモリに記憶されたソース画像内のピクセルのアドレスを発生するよう構成される。フェッチユニットは、更に、ソース画像に対して遂行される回転の形式に基づく順序でピクセルアドレスを発生する。ソース画像は、複数のタイルへ区画化され、この区画化は、遂行される回転に基づくものである。ピクセルは、ソース画像からタイルごとにフェッチされる。
【0005】
又、この装置は、検索されたピクセルを記憶するための1つ以上のタイルバッファも備えている。ピクセルは、タイルバッファ内のターゲット位置に記憶され、そしてターゲット位置は、遂行される回転に基づく。一実施形態において、各タイルバッファは、画像の所与の回転タイルからのデータの一部分を記憶するために複数の個別の個々のランダムアクセスメモリ(RAM)を備えている。種々の実施形態において、タイルバッファのピクセルは、グラフィック処理パイプラインの後続段により読み取られて処理される。
【0006】
これら及び他の特徴並びに効果は、ここに述べる解決策の以下の詳細な説明から当業者に明らかとなろう。
【0007】
方法及びメカニズムの前記及び更に別の効果は、添付図面を参照した以下の詳細な説明から良好に理解されるであろう。
【図面の簡単な説明】
【0008】
【図1】回転ユニットの一実施形態を示すブロック図である。
【図2】1つ以上の実施形態に基づくルックアップテーブルである。
【図3】回転タイルバッファの一実施形態を示すブロック図である。
【図4】1つ以上の実施形態に基づく3つの区画化された画像を示す。
【図5】区画化されたソース画像と4つのタイルバッファとの間の対応性の一実施形態を示すブロック図である。
【図6】4つのタイルバッファ及び区画化された回転画像の一部分の一実施形態を示すブロック図である。
【図7】タイルバッファの一実施形態を示すブロック図である。
【図8】遂行される種々の形式の回転を示すブロック図のグループである。
【図9】インライン形態でピクセルを回転するための方法の一実施形態を示す一般化されたフローチャートである。
【図10】画像のインライン回転を遂行するための方法の一実施形態を示す一般化されたフローチャートである。
【図11】システムの一実施形態のブロック図である。
【図12】コンピュータ読み取り可能な媒体の一実施形態のブロック図である。
【発明を実施するための形態】
【0009】
以下の説明では、ここに表わす方法及びメカニズムを完全に理解するために多数の特定の細部について述べる。しかしながら、当業者であれば、これら特定の細部なしに種々の実施形態を具現化できることが明らかであろう。ある例では、ここに述べる解決策を不明瞭にしないために、良く知られた構造、コンポーネント、信号、コンピュータプログラムインストラクション及び技術は、詳細に示さない。説明を簡単及び明瞭にするため、図示された要素は、必ずしも正しい縮尺で描かれていない。例えば、幾つかの要素の寸法は、他の要素よりも誇張されている。
【0010】
本明細書には「一実施形態」を言及することが含まれる。異なる文脈において「一実施形態において」という句が現れることは、必ずしも、同じ実施形態を言及するものではない。特定の特徴、構造又は特性は、本開示と矛盾しない適当な仕方で組み合わせることができる。更に、本出願全体に使用される「〜してもよい(may)」という語は、許すという意味(即ち、〜の潜在性があるという意味)で使用されるもので、強制の意味(即ち、〜しなければならないという意味)ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
【0011】
用語。次の章は、本開示(特許請求の範囲を含む)に見られる用語に関する定義及び/又は状況を与えるものである。
【0012】
「備える(Comprising)」。この用語は、オープンエンドである。特許請求の範囲に使用されるときには、この用語は、付加的な構造又はステップを除外するものではない。「フェッチユニットを備える装置(An apparatus comprising a fetch unit…)」という請求項を考える。このような請求項は、装置が付加的なコンポーネント(例えば、プロセッサ、キャッシュ、メモリコントローラ)を含むことを除外するものではない。
【0013】
「〜ように構成された(Configured To)」。種々のユニット、回路又は他のコンポーネントは、1つ又は複数のタスクを遂行するように「構成される」ものとして説明され又は請求される。この点について、「構成される」とは、ユニット/回路/コンポーネントが動作中に1つ又は複数のタスクを遂行する構造体(例えば、回路)を含むことを指示することにより、構造体を暗示するのに使用される。従って、ユニット/回路/コンポーネントは、その指定のユニット/回路/コンポーネントが現在動作していない(例えば、オンでない)ときでも、タスクを遂行するように構成されると言うことができる。「構成される」の言語と共に使用されるユニット/回路/コンポーネントは、ハードウェア、例えば、回路、動作を具現化するために実行できるプログラムインストラクションを記憶するメモリ、等を含む。ユニット/回路/コンポーネントが1つ以上のタスクを遂行するように「構成された」という表現は、そのユニット/回路/コンポーネントに関して35U.S.C.§112、第6節を引用しないことが明確に意図される。更に、「構成される」は、問題とするタスクを遂行できるようにソフトウェア及び/又はファームウェア(例えば、ソフトウェアを実行するFPGA又は汎用プロセッサ)を動作することで操作されるジェネリック構造体(例えば、ジェネリック回路)を含む。又、「構成される」は、1つ以上のタスクを具現化又は遂行する装置(例えば、集積回路)を製造するように製造プロセス(例えば、半導体製造ファシリティ)を適用することも含む。
【0014】
「第1(First)」、「第2(Second)」、等。ここで使用するこれら用語は、それに続く名詞のための表現として使用されるもので、特に指示のない限り、任意の形式の順序(例えば、空間的、時間的、論理的)を意味するものではない。例えば、4タイルバッファを伴う回転ユニットでは、「第1」及び「第2」タイルバッファという語は、4つのタイルバッファのうちのいずれか2つを指すのに使用される。
【0015】
「〜に基づく(Based On)」。ここで使用するこの用語は、決定に影響する1つ以上のファクタを記述するのに使用される。この用語は、決定に影響する付加的なファクタを除外するものではない。即ち、決定は、これらのファクタのみに基づいてもよいし、又はこれらのファクタに少なくとも一部分基づくものでもよい。「Bに基づいてAを決定する(determine A based on B)」という句について考える。Bは、Aの決定に影響するファクタであるが、そのような句は、Aの決定を、Cに基づくことからも除外しない。他の例では、Aは、Bのみに基づいて決定されてもよい。
【0016】
図1は、回転ユニットの一実施形態を示すブロック図である。種々の実施形態において、回転ユニット10は、システムオンチップ(SoC)内のグラフィック処理パイプライン内に合体される。一実施形態において、グラフィック処理パイプラインは、個別プロセッサチップ又はコプロセッサである。ある実施形態では、グラフィック処理パイプラインは、グラフィックデータをディスプレイコントローラ又はディスプレイ装置に付与する。他の実施形態では、グラフィック処理パイプラインは、グラフィックデータを、更なる処理のために、又はディスプレイ装置によるその後の消費のために、メモリ内の記憶位置に付与する。他の実施形態では、回転ユニット10は、集積回路(IC)、特定用途向け集積回路(ASIC)、装置、或いは種々の他の同様の装置のいずれかに合体される。
【0017】
ソース画像15は、静止画像であるか又はビデオストリームのフレームである。ソース画像15は、ピクセルとして知られた非常に多数の個別画素により表わされる。デジタル画像では、画像又はビデオフレームにおける最小の情報アイテムが「ピクセル」である。ピクセルは、一般的に、規則的な二次元グリッドに配列される。ソース画像15の各ピクセルは、1つ以上のピクセル成分によって表される。ピクセル成分は、画像が表わされたカラースペース内の各カラーのカラー値を含む。例えば、カラースペースは、赤・緑・青(RGB)カラースペースである。従って、各ピクセルは、赤成分、緑成分及び青成分により表される。これら成分の値は、そのピクセルの対応カラーの輝度又は強度を表わす。ルミナンス及びクロミナンス表現(YCrCb)のような他のカラースペースも使用される。更に、付加的なピクセル成分も含まれる。例えば、混合のためのアルファ値をRGB成分と共に含ませて、ARGBカラースペースを形成してもよい。
【0018】
回転ユニット10は、ソース画像15内のソース位置からピクセルを読み取り、そしてそれを、行先画像のターゲット位置に対応するタイルバッファ24−30内の位置に書き込むように構成される。回転ユニット10は、90°の倍数の回転、及び/又は水平又は垂直方向のフリップを遂行する。回転ユニット10への入力である回転構成ビットにより指定の回転が指示される。本開示全体にわたって使用される「回転」という用語は、そのワードの慣習的な意味において90°、180°、又は270°の回転(時計方向又は反時計方向)を指す。更に、「回転」とは、フリップ(即ち、画像のxスワップ又はyスワップ方向変化)を指す。
【0019】
回転ユニット10は、メモリ16に記憶されたソース画像15から指定の順序でピクセルをフェッチするためのフェッチユニット12を備えている。一実施形態において、フェッチユニット12は、ソース画像15におけるピクセルのアドレスを発生する。フェッチユニット12は、アドレスが発生される順序を、遂行される回転の形式に基づいて決定する。フェッチユニット12は、発生されたアドレスを使用して読み取り要求を発行し、そしてアドレスがメモリ管理ユニット(MMU)14により使用されて、メモリ16からの読み取り動作を遂行する。別の実施形態では、論理的ファブリックインターフェイス(図示せず)がMMU14とメモリ16との間に含まれる。一実施形態において、フェッチユニット12は、直接メモリアクセス(DMA)読み取り動作を遂行して、ソース画像15からピクセルを読み取る。フェッチユニット12は、DMA読み取り動作を遂行するためにDMAコントローラを備えている。
【0020】
MMU14は、メモリアドレス変換を遂行するように構成される。一実施形態では、MMU14は、バーチャルアドレスを利用して、フェッチユニット12が、ソース画像15に対応するバーチャルアドレス範囲にアドレスできるようにする。MMU14は、バーチャル/物理的変換を遂行して、バーチャルアドレスをメモリ16の実際の物理的アドレスにマップさせる。種々の実施形態において、MMU14は、ミス時フェッチ要求である変換を待機することにより被るレイテンシを回避するためにフェッチユニット12が変換をプリフェッチできるようにする。一実施形態では、フェッチユニット12は、プリフェッチのバーチャルアドレスを発生するためにプリフェッチエンジン(図示せず)を備えている。この実施形態では、MMU14は、フェッチユニット12からのプリフェッチ要求を処理するためにプリフェッチユニット(図示せず)を備えている。一実施形態において、フェッチユニット12は、現在タイルがフェッチされる1タイル前にプリフェッチ要求を送信する。そのプリフェッチ要求は、MMU14内のストリーミング変換テーブル(STT)(図示せず)をポピュレートするのに使用される。フェッチユニット12が実際のメモリ要求を発行すると、その要求は、STTを使用して直ちに変換される。
【0021】
フェッチユニット12は、ソース画像15からピクセルをフェッチし、そしてそのピクセルをタイルバッファ24−30内の適当な位置に書き込むように構成される。一実施形態において、フェッチユニット12は、1つ以上のピクセルに対応する特定のトランザクション識別子(ID)をもつ読み取り要求を発行する。フェッチユニット12は、回転された画像のタイルにおける1つ以上のピクセルの行先位置を計算する。次いで、フェッチユニット12は、ルックアップテーブル18のエントリにトランザクションIDを記憶し、そしてピクセル行先位置がエントリに含まれる。その特定トランザクションIDのピクセルがメモリ16から受け取られると、ルックアップテーブル18の対応エントリが検索され、そして位置情報を使用して、タイルバッファ24−30の所与のタイルバッファのどこにピクセルを書き込むべきか決定する。
【0022】
一実施形態において、ルックアップテーブル18は、ランダムアクセスメモリ(RAM)である。種々の実施形態において、ルックアップテーブル18は、種々の数のエントリを含む。フェッチされたピクセルは、ルックアップテーブル18に記憶された位置データに基づきタイルバッファ24−30のターゲット位置に記憶される。ピクセルは、実際上、タイルバッファ24−30の所与のタイルバッファのターゲット位置に書き込まれたのと同様に再配置される。
【0023】
タイルバッファ24−30の各々は、回転された画像の所与のタイルを記憶する。ソース画像15及びそれに対応する回転画像の各々は、指定の回転に基づいて複数のタイルに配分される。一実施形態において、回転画像のタイルは、16行のピクセルx128列のピクセルである。しかしながら、他の実施形態では、タイルのサイズが変化してもよい。複数のタイルを使用して、ソース画像15の各行を形成するように、ソース画像15の巾をタイルの巾より大きくしてもよい。又、複数のタイルを使用して、ソース画像15の各列を形成するように、ソース画像15の長さをタイルの長さより大きくしてもよい。タイルバッファ24−30の各々は、ソース画像15の所与の回転タイルを記憶し、そしてパイプラインの次の段によりタイルバッファが読み取られた後、タイルバッファは、ソース画像15の新たなタイルで埋められる。一実施形態において、各カラー成分は、回転画像の4つのタイルを記憶するための4つのタイルバッファを含む。例えば、ソース画像15をARGBフォーマットで表す場合には、アルファカラー成分に対して4つのタイルバッファがあり、赤のカラー成分に対して4つのタイルバッファがあり、緑のカラー成分に対して4つのタイルバッファがあり、そして青のカラー成分に対して4つのタイルバッファがある。
【0024】
一実施形態において、回転画像の一部分を形成するタイルバッファ24−30に記憶されたタイルは、画像処理パイプラインの後続段へ搬送される。一実施形態において、パイプラインの後続段は、行先画像の回転タイルをアップスケール又はダウンスケールするためのスケーラーユニット(例えば、スケーラー32)である。スケーラー32は、パイプライン内で使用される多数の垂直及び水平スケーラーを表わす。別の実施形態では、パイプラインの次の段は、スケーラー32以外のユニット(カラースペース変換ユニット、正規化ユニット、ダウンサンプリングユニット)である。更に別の実施形態では、回転ユニット10は、行先画像の回転タイルをディスプレイユニット(図示せず)に搬送する。更に別の実施形態では、回転ユニット10は、ターゲット画像の回転タイルをメモリ16又は別の記憶位置に搬送する。
【0025】
一実施形態において、フェッチユニット12により発生される各読み取り要求は、64バイトまでのデータを読み取る。他の実施形態では、読み取り要求は、他の量のデータを要求する。一実施形態において、各読み取り要求は、ソース画像15のタイルのライン(即ち、行)に向けられる。回転画像のターゲットタイルサイズが16行x128列でありそして指定の回転が90又は270°である場合、ソース画像15は、16列x128行のタイルへと区画化される。フェッチユニット12は、タイルの最も上のラインをフェッチし、そしてタイルの底まで1ラインごとに下に進む。各フェッチは、ソース画像15のタイルのラインからのピクセルを要求する。16ピクセルの1ライン全体を検索するには1つ以上のフェッチが必要であり、次いで、フェッチは、次のラインへと下に進んで、次の16ピクセルを検索し、次いで、1タイル全体に対して128本のラインが検索されるまでこのプロセスが続けられる。ソース画像15の1行からの16個のピクセルは、指定の(90又は270°の)回転に対し回転画像の単一列を形成する。他の実施形態では、タイルの他のサイズ(例えば、256x24、64x16、512x32)が使用され、そして他の形式の回転が遂行される。
【0026】
一実施形態において、回転ユニット10によりピクセルが受け取られたときに、タイルバッファ24−30のどこにピクセルを記憶するかに基づいてオンザフライ決定がなされる。この決定は、ルックアップテーブル18に記憶された位置情報に基づく。ある実施形態では、ピクセルは、順序ずれして戻され、そしてピクセル行先情報を含むタグデータに基づいてタイルバッファ24−30内の正しい位置へルーティングされる。
【0027】
フェッチユニット12は、トランザクションID及びピクセル行先をルックアップテーブル18に記憶する。ピクセルデータは、順序ずれして戻され、そしてルックアップテーブル18へ搬送される。ルックアップテーブル18は、ソース画像15のネーティブフォーマット及び回転画像のターゲットフォーマットに基づいてピクセル当たりのビット数を拡張するためにビット拡張ユニット20へピクセルを搬送する。ビット拡張ユニットは、メモリから検索されるピクセルが、パイプライン内の次の段(即ち、スケーラー32)により使用されるものと同じサイズである場合には、含まれなくてもよい。ある実施形態では、スウィズルユニット22は、フェッチされたピクセルの順序を再アレンジする。例えば、一実施形態において、ピクセルは、青、緑、赤及びアルファ色成分の順序で受け取られる。スウィズルユニット22は、ピクセルを、アルファ、赤、緑及び青色成分の順序に再順序付けする。
【0028】
各ピクセルを記憶するのに使用されるビット数は、使用される特定フォーマットに依存する。例えば、あるシステムにおけるピクセルは、8ビットを必要とし、一方、他のシステムにおけるピクセルは、10ビットを必要とし、等々であり、種々のシステムにおいてピクセル当たり種々のビット数が使用される。一実施形態において、ソース画像15は、8ビットで表されたピクセルを含む。グラフィックパイプラインは、10ビットのピクセルを使用し、従って、ソース画像15から受け取られるピクセルは、ビット拡張ユニット20により8ビットから10ビットへ拡張される。ある実施形態では、ビット拡張ユニット20及びスウィズルユニット22は、含まれなくてもよいし、又はパススルーユニットでもよいことに注意されたい。ある実施形態では、フェッチされたピクセルは、ビット拡張ユニット20及びスウィズルユニット22を通過せずに、タイルバッファ24−30へ直接搬送される。
【0029】
ルックアップテーブル18、ビット拡張ユニット20及びスウィズルユニット22は、フェッチユニット12の一部分として示されているが、これは、単なる例示に過ぎず、他の実施形態では、ユニットは、他の適当な仕方で配置されてもよい。例えば、別の実施形態では、ルックアップテーブル18、ビット拡張ユニット20及び/又はスウィズルユニット22は、フェッチユニット12とは異なる個別ユニットでもよい。
【0030】
各タイルバッファ24−30は、回転された画像の異なるタイルに対応する。他の実施形態では、回転されたタイルからのピクセルを記憶するのに、4の他に、別の数のタイルバッファが使用されてもよい。更に、各タイルバッファは、複数のRAMを含み、そして各RAMは、1行の所与の画像タイルを記憶する。例えば、一実施形態において、各タイルバッファは、画像タイルの16行に対応する16個の個々のRAMを含む。他の実施形態では、16の他に、別の数の行をもつ他のタイルサイズが使用される。これらの実施形態では、タイル当たりの行数に対応して各バッファに他の数のRAMがあってもよい。例えば、別の実施形態では、タイルサイズが32行x128列である場合に、タイルバッファ当たり32のRAMがある。
【0031】
図1に示したコンポーネントは、適当なバス及び/又はインターフェイスメカニズムを使用して互いに結合される。ある実施形態では、これらコンポーネントは、アドバンスト・マイクロコントローラ・バス・アーキテクチャー(AMBA(登録商標))プロトコル(ARM(登録商標)ホールディングズからの)を使用するか、又は論理ブロックを接続及び管理するための他の適当なオンチップ相互接続仕様を使用して、接続される。AMBAバス及び/又はインターフェイスは、例えば、アドバンストeXtensibleインターフェイス(AXI)、アドバンスト・ハイパーフォーマンス・バス(AHB)、アドバンスト・システム・バス(ASB)、アドバンスト・ペリフェラル・バス(APB)、及びアドバンスト・トレース・バス(ATB)を含む。
【0032】
他の実施形態には、図1に示したコンポーネント及び/又は他のコンポーネントのサブセット又はスーパーセットを含めて、コンポーネントの他の組み合わせが含まれることに注意されたい。図1には、所与のコンポーネントの一例が示されているが、他の実施形態は、所与のコンポーネントの1つ以上の例を含んでもよい。同様に、この詳細な説明全体にわたり、所与のコンポーネントの一例しか示されていなくても、1つ以上の例が含まれてもよく、及び/又は複数の例が示されていても、1つの例しか含まない実施形態が使用されてもよい。
【0033】
図2には、ルックアップテーブルの一実施形態が示されている。ルックアップテーブル18の各エントリは、トランザクション識別子(ID)フィールド、タイルバッファ番号フィールド、ライン(行)番号フィールド、及び列番号フィールドを含めて、複数のデータフィールドを含む。トランザクションIDフィールドは、ソース画像15内の1つ以上のアドレスに対する特定の読み取り要求に対応する。フェッチユニット12(図1)は、1つ以上のピクセルの読み取り要求を発行するときにルックアップテーブル18に読み取り要求に対応するエントリを記憶する。各エントリは、回転後画像のタイルにおいてソースピクセル(1つ又は複数)をどこに配置すべきか指示する位置座標を含む。一実施形態において、回転後画像タイルは、タイルバッファに記憶され、そしてピクセルは、全グラフィック処理パイプラインの次の段によりタイルバッファから読み取られる。
【0034】
読み取り要求に対応するピクセルがメモリから検索されるとき、ルックアップテーブル18の対応エントリを使用して、その検索されたピクセルをタイルバッファのどこに記憶するか決定する。例えば、読み取りトランザクションID43に対応するデータがメモリから戻されるとき、トランザクションID43のエントリが回転ユニットにより使用されて、タイルバッファ24においてライン0列24のスタート位置にピクセルを記憶する。一実施形態では、単一のトランザクションで検索されるピクセルの数は、8である。他の実施形態では、他の数のピクセルが単一トランザクションで検索される。
【0035】
ルックアップテーブル18に示すエントリは、例示のためのものに過ぎない。ルックアップテーブル18は、他の実施形態では、8より少ない又は8より多いエントリを含んでもよく、そしてルックアップテーブル18は、異なる編成とされ、他の情報フィールドを含んでもよい。例えば、一実施形態において、回転の形式を指示する回転構成ビットが、テーブル18に記憶される。別の実施形態では、各エントリは、そのエントリが使用されたときを指示するために有効ビットを含んでもよく、それ故、その後のトランザクションIDに対して別のエントリによりオーバーライトされてもよい。他の実施形態では、ルックアップテーブル18に他の形式の情報が記憶されてもよく、そしてルックアップテーブル18は、適当な形態で編成されてもよい。
【0036】
図3は、回転タイルバッファの一実施形態のブロック図である。タイルバッファ24は、16の個別の行を含み、その各々は、個別のRAMである。16個の個別のRAMは、行0、行1、行2、・・・行15のような画像タイルの個別の行を記憶するのに使用される。各RAMは、回転画像のタイルの個別行に関連したピクセルを記憶する。この実施形態では、タイルサイズは、16行x128列である。他の実施形態では、他のタイルサイズが使用されてもよく、そしてタイルバッファ24は、タイルにおける行の数に対応する他の数のRAMを含んでもよい。
【0037】
一実施形態において、グラフィックパイプラインの次の段は、垂直スケーラーユニットである。この垂直スケーラーユニットは、単一のクロックサイクルにおいてタイルバッファ24からピクセルの1列全体をフェッチする。ある実施形態では、タイルバッファ24の各RAMは、クロックサイクル当たり単一のアクセスを許す。それ故、タイルバッファ24は、各行が個別のRAMに記憶されるように構成され、垂直スケーラーが各クロックサイクルにおいて各行から単一のピクセルを読み取ることができるようにされる。他の実施形態では、タイルバッファ24は、グラフィックパイプラインの次の段によりタイルバッファ24からデータをどのように読み取るかに基づいて、他の仕方で構成される。
【0038】
図4には3つの区画化された画像が示されている。回転を行わない場合のソース画像の区画化は、ソース画像50で示されている。ソース画像50は、(0、0)−(2、2)で示す8つのタイルに区画化され、そしてタイルが処理される順序は、最も左上角のタイルで始まって最も左側の列を下に進み、即ち(0、0)(0、1)及び(0、2)で示すブロックでスタートする。次いで、最も左側の列がフェッチされた後に、その右側の次の列(タイル(1、0)(1、1)及び(1、2))がフェッチされ、等々となる。
【0039】
90°の時計方向回転を行うためのソース画像の区画化は、ソース画像ブロック52で示されている。この場合、ソース画像の区画化は、指定の回転に基づくものとなり、処理されるべき第1のタイルは、ソース画像52の最も左下のタイルとなる。ソース画像52の最も左下のタイルは、90°回転を行った後の回転画像54において最も左上のタイルとなり、このため、ソース画像52の最も左下のタイルが、処理されるべき第1のタイルとなる。ソース画像52のタイルは、最も左側のタイル(0、0)でスタートして最も下のタイル行において処理され、タイル(0、1)(0、2)(0、3)及び(0、4)を経て進む。次いで、最も上のタイル行がタイル(1、0)からタイル(1、4)へと処理される。ソース画像52のタイルの処理は、90°の回転により決定された形態で進み、タイルは、指定の回転を行った後に位置された通りに処理される。処理される第1のタイルは、回転画像54の最も左上で終わるタイルである。次いで、画像は、(回転画像54の)第1のタイル列を下降するように処理され、次いで、その右側の次の列へ進み、等々となる。回転画像54は、ソース画像52が処理されそして回転ユニット(例えば、図1の回転ユニット10)により回転された後に行先画像がどのように現れるか示している。他の形式の回転(90°以外の回転)に対してソース画像をタイルへ区画化することは、行われる特定形式の回転に基づいて同様に実行される。又、図4に示す画像及びタイルのサイズは、単なる例示に過ぎず、他の数及びサイズのタイルを伴う他の画像も同様に処理することができる。
【0040】
図5には、区画化されたソース画像とタイルバッファとの間の対応関係の一実施形態が示されている。図5には、ソース画像52(90°時計方向回転に対して区画化された)が示されており、そして処理される第1の4つのタイル((0、0)(0、1)(0、2)及び(0、3))と、それらタイルが記憶される対応するタイルバッファ24−30とが矢印で接続されている。例えば、タイル(0、0)は、タイルバッファ24に記憶され、タイル(0、1)は、タイルバッファ26に記憶され、タイル(0、2)は、タイルバッファ28に記憶され、そしてタイル(0、3)は、タイルバッファ30に記憶される。
【0041】
図5は、区画化されたソース画像52の1つの色成分についてタイルバッファへのタイルのルーティングを示す。区画化されたソース画像52の各色成分は、個別のタイルバッファに記憶される。例えば、ARGBフォーマットでは、画像52の最初の4つのタイルの全ての色成分を記憶するために全部で16個のタイルバッファが使用される。
【0042】
タイルバッファ24−30がグラフィックパイプラインの後続段により読み取られた後に、区画化されたソース画像52の次の4つのタイルがタイルバッファ24−30に書き込まれる。一実施形態において、グラフィックパイプラインの次の段は、タイルバッファ24−30から一度に1つ読み取りを行い、タイルバッファ24が読み取られた場合は、区画化されたソース画像52の次のタイルがタイルバッファ24に書き込まれ、次いで、タイルバッファ26が読み取られるまでプロセスが停止され、等々となるようにする。
【0043】
図6には、4つのタイルバッファと、区画化された回転画像の一部分とが示されている。タイルバッファ24−30は、図5に示されたソース画像52から4つのタイルを記憶する。ソース画像52からのこれら4つのタイルは、回転画像54に示された4つのタイル((0、0)(0、1)(0、2)及び(0、3))に対応する。ソース画像52のオリジナルタイルから回転画像54へのピクセルの回転は、ピクセルがタイルバッファ24−30に書き込まれるときに行われる。回転画像54の4つのタイルは、グラフィックパイプラインの後続段(図示せず)によりタイルバッファ24−30から読み取られる。或いは又、回転画像54の4つのタイルに記憶されたピクセルは、ディスプレイ(図示せず)又はメモリの位置(図示せず)へ搬送される。
【0044】
タイルは、回転画像54に、その画像の左上ブロックで始めて記憶され、次いで、画像の最下縁に到達するまでタイルの最も左の列を下るように処理が続けられる。次いで、タイルは、最も左から2番目の列の最上部に記憶され続け、画像の残り部分全体を通してそのように続けられる。別の実施形態では、タイルは、回転画像54に異なる順序で記憶されてもよい。
【0045】
図7には、タイルバッファの一実施形態のブロック図が示されている。種々の実施形態において、タイルバッファ26のサイズは、個々の画像タイルのサイズに一致するように変化し得る。一実施形態において、個々の画像タイルは、16ラインx128列であり、各ラインは、128個のピクセルを含む。別の実施形態では、画像タイルのラインは、タイルの右側及び左側に付加的な7つのピクセルをフェッチすることにより142個のピクセルへ拡張される。タイルの右縁及び左縁に隣接タイルからピクセルをこのようにフェッチすることは、グラフィックパイプラインの後続段における15タップの多相水平スケーラーフィルタを容易にするために行われる。
【0046】
タイルバッファ26は、142ラインx16列のサイズを有するものとして示されている。一実施形態において、これは、16ラインx142列のソース画像タイルサイズ及び90°又は270°の指定回転に対応する。各ボックスの表示は、回転画像内のピクセル位置を指す。ピクセルは、ソース画像からフェッチされ、そして指定回転に基づいてタイルバッファ26内の適当な位置に記憶される。タイルバッファ26の各ボックスの表示は、回転画像のタイル内のピクセル位置を指す。
【0047】
タイルバッファ26に示したピクセルの配置を利用して、単一のクロックサイクル中に複数のピクセルをタイルバッファ26に書き込むことができる。例えば、一実施形態において、タイルバッファ26のピクセルの各垂直配列は、個別のRAMに対応する。従って、RAM0−15の各々は、単一のクロックサイクル中に単一のピクセルの書き込み又は読み取りしか許さない。それ故、オリジナルのソース画像からピクセルデータをどのようにフェッチするかに基づき、クロックサイクル当たりせいぜい1つのピクセルしかRAMに書き込んだりRAMから読み取ったりする必要がないように各RAMにピクセルが配置される。
【0048】
一実施形態において、オリジナルソース画像からフェッチ当たり1つのラインでピクセルがフェッチされ、そしてフェッチされたピクセルの各セットは、回転がある場合には、タイルバッファ26の単一ライン(例えば、ライン0−列0、ライン1−列0、等)に書き込まれ、そして回転がない場合には、タイルバッファ26の対角ライン(例えば、ライン0−列0、ライン0−列1、ライン0−列2、等)に書き込まれる。又、ピクセル配列体は、回転画像の単一列をターゲットとする16個のピクセルをグラフィックパイプラインの次の段により単一のクロックサイクル中にタイルバッファ26から読み出すことができるようにする。図7に示すタイルバッファ26のサイズは、単なる例示に過ぎず、他の実施形態では、他のタイルサイズが使用されてもよいことに注意されたい。更に、他の実施形態では、タイルバッファ内のピクセルの他の配列も考えられ、意図される。
【0049】
図8は、実行可能な種々の形式の回転のブロック図である。各形式の回転に対して2つのブロックが示されており、一方のブロックは、「ソース」と示されたオリジナルソース画像を示し、そして第2のブロックは、特定形式の回転(例えば、90°、270°、Xフリップ)後の最終的な画像を示す。各ソース画像に隣接する2つの矢印は、ピクセルスキャン方向(実線)及びラインスキャン方向(破線)を示す。ピクセルスキャン方向は、ソース画像の各タイルからピクセルがスキャン(即ち、フェッチ)される方向を指示する。ラインスキャン方向は、ソース画像の各タイルからラインがスキャンされる方向、及びタイルがスキャンされる方向を指示する。ピクセル及びラインスキャン方向は、フェッチユニット12(図1)のようなフェッチユニットにより読み取りアドレスが発生される順序を決定する。フェッチユニット12は、全画像或いは全行又は列に対して動作するのではなく、画像のタイルに対して動作することにより、ソース画像を回転及び/又はフリップする。フェッチユニット12は、回転画像の最も左上のタイルをターゲットとするソース画像のタイルでスタートして、タイルごとに、ソース画像からピクセルをフェッチするように構成される。
【0050】
16の異なる回転及びフリップ組み合わせに対して8つの独特の画像配向が示されている。回転及びフリップの組み合わせの幾つかは、同じ画像配向を生じ、それ故、図8には1回しか示されていない。例えば、90°の回転の後にx(水平)方向にフリップすることは、270°の回転の後にy(垂直)方向にフリップすることと同等である。
【0051】
図8に示す例は、実行される回転の形式を余すところなく示すものではなく、他の形式の回転も実行できることに注意されたい。更に、図8に示す規範的画像は、方形画像であるが、ここに開示する方法及びメカニズムでは、長方形のソース画像も使用できる。又、他の実施形態では、他のピクセル及びラインスキャン方向が使用されてもよい。
【0052】
図9には、インライン形態でピクセルを回転する方法の一実施形態が示されている。説明上、この実施形態におけるステップは、順次に示されている。以下に述べる方法の種々の実施形態において、ここに述べる要素の1つ以上は、同時に遂行されてもよいし、図示された順序とは異なる順序で遂行されてもよいし、又は完全に除去されてもよいことに注意されたい。又、必要に応じて、他の付加的な要素が遂行されてもよい。
【0053】
一実施形態において、ソース画像からのピクセルに対して指定の回転に基づく順序でフェッチ要求を発行する(ブロック60)。ソース画像をタイルへと区画化し、タイルの最も上の行で始めて行ごとにタイルを下方に進むようにして各タイルからピクセルをフェッチする。ソース画像をタイルへと区画化することは、実行される特定の回転に基づく。例えば、16行x128列のタイルサイズをもつ一実施形態では、指定の回転が90°である場合に、ソース画像は、128行及び16列をもつタイルへと区画化される。各行は、16ピクセルを含み、そして全部で128行に対して最も上の行で始めて最も下の行へと下方に進むように行をフェッチする。ソース画像から読み取られる各行は、90°の回転に基づく回転画像では列になる。フェッチされるソース画像の第1タイルは、回転画像の最も左上のタイルとして終了するタイルであり、従って、回転画像の第1のタイル列を下るようにタイルがフェッチされる。次いで、その右側の次のタイル列(回転画像で見て)がフェッチされ、等々となって、ソース画像の全てのタイルがフェッチされるまで行われる。
【0054】
次いで、ピクセルに対してターゲット位置を計算する(ブロック62)。ターゲット位置は、指定の回転に基づいて計算される。例えば、指定の回転が90°である場合には、ソース画像のタイルから読み取られる各行は、回転画像の対応タイルの列をターゲットとする。ソース画像のタイルの最も上の行は、回転画像の対応タイルの最も右の列をターゲットとし、ソース画像のタイルの最も上から2番目の行は、回転画像のタイルの最も右から2番目の列をターゲットとする。
【0055】
次いで、計算されたターゲット位置をテーブルに記憶する(ブロック64)。一実施形態において、計算されたターゲット位置をテーブルに記憶するのと同時に、フェッチ要求を発行する。ソース画像からピクセルが受け取られると、それに対応するターゲット位置をテーブルにおいてルックアップする(ブロック66)。テーブルは、発行されたフェッチ要求に対してエントリを記憶し、そしてエントリは、要求のトランザクションIDに基づいて識別される。次いで、受け取ったピクセルを、タイルバッファにおいて、計算されたターゲット位置に記憶する(ブロック68)。これらのステップは、ソース画像の全てのタイルの全てのピクセルがフェッチされて、指定の回転に基づくタイルバッファの適当な位置に記憶されるまで、繰り返される。タイルバッファは、後続段により読み取られるか又はメモリに記憶され、ソース画像内の後続タイルからピクセルを記憶するために各タイルバッファを再使用できるようにする。
【0056】
図10には、画像のインライン回転を遂行する方法の一実施形態が示されている。説明上、この実施形態におけるステップは、順次に示されている。以下に述べる方法の種々の実施形態において、ここに述べる要素の1つ以上は、同時に遂行されてもよいし、図示された順序とは異なる順序で遂行されてもよいし、又は完全に除去されてもよいことに注意されたい。又、必要に応じて、他の付加的な要素が遂行されてもよい。
【0057】
一実施形態において、ソース画像を複数のタイルに区画化する(ブロック70)。ソース画像の区画化は、実行される指定回転に基づく。区画化は、ソース画像のコンテンツを変化させるか或いはソース画像がメモリ装置に記憶される場所を変化させる実際の物理的区画化ではない。区画化は、ソース画像をタイルの論理的配列へとバーチャルに区画化するものである。ソース画像の第1のタイルからのピクセルを読み取る(ブロック72)。一実施形態において、ソース画像の第1のタイルは、指定の回転に基づいてソース画像の複数のタイルから選択される。回転画像の最も左上のタイルをターゲットとするソース画像のタイルは、ソース画像から選択される第1のタイルである。次いで、タイルバッファ内のターゲット位置にピクセルを記憶する(ブロック74)。ターゲット位置は、実行される指定回転に基づいて計算される。
【0058】
次いで、グラフィックパイプラインの後続段によりタイルバッファが読み取られたことを検出するのに応答して(条件ブロック76)、ソース画像の後続タイルからピクセルを読み取る(ブロック80)。次いで、ソース画像の後続タイルからのピクセルをタイルバッファに記憶する(ブロック82)。グラフィックパイプラインの後続段によりタイルバッファが読み取られない場合には(条件ブロック76)、回転ユニットが、1つ以上のクロックサイクル中、停止となる(ブロック78)。1つ以上のクロックサイクル中の停止の後に、回転ユニットは、タイルバッファがグラフィックパイプラインの後続段によって読み取られたかどうか再び決定する(条件ブロック76)。一実施形態において、グラフィックパイプラインの後続段は、回転画像を垂直及び水平にスケーリングするためのスケーラーユニットである。
【0059】
第1タイル及び後続タイルの順序は、指定の回転に基づき選択される。例えば、ソース画像から選択される第1のタイルは、回転画像の最も左上のタイルとして終了するタイルである。次いで、ソース画像から選択される第2タイルは、回転画像の最も左上のタイルの下で終了するタイルである。このプロセスは、回転画像のタイルの最も左側の列として終了するタイルについて続けられ、次いで、その右側の次の列が処理され、等々となる。最も最近処理されたタイルがソース画像の最後のタイルである場合には(条件ブロック84)、この方法が終了となる。ソース画像の最後のタイルは、回転画像の最も右下のタイルをターゲットとしている。手前のタイルが最後のタイルでない場合には、この方法は、条件ブロック76へ戻る。
【0060】
他の実施形態では、個々のタイルが回転画像内のその位置に基づいて読み取られる順序は変化してもよい。例えば、別の実施形態では、回転画像内に位置されるときの最も右上のタイルは、最初に処理されるタイルであり、そしてタイルは、回転画像の最も右側の列を下に進むように処理される。次いで、タイルの列は、右から左への順序で処理される。タイルが回転画像内のその位置に基づいてタイルバッファに書き込まれる順序の変更も考えられ、意図される。ある実施形態では、複数のタイルバッファを使用して、回転画像の複数のタイルを同時に記憶する。1つ以上のタイルバッファが後続段により読み取られ、或いはディスプレイユニット又は記憶位置へ搬送されるときには、各タイルバッファは、ピクセルの別のタイルからのピクセルで埋められる。
【0061】
図11は、システム90の一実施形態のブロック図である。図示されたように、システム90は、デスクトップコンピュータ100、ラップトップコンピュータ110、タブレットコンピュータ120、セルラーホン130、等のチップ、回路、コンポーネント、等を表わす。ここに示す実施形態では、システム90は、外部メモリ92に結合された集積回路98の少なくとも1つのインスタンスを含む。集積回路98は、回転ユニット10(図1)の1つ以上のインスタンスを含む。ある実施形態において、集積回路98は、1つ以上のプロセッサ及び1つ以上のグラフィック処理パイプラインを伴うSoCである。
【0062】
集積回路98は、1つ以上の周辺装置94及び外部メモリ92に結合される。電源96も設けられ、集積回路98に供給電圧を供給すると共に、メモリ92及び/又は周辺装置94に1つ以上の供給電圧を供給する。種々の実施形態において、電源96は、バッテリ(例えば、スマートホン、ラップトップ又はタブレットコンピュータの充電型バッテリ)を表わす。ある実施形態では、2つ以上の集積回路98が含まれる(且つ2つ以上の外部メモリ92も含まれる)。
【0063】
メモリ92は、ダイナミックランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、倍データレート(DDR、DDR2、DDR3、等)SDRAM(mDDR3等のSDRAMの移動バージョン、及び/又はLPDDR2等のSDRAMの低電力バージョンを含む)、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)、等の任意の形式のメモリである。1つ以上のメモリ装置が回路板に結合されて、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)、等のメモリモジュールを形成する。或いは又、装置は、集積回路98と共に、チップオンチップ構成、パッケージオンパッケージ構成、又はマルチチップモジュール構成でマウントされてもよい。
【0064】
周辺装置94は、システム90の形式に基づいて望ましい回路を含む。例えば、一実施形態では、周辺装置94は、wifi、Bluetooth(登録商標)、セルラー、グローバルポジショニングシステム、等の、種々の形式のワイヤレス通信のための装置を含む。又、周辺装置94は、RAM記憶装置、ソリッドステート記憶装置、又はディスク記憶装置を含む付加的な記憶装置も含む。又、周辺装置94は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力装置、マイクロホン、スピーカ、等のユーザインターフェイス装置を含む。
【0065】
図12には、回転ユニット10(図1)に含まれる回路を表わす1つ以上のデータ構造体を含むコンピュータ読み取り可能な媒体140のブロック図の一実施形態が示されている。一般的に述べると、コンピュータ読み取り可能な媒体140は、磁気又は光学的媒体のような非一時的記憶媒体、例えば、ディスク、CD−ROM、又はDVD−ROM、揮発性又は不揮発性メモリ媒体、例えば、RAM(例えば、SDRAM、RDRAM、SRAM、等)、ROM、等、並びにネットワーク及び/又はワイヤレスリンクのような通信媒体を経て搬送される電気、電磁又はデジタル信号のような送信媒体又は信号を経てアクセスできる媒体を含む。
【0066】
一般的に、コンピュータ読み取り可能な媒体140における回路のデータ構造(1つ又は複数)は、プログラムにより読み取られ、そして回路より成るハードウェアを製造するために直接的又は間接的に使用される。例えば、データ構造は、ベリログ又はVHDLのような高レベルデザイン言語(HDL)でのハードウェア機能の1つ以上の振舞いレベル記述又はレジスタ転送レベル(RTL)記述を含む。これら記述は、合成ライブラリからのゲートのリストより成る1つ以上のネットリストを発生するために記述を合成する合成ツールによって読み取られる。ネットリストは、回路より成るハードウェアの機能も表わすゲートのセットを含む。次いで、ネットリストは、マスクに適用される幾何学的形状を記述する1つ以上のデータセットを発生するように配置され、ルーティングされる。次いで、マスクは、種々の半導体製造ステップにおいて、その回路に対応する半導体回路(1つ又は複数)を製造するのに使用される。或いは又、コンピュータ読み取り可能な媒体140におけるデータ構造は、必要に応じて、ネットリスト(合成ライブラリを伴うもの又は伴わないもの)でもデータセットでもよい。更に別の形態では、データ構造は、図式的プログラムの出力、或いはそこから導出されたネットリスト又はデータセットを含む。
【0067】
コンピュータ読み取り可能な媒体140は回転ユニット10の表現を含むが、他の実施形態では、回転ユニット10の任意の部分又は部分の組み合わせの表現(例えば、フェッチユニット12、タイルバッファ24−30、ルックアップテーブル18)が含まれてもよい。
【0068】
前記実施形態は、具現化の非限定例であることを強調しておく。当業者であれば、前記開示が充分に理解されれば、多数の変更や修正が明らかとなろう。そのような変更や修正は、全て、特許請求の範囲に包含されることが意図される。
【符号の説明】
【0069】
10:回転ユニット
12:フェッチユニット
14:メモリ管理ユニット(MMU)
15:ソース画像
16:メモリ
18:ルックアップテーブル
20:ビット拡張ユニット
22:スウィズルユニット
24−30:タイルバッファ
32:スケーラー
50、52:ソース画像
54:回転画像
90:システム
92:外部メモリ
94:周辺装置
96:電源
98:集積回路
140:コンピュータ読み取り可能な媒体
【技術分野】
【0001】
本発明は、一般的に、グラフィック情報処理に関するもので、より特定すれば、画像を回転する方法及びメカニズムに関する。
【背景技術】
【0002】
コンピューティング装置、特に、移動装置は、多くの場合、制限されたメモリリソース及びバッテリのような限定された電源を有する。ディスプレイを伴うコンピューティング装置は、通常、ビデオ及び画像を操作及び表示するために異なる形式のグラフィックハードウェアを備えている。グラフィックハードウェアは、表示するように意図された画像を発生及び処理するために多数の異なる形式の動作を遂行する。グラフィックハードウェアにより遂行される1つの共通の動作は、画像の回転である。典型的に、画像を回転するために大きなバッファが使用される。しかしながら、それらのバッファは、多量のシリコンエリアを必要とし、付加的な電力を消費し、グラフィックハードウェアのコストを増加させ、移動装置のバッテリ寿命を短縮させる。
【発明の概要】
【0003】
画像を回転するためのシステム及び方法が提供される。
【0004】
種々の実施形態において、ソース画像のインライン回転を遂行して回転画像を発生する装置が提供される。この装置は、多段グラフィック処理パイプラインの一部分である。この装置は、メモリからソース画像ピクセルをフェッチするためのフェッチユニットを備えており、メモリに記憶されたソース画像内のピクセルのアドレスを発生するよう構成される。フェッチユニットは、更に、ソース画像に対して遂行される回転の形式に基づく順序でピクセルアドレスを発生する。ソース画像は、複数のタイルへ区画化され、この区画化は、遂行される回転に基づくものである。ピクセルは、ソース画像からタイルごとにフェッチされる。
【0005】
又、この装置は、検索されたピクセルを記憶するための1つ以上のタイルバッファも備えている。ピクセルは、タイルバッファ内のターゲット位置に記憶され、そしてターゲット位置は、遂行される回転に基づく。一実施形態において、各タイルバッファは、画像の所与の回転タイルからのデータの一部分を記憶するために複数の個別の個々のランダムアクセスメモリ(RAM)を備えている。種々の実施形態において、タイルバッファのピクセルは、グラフィック処理パイプラインの後続段により読み取られて処理される。
【0006】
これら及び他の特徴並びに効果は、ここに述べる解決策の以下の詳細な説明から当業者に明らかとなろう。
【0007】
方法及びメカニズムの前記及び更に別の効果は、添付図面を参照した以下の詳細な説明から良好に理解されるであろう。
【図面の簡単な説明】
【0008】
【図1】回転ユニットの一実施形態を示すブロック図である。
【図2】1つ以上の実施形態に基づくルックアップテーブルである。
【図3】回転タイルバッファの一実施形態を示すブロック図である。
【図4】1つ以上の実施形態に基づく3つの区画化された画像を示す。
【図5】区画化されたソース画像と4つのタイルバッファとの間の対応性の一実施形態を示すブロック図である。
【図6】4つのタイルバッファ及び区画化された回転画像の一部分の一実施形態を示すブロック図である。
【図7】タイルバッファの一実施形態を示すブロック図である。
【図8】遂行される種々の形式の回転を示すブロック図のグループである。
【図9】インライン形態でピクセルを回転するための方法の一実施形態を示す一般化されたフローチャートである。
【図10】画像のインライン回転を遂行するための方法の一実施形態を示す一般化されたフローチャートである。
【図11】システムの一実施形態のブロック図である。
【図12】コンピュータ読み取り可能な媒体の一実施形態のブロック図である。
【発明を実施するための形態】
【0009】
以下の説明では、ここに表わす方法及びメカニズムを完全に理解するために多数の特定の細部について述べる。しかしながら、当業者であれば、これら特定の細部なしに種々の実施形態を具現化できることが明らかであろう。ある例では、ここに述べる解決策を不明瞭にしないために、良く知られた構造、コンポーネント、信号、コンピュータプログラムインストラクション及び技術は、詳細に示さない。説明を簡単及び明瞭にするため、図示された要素は、必ずしも正しい縮尺で描かれていない。例えば、幾つかの要素の寸法は、他の要素よりも誇張されている。
【0010】
本明細書には「一実施形態」を言及することが含まれる。異なる文脈において「一実施形態において」という句が現れることは、必ずしも、同じ実施形態を言及するものではない。特定の特徴、構造又は特性は、本開示と矛盾しない適当な仕方で組み合わせることができる。更に、本出願全体に使用される「〜してもよい(may)」という語は、許すという意味(即ち、〜の潜在性があるという意味)で使用されるもので、強制の意味(即ち、〜しなければならないという意味)ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
【0011】
用語。次の章は、本開示(特許請求の範囲を含む)に見られる用語に関する定義及び/又は状況を与えるものである。
【0012】
「備える(Comprising)」。この用語は、オープンエンドである。特許請求の範囲に使用されるときには、この用語は、付加的な構造又はステップを除外するものではない。「フェッチユニットを備える装置(An apparatus comprising a fetch unit…)」という請求項を考える。このような請求項は、装置が付加的なコンポーネント(例えば、プロセッサ、キャッシュ、メモリコントローラ)を含むことを除外するものではない。
【0013】
「〜ように構成された(Configured To)」。種々のユニット、回路又は他のコンポーネントは、1つ又は複数のタスクを遂行するように「構成される」ものとして説明され又は請求される。この点について、「構成される」とは、ユニット/回路/コンポーネントが動作中に1つ又は複数のタスクを遂行する構造体(例えば、回路)を含むことを指示することにより、構造体を暗示するのに使用される。従って、ユニット/回路/コンポーネントは、その指定のユニット/回路/コンポーネントが現在動作していない(例えば、オンでない)ときでも、タスクを遂行するように構成されると言うことができる。「構成される」の言語と共に使用されるユニット/回路/コンポーネントは、ハードウェア、例えば、回路、動作を具現化するために実行できるプログラムインストラクションを記憶するメモリ、等を含む。ユニット/回路/コンポーネントが1つ以上のタスクを遂行するように「構成された」という表現は、そのユニット/回路/コンポーネントに関して35U.S.C.§112、第6節を引用しないことが明確に意図される。更に、「構成される」は、問題とするタスクを遂行できるようにソフトウェア及び/又はファームウェア(例えば、ソフトウェアを実行するFPGA又は汎用プロセッサ)を動作することで操作されるジェネリック構造体(例えば、ジェネリック回路)を含む。又、「構成される」は、1つ以上のタスクを具現化又は遂行する装置(例えば、集積回路)を製造するように製造プロセス(例えば、半導体製造ファシリティ)を適用することも含む。
【0014】
「第1(First)」、「第2(Second)」、等。ここで使用するこれら用語は、それに続く名詞のための表現として使用されるもので、特に指示のない限り、任意の形式の順序(例えば、空間的、時間的、論理的)を意味するものではない。例えば、4タイルバッファを伴う回転ユニットでは、「第1」及び「第2」タイルバッファという語は、4つのタイルバッファのうちのいずれか2つを指すのに使用される。
【0015】
「〜に基づく(Based On)」。ここで使用するこの用語は、決定に影響する1つ以上のファクタを記述するのに使用される。この用語は、決定に影響する付加的なファクタを除外するものではない。即ち、決定は、これらのファクタのみに基づいてもよいし、又はこれらのファクタに少なくとも一部分基づくものでもよい。「Bに基づいてAを決定する(determine A based on B)」という句について考える。Bは、Aの決定に影響するファクタであるが、そのような句は、Aの決定を、Cに基づくことからも除外しない。他の例では、Aは、Bのみに基づいて決定されてもよい。
【0016】
図1は、回転ユニットの一実施形態を示すブロック図である。種々の実施形態において、回転ユニット10は、システムオンチップ(SoC)内のグラフィック処理パイプライン内に合体される。一実施形態において、グラフィック処理パイプラインは、個別プロセッサチップ又はコプロセッサである。ある実施形態では、グラフィック処理パイプラインは、グラフィックデータをディスプレイコントローラ又はディスプレイ装置に付与する。他の実施形態では、グラフィック処理パイプラインは、グラフィックデータを、更なる処理のために、又はディスプレイ装置によるその後の消費のために、メモリ内の記憶位置に付与する。他の実施形態では、回転ユニット10は、集積回路(IC)、特定用途向け集積回路(ASIC)、装置、或いは種々の他の同様の装置のいずれかに合体される。
【0017】
ソース画像15は、静止画像であるか又はビデオストリームのフレームである。ソース画像15は、ピクセルとして知られた非常に多数の個別画素により表わされる。デジタル画像では、画像又はビデオフレームにおける最小の情報アイテムが「ピクセル」である。ピクセルは、一般的に、規則的な二次元グリッドに配列される。ソース画像15の各ピクセルは、1つ以上のピクセル成分によって表される。ピクセル成分は、画像が表わされたカラースペース内の各カラーのカラー値を含む。例えば、カラースペースは、赤・緑・青(RGB)カラースペースである。従って、各ピクセルは、赤成分、緑成分及び青成分により表される。これら成分の値は、そのピクセルの対応カラーの輝度又は強度を表わす。ルミナンス及びクロミナンス表現(YCrCb)のような他のカラースペースも使用される。更に、付加的なピクセル成分も含まれる。例えば、混合のためのアルファ値をRGB成分と共に含ませて、ARGBカラースペースを形成してもよい。
【0018】
回転ユニット10は、ソース画像15内のソース位置からピクセルを読み取り、そしてそれを、行先画像のターゲット位置に対応するタイルバッファ24−30内の位置に書き込むように構成される。回転ユニット10は、90°の倍数の回転、及び/又は水平又は垂直方向のフリップを遂行する。回転ユニット10への入力である回転構成ビットにより指定の回転が指示される。本開示全体にわたって使用される「回転」という用語は、そのワードの慣習的な意味において90°、180°、又は270°の回転(時計方向又は反時計方向)を指す。更に、「回転」とは、フリップ(即ち、画像のxスワップ又はyスワップ方向変化)を指す。
【0019】
回転ユニット10は、メモリ16に記憶されたソース画像15から指定の順序でピクセルをフェッチするためのフェッチユニット12を備えている。一実施形態において、フェッチユニット12は、ソース画像15におけるピクセルのアドレスを発生する。フェッチユニット12は、アドレスが発生される順序を、遂行される回転の形式に基づいて決定する。フェッチユニット12は、発生されたアドレスを使用して読み取り要求を発行し、そしてアドレスがメモリ管理ユニット(MMU)14により使用されて、メモリ16からの読み取り動作を遂行する。別の実施形態では、論理的ファブリックインターフェイス(図示せず)がMMU14とメモリ16との間に含まれる。一実施形態において、フェッチユニット12は、直接メモリアクセス(DMA)読み取り動作を遂行して、ソース画像15からピクセルを読み取る。フェッチユニット12は、DMA読み取り動作を遂行するためにDMAコントローラを備えている。
【0020】
MMU14は、メモリアドレス変換を遂行するように構成される。一実施形態では、MMU14は、バーチャルアドレスを利用して、フェッチユニット12が、ソース画像15に対応するバーチャルアドレス範囲にアドレスできるようにする。MMU14は、バーチャル/物理的変換を遂行して、バーチャルアドレスをメモリ16の実際の物理的アドレスにマップさせる。種々の実施形態において、MMU14は、ミス時フェッチ要求である変換を待機することにより被るレイテンシを回避するためにフェッチユニット12が変換をプリフェッチできるようにする。一実施形態では、フェッチユニット12は、プリフェッチのバーチャルアドレスを発生するためにプリフェッチエンジン(図示せず)を備えている。この実施形態では、MMU14は、フェッチユニット12からのプリフェッチ要求を処理するためにプリフェッチユニット(図示せず)を備えている。一実施形態において、フェッチユニット12は、現在タイルがフェッチされる1タイル前にプリフェッチ要求を送信する。そのプリフェッチ要求は、MMU14内のストリーミング変換テーブル(STT)(図示せず)をポピュレートするのに使用される。フェッチユニット12が実際のメモリ要求を発行すると、その要求は、STTを使用して直ちに変換される。
【0021】
フェッチユニット12は、ソース画像15からピクセルをフェッチし、そしてそのピクセルをタイルバッファ24−30内の適当な位置に書き込むように構成される。一実施形態において、フェッチユニット12は、1つ以上のピクセルに対応する特定のトランザクション識別子(ID)をもつ読み取り要求を発行する。フェッチユニット12は、回転された画像のタイルにおける1つ以上のピクセルの行先位置を計算する。次いで、フェッチユニット12は、ルックアップテーブル18のエントリにトランザクションIDを記憶し、そしてピクセル行先位置がエントリに含まれる。その特定トランザクションIDのピクセルがメモリ16から受け取られると、ルックアップテーブル18の対応エントリが検索され、そして位置情報を使用して、タイルバッファ24−30の所与のタイルバッファのどこにピクセルを書き込むべきか決定する。
【0022】
一実施形態において、ルックアップテーブル18は、ランダムアクセスメモリ(RAM)である。種々の実施形態において、ルックアップテーブル18は、種々の数のエントリを含む。フェッチされたピクセルは、ルックアップテーブル18に記憶された位置データに基づきタイルバッファ24−30のターゲット位置に記憶される。ピクセルは、実際上、タイルバッファ24−30の所与のタイルバッファのターゲット位置に書き込まれたのと同様に再配置される。
【0023】
タイルバッファ24−30の各々は、回転された画像の所与のタイルを記憶する。ソース画像15及びそれに対応する回転画像の各々は、指定の回転に基づいて複数のタイルに配分される。一実施形態において、回転画像のタイルは、16行のピクセルx128列のピクセルである。しかしながら、他の実施形態では、タイルのサイズが変化してもよい。複数のタイルを使用して、ソース画像15の各行を形成するように、ソース画像15の巾をタイルの巾より大きくしてもよい。又、複数のタイルを使用して、ソース画像15の各列を形成するように、ソース画像15の長さをタイルの長さより大きくしてもよい。タイルバッファ24−30の各々は、ソース画像15の所与の回転タイルを記憶し、そしてパイプラインの次の段によりタイルバッファが読み取られた後、タイルバッファは、ソース画像15の新たなタイルで埋められる。一実施形態において、各カラー成分は、回転画像の4つのタイルを記憶するための4つのタイルバッファを含む。例えば、ソース画像15をARGBフォーマットで表す場合には、アルファカラー成分に対して4つのタイルバッファがあり、赤のカラー成分に対して4つのタイルバッファがあり、緑のカラー成分に対して4つのタイルバッファがあり、そして青のカラー成分に対して4つのタイルバッファがある。
【0024】
一実施形態において、回転画像の一部分を形成するタイルバッファ24−30に記憶されたタイルは、画像処理パイプラインの後続段へ搬送される。一実施形態において、パイプラインの後続段は、行先画像の回転タイルをアップスケール又はダウンスケールするためのスケーラーユニット(例えば、スケーラー32)である。スケーラー32は、パイプライン内で使用される多数の垂直及び水平スケーラーを表わす。別の実施形態では、パイプラインの次の段は、スケーラー32以外のユニット(カラースペース変換ユニット、正規化ユニット、ダウンサンプリングユニット)である。更に別の実施形態では、回転ユニット10は、行先画像の回転タイルをディスプレイユニット(図示せず)に搬送する。更に別の実施形態では、回転ユニット10は、ターゲット画像の回転タイルをメモリ16又は別の記憶位置に搬送する。
【0025】
一実施形態において、フェッチユニット12により発生される各読み取り要求は、64バイトまでのデータを読み取る。他の実施形態では、読み取り要求は、他の量のデータを要求する。一実施形態において、各読み取り要求は、ソース画像15のタイルのライン(即ち、行)に向けられる。回転画像のターゲットタイルサイズが16行x128列でありそして指定の回転が90又は270°である場合、ソース画像15は、16列x128行のタイルへと区画化される。フェッチユニット12は、タイルの最も上のラインをフェッチし、そしてタイルの底まで1ラインごとに下に進む。各フェッチは、ソース画像15のタイルのラインからのピクセルを要求する。16ピクセルの1ライン全体を検索するには1つ以上のフェッチが必要であり、次いで、フェッチは、次のラインへと下に進んで、次の16ピクセルを検索し、次いで、1タイル全体に対して128本のラインが検索されるまでこのプロセスが続けられる。ソース画像15の1行からの16個のピクセルは、指定の(90又は270°の)回転に対し回転画像の単一列を形成する。他の実施形態では、タイルの他のサイズ(例えば、256x24、64x16、512x32)が使用され、そして他の形式の回転が遂行される。
【0026】
一実施形態において、回転ユニット10によりピクセルが受け取られたときに、タイルバッファ24−30のどこにピクセルを記憶するかに基づいてオンザフライ決定がなされる。この決定は、ルックアップテーブル18に記憶された位置情報に基づく。ある実施形態では、ピクセルは、順序ずれして戻され、そしてピクセル行先情報を含むタグデータに基づいてタイルバッファ24−30内の正しい位置へルーティングされる。
【0027】
フェッチユニット12は、トランザクションID及びピクセル行先をルックアップテーブル18に記憶する。ピクセルデータは、順序ずれして戻され、そしてルックアップテーブル18へ搬送される。ルックアップテーブル18は、ソース画像15のネーティブフォーマット及び回転画像のターゲットフォーマットに基づいてピクセル当たりのビット数を拡張するためにビット拡張ユニット20へピクセルを搬送する。ビット拡張ユニットは、メモリから検索されるピクセルが、パイプライン内の次の段(即ち、スケーラー32)により使用されるものと同じサイズである場合には、含まれなくてもよい。ある実施形態では、スウィズルユニット22は、フェッチされたピクセルの順序を再アレンジする。例えば、一実施形態において、ピクセルは、青、緑、赤及びアルファ色成分の順序で受け取られる。スウィズルユニット22は、ピクセルを、アルファ、赤、緑及び青色成分の順序に再順序付けする。
【0028】
各ピクセルを記憶するのに使用されるビット数は、使用される特定フォーマットに依存する。例えば、あるシステムにおけるピクセルは、8ビットを必要とし、一方、他のシステムにおけるピクセルは、10ビットを必要とし、等々であり、種々のシステムにおいてピクセル当たり種々のビット数が使用される。一実施形態において、ソース画像15は、8ビットで表されたピクセルを含む。グラフィックパイプラインは、10ビットのピクセルを使用し、従って、ソース画像15から受け取られるピクセルは、ビット拡張ユニット20により8ビットから10ビットへ拡張される。ある実施形態では、ビット拡張ユニット20及びスウィズルユニット22は、含まれなくてもよいし、又はパススルーユニットでもよいことに注意されたい。ある実施形態では、フェッチされたピクセルは、ビット拡張ユニット20及びスウィズルユニット22を通過せずに、タイルバッファ24−30へ直接搬送される。
【0029】
ルックアップテーブル18、ビット拡張ユニット20及びスウィズルユニット22は、フェッチユニット12の一部分として示されているが、これは、単なる例示に過ぎず、他の実施形態では、ユニットは、他の適当な仕方で配置されてもよい。例えば、別の実施形態では、ルックアップテーブル18、ビット拡張ユニット20及び/又はスウィズルユニット22は、フェッチユニット12とは異なる個別ユニットでもよい。
【0030】
各タイルバッファ24−30は、回転された画像の異なるタイルに対応する。他の実施形態では、回転されたタイルからのピクセルを記憶するのに、4の他に、別の数のタイルバッファが使用されてもよい。更に、各タイルバッファは、複数のRAMを含み、そして各RAMは、1行の所与の画像タイルを記憶する。例えば、一実施形態において、各タイルバッファは、画像タイルの16行に対応する16個の個々のRAMを含む。他の実施形態では、16の他に、別の数の行をもつ他のタイルサイズが使用される。これらの実施形態では、タイル当たりの行数に対応して各バッファに他の数のRAMがあってもよい。例えば、別の実施形態では、タイルサイズが32行x128列である場合に、タイルバッファ当たり32のRAMがある。
【0031】
図1に示したコンポーネントは、適当なバス及び/又はインターフェイスメカニズムを使用して互いに結合される。ある実施形態では、これらコンポーネントは、アドバンスト・マイクロコントローラ・バス・アーキテクチャー(AMBA(登録商標))プロトコル(ARM(登録商標)ホールディングズからの)を使用するか、又は論理ブロックを接続及び管理するための他の適当なオンチップ相互接続仕様を使用して、接続される。AMBAバス及び/又はインターフェイスは、例えば、アドバンストeXtensibleインターフェイス(AXI)、アドバンスト・ハイパーフォーマンス・バス(AHB)、アドバンスト・システム・バス(ASB)、アドバンスト・ペリフェラル・バス(APB)、及びアドバンスト・トレース・バス(ATB)を含む。
【0032】
他の実施形態には、図1に示したコンポーネント及び/又は他のコンポーネントのサブセット又はスーパーセットを含めて、コンポーネントの他の組み合わせが含まれることに注意されたい。図1には、所与のコンポーネントの一例が示されているが、他の実施形態は、所与のコンポーネントの1つ以上の例を含んでもよい。同様に、この詳細な説明全体にわたり、所与のコンポーネントの一例しか示されていなくても、1つ以上の例が含まれてもよく、及び/又は複数の例が示されていても、1つの例しか含まない実施形態が使用されてもよい。
【0033】
図2には、ルックアップテーブルの一実施形態が示されている。ルックアップテーブル18の各エントリは、トランザクション識別子(ID)フィールド、タイルバッファ番号フィールド、ライン(行)番号フィールド、及び列番号フィールドを含めて、複数のデータフィールドを含む。トランザクションIDフィールドは、ソース画像15内の1つ以上のアドレスに対する特定の読み取り要求に対応する。フェッチユニット12(図1)は、1つ以上のピクセルの読み取り要求を発行するときにルックアップテーブル18に読み取り要求に対応するエントリを記憶する。各エントリは、回転後画像のタイルにおいてソースピクセル(1つ又は複数)をどこに配置すべきか指示する位置座標を含む。一実施形態において、回転後画像タイルは、タイルバッファに記憶され、そしてピクセルは、全グラフィック処理パイプラインの次の段によりタイルバッファから読み取られる。
【0034】
読み取り要求に対応するピクセルがメモリから検索されるとき、ルックアップテーブル18の対応エントリを使用して、その検索されたピクセルをタイルバッファのどこに記憶するか決定する。例えば、読み取りトランザクションID43に対応するデータがメモリから戻されるとき、トランザクションID43のエントリが回転ユニットにより使用されて、タイルバッファ24においてライン0列24のスタート位置にピクセルを記憶する。一実施形態では、単一のトランザクションで検索されるピクセルの数は、8である。他の実施形態では、他の数のピクセルが単一トランザクションで検索される。
【0035】
ルックアップテーブル18に示すエントリは、例示のためのものに過ぎない。ルックアップテーブル18は、他の実施形態では、8より少ない又は8より多いエントリを含んでもよく、そしてルックアップテーブル18は、異なる編成とされ、他の情報フィールドを含んでもよい。例えば、一実施形態において、回転の形式を指示する回転構成ビットが、テーブル18に記憶される。別の実施形態では、各エントリは、そのエントリが使用されたときを指示するために有効ビットを含んでもよく、それ故、その後のトランザクションIDに対して別のエントリによりオーバーライトされてもよい。他の実施形態では、ルックアップテーブル18に他の形式の情報が記憶されてもよく、そしてルックアップテーブル18は、適当な形態で編成されてもよい。
【0036】
図3は、回転タイルバッファの一実施形態のブロック図である。タイルバッファ24は、16の個別の行を含み、その各々は、個別のRAMである。16個の個別のRAMは、行0、行1、行2、・・・行15のような画像タイルの個別の行を記憶するのに使用される。各RAMは、回転画像のタイルの個別行に関連したピクセルを記憶する。この実施形態では、タイルサイズは、16行x128列である。他の実施形態では、他のタイルサイズが使用されてもよく、そしてタイルバッファ24は、タイルにおける行の数に対応する他の数のRAMを含んでもよい。
【0037】
一実施形態において、グラフィックパイプラインの次の段は、垂直スケーラーユニットである。この垂直スケーラーユニットは、単一のクロックサイクルにおいてタイルバッファ24からピクセルの1列全体をフェッチする。ある実施形態では、タイルバッファ24の各RAMは、クロックサイクル当たり単一のアクセスを許す。それ故、タイルバッファ24は、各行が個別のRAMに記憶されるように構成され、垂直スケーラーが各クロックサイクルにおいて各行から単一のピクセルを読み取ることができるようにされる。他の実施形態では、タイルバッファ24は、グラフィックパイプラインの次の段によりタイルバッファ24からデータをどのように読み取るかに基づいて、他の仕方で構成される。
【0038】
図4には3つの区画化された画像が示されている。回転を行わない場合のソース画像の区画化は、ソース画像50で示されている。ソース画像50は、(0、0)−(2、2)で示す8つのタイルに区画化され、そしてタイルが処理される順序は、最も左上角のタイルで始まって最も左側の列を下に進み、即ち(0、0)(0、1)及び(0、2)で示すブロックでスタートする。次いで、最も左側の列がフェッチされた後に、その右側の次の列(タイル(1、0)(1、1)及び(1、2))がフェッチされ、等々となる。
【0039】
90°の時計方向回転を行うためのソース画像の区画化は、ソース画像ブロック52で示されている。この場合、ソース画像の区画化は、指定の回転に基づくものとなり、処理されるべき第1のタイルは、ソース画像52の最も左下のタイルとなる。ソース画像52の最も左下のタイルは、90°回転を行った後の回転画像54において最も左上のタイルとなり、このため、ソース画像52の最も左下のタイルが、処理されるべき第1のタイルとなる。ソース画像52のタイルは、最も左側のタイル(0、0)でスタートして最も下のタイル行において処理され、タイル(0、1)(0、2)(0、3)及び(0、4)を経て進む。次いで、最も上のタイル行がタイル(1、0)からタイル(1、4)へと処理される。ソース画像52のタイルの処理は、90°の回転により決定された形態で進み、タイルは、指定の回転を行った後に位置された通りに処理される。処理される第1のタイルは、回転画像54の最も左上で終わるタイルである。次いで、画像は、(回転画像54の)第1のタイル列を下降するように処理され、次いで、その右側の次の列へ進み、等々となる。回転画像54は、ソース画像52が処理されそして回転ユニット(例えば、図1の回転ユニット10)により回転された後に行先画像がどのように現れるか示している。他の形式の回転(90°以外の回転)に対してソース画像をタイルへ区画化することは、行われる特定形式の回転に基づいて同様に実行される。又、図4に示す画像及びタイルのサイズは、単なる例示に過ぎず、他の数及びサイズのタイルを伴う他の画像も同様に処理することができる。
【0040】
図5には、区画化されたソース画像とタイルバッファとの間の対応関係の一実施形態が示されている。図5には、ソース画像52(90°時計方向回転に対して区画化された)が示されており、そして処理される第1の4つのタイル((0、0)(0、1)(0、2)及び(0、3))と、それらタイルが記憶される対応するタイルバッファ24−30とが矢印で接続されている。例えば、タイル(0、0)は、タイルバッファ24に記憶され、タイル(0、1)は、タイルバッファ26に記憶され、タイル(0、2)は、タイルバッファ28に記憶され、そしてタイル(0、3)は、タイルバッファ30に記憶される。
【0041】
図5は、区画化されたソース画像52の1つの色成分についてタイルバッファへのタイルのルーティングを示す。区画化されたソース画像52の各色成分は、個別のタイルバッファに記憶される。例えば、ARGBフォーマットでは、画像52の最初の4つのタイルの全ての色成分を記憶するために全部で16個のタイルバッファが使用される。
【0042】
タイルバッファ24−30がグラフィックパイプラインの後続段により読み取られた後に、区画化されたソース画像52の次の4つのタイルがタイルバッファ24−30に書き込まれる。一実施形態において、グラフィックパイプラインの次の段は、タイルバッファ24−30から一度に1つ読み取りを行い、タイルバッファ24が読み取られた場合は、区画化されたソース画像52の次のタイルがタイルバッファ24に書き込まれ、次いで、タイルバッファ26が読み取られるまでプロセスが停止され、等々となるようにする。
【0043】
図6には、4つのタイルバッファと、区画化された回転画像の一部分とが示されている。タイルバッファ24−30は、図5に示されたソース画像52から4つのタイルを記憶する。ソース画像52からのこれら4つのタイルは、回転画像54に示された4つのタイル((0、0)(0、1)(0、2)及び(0、3))に対応する。ソース画像52のオリジナルタイルから回転画像54へのピクセルの回転は、ピクセルがタイルバッファ24−30に書き込まれるときに行われる。回転画像54の4つのタイルは、グラフィックパイプラインの後続段(図示せず)によりタイルバッファ24−30から読み取られる。或いは又、回転画像54の4つのタイルに記憶されたピクセルは、ディスプレイ(図示せず)又はメモリの位置(図示せず)へ搬送される。
【0044】
タイルは、回転画像54に、その画像の左上ブロックで始めて記憶され、次いで、画像の最下縁に到達するまでタイルの最も左の列を下るように処理が続けられる。次いで、タイルは、最も左から2番目の列の最上部に記憶され続け、画像の残り部分全体を通してそのように続けられる。別の実施形態では、タイルは、回転画像54に異なる順序で記憶されてもよい。
【0045】
図7には、タイルバッファの一実施形態のブロック図が示されている。種々の実施形態において、タイルバッファ26のサイズは、個々の画像タイルのサイズに一致するように変化し得る。一実施形態において、個々の画像タイルは、16ラインx128列であり、各ラインは、128個のピクセルを含む。別の実施形態では、画像タイルのラインは、タイルの右側及び左側に付加的な7つのピクセルをフェッチすることにより142個のピクセルへ拡張される。タイルの右縁及び左縁に隣接タイルからピクセルをこのようにフェッチすることは、グラフィックパイプラインの後続段における15タップの多相水平スケーラーフィルタを容易にするために行われる。
【0046】
タイルバッファ26は、142ラインx16列のサイズを有するものとして示されている。一実施形態において、これは、16ラインx142列のソース画像タイルサイズ及び90°又は270°の指定回転に対応する。各ボックスの表示は、回転画像内のピクセル位置を指す。ピクセルは、ソース画像からフェッチされ、そして指定回転に基づいてタイルバッファ26内の適当な位置に記憶される。タイルバッファ26の各ボックスの表示は、回転画像のタイル内のピクセル位置を指す。
【0047】
タイルバッファ26に示したピクセルの配置を利用して、単一のクロックサイクル中に複数のピクセルをタイルバッファ26に書き込むことができる。例えば、一実施形態において、タイルバッファ26のピクセルの各垂直配列は、個別のRAMに対応する。従って、RAM0−15の各々は、単一のクロックサイクル中に単一のピクセルの書き込み又は読み取りしか許さない。それ故、オリジナルのソース画像からピクセルデータをどのようにフェッチするかに基づき、クロックサイクル当たりせいぜい1つのピクセルしかRAMに書き込んだりRAMから読み取ったりする必要がないように各RAMにピクセルが配置される。
【0048】
一実施形態において、オリジナルソース画像からフェッチ当たり1つのラインでピクセルがフェッチされ、そしてフェッチされたピクセルの各セットは、回転がある場合には、タイルバッファ26の単一ライン(例えば、ライン0−列0、ライン1−列0、等)に書き込まれ、そして回転がない場合には、タイルバッファ26の対角ライン(例えば、ライン0−列0、ライン0−列1、ライン0−列2、等)に書き込まれる。又、ピクセル配列体は、回転画像の単一列をターゲットとする16個のピクセルをグラフィックパイプラインの次の段により単一のクロックサイクル中にタイルバッファ26から読み出すことができるようにする。図7に示すタイルバッファ26のサイズは、単なる例示に過ぎず、他の実施形態では、他のタイルサイズが使用されてもよいことに注意されたい。更に、他の実施形態では、タイルバッファ内のピクセルの他の配列も考えられ、意図される。
【0049】
図8は、実行可能な種々の形式の回転のブロック図である。各形式の回転に対して2つのブロックが示されており、一方のブロックは、「ソース」と示されたオリジナルソース画像を示し、そして第2のブロックは、特定形式の回転(例えば、90°、270°、Xフリップ)後の最終的な画像を示す。各ソース画像に隣接する2つの矢印は、ピクセルスキャン方向(実線)及びラインスキャン方向(破線)を示す。ピクセルスキャン方向は、ソース画像の各タイルからピクセルがスキャン(即ち、フェッチ)される方向を指示する。ラインスキャン方向は、ソース画像の各タイルからラインがスキャンされる方向、及びタイルがスキャンされる方向を指示する。ピクセル及びラインスキャン方向は、フェッチユニット12(図1)のようなフェッチユニットにより読み取りアドレスが発生される順序を決定する。フェッチユニット12は、全画像或いは全行又は列に対して動作するのではなく、画像のタイルに対して動作することにより、ソース画像を回転及び/又はフリップする。フェッチユニット12は、回転画像の最も左上のタイルをターゲットとするソース画像のタイルでスタートして、タイルごとに、ソース画像からピクセルをフェッチするように構成される。
【0050】
16の異なる回転及びフリップ組み合わせに対して8つの独特の画像配向が示されている。回転及びフリップの組み合わせの幾つかは、同じ画像配向を生じ、それ故、図8には1回しか示されていない。例えば、90°の回転の後にx(水平)方向にフリップすることは、270°の回転の後にy(垂直)方向にフリップすることと同等である。
【0051】
図8に示す例は、実行される回転の形式を余すところなく示すものではなく、他の形式の回転も実行できることに注意されたい。更に、図8に示す規範的画像は、方形画像であるが、ここに開示する方法及びメカニズムでは、長方形のソース画像も使用できる。又、他の実施形態では、他のピクセル及びラインスキャン方向が使用されてもよい。
【0052】
図9には、インライン形態でピクセルを回転する方法の一実施形態が示されている。説明上、この実施形態におけるステップは、順次に示されている。以下に述べる方法の種々の実施形態において、ここに述べる要素の1つ以上は、同時に遂行されてもよいし、図示された順序とは異なる順序で遂行されてもよいし、又は完全に除去されてもよいことに注意されたい。又、必要に応じて、他の付加的な要素が遂行されてもよい。
【0053】
一実施形態において、ソース画像からのピクセルに対して指定の回転に基づく順序でフェッチ要求を発行する(ブロック60)。ソース画像をタイルへと区画化し、タイルの最も上の行で始めて行ごとにタイルを下方に進むようにして各タイルからピクセルをフェッチする。ソース画像をタイルへと区画化することは、実行される特定の回転に基づく。例えば、16行x128列のタイルサイズをもつ一実施形態では、指定の回転が90°である場合に、ソース画像は、128行及び16列をもつタイルへと区画化される。各行は、16ピクセルを含み、そして全部で128行に対して最も上の行で始めて最も下の行へと下方に進むように行をフェッチする。ソース画像から読み取られる各行は、90°の回転に基づく回転画像では列になる。フェッチされるソース画像の第1タイルは、回転画像の最も左上のタイルとして終了するタイルであり、従って、回転画像の第1のタイル列を下るようにタイルがフェッチされる。次いで、その右側の次のタイル列(回転画像で見て)がフェッチされ、等々となって、ソース画像の全てのタイルがフェッチされるまで行われる。
【0054】
次いで、ピクセルに対してターゲット位置を計算する(ブロック62)。ターゲット位置は、指定の回転に基づいて計算される。例えば、指定の回転が90°である場合には、ソース画像のタイルから読み取られる各行は、回転画像の対応タイルの列をターゲットとする。ソース画像のタイルの最も上の行は、回転画像の対応タイルの最も右の列をターゲットとし、ソース画像のタイルの最も上から2番目の行は、回転画像のタイルの最も右から2番目の列をターゲットとする。
【0055】
次いで、計算されたターゲット位置をテーブルに記憶する(ブロック64)。一実施形態において、計算されたターゲット位置をテーブルに記憶するのと同時に、フェッチ要求を発行する。ソース画像からピクセルが受け取られると、それに対応するターゲット位置をテーブルにおいてルックアップする(ブロック66)。テーブルは、発行されたフェッチ要求に対してエントリを記憶し、そしてエントリは、要求のトランザクションIDに基づいて識別される。次いで、受け取ったピクセルを、タイルバッファにおいて、計算されたターゲット位置に記憶する(ブロック68)。これらのステップは、ソース画像の全てのタイルの全てのピクセルがフェッチされて、指定の回転に基づくタイルバッファの適当な位置に記憶されるまで、繰り返される。タイルバッファは、後続段により読み取られるか又はメモリに記憶され、ソース画像内の後続タイルからピクセルを記憶するために各タイルバッファを再使用できるようにする。
【0056】
図10には、画像のインライン回転を遂行する方法の一実施形態が示されている。説明上、この実施形態におけるステップは、順次に示されている。以下に述べる方法の種々の実施形態において、ここに述べる要素の1つ以上は、同時に遂行されてもよいし、図示された順序とは異なる順序で遂行されてもよいし、又は完全に除去されてもよいことに注意されたい。又、必要に応じて、他の付加的な要素が遂行されてもよい。
【0057】
一実施形態において、ソース画像を複数のタイルに区画化する(ブロック70)。ソース画像の区画化は、実行される指定回転に基づく。区画化は、ソース画像のコンテンツを変化させるか或いはソース画像がメモリ装置に記憶される場所を変化させる実際の物理的区画化ではない。区画化は、ソース画像をタイルの論理的配列へとバーチャルに区画化するものである。ソース画像の第1のタイルからのピクセルを読み取る(ブロック72)。一実施形態において、ソース画像の第1のタイルは、指定の回転に基づいてソース画像の複数のタイルから選択される。回転画像の最も左上のタイルをターゲットとするソース画像のタイルは、ソース画像から選択される第1のタイルである。次いで、タイルバッファ内のターゲット位置にピクセルを記憶する(ブロック74)。ターゲット位置は、実行される指定回転に基づいて計算される。
【0058】
次いで、グラフィックパイプラインの後続段によりタイルバッファが読み取られたことを検出するのに応答して(条件ブロック76)、ソース画像の後続タイルからピクセルを読み取る(ブロック80)。次いで、ソース画像の後続タイルからのピクセルをタイルバッファに記憶する(ブロック82)。グラフィックパイプラインの後続段によりタイルバッファが読み取られない場合には(条件ブロック76)、回転ユニットが、1つ以上のクロックサイクル中、停止となる(ブロック78)。1つ以上のクロックサイクル中の停止の後に、回転ユニットは、タイルバッファがグラフィックパイプラインの後続段によって読み取られたかどうか再び決定する(条件ブロック76)。一実施形態において、グラフィックパイプラインの後続段は、回転画像を垂直及び水平にスケーリングするためのスケーラーユニットである。
【0059】
第1タイル及び後続タイルの順序は、指定の回転に基づき選択される。例えば、ソース画像から選択される第1のタイルは、回転画像の最も左上のタイルとして終了するタイルである。次いで、ソース画像から選択される第2タイルは、回転画像の最も左上のタイルの下で終了するタイルである。このプロセスは、回転画像のタイルの最も左側の列として終了するタイルについて続けられ、次いで、その右側の次の列が処理され、等々となる。最も最近処理されたタイルがソース画像の最後のタイルである場合には(条件ブロック84)、この方法が終了となる。ソース画像の最後のタイルは、回転画像の最も右下のタイルをターゲットとしている。手前のタイルが最後のタイルでない場合には、この方法は、条件ブロック76へ戻る。
【0060】
他の実施形態では、個々のタイルが回転画像内のその位置に基づいて読み取られる順序は変化してもよい。例えば、別の実施形態では、回転画像内に位置されるときの最も右上のタイルは、最初に処理されるタイルであり、そしてタイルは、回転画像の最も右側の列を下に進むように処理される。次いで、タイルの列は、右から左への順序で処理される。タイルが回転画像内のその位置に基づいてタイルバッファに書き込まれる順序の変更も考えられ、意図される。ある実施形態では、複数のタイルバッファを使用して、回転画像の複数のタイルを同時に記憶する。1つ以上のタイルバッファが後続段により読み取られ、或いはディスプレイユニット又は記憶位置へ搬送されるときには、各タイルバッファは、ピクセルの別のタイルからのピクセルで埋められる。
【0061】
図11は、システム90の一実施形態のブロック図である。図示されたように、システム90は、デスクトップコンピュータ100、ラップトップコンピュータ110、タブレットコンピュータ120、セルラーホン130、等のチップ、回路、コンポーネント、等を表わす。ここに示す実施形態では、システム90は、外部メモリ92に結合された集積回路98の少なくとも1つのインスタンスを含む。集積回路98は、回転ユニット10(図1)の1つ以上のインスタンスを含む。ある実施形態において、集積回路98は、1つ以上のプロセッサ及び1つ以上のグラフィック処理パイプラインを伴うSoCである。
【0062】
集積回路98は、1つ以上の周辺装置94及び外部メモリ92に結合される。電源96も設けられ、集積回路98に供給電圧を供給すると共に、メモリ92及び/又は周辺装置94に1つ以上の供給電圧を供給する。種々の実施形態において、電源96は、バッテリ(例えば、スマートホン、ラップトップ又はタブレットコンピュータの充電型バッテリ)を表わす。ある実施形態では、2つ以上の集積回路98が含まれる(且つ2つ以上の外部メモリ92も含まれる)。
【0063】
メモリ92は、ダイナミックランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、倍データレート(DDR、DDR2、DDR3、等)SDRAM(mDDR3等のSDRAMの移動バージョン、及び/又はLPDDR2等のSDRAMの低電力バージョンを含む)、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)、等の任意の形式のメモリである。1つ以上のメモリ装置が回路板に結合されて、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)、等のメモリモジュールを形成する。或いは又、装置は、集積回路98と共に、チップオンチップ構成、パッケージオンパッケージ構成、又はマルチチップモジュール構成でマウントされてもよい。
【0064】
周辺装置94は、システム90の形式に基づいて望ましい回路を含む。例えば、一実施形態では、周辺装置94は、wifi、Bluetooth(登録商標)、セルラー、グローバルポジショニングシステム、等の、種々の形式のワイヤレス通信のための装置を含む。又、周辺装置94は、RAM記憶装置、ソリッドステート記憶装置、又はディスク記憶装置を含む付加的な記憶装置も含む。又、周辺装置94は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力装置、マイクロホン、スピーカ、等のユーザインターフェイス装置を含む。
【0065】
図12には、回転ユニット10(図1)に含まれる回路を表わす1つ以上のデータ構造体を含むコンピュータ読み取り可能な媒体140のブロック図の一実施形態が示されている。一般的に述べると、コンピュータ読み取り可能な媒体140は、磁気又は光学的媒体のような非一時的記憶媒体、例えば、ディスク、CD−ROM、又はDVD−ROM、揮発性又は不揮発性メモリ媒体、例えば、RAM(例えば、SDRAM、RDRAM、SRAM、等)、ROM、等、並びにネットワーク及び/又はワイヤレスリンクのような通信媒体を経て搬送される電気、電磁又はデジタル信号のような送信媒体又は信号を経てアクセスできる媒体を含む。
【0066】
一般的に、コンピュータ読み取り可能な媒体140における回路のデータ構造(1つ又は複数)は、プログラムにより読み取られ、そして回路より成るハードウェアを製造するために直接的又は間接的に使用される。例えば、データ構造は、ベリログ又はVHDLのような高レベルデザイン言語(HDL)でのハードウェア機能の1つ以上の振舞いレベル記述又はレジスタ転送レベル(RTL)記述を含む。これら記述は、合成ライブラリからのゲートのリストより成る1つ以上のネットリストを発生するために記述を合成する合成ツールによって読み取られる。ネットリストは、回路より成るハードウェアの機能も表わすゲートのセットを含む。次いで、ネットリストは、マスクに適用される幾何学的形状を記述する1つ以上のデータセットを発生するように配置され、ルーティングされる。次いで、マスクは、種々の半導体製造ステップにおいて、その回路に対応する半導体回路(1つ又は複数)を製造するのに使用される。或いは又、コンピュータ読み取り可能な媒体140におけるデータ構造は、必要に応じて、ネットリスト(合成ライブラリを伴うもの又は伴わないもの)でもデータセットでもよい。更に別の形態では、データ構造は、図式的プログラムの出力、或いはそこから導出されたネットリスト又はデータセットを含む。
【0067】
コンピュータ読み取り可能な媒体140は回転ユニット10の表現を含むが、他の実施形態では、回転ユニット10の任意の部分又は部分の組み合わせの表現(例えば、フェッチユニット12、タイルバッファ24−30、ルックアップテーブル18)が含まれてもよい。
【0068】
前記実施形態は、具現化の非限定例であることを強調しておく。当業者であれば、前記開示が充分に理解されれば、多数の変更や修正が明らかとなろう。そのような変更や修正は、全て、特許請求の範囲に包含されることが意図される。
【符号の説明】
【0069】
10:回転ユニット
12:フェッチユニット
14:メモリ管理ユニット(MMU)
15:ソース画像
16:メモリ
18:ルックアップテーブル
20:ビット拡張ユニット
22:スウィズルユニット
24−30:タイルバッファ
32:スケーラー
50、52:ソース画像
54:回転画像
90:システム
92:外部メモリ
94:周辺装置
96:電源
98:集積回路
140:コンピュータ読み取り可能な媒体
【特許請求の範囲】
【請求項1】
フェッチユニットと、
前記フェッチユニットに結合されたメモリと、
を備え、前記フェッチユニットは、前記メモリに記憶されたソース画像からピクセルを読み取るために複数の読み取り動作を発生するように構成され、それら複数の読み取り動作は、前記ソース画像において遂行される回転に基づく順序で発生される、装置。
【請求項2】
1つ以上のタイルバッファを更に備え、前記フェッチユニットは、更に、所与のタイルバッファの特定位置にピクセルを書き込むように構成され、前記特定位置は、前記ソース画像において遂行される回転に基づいて決定される、請求項1に記載の装置。
【請求項3】
前記ソース画像は、複数のタイルを含み、各タイルバッファは、前記ソース画像の単一のタイルを記憶するように構成される、請求項2に記載の装置。
【請求項4】
各タイルの巾は、前記ソース画像の巾より狭く、そして各タイルの長さは、前記ソース画像の長さより短い、請求項3に記載の装置。
【請求項5】
各タイルバッファは、タイルの行ごとに個々のランダムアクセスメモリ(RAM)を含む、請求項4に記載の装置。
【請求項6】
ターゲットピクセル位置を記憶するように構成されたテーブルを更に備え、前記ターゲットピクセル位置は、所与のタイルバッファの位置に対応し、そして前記フェッチユニットは、
対応する読み取り動作を発生するのに応答して前記ターゲットピクセル位置を前記テーブルに書き込み、
所与の読み取り動作からピクセルを受け取るのに応答して前記テーブルから前記ターゲットピクセル位置を検索し、そして
前記受け取ったピクセルを所与のタイルバッファ内の前記ターゲットピクセル位置に書き込む、
ように構成された請求項3に記載の装置。
【請求項7】
前記テーブルは、テーブルのエントリごとにトランザクション識別子(ID)を記憶するように構成され、該トランザクションIDは、特定の読み取り動作に対応し、そしてその特定の読み取り動作からピクセルを受け取るのに応答して、前記フェッチユニットは、テーブルの対応エントリを使用して、所与のタイルバッファ内のターゲットピクセル位置を決定するように構成された、請求項6に記載の装置。
【請求項8】
前記フェッチユニットは、所与の読み取り動作を発生すると同時に、それに対応するターゲットピクセル位置を前記テーブルに書き込むように構成された、請求項6に記載の装置。
【請求項9】
メモリ管理ユニット(MMU)を更に備え、前記フェッチユニットは、複数の読み取り動作に対するバーチャルアドレスを発生するように構成され、そして前記MMUは、
前記バーチャルアドレスを前記メモリ内の物理的アドレスへ変換し、
前記物理的アドレスに対して読み取り動作を遂行し、そして
検索されたピクセルを前記フェッチユニットへ搬送する、
ように構成された、請求項1に記載の装置。
【請求項10】
前記フェッチユニットは、更に、バーチャルアドレストランザクションを予めロードするためにプリフェッチ要求を発生するよう構成された、請求項9に記載の装置。
【請求項11】
ソース画像において遂行されるべき選択された回転を指示する構成ビットを受け取り、
ソース画像に対する読み取り要求を発行し、その読み取り要求は、前記選択された回転に基づく順序で発行されるものであり、
前記読み取り要求ごとに、回転画像における対応ピクセルのターゲット位置を計算し、前記回転画像は、前記選択された回転が遂行された後のソース画像であり、
前記計算されたターゲット位置をテーブルに記憶し、
前記ソース画像からピクセルを受け取り、
前記計算されたターゲット位置を検索し、そして前記受け取ったピクセルをタイルバッファ内の前記計算されたターゲット位置に記憶する、
ように構成された回転ユニット。
【請求項12】
前記ソース画像は、複数のタイルへ区画化され、それらのタイルは、選択された回転に基づく順序で前記ソース画像から読み取られ、前記タイルバッファは、回転画像の個々のタイルを記憶するのに使用される、請求項11に記載の回転ユニット。
【請求項13】
グラフィックパイプラインの後続段が前記タイルバッファからピクセルをフェッチするのに応答して、前記回転ユニットは、前記ソース画像の後続タイルに対する読み取り要求を発行するように構成される、請求項12に記載の回転ユニット。
【請求項14】
ソース画像からピクセルをフェッチする要求を発生する段階であって、フェッチ要求を発行する順序は、指定の回転に基づくものである段階と、
ピクセルに対するターゲット位置を計算する段階であって、そのターゲット位置は、指定の回転に基づいて計算され、そしてそのターゲット位置は、前記ソース画像を回転した画像内の位置に対応するものである段階と、
前記ピクセルを受け取りそしてタイルバッファにおいて前記計算されたターゲット位置に記憶する段階と、
を備えた方法。
【請求項15】
前記計算されたターゲット位置を、前記フェッチ要求の発行に応答してテーブルに記憶する段階と、
前記ピクセルを受け取るのに応答して前記テーブルにおいて前記計算されたターゲット位置をルックアップする段階と、
を更に備えた請求項14に記載の方法。
【請求項16】
各ピクセルは、複数のカラー成分を含み、そして前記複数のカラー成分の各カラー成分は、個別のタイルバッファに記憶される、請求項15に記載の方法。
【請求項17】
前記ソース画像は、複数のタイルへ区画化され、前記フェッチ要求は、所与のタイルからのピクセルに対し、その所与のタイルの最上行で始まってその所与のタイルを行ごとに下方に進むように発行される、請求項14に記載の方法。
【請求項18】
ソース画像を複数のタイルへ区画化する段階であって、その区画化は、指定の回転に基づくものである段階と、
前記ソース画像の第1タイルからピクセルを読み取る段階と、
前記第1タイルからのピクセルをタイルバッファのターゲット位置に記憶する段階であって、そのターゲット位置は、前記指定の回転に基づいて計算されるものである段階と、
グラフィックパイプラインの後続段によって前記タイルバッファが読み取られたことを検出するのに応答して、
前記ソース画像の第2タイルからピクセルを読み取り、及び
前記第2タイルからのピクセルを前記タイルバッファに記憶する、
という段階と、
を備えた方法。
【請求項19】
前記ソース画像内の前記第1及び第2タイルの順序は、前記指定の回転に基づく、請求項18に記載の方法。
【請求項20】
前記タイルバッファは、複数の個々のランダムアクセスメモリ(RAM)を含み、前記スケーラーユニットは、単一のクロックサイクルにおいて各RAMから単一のピクセルを読み取るように構成された、請求項18に記載の方法。
【請求項1】
フェッチユニットと、
前記フェッチユニットに結合されたメモリと、
を備え、前記フェッチユニットは、前記メモリに記憶されたソース画像からピクセルを読み取るために複数の読み取り動作を発生するように構成され、それら複数の読み取り動作は、前記ソース画像において遂行される回転に基づく順序で発生される、装置。
【請求項2】
1つ以上のタイルバッファを更に備え、前記フェッチユニットは、更に、所与のタイルバッファの特定位置にピクセルを書き込むように構成され、前記特定位置は、前記ソース画像において遂行される回転に基づいて決定される、請求項1に記載の装置。
【請求項3】
前記ソース画像は、複数のタイルを含み、各タイルバッファは、前記ソース画像の単一のタイルを記憶するように構成される、請求項2に記載の装置。
【請求項4】
各タイルの巾は、前記ソース画像の巾より狭く、そして各タイルの長さは、前記ソース画像の長さより短い、請求項3に記載の装置。
【請求項5】
各タイルバッファは、タイルの行ごとに個々のランダムアクセスメモリ(RAM)を含む、請求項4に記載の装置。
【請求項6】
ターゲットピクセル位置を記憶するように構成されたテーブルを更に備え、前記ターゲットピクセル位置は、所与のタイルバッファの位置に対応し、そして前記フェッチユニットは、
対応する読み取り動作を発生するのに応答して前記ターゲットピクセル位置を前記テーブルに書き込み、
所与の読み取り動作からピクセルを受け取るのに応答して前記テーブルから前記ターゲットピクセル位置を検索し、そして
前記受け取ったピクセルを所与のタイルバッファ内の前記ターゲットピクセル位置に書き込む、
ように構成された請求項3に記載の装置。
【請求項7】
前記テーブルは、テーブルのエントリごとにトランザクション識別子(ID)を記憶するように構成され、該トランザクションIDは、特定の読み取り動作に対応し、そしてその特定の読み取り動作からピクセルを受け取るのに応答して、前記フェッチユニットは、テーブルの対応エントリを使用して、所与のタイルバッファ内のターゲットピクセル位置を決定するように構成された、請求項6に記載の装置。
【請求項8】
前記フェッチユニットは、所与の読み取り動作を発生すると同時に、それに対応するターゲットピクセル位置を前記テーブルに書き込むように構成された、請求項6に記載の装置。
【請求項9】
メモリ管理ユニット(MMU)を更に備え、前記フェッチユニットは、複数の読み取り動作に対するバーチャルアドレスを発生するように構成され、そして前記MMUは、
前記バーチャルアドレスを前記メモリ内の物理的アドレスへ変換し、
前記物理的アドレスに対して読み取り動作を遂行し、そして
検索されたピクセルを前記フェッチユニットへ搬送する、
ように構成された、請求項1に記載の装置。
【請求項10】
前記フェッチユニットは、更に、バーチャルアドレストランザクションを予めロードするためにプリフェッチ要求を発生するよう構成された、請求項9に記載の装置。
【請求項11】
ソース画像において遂行されるべき選択された回転を指示する構成ビットを受け取り、
ソース画像に対する読み取り要求を発行し、その読み取り要求は、前記選択された回転に基づく順序で発行されるものであり、
前記読み取り要求ごとに、回転画像における対応ピクセルのターゲット位置を計算し、前記回転画像は、前記選択された回転が遂行された後のソース画像であり、
前記計算されたターゲット位置をテーブルに記憶し、
前記ソース画像からピクセルを受け取り、
前記計算されたターゲット位置を検索し、そして前記受け取ったピクセルをタイルバッファ内の前記計算されたターゲット位置に記憶する、
ように構成された回転ユニット。
【請求項12】
前記ソース画像は、複数のタイルへ区画化され、それらのタイルは、選択された回転に基づく順序で前記ソース画像から読み取られ、前記タイルバッファは、回転画像の個々のタイルを記憶するのに使用される、請求項11に記載の回転ユニット。
【請求項13】
グラフィックパイプラインの後続段が前記タイルバッファからピクセルをフェッチするのに応答して、前記回転ユニットは、前記ソース画像の後続タイルに対する読み取り要求を発行するように構成される、請求項12に記載の回転ユニット。
【請求項14】
ソース画像からピクセルをフェッチする要求を発生する段階であって、フェッチ要求を発行する順序は、指定の回転に基づくものである段階と、
ピクセルに対するターゲット位置を計算する段階であって、そのターゲット位置は、指定の回転に基づいて計算され、そしてそのターゲット位置は、前記ソース画像を回転した画像内の位置に対応するものである段階と、
前記ピクセルを受け取りそしてタイルバッファにおいて前記計算されたターゲット位置に記憶する段階と、
を備えた方法。
【請求項15】
前記計算されたターゲット位置を、前記フェッチ要求の発行に応答してテーブルに記憶する段階と、
前記ピクセルを受け取るのに応答して前記テーブルにおいて前記計算されたターゲット位置をルックアップする段階と、
を更に備えた請求項14に記載の方法。
【請求項16】
各ピクセルは、複数のカラー成分を含み、そして前記複数のカラー成分の各カラー成分は、個別のタイルバッファに記憶される、請求項15に記載の方法。
【請求項17】
前記ソース画像は、複数のタイルへ区画化され、前記フェッチ要求は、所与のタイルからのピクセルに対し、その所与のタイルの最上行で始まってその所与のタイルを行ごとに下方に進むように発行される、請求項14に記載の方法。
【請求項18】
ソース画像を複数のタイルへ区画化する段階であって、その区画化は、指定の回転に基づくものである段階と、
前記ソース画像の第1タイルからピクセルを読み取る段階と、
前記第1タイルからのピクセルをタイルバッファのターゲット位置に記憶する段階であって、そのターゲット位置は、前記指定の回転に基づいて計算されるものである段階と、
グラフィックパイプラインの後続段によって前記タイルバッファが読み取られたことを検出するのに応答して、
前記ソース画像の第2タイルからピクセルを読み取り、及び
前記第2タイルからのピクセルを前記タイルバッファに記憶する、
という段階と、
を備えた方法。
【請求項19】
前記ソース画像内の前記第1及び第2タイルの順序は、前記指定の回転に基づく、請求項18に記載の方法。
【請求項20】
前記タイルバッファは、複数の個々のランダムアクセスメモリ(RAM)を含み、前記スケーラーユニットは、単一のクロックサイクルにおいて各RAMから単一のピクセルを読み取るように構成された、請求項18に記載の方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2013−114675(P2013−114675A)
【公開日】平成25年6月10日(2013.6.10)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−230296(P2012−230296)
【出願日】平成24年9月28日(2012.9.28)
【出願人】(503260918)アップル インコーポレイテッド (568)
【Fターム(参考)】
【公開日】平成25年6月10日(2013.6.10)
【国際特許分類】
【出願番号】特願2012−230296(P2012−230296)
【出願日】平成24年9月28日(2012.9.28)
【出願人】(503260918)アップル インコーポレイテッド (568)
【Fターム(参考)】
[ Back to top ]