JP2010507841A - グラフィック処理ユニットにおけるプログラマブルなブレンディング - Google Patents

グラフィック処理ユニットにおけるプログラマブルなブレンディング Download PDF

Info

Publication number
JP2010507841A
JP2010507841A JP2009533569A JP2009533569A JP2010507841A JP 2010507841 A JP2010507841 A JP 2010507841A JP 2009533569 A JP2009533569 A JP 2009533569A JP 2009533569 A JP2009533569 A JP 2009533569A JP 2010507841 A JP2010507841 A JP 2010507841A
Authority
JP
Japan
Prior art keywords
blending
instruction
modes
sequence
unit
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.)
Granted
Application number
JP2009533569A
Other languages
English (en)
Other versions
JP5180222B2 (ja
Inventor
ジャオ、グオファン
ユ、チュン
チェン、リンジュン・フランク
ドゥ、ユン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2010507841A publication Critical patent/JP2010507841A/ja
Application granted granted Critical
Publication of JP5180222B2 publication Critical patent/JP5180222B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/32Image data format

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

演算の基本セットを備えた種々のブレンディングモードのためのブレンディング方程式を実装するための技術が説明される。各ブレンディング方程式は演算シーケンスに分解されてもよい。ある設計では、装置は、複数のブレンディングモードに関して演算セットを実装する処理ユニット、およびオペランドおよび結果を格納する記憶ユニットを含む。処理ユニットは、複数のブレンディングモードから選択されたブレンディングモードに関して演算シーケンスのための命令シーケンスを受け取り、選択されたブレンディングモードに従って、ブレンディングを実行するシーケンスにおける各命令を実行する。処理ユニットは、(a)基本セットにおける少なくとも1つの演算(例えばドット積)を実行するALU、(b)インバウンドカラー値のガンマ補正およびアルファスケーリングを実行するプリフォーマットユニット、(c)アウトバウンドカラー値のガンマ圧縮およびアルファスケーリングを実行するポストフォーマットユニットを含んでも良い。

Description

本開示は、一般に電子機器に関し、特に、グラフィック処理ユニットにおいてブレンディングを実行するための技術に関する。
グラフィック処理ユニット(GPU)は、ビデオゲーム、グラフィックス、コンピューター支援設計(CAD)、シミュレーションおよびビジュアル化ツール、イメージングなどのような種々のアプリケーション向けに、2次元(2D)および/または3次元(3D)画像をレンダリングするために用いられる専用ハードウェアユニットである。GPUは、種々のグラフィックス処理を実行して画像をレンダリングすることができる。かかるグラフィックス処理の一つにブレンディングがあり、一般に、アルファブレンディング、アルファ合成などと称される。ブレンディングは、画像の透過性効果を得るために用いることができる。ブレンディングは、最終画像において別々にレンダリングしていた中間画像を合成するのに用いることもできる。ブレンディングでは、方程式セットに従って、デスティネーションカラー値とソースカラー値を合成することが必要である。該方程式は、カラー値とアルファ値の関数である。異なる方程式および/または異なるアルファ値で異なる結果を得ることができる。
GPUは、異なる視覚効果を実現することが可能な種々のブレンディングモードをサポートすることができる。各ブレンディングモードは、特定の視覚効果を実現するために、カラーとアルファ値を合成するための異なる方程式セットを用いる。GPUは、サポートするすべてのブレンディングモードのための方程式セットをそのまま実装するために、専用ハードウェアを用いてもよい。しかし、ブレンディング方程式のそのような直接的な実装には手間がかかり、莫大な費用がかかることがある。
したがって当該技術分野においては、GPUがサポートする種々のブレンディングモードに関して、ブレンディング方程式を効率よく実装するための技術が必要とされている。
本明細書では、ブレンディングを効率的に行うための技術について説明する。ある態様では、サポートするブレンディングモードのためのブレンディング方程式が、演算の基本セットを用いて効率的に実装される。各ブレンディング方程式は、基本セットから各演算を得るようにして演算シーケンスに分解してもよい。異なるブレンディング方程式が、異なる演算シーケンスで実装されてもよい。演算の基本セットは、ハードウェア実装を単純化し、種々のブレンディング方程式/モードならびに他のグラフィック関数および機能のサポートに柔軟性を与える。
ある設計では、装置(例えばGPU)は、複数のブレンディングモードのための演算セットを実装する処理ユニット、および処理ユニット用にオペランドと結果を格納する記憶ユニットを含んでいる。処理ユニットは、複数のブレンディングモードから選択されたブレンディングモードに関して演算シーケンスのための命令シーケンスを受け取り、選択されたブレンディングモードに従って、ブレンディングを実行するシーケンスにおける各命令を実行する。処理ユニットは、例えば、(a)命令シーケンスを実行する実行ユニット、(b)インバウンドのカラー値のガンマ補正およびアルファスケーリングを実行するプリフォーマットユニット、(c)アウトバウンドのカラー値のガンマ圧縮およびアルファスケーリングを実行するポストフォーマットユニット、(d)実行ユニット、プリフォーマットユニット、およびポストフォーマットユニットのための計算を実行する計算ユニットを含んでも良い。計算ユニットは、例えば算術論理演算ユニット(ALU)、逆数ユニット、ガンマルックアップテーブル、デガンマルックアップテーブル、を含んでいてもよく、これらは実行ユニット、プリフォーマットユニットおよびポストフォーマットユニットによって共用されてもよい。記憶ユニットは、命令について、オペランドと結果を格納するためのレジスタ、例えば、ソースレジスタ、デスティネーションレジスタ、場合により付加的なレジスタを含んでも良い。
以下、この開示の種々の態様および特徴をより詳しく説明する。
図1Aは、5つのPorter−Duffブレンディングモードの場合のブレンディングを示す。 図1Bは、5つのPorter−Duffブレンディングモードの場合のブレンディングを示す。 図1Cは、5つのPorter−Duffブレンディングモードの場合のブレンディングを示す。 図1Dは、5つのPorter−Duffブレンディングモードの場合のブレンディングを示す。 図1Eは、5つのPorter−Duffブレンディングモードの場合のブレンディングを示す。 図2は、ブレンディング命令の構造を示す。 図3は、グラフィックスシステムのブロック図を示す。 図4は、ブレンディング処理ユニットのブロック図を示す。 図5は、ブレンディングを実行する手順を示す。 図6は、無線装置のブロック図を示す。
グラフィック処理ユニット(GPU)は、異なる視覚効果を実現するための種々のブレンディングモードをサポートすることができる。例えば、GPUは、2005年7月28日付けの文献「OpenVG Specification, Version 1.0」(公表されており、以下「OpenVG」という)において定義されたブレンディングモードをサポートしてもよい。OpenVGは、2次元ベクトルグラフィックスに関する新規の規格であり、携帯型モバイル装置(例えば携帯電話機)に適している。
ブレンディングモードには、
1.α(αsrc,αdst)で表されるアルファブレンディング方程式/関数、
2.c(csrc,cdst,αsrc,αdst)で表されるカラーブレンディング方程式/関数
が関係している。ただし、αsrcはソースアルファ値、αdstはデスティネーションアルファ値、csrcはソースカラー値、cdstはデスティネーションカラー値である。カラー値は、赤(R)、緑(G)、青(B)その他について存在する種々のブレンディングモードのためのアルファおよびカラーブレンディング方程式は、以下で与えられる。
ブレンディングは、(Rsrc,Gsrc,Bsrc,αsrc)で表される、ソースカラーおよびアルファタプルを、(Rdst,Gdst,Bdst,αdst)で表される、デスティネーションカラーおよびアルファタプルと合成し、c(Rsrc,Rdst,αsrc,αdst)、c(Gsrc,Gdst,αsrc,αdst)、c(Bsrc,Bdst,αsrc,αdst)、α(αsrc,αdst)から構成される、合成されたタプルを提供する。合成は、アルファおよびカラーブレンディング方程式に従って実行される。特に、各カラー成分のソースおよびデスティネーションのカラー値は、カラーブレンディング方程式に従って合成され、ソースおよびデスティネーションのアルファ値は、アルファブレンディング方程式に従って合成される。ブレンドされたタプルは、典型的にはデスティネーションタプルを差し替える。
OpenVGは、以下のアルファおよびカラーブレンディング方程式を用いる5つのPorter−Duffブレンディングモードをサポートする:
Figure 2010507841
ただし、FsrcとFdstはそれぞれソースとデスティネーションのブレンディングファクタであり、異なるブレンディングモードについて、これらは異なる。
事前乗算カラー値c’を得るために、カラー値cにアルファ値を以下のように乗算してもよい:
Figure 2010507841
事前乗算カラー値のためのカラーブレンディング方程式は、次のように与えられる:
Figure 2010507841
式(4)は式(2)と等価である。式(4)は事前乗算カラー値c’ srcおよびc’ dstに用いることができ、式(2)は非事前乗算カラー値csrcおよびcdstに用いることができる。
表1は、OpenVGにおける5つのPorter−Duffブレンディングモードの場合のFsrcおよびFdstブレンディングファクタを示す。
Figure 2010507841
図1A乃至1Eは、OpenVGにおける5つのPorter−Duffブレンディングモードの場合のブレンディングを示す。これらの例において、ソース(Src)はクロスハッシングと正方形によって表わされる。また、デスティネーション(Dst)は無地で塗りつぶされた円によって表わされる。図1Aは「Src」ブレンディングモードを示している。このブレンディングモードでは、ソース(正方形)は背景を差し替える。また、デスティネーション(円)は完全に透明である。図1Bは「SrcオーバーDst」ブレンディングモードを示している。このブレンディングモードでは、ソースはデスティネーションと背景を差し替える。また、デスティネーションは背景を差し替える。図1Cは「DstオーバーSrc」ブレンディングモードを示している。このブレンディングモードでは、デスティネーションはソースと背景を差し替える。また、ソースは背景を差し替える。図1Dは「SrcインDst」ブレンディングモードを示している。このブレンディングモードでは、デスティネーション範囲内のソースの一部が背景を差し替える。図1Eは「DstインSrc」ブレンディングモードを示している。このブレンディングモードでは、ソース範囲内のデスティネーションの一部が背景を差し替える。
OpenVGは4つの付加的なブレンディングモードをサポートする。テーブル2は4つの付加的なブレンディングモードを記載し、各モードについてカラーブレンディング方程式を与える。付加的なブレンディングモードはそれぞれカラー値を合成し、c’(csrc,cdst,αsrc,αdst)として示される、ブレンドされた事前乗算カラー値を提供する。
Figure 2010507841
OpenVGは、ソースとデスティネーションがオーバラップしない場合に用いられる付加的なブレンディングモードをさらにサポートする。付加的なブレンディングモードのためのアルファおよびカラーブレンディング方程式は、次のように与えられる:
Figure 2010507841
また2次元グラフィックス用に他のブレンディングモードをサポートしてもよい。概して、GPUは、2次元グラフィックスに関して、任意のブレンディング方程式セットのための任意のブレンディングモードセットをサポートしてもよい。
GPUは、さらに、3次元グラフィックス向けの種々のブレンディングモード、例えばオープングラフィックスライブラリ(OpenGL)、Direct3Dなどにおいて定義されたブレンディングモードをサポートしてもよい。OpenGLは「The OpenGL Graphics System: A Specification」と題された2004年10月22日付けバージョン2.0の文献で説明されている(公的に入手可能である)。OpenGLは、FUNC ADD(αsrc*csrc+αdst*cdst)、FUNC SUBTRACT(αsrc*csrc−αdst*cdst)、FUNC REVERSE SUBTRACT(αdst*cdst−αsrc*csrc)、MIN(min{csrc(cdst}))、MAX(max{csrc(cdst}))といったブレンディングモードをサポートする。OpenGLの文献から与えられる種々のブレンディングファクタをブレンディングモードに用いてもよい。Direct3Dは、同様に、種々のブレンディングモードおよびブレンディング方程式をサポートする。
以上の例えば式(1)乃至(6)ならびに表1および2で説明したように、様々なブレンディングモードについて様々な方程式が存在し得る。専用ハードウェア内に、すべてのブレンディングモードについてアルファおよびカラーブレンディング方程式を素直に実装すると、手間がかかり莫大なコストが必要となることがある。
ある態様では、サポートされたブレンディングモード(例えばOpenVGにおけるブレンディングモードおよび/または他のブレンディングモード)のためのブレンディング方程式が、演算の基本セットを使って効率的に実装される。各ブレンディング方程式は、基本セットから各演算を得て演算シーケンスに分解してもよい。異なるブレンディング方程式が、異なる演算シーケンスで実装されてもよい。演算の基本セットは、ハードウェア実装を単純化し、種々のブレンディング方程式ならびに他のグラフィック関数および機能のサポートに柔軟性を与える。
図2は、ブレンディングに用いられる演算に関してブレンディング命令200の構造を示す。この構造において、ブレンディング命令200は、クランプイネーブルフィールド212、ブレンディング演算(Op)フィールド214、結果(Res)フィールド216、デスティネーション(Dst)フィールド218、ソース(Src)フィールド220、デスティネーションブレンディングファクタ(Dstf)フィールド222、ソースブレンディングファクタ(Srcf)フィールド224を含んでいる。ブレンディングOpフィールド214は、基本セットにおけるどの演算を実行するのかを示す。Srcフィールド220は、ソース値がどこに格納されるかを示す。Dstフィールド218は、デスティネーション値がどこに格納されるかを示す。Srcfフィールド224は、演算のためのソースブレンディングファクタを示す。Dstfフィールド222は、演算のためのデスティネーションブレンディングファクタを示す。Resフィールド216は、演算の結果をどこに格納するかを示す。クランプイネーブルフィールド212は、結果を、値の所定範囲(例えば0と1の間)に抑制するかどうかを示す。異なるフィールドを備えた他の命令フォーマットが用いられてもよい。
表3は、各演算に割り当てられた演算の基本セットとオペレーションコードの構造を示す。各ブレンディング命令について、ブレンディングOpフィールド214は、そのブレンディング命令について実行される演算のオペレーションコードを格納する。単純化のために、オペレーションコード0〜7での演算のことをそれぞれ演算0〜7と称する。
Figure 2010507841
演算0および1について、ソースおよびデスティネーションの値は、ソースおよびデスティネーションのブレンディングファクタによってそれぞれ基準化され、該基準化された値は、合成される。演算0は、2つのブレンディングファクタと2つのオペランドのドット積を実行する。演算1はドット積の変形である。演算0および1は、以上説明したブレンディングモードのすべてについて用いられてもよい。演算2は、ソースおよびデスティネーションのより小さな値を提供し、演算3は、該2つのより大きな値を提供する。演算2および3は、VG_BLEND_DARK、VG_BLEND_LIGHTENおよび付加的なブレンディングモードについて用いられてもよい。演算4は、ソースおよびデスティネーションのブレンディングファクタでソースおよびデスティネーションの値をそれぞれ基準化し、該2つの基準化された値を格納する。演算4は、事前乗算カラー値と非事前乗算のカラー値との間の変換に用いられてもよい。
演算5はソース値について逆数(RCP)演算を実行し、結果値を提供する。逆数演算は、除算命令を乗算演算に変換するために用いられ、典型的にはそれほど複雑ではない。例えば、c=c’/αのように、事前乗算カラー値からカラー値を得てもよい。アルファによる除算は、まずアルファの逆数(つまり1/α)を得て、次にc=c’*(1/α)のとおりc’に1/αを乗算することによって回避してもよい。逆数演算は、その両方が、結果アルファ値による除算を含む式(2)および(6)にも用いられてもよい。
演算6および7は、ガンマ展開およびガンマ圧縮にそれぞれ用いられる。人間の目は、高輝度よりも、低輝度/強度に対して敏感である。カラー値は、一般にガンマ圧縮またはガンマ符号化と呼ばれる処理によって圧縮されてもよい。ガンマ圧縮は、低輝度についてはより高解像度となり、高輝度についてはより粗い解像度となるように、カラー値をマッピングする。ガンマ圧縮は、
Figure 2010507841
のように実行されてもよい。ただし、clinはリニアカラー値であり、ccompは圧縮された、つまり非リニアのカラー値であり、γは圧縮量を決定するガンマ値である。概して、ガンマ圧縮は任意の関数またはマッピングに基づいて実行されてもよい。ガンマ展開は、リニアカラー値を得るために圧縮カラー値を展開する相補的処理である。ガンマ展開は、ガンマ圧縮に用いられる関数の逆関数に基づく。カラー成分R、G、およびBが圧縮カラー値として典型的にはメモリに格納される。
概して、ブレンディングは、リニアまたは圧縮カラー値について実行されてもよい。リニアカラー値についてブレンディングを実行することにより、結果が改善される場合がある。従って、圧縮カラー値をメモリから取り出し、ブレンディングに先立って展開してもよい。次いで、該ブレンドされたカラー値を、メモリに戻して格納する前に圧縮してもよい。ガンマ圧縮は、ガンマ圧縮関数を格納するガンマルックアップテーブル(LUT)で実現してもよい。ガンマ展開は、相補的なガンマ展開関数を格納するデガンマLUTで実現してもよい。演算6については、デガンマLUTは圧縮カラー値を受け取り、リニアカラー値を提供する。演算7については、ガンマLUTはリニアカラー値を受け取り、圧縮カラー値を提供する。
表3は、演算の基本セットのための特定の構造を示す。他の演算のセットがブレンディングをサポートするために用いられてもよい。
ソースカラー値がシェーダコアから受け取られ、ソースレジスタに格納されてもよい。デスティネーションカラー値がメモリから取り出され、デスティネーションレジスタに格納されてもよい。ソースおよびデスティネーションのカラー値は合成されてもよい。また、該ブレンドされたカラー値がデスティネーションレジスタに格納されてもよい。
異なる演算を柔軟にサポートするために、複数のソースレジスタがソースカラーおよびアルファ値ならびに中間値を格納するために用いられてもよい。あるいは、または追加的に、複数のデスティネーションレジスタがデスティネーションカラーおよびアルファ値ならびに中間値を格納するために用いられてもよい。ある設計では、2つのソースレジスタおよび2つのデスティネーションレジスタがソース、デスティネーション、中間値を格納するために用いられる。演算0〜4の各々について、表3では、SrcとDstはソースおよびデスティネーションのレジスタのうちのいずれか2つに対応してもよい。演算5〜7の各々について、表3では、Srcはソースおよびデスティネーションのレジスタのうちのいずれか1つに対応してもよい。各演算ごとに、結果は、ソースおよび/またはデスティネーションレジスタに格納されてもよく、もとのメモリに格納されてもよい。
表4は、図2におけるブレンディング命令200について、Src、Dst、およびResフィールドの構造を示す。各ブレンディング命令について、Srcフィールド220は、表4の第2のカラムに記載された4つのレジスタのうちのいずれか1つを示し、Dstフィールド218についても該4つのレジスタのうちのいずれか1つを示し、Resフィールド216は、表4の最後のカラムに示される6つの出力オプションのうちのいずれか1つを示してもよい。ソースおよびデスティネーションのレジスタ(Resのためのコード4)は両方とも表3における演算4に用いられる。異なるレジスタおよび/または出力オプションを備える他の構造が用いられてもよい。
Figure 2010507841
SrcfとDstfのブレンディングファクタはSrcとDstの値をそれぞれ基準化するために表3内の演算0、1および4において用いられる。SrcfとDstfのブレンディングファクタは、すべてのブレンディングモードをサポートするために定義されてもよい。付加的なブレンディングファクタについても、他のグラフィック関数および機能(例えば3次元グラフィックス)をサポートするために定義されてもよい。
表5は、図2におけるブレンディング命令200に関して、SrcfおよびDstfブレンディングファクタの構造を示す。各ブレンディング命令について、Srcfフィールド224は表5において示される選択(selection)のうちのいずれか1つを示してもよく、Dstfフィールド222は、これら選択のうちのいずれか1つも示してもよい。ブレンディング命令を生成するドライバ/コンパイラは、各ブレンディング命令に適合するブレンディングファクタを選択してもよい。
Figure 2010507841
表5において、Src_AlphaとSrc_Colorは、それぞれ、ソースレジスタにおける、アルファ値およびカラー値であり、Src2_AlphaとSrc2_Colorは、それぞれ、第2のソースレジスタにおける、アルファ値およびカラー値であり、Dst_AlphaとDst_Colorは、それぞれ、デスティネーションレジスタにおける、アルファ値およびカラー値であり、Const_AlphaとConst_Colorは、それぞれ、定数レジスタにおける、アルファ値およびカラー値である。
種々のブレンディングモードは、以上説明されたブレンディング命令、演算の基本セット、ソースおよびデスティネーションのレジスタおよびソースおよびデスティネーションのブレンディングファクタを使って効率的にインプリメントされることができる。明確にするために、OpenVGにおけるブレンディングモードに関するブレンディング命令を以下で詳細に説明する。式(1)乃至(4)および表1において示される、5つのPorter−Duffブレンディングモードの各々は、2つの命令で実装されてもよい。第1の命令は、ソースおよびデスティネーションのカラー値にソースおよびデスティネーションのアルファ値をそれぞれ乗算する。表6は、第1の命令の種々のフィールドごとのコードを示す。
Figure 2010507841
第2の命令は、事前乗算ソースおよびデスティネーションのカラー値にFsrcおよびFdstブレンディングファクタをそれぞれ乗算し、式(4)において示されるように、2つの基準化された値を合成する。表7は、OpenVGにおける5つのPorter−Duffブレンディングモードの各々に関して、第2の命令の種々のフィールドのコードを示す。
Figure 2010507841
VG_BLEND_MULTIPLYブレンディングモードは3つの命令で実装されてもよい。第1の命令は、事前乗算ソースおよびデスティネーションのカラー値を得る。第2の命令は、αsrc*csrc*(1−αdst)+αdst*cdst*(1−αsrc)を計算し、一時デスティネーションレジスタに中間結果を格納する。第3の命令は、中間結果をαsrc*csrc*αdst*cdstで合計する。表8はVG_BLEND_MULTIPLYブレンディングモードに関して3つの命令の場合のコードを示す。
Figure 2010507841
VG_BLEND_SCREENブレンディングモードは、2つの命令で実装されてもよい。第1の命令は、事前乗算ソースおよびデスティネーションのカラー値を得る。第2の命令はαsrc*csrc+αdst*cdst−αsrc*csrc*αdst*cdstを計算する。表9は、VG_BLEND_SCREENブレンディングモードに関して2つの命令のコードを示す。
Figure 2010507841
VG_BLEND_DARKとVG_BLEND_LIGHTENのブレンディングモードは、各々4つの命令で実装されてもよい。
第1の命令は、事前乗算ソースおよびデスティネーションのカラー値を得る。第2の命令は、minまたはmax式の左辺を計算する。それは、(αsrc*csrc+αdst*cdst*(1−αsrc))である。第3の命令は、minまたはmax式の右辺を計算する。それは、(αdst*cdst+αsrc*csrc*(1−αdst))である。第4の命令は、minまたはmax式に関してコンペア(compare)を実行する。表10は、VG_BLEND_DARKとVG_BLEND_LIGHTENのブレンディングモードに関して4つの命令についてのコードを示す。
Figure 2010507841
式(5)および(6)における付加的なブレンディングモードは、4つの命令で実装されてもよい。第1の命令は、式(6)の分子を計算する。それはαsrc*csrc+αdst*cdstである。第2の命令は、式(5)における結果アルファ値を計算する。min演算は、図2におけるクランプイネーブルフィールド212をセットすることにより実現される、それは(src+dst)の結果を1に制限する。第3の命令は、結果アルファ値の逆数を計算する。第4の命令は、第1の命令による中間結果に、第3の命令による逆数値を乗算する。図2に示される命令フォーマットは、アルファおよびカラー演算の両方に用いられてもよい。複数の命令(例えばアルファのためのもの、およびカラーのためのもの)が、同一クロックサイクルにおいて並列に実行されてもよい。アルファおよびカラーのための命令には、異なるオペレーションコードおよびオペランドがあってもよい。表11は、付加的なブレンディングモードに関して、4つの命令のためのコードを示す。第2の命令は、アルファのみについてのものであって、同一のクロックサイクルにおいて第1の命令と並行して実行されてもよい。
Figure 2010507841
以上示されるように、OpenVGにおけるブレンディングモードのすべてが、表3〜5に示される特徴のサブセットを用いてサポートされることができる。GPUは、OpenVGにおけるブレンディングモードのみをサポートする能力を持つように設計されてもよい。GPUは、例えば表3〜5に関して以上説明した追加機能を備えるように設計されてもよい。これらの追加機能は、関係するブレンディングモードをすべてサポートするために用いられてもよい。例えば、OpenGLに関してFUNC REVERSE SUBTRACTブレンディングモードが、表3における演算1およびソースレジスタのためのDstコード2とデスティネーションレジスタのためのSrcコード0の選択によってエミュレート/インプリメントされてもよい。これらの追加機能は、例えばステンシル補間のような他のグラフィック機能をサポートするために用いられてもよい。
ステンシル補間は次の方程式セットを用いる:
Figure 2010507841
ただし、αimageは第1のソースアルファ値であり、αpaintは第2のソースアルファ値であり、式(7)に関してαsrc=αimage*αpaintであり、式(8)乃至(10)に関してαsrc=αimage*αpaint*Rimageである。
アルファブレンディング式(7)およびカラーブレンディング式(8)乃至(10)は、ブレンディングモードに依存してもよい。例えば、「SrcオーバーDst」Porter−Duffブレンディングモードが選択されている場合、ステンシル補間は次のように表現されてもよい:
Figure 2010507841
種々のブレンディングモードならびに他のグラフィック機能が以下のようにサポートされてもよい:
10 Call RCP to compute 1/alpha //Dst pre-format
20 Call MUL to divide alpha out of Dst
30 Call DeGammaLUT to convert compressed color to linear color
40 Op0: Src=alpha*Src, Dst=alpha*Dst //do blending
41 Op1: Instruction for mode-dependent blending equation
・ ・
・ ・
・ ・
4n Opn: Instruction for mode-dependent blending equation
50 Call RCP to compute 1/alpha //Dst post-format
60 Call MUL to divide alpha out of Dst
70 Call GammaLUT to convert linear color to compressed color
80 Call MUL to multiply alpha with Dst and store Dst
命令10〜80は、カラー成分が事前乗算圧縮カラー値として格納されることを前提とする。命令10、20および30はデスティネーションカラー値のプリフォーマット用である。命令10および20は、デスティネーションカラー値からアルファを分ける。命令30は、圧縮カラーをリニアカラーに変換する。命令40から4nは、選択されたブレンディングモードに依存する演算に関するものである。命令50〜80は、結果カラー値のポストフォーマットに関するものである。命令50および60は、非事前乗算カラー値を得るために結果アルファを分割する。命令70は、リニアカラーを圧縮カラーに変換する。命令80は、圧縮カラー値にアルファを乗算し、メモリに最終結果を格納する。カラー値が非事前乗算フォーマットで格納される場合、命令10、20および80は省略されてもよい。カラー成分が圧縮カラー値に代わるリニアカラー値として格納される場合、命令30および70が省略されてもよい。
表3〜5における構造の例についての説明は以上である。概して、ブレンディング処理ユニットは、任意の演算セット、任意の、ソースおよびデスティネーションレジスタセットおよび任意のブレンディングファクタセットをサポートしてもよい。サポートされた演算セットは、任意のブレンディングモード、場合により他のグラフィック関数および機能を実装するために用いることができる。明確にするために、OpenVGにおけるブレンディングモードについて具体的な構造を説明した。該構造は他のブレンディングモードに用いられてもよい。
ここで説明されたブレンディング技術は、GPU、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)、縮小命令型コンピュータ(RISC)、アドバンストRISCマシン(ARM)、コントローラ、マイクロプロセッサなどのような種々の型のプロセッサに用いられてもよい。GPU技術の例示的用途を下記に述べる。
図3は、グラフィックスシステム300の構造のブロック図を示している。それは、スタンドアロンシステム、または計算機システム、無線通信装置などのようなより大きなシステムの一部であってもよい。グラフィックスアプリケーション310が同時に実行してもよく、これはビデオゲーム、グラフィックス、テレビ会議等を目的としたものであってもよい。グラフィックスアプリケーション310は、グラフィックスデータについてグラフィックス処理を実行するために高水準命令を生成する。高水準命令は比較的複雑であるかもしれない。図形データは形状情報(例えば画像内のプリミティブの頂点の情報)、画像がどのように見えるかを表す情報などを含んでも良い。API(API)320は、グラフィックスアプリケーション310とGPUのドライバ/コンパイラ330の間のインタフェースを提供する。それはプロセッサで実行されるソフトウェアおよび/またはファームウェアであってもよい。
GPUのドライバ/コンパイラ330は高水準命令を低水準命令に変換する。それは依存し、根本的な処理ユニットに適合したマシンかもしれない。例えば、データをバッファ蓄積(buffers store)するGPUドライバ/コンパイラ330は、グラフィックスデータがどこにあるかを指示する。GPUドライバ/コンパイラ330は、例えば自動的に、およびアプリケーションに対してトランスペアレントに、各アプリケーションの処理を一連のスレッドに分割してもよい。スレッド(または実行スレッド)は、1つまたは複数の命令セットで実行されてもよい特定のタスクを示す。例えば、スレッドが、数ピクセル数についてブレンディングを実行してもよい。スレッドは、アプリケーションが、異なる単位で同時に実行される複数のタスクを持つことを許容し、異なるアプリケーションがリソースを共有することを許容する。
GPU340は、シェーダコア350およびブレンディング処理ユニット360を含む。用語「コア」、「エンジン」、「マシン」、「プロセッサ」および「処理ユニット」は、しばしば区別なく用いられる。シェーダコア350は、シェーディング、テクスチャマッピングなどのようなグラフィックス処理を実行してもよい。ブレンディング処理ユニット360は、ブレンディングを実行し、任意の数のブレンディングモードをサポートしてもよい。GPU340は、単純化のため図3には示していない他の処理ユニット(例えばテクスチャエンジン)を含んでもよい。
キャッシュ/記憶装置370はGPU340に対する命令とデータを格納してもよい。システム370は、より速くアクセスされ得る高速メモリである1つまたは複数のキャッシュを含んでも良い。
図4は、図3におけるブレンディング処理ユニット360の構造のブロック図を示す。ソースレジスタ412は、(例えば図3におけるシェーダコア350から)ソースカラーおよびアルファ値および/またはブレンディング実行ユニット410からの中間結果を受け取って格納する。第2のソースレジスタ414は、付加的なカラーおよびアルファ値および/または中間結果を格納する。ブレンディング処理ユニット360は、シェーダコア350から各ピクセルに関して1または2セットのソースRGBカラー値を受け取り、ソースレジスタ412および414のうちの1つにソースカラー値セットの各々を格納してもよい。ブレンディング処理ユニット360は、各ピクセルについて二色までのブレンディングを実行してもよい。
プリフォーマットユニット420は、(例えば図3におけるメモリ370からの)デスティネーションカラーおよびアルファ値を受け取り、プリフォーマットを実行する。ユニット420は、事前乗算カラー値に関してアルファを分割し、圧縮カラーからリニアカラーへの変換などを実行する。デスティネーションレジスタ422は、プリフォーマットユニット420からのあらかじめフォーマットされたデスティネーションカラーおよびアルファ値および/またはブレンディング実行ユニット410からの中間結果を格納する。一時的デスティネーションレジスタ424は、中間結果を格納する。
ブレンディング実行ユニット410は、(例えば図3におけるシェーダコア350を通じてGPUドライバ/コンパイラ330からの)ブレンディング命令を受け取り、該受け取った命令を復号する。さらにユニット410は、該復号された命令に従って、ソースおよびデスティネーションの値およびブレンディングファクタを読み出し、これらの値とファクタの処理のためにこれらを計算ユニット440に送る。ユニット410は、ユニット440から結果を受け取り、適切なレジスタにこれらの結果を格納する。ポストフォーマットユニット430は、結果についてポストフォーマットを実行し、事前乗算カラー値に関してアルファを分割してもよく、リニアカラーから圧縮カラーへの変換を実行してもよく、結果カラー値が事前乗算フォーマットで格納されることになっている場合、アルファとの乗算を行うなどしてもよい。
ユニット440は、逆数(RCP)ユニット442、ガンマLUT444、デガンマLUT446およびブレンディングALU 448を含む。ブレンディングALU448は、表3における演算0〜4を実行してもよい。ブレンダーALU448は、ユニット410、420および430から受け取られたオペランドについて演算を行い、これらのユニットに結果を提供してもよい。ユニット442は、入力オペランドを受け取り、オペランドの逆数を提供する。ガンマLUT444は、リニアカラー値を受け取り、圧縮カラー値を提供する。デガンマLUT446は、圧縮カラー値を受け取り、リニアカラー値を提供する。ブレンディング実行ユニット410、プリフォーマットユニット420およびポストフォーマットユニット430は、例えばブレンディング命令によって示された演算の実行、アルファまたは1/アルファとの乗算などのために必要に応じて逆数ユニット442、ガンマLUT444、デガンマLUT446およびブレンディングALU448を呼び出してもよい。ブレンディング実行ユニット410は、ガンマLUT444およびデガンマLUT446を、特定のブレンディングモードまたは特殊機能のために呼び出してもよい。例えば、シェーダコア350からのソース値をリニアフォーマットとしてもよく、ブレンディングモードを圧縮フォーマットで演算してもよい。この場合、ブレンディング実行ユニット410は、ソース値を圧縮フォーマットに変換するためのガンマLUT444を呼び出し、ブレンディング演算を実行し、次いで、結果をリニアフォーマットに変換するためのデガンマLUT446を呼び出してもよい。
制御レジスタ450は、処理中のデータのフォーマットを示す制御ビットを格納する。例えば、制御ビットは、カラー値が(a)事前乗算フォーマットまたは非事前乗算フォーマットのどちらで格納され、(b)圧縮フォーマットまたはリニアフォーマットのどちらで格納されるかを示してもよい。ユニット420は、制御ビットに従って、インバウンドのデスティネーションカラー値についてプリフォーマットを実行してもよい。同様に、ユニット430は、制御ビットに従って、アウトバウンドのカラー値についてポストフォーマットを実行してもよい。制御レジスタ450は、GPUドライバ/コンパイラ330または他の何らかのユニットによってセットされてもよい。
プリフォーマットユニット420、ブレンディング実行ユニット410およびポストフォーマットユニット430は、所与のスレッドについてパイプライン方式で動作してもよい。またユニット410、420および430は、複数のスレッド上で同時に動作してもよい。例えば、あるクロックサイクルでは、ユニット420は、1つのスレッドでプリフォーマットを実行してもよい。ユニット410は、別のスレッドで処理を実行してもよい。また、ユニット430は、さらに別のスレッドでポストフォーマットを実行してもよい。ユニット410、420および430は、ユニット442、444、446および448を必要に応じて呼び出してもよい。
ここで説明されたブレンディング処理ユニット(あるいはブレンディングユニット)は、低価格のものとすることができ、OpenVGにおけるブレンディングモードをすべてサポートすることができる。ブレンディングユニットは、融通性があり、他のブレンディングモードおよびブレンディング機能をサポートすることができる。またブレンディングユニットは、他の処理ユニットとのロードバランシングのために用いられてもよい。例えば、ブレンディングユニットのロードを取り除くために、いくつかの演算は別の処理ユニット(例えばシェーダコア350)に移動されてもよい。または、ブレンディングユニットは、これらのユニット間の作業負荷の平衡を保つために他の処理ユニットのための演算を実行してもよい。ブレンディングユニットは、3次元グラフィックス規格(例えばOpenGL ES2.0、Direct3Dなど)、OpenVG規格および/または他の規格を満たように設計してもよい。融通性がありプログラマブルであるというブレンディングユニットの性質によれば、ブレンディングユニットを再度設計することなく、単にブレンディング命令をリライトすることによって、これらの規格の将来の拡張に対応することができる
図5は、ブレンディングを実行する手順500を示す。第1のブレンディングモードのための第1の演算シーケンスについて、第1の命令シーケンスが実行される(ブロック512)。第2のブレンディングモードのための第2の演算シーケンスについて、第2の命令シーケンスが実行される(ブロック514)。第1および第2のシーケンスにおける演算は、第1および第2のブレンディングモードを包含する複数のブレンディングモードのための演算セットからのものである。第1および第2の命令シーケンスは、GPUドライバ/コンパイラ330または他の何らかのユニットによって生成され、シェーダコア350、ブレンディング処理ユニット360または他の何らかのユニットにおいて格納されてもよい。シーケンスは、2つのブレンディングファクタと2つのオペランドとの1つのドット積のための命令を含んでも良く、オペランドの逆数のための命令を含んでも良く、リニアカラーを圧縮カラーに変換する命令、圧縮カラーをリニアカラーに変換する命令などを含んでもよい。
ここで説明されたブレンディング技術は、無線通信装置、ハンドヘルド装置、ゲーミング装置、コンピューティング装置、ネットワークの装置、個人向け電子機器装置などに用いられてもよい。無線通信装置技術向けの例示的用途を以下に説明する。
図6は、無線通信システムにおける無線通信装置600の構造のブロック図を示す。無線装置600は、携帯電話、端末、ハンドセット、携帯情報端末(PDA)または他の何らかの装置であってもよい。無線通信システムは、符号分割多元接続(CDMA)システム、グローバル移動体通信システム(GSM)システムまたは他の何らかのシステムであってもよい。
無線装置600は、受信パスおよび送信パスを介した双方向通信を提供することが可能である。受信パスにおいては、基地局によって送信された信号が、アンテナ612によって受け取られ、受信機(RCVR)614に提供される。受信機614は、受信信号を整えてディジタル化し、さらなる処理のためにデジタル部620に対しサンプルを供給する。送信パスについて、送信機(TMTR)616は、デジタル部620から送信されるデータを受け取り、該データを処理して整え、変調された信号を生成する。それは、アンテナ612を通じて基地局に送信される。
デジタルセクション620は、例えばモデムプロセッサ622、ビデオプロセッサ624、コントローラ/プロセッサ626、ディスプレイプロセッサ628、ARM/DSP 632、GPU634、内部メモリ636、外部バスインタフェース(EBI)638のような各種処理ユニット、インタフェースユニット、メモリユニットを含む。モデムプロセッサ622は、データ送受信のための処理(例えば符号化、変調、復調および復号)を実行する。ビデオプロセッサ624は、カムコーダー、ビデオプレイバック、ビデオコンファレンシングのようなビデオアプリケーションに関して、ビデオコンテンツ(例えば静止画像、動画像、動画テキスト)の処理を実行する。コントローラ/プロセッサ626は、デジタル部620内の各種処理およびインタフェースユニットの演算を指令してもよい。ディスプレイプロセッサ628は、ディスプレイ装置630上でのビデオ、グラフィックスおよびテキストの表示を容易化するための処理を実行する。ARM/DSP632は、無線装置600向けに種々のタイプの処理を実行してもよい。GPU634は、図3に示されるように実装されることができ、図形処理を実行する。内部メモリ636は、デジタル部620内の種々のユニットに対するデータおよび/または命令を格納する。EBI638は、デジタル部620(例えば内部メモリ636)と主メモリ640の間のデータ転送を容易化する。
デジタル部620は、1つまたは複数のDSP、マイクロプロセッサ、RISCなどで実装されてもよい。またデジタル部620、1つまたは複数の特定用途向け集積回路(ASIC)および/または他の何らかのタイプの集積回路(IC)上に組み立てられても良い。
ここで説明されたブレンディング技術は、種々の手段によって実装されてもよい。例えば、これらの技術はハードウェア、ファームウェア、ソフトウェアまたはそれらの組み合わせで実装されてもよい。ハードウェア実装について、ブレンディングを実行するために用いられる処理ユニット(例えば、図3におけるGPU340またはブレンディング処理ユニット360)は、1つまたは複数のASIC、DSP、ディジタル信号処理装置(DSPD)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、電子機器、ここに説明された機能を実行するように設計された他の電子ユニット、またはそれらの組み合わせの範囲内で実装されてもよい。処理ユニットは、統合/組み込みメモリを含んでいてもよいし、含んでいなくてもよい。
ここで説明されたブレンディング処理ユニットおよびGPUは、スタンドアロンのユニットであってもよいし、あるデバイスの一部であってもよい。該デバイスは、(i)グラフィックスICのようなスタンドアロンのIC、(ii)データおよび/または命令を格納するためのメモリICを含み得る1つまたは複数のICのセット、(iii)統合図形処理機能を備えた移動局モデム(MSM)のようなASIC(iv)他の装置内に組み込まれ得るモジュール、(v)携帯電話、無線装置、ハンドセットまたは移動ユニット、(vi)その他であってもよい。
ファームウェアおよび/またはソフトウェア実装については、ブレンディング技術は、ここで説明された機能を実行するモジュール(例えばプロシージャ、関数など)で実装することができる。ファームウェアおよび/またはソフトウェアコードは、メモリ(例えば、図6におけるメモリ636または640)に格納され、プロセッサ(例えばプロセッサ626)によって実行されてもよい。メモリは、プロセッサ内に実装されるか、プロセッサ外部のものであってもよい。
本開示のこれまでの詳細な説明は、あらゆる当業者に対し、本開示をもたらし、本開示を用いて実施可能にするために提供される。本開示への種々の変更は、当業者であれば即座に明白になる。また、ここで定義された一般的な原理は、本開示の精神または範囲から逸脱することなく、他の変形に適用されてもよい。したがって、本開示は、本明細書で説明された例に限定されることは意図されておらず、ここで開示された原理および新規な特徴に相応しい最も広い範囲を与えられることが意図されている。

Claims (32)

  1. 複数のブレンディングモードについて演算セットを実装し、前記複数のブレンディングモードから選択されたブレンディングモードに関して演算シーケンスのための命令シーケンスを受け取り、該選択されたブレンディングモードに従って、ブレンディングを実行するための前記シーケンスにおける各命令を実行する処理ユニットと、
    前記処理ユニットに関してオペランドおよび結果を格納する記憶ユニットとを具備する装置。
  2. 前記複数のブレンディングモードの各々は演算シーケンスのそれぞれに対応付けられ、各演算は、前記演算セットから得られる請求項1の装置。
  3. 前記処理ユニットは、前記選択されたブレンディングモードについての前記命令シーケンスを実行するブレンディング実行ユニットを具備する請求項1の装置。
  4. 前記処理ユニットは、インバウンドカラー値のガンマ補正およびアルファスケーリングを実行するプリフォーマットユニットと、アウトバウンドカラー値のガンマ圧縮およびアルファスケーリングを実行するポストフォーマットユニットとをさらに具備する請求項3の装置。
  5. 処理ユニットは、算術論理演算ユニット(ALU)、逆数ユニット、ガンマルックアップテーブル、デガンマルックアップテーブルの少なくともいずれかを具備する計算ユニットをさらに具備し、前記計算ユニットは、前記ブレンディング実行ユニット、前記プリフォーマットユニット、前記ポストフォーマットユニットで共用される請求項4の装置。
  6. 前記処理ユニットは、処理されるデータのフォーマットの指示を格納する制御レジスタをさらに具備し、前記プリフォーマットユニットおよび前記ポストフォーマットユニットは、前記制御レジスタからのフォーマット指示に従って、ガンマ補正、ガンマ圧縮、アルファスケーリングを実行する請求項4の装置。
  7. 前記ブレンディング実行ユニット、前記プリフォーマットユニット、前記ポストフォーマットユニットは、最大3つの異なるスレッド上で並列に動作する請求項4の装置。
  8. 前記処理ユニットは、前記演算セットにおける少なくとも1つの演算を実行する算術論理演算ユニット(ALU)を具備する請求項1の装置。
  9. 前記ALUは、前記演算セットにおける演算に関して2つのブレンディングファクタと2つのオペランドのドット積を実行する請求項8の装置。
  10. 前記記憶ユニットは、複数のレジスタを具備し、前記ドット積のための前記2つのオペランドは、前記複数のレジスタのうちの2つからのものである請求項9の装置。
  11. 前記ドット積のための前記2つのブレンディングファクタは、前記複数のレジスタのうちの2つから選択可能である請求項10の装置。
  12. 前記2つのブレンディングファクタは、それぞれ、複数のブレンディングファクタから選択される請求項9の装置。
  13. 前記ALUは、2つのオペランドと2つのブレンディングファクタとを乗算し、前記演算セットにおける演算に関して2つの基準化されたオペランドを提供する請求項8の装置。
  14. 前記演算セットは、MAX演算およびMIN演算を具備し、前記ALUは、前記MAX演算により2つのオペランド間で大きい方のオペランドを提供し、前記MIN演算により2つのオペランド間で小さい方のオペランドを提供する請求項8の装置。
  15. 前記処理ユニットは、オペランドを受け取り、該オペランドの逆数を提供する逆数ユニットを具備する請求項1の装置。
  16. 前記処理ユニットは、リニアカラー値を受け取って圧縮カラー値を提供するガンマルックアップテーブルを具備する請求項1の装置。
  17. 前記処理ユニットは、圧縮カラー値を受け取ってリニアカラー値を提供するデガンマルックアップテーブルを具備する請求項1の装置。
  18. 前記記憶ユニットは、前記命令シーケンスについてオペランドを格納するレジスタを具備し、各命令は、前記レジスタの少なくとも1つに格納された少なくとも1つのオペランドについて演算する請求項1の装置。
  19. 前記記憶ユニットは、ソースカラーおよびアルファ値ならびに中間結果を格納するソースレジスタと、デスティネーションカラーおよびアルファ値ならびに中間結果を格納するデスティネーションレジスタとを具備する請求項1の装置。
  20. 前記記憶ユニットは、付加的なソースカラーおよびアルファ値ならびに中間結果を格納する第2のソースレジスタと、前記中間結果を格納する一時的デスティネーションレジスタとをさらに具備する請求項19の装置。
  21. 各ブレンディング命令は、前記ブレンディング命令についての演算を示す第1のフィールド、第1オペランドを示す第2のフィールド、第2オペランドを示す第3のフィールド、第1のブレンディングファクタを示す第4のフィールド、第2のブレンディングファクタを示す第5のフィールドを具備する請求項1の装置。
  22. 前記複数のブレンディングモードは、Porter−Duffブレンディングモード、付加的なブレンディングモード、OpenVGにおける付加的なブレンディングモードを具備する請求項1の装置。
  23. 前記複数のブレンディングモードは、2次元グラフィックスのための複数のブレンディングモード、3次元グラフィックスのための複数のブレンディングモード、または2次元および3次元のグラフィックスのための複数のブレンディングモードを具備する請求項1の装置。
  24. 複数のブレンディングモードのための演算セットを実装し、前記複数のブレンディングモードから選択されたブレンディングモードに関して演算シーケンスのための命令シーケンスを受け取り、前記選択されたブレンディングモードに従って、ブレンディングを実行するためのシーケンスにおける各命令を実行する処理ユニットと、
    前記処理ユニットに関してオペランドおよび結果を格納する記憶ユニットとを具備する集積回路。
  25. 複数のブレンディングモードのための演算セットを実装し、前記複数のブレンディングモードから選択されたブレンディングモードに関して演算シーケンスのための命令シーケンスを受け取り、前記選択されたブレンディングモードに従ってブレンディングを実行するためのシーケンスにおける各命令を実行するグラフィック処理ユニットと、
    前記プロセッサに接続されたメモリとを具備する無線装置。
  26. 第1のブレンディングモードに関して第1の演算シーケンスのための第1の命令シーケンスを実行すること、
    第2のブレンディングモードに関して第2の演算シーケンスのための第2の命令シーケンスを実行することを含み、
    前記第1および第2のシーケンスにおける演算は、第1および第2のブレンディングモードを備える複数のブレンディングモードのための演算セットからのものである方法。
  27. 前記第1の命令シーケンスの実行は、2つのオペランドのと2つのブレンディングファクタのドット積のための命令を実行することを含む請求項26の方法。
  28. 前記第1の命令シーケンスの実行は、オペランドの逆数のための命令を実行することを含む請求項26の方法。
  29. 前記第1の命令シーケンスの実行は、リニアカラーを圧縮カラーに変換する命令を実行することを含む請求項26の方法。
  30. 前記第1の命令シーケンスの実行は、圧縮カラーをリニアカラーに変換する命令を実行することを含む請求項26の方法。
  31. 第1のブレンディングモードに関して第1の演算シーケンスのための第1の命令シーケンスを生成すること、
    第2のブレンディングモードに関して第2の演算シーケンスのための第2の命令シーケンスを生成することを含み、
    前記第1および第2のシーケンスにおける演算は、前記第1および第2のブレンディングモードを含む複数のブレンディングモードのための演算セットからのものである方法。
  32. 第1のブレンディングモードに関して第1の演算シーケンスのための第1の命令シーケンスと、
    第2のブレンディングモードに関して第2の演算シーケンスのための第2の命令シーケンスとを含み、
    前記第1および第2のシーケンスにおける演算は、前記第1および第2のブレンディングモードを含む複数のブレンディングモードのための演算セットからのものである、命令が格納されたコンピュータ可読媒体。
JP2009533569A 2006-10-19 2007-10-19 グラフィック処理ユニットにおけるプログラマブルなブレンディング Active JP5180222B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/550,958 US7973797B2 (en) 2006-10-19 2006-10-19 Programmable blending in a graphics processing unit
US11/550,958 2006-10-19
PCT/US2007/081952 WO2008049110A2 (en) 2006-10-19 2007-10-19 Programmable blending in a graphics processing unit

Publications (2)

Publication Number Publication Date
JP2010507841A true JP2010507841A (ja) 2010-03-11
JP5180222B2 JP5180222B2 (ja) 2013-04-10

Family

ID=39314863

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009533569A Active JP5180222B2 (ja) 2006-10-19 2007-10-19 グラフィック処理ユニットにおけるプログラマブルなブレンディング

Country Status (9)

Country Link
US (1) US7973797B2 (ja)
EP (1) EP2082373B1 (ja)
JP (1) JP5180222B2 (ja)
KR (1) KR101013345B1 (ja)
CN (1) CN101523443B (ja)
CA (1) CA2665087C (ja)
ES (1) ES2399150T3 (ja)
TW (1) TWI361394B (ja)
WO (1) WO2008049110A2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8638341B2 (en) * 2007-10-23 2014-01-28 Qualcomm Incorporated Antialiasing of two-dimensional vector images
US8149247B1 (en) * 2007-11-06 2012-04-03 Nvidia Corporation Method and system for blending rendered images from multiple applications
KR100948510B1 (ko) * 2008-04-21 2010-03-23 주식회사 코아로직 하드웨어 방식의 벡터 그래픽 가속기, 그 가속기를 포함한어플리케이션 프로세서 및 단말기, 및 그 프로세서에서그래픽 가속방법
US8587594B2 (en) * 2010-05-21 2013-11-19 International Business Machines Corporation Allocating resources based on a performance statistic
US8629867B2 (en) 2010-06-04 2014-01-14 International Business Machines Corporation Performing vector multiplication
US8692825B2 (en) 2010-06-24 2014-04-08 International Business Machines Corporation Parallelized streaming accelerated data structure generation
CN102622772B (zh) * 2011-01-26 2014-08-13 华晶科技股份有限公司 图层混色方法
CN102752519B (zh) * 2011-05-17 2017-04-12 新奥特(北京)视频技术有限公司 一种二维和三维环境下图形图像混合处理的方法
US9349209B2 (en) * 2011-05-27 2016-05-24 Arm Limited Graphics processing systems
US9202308B2 (en) 2011-12-28 2015-12-01 Think Silicon Sa Methods of and apparatus for assigning vertex and fragment shading operations to a multi-threaded multi-format blending device
US9058680B2 (en) 2011-12-28 2015-06-16 Think Silicon Ltd Multi-threaded multi-format blending device for computer graphics operations
US9183609B2 (en) 2012-12-20 2015-11-10 Nvidia Corporation Programmable blending in multi-threaded processing units
KR102194635B1 (ko) 2014-01-29 2020-12-23 삼성전자주식회사 디스플레이 컨트롤러 및 이를 포함하는 디스플레이 시스템
US10002404B2 (en) 2015-04-15 2018-06-19 Mediatek Singapore Pte. Ltd. Optimizing shading process for mixed order-sensitive and order-insensitive shader operations
US11425281B1 (en) * 2016-09-07 2022-08-23 Google Llc Color image processing using models of overlapped response spectra for retinal cone cells
US10067914B2 (en) * 2016-10-27 2018-09-04 Adobe Systems Incorporated Techniques for blending document objects
CN106683033B (zh) * 2016-12-12 2020-09-22 中国航空工业集团公司西安航空计算技术研究所 一种乱序OpenGL接口处理方法
CN106648547A (zh) * 2016-12-12 2017-05-10 中国航空工业集团公司西安航空计算技术研究所 一种gpu图形状态参数的分布式统一管理方法
US10424084B2 (en) * 2017-04-28 2019-09-24 Adobe Inc. Digital content rendering that supports alpha is shape (AIS) as part of knockout groups
US20190179635A1 (en) * 2017-12-11 2019-06-13 Futurewei Technologies, Inc. Method and apparatus for tensor and convolution operations
US12020349B2 (en) * 2020-05-01 2024-06-25 Samsung Electronics Co., Ltd. Methods and apparatus for efficient blending in a graphics pipeline
US12118962B2 (en) * 2022-09-06 2024-10-15 Apple Inc. Systems and methods for processing pre-multiplied alpha content

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07295547A (ja) * 1994-04-22 1995-11-10 Hitachi Ltd 高機能画像メモリlsi及びそれを用いた表示装置
JPH08212377A (ja) * 1994-12-02 1996-08-20 Sony Computer Entateinmento:Kk 画像情報生成装置及び方法、画像情報処理装置及び方法、並びに記録媒体
JPH09325759A (ja) * 1995-11-22 1997-12-16 Nintendo Co Ltd 高速高効率3dグラフィックス及びデジタル音声信号処理を提供するコプロセッサを備える高性能低コストビデオゲームシステム
JPH11286150A (ja) * 1997-12-22 1999-10-19 Adobe Syst Inc フレームバッファにおけるグラフィックオブジェクトの混合
JP2000510268A (ja) * 1996-11-22 2000-08-08 エス・スリー,インコーポレイテッド 3次元グラフィックス補間を実行するための乗算器
JP2001005957A (ja) * 1999-05-06 2001-01-12 Adobe Syst Inc トランスペアレンシィが存在する場合の色の混合
JP2002092631A (ja) * 2000-01-28 2002-03-29 Namco Ltd ゲームシステム、プログラム及び情報記憶媒体
JP2003515851A (ja) * 1999-12-06 2003-05-07 エヌヴィディア グラフィックプロセッサ中の変換モジュール用の方法、装置および製品
WO2006034422A2 (en) * 2004-09-23 2006-03-30 Qualcomm Incorporated Flexible antialiasing in embedded devices
JP2006238429A (ja) * 2005-02-25 2006-09-07 Microsoft Corp ハードウエア・アクセラレーティド・ブレンド・モード
JP2006252426A (ja) * 2005-03-14 2006-09-21 Namco Bandai Games Inc プログラム、情報記憶媒体及び画像生成システム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392393A (en) * 1993-06-04 1995-02-21 Sun Microsystems, Inc. Architecture for a high performance three dimensional graphics accelerator
US5977977A (en) * 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
US7057653B1 (en) * 1997-06-19 2006-06-06 Minolta Co., Ltd. Apparatus capable of image capturing
US6100899A (en) * 1997-10-02 2000-08-08 Silicon Graphics, Inc. System and method for performing high-precision, multi-channel blending using multiple blending passes
US6289364B1 (en) * 1997-12-22 2001-09-11 Adobe Systems, Inc. Transparency processing in a page description language
US6466210B1 (en) * 1997-12-22 2002-10-15 Adobe Systems Incorporated Blending image data using layers
US6496187B1 (en) * 1998-02-17 2002-12-17 Sun Microsystems, Inc. Graphics system configured to perform parallel sample to pixel calculation
US6259462B1 (en) * 1998-12-09 2001-07-10 Ati International Srl Method and apparatus for texture blending in a video graphics circuit
KR20010113669A (ko) 1999-02-17 2001-12-28 케네쓰 올센 병렬적 샘플-픽셀 연산을 수행하도록 구성된 그래픽 시스템
US6339432B1 (en) * 1999-09-24 2002-01-15 Microsoft Corporation Using alpha values to control pixel blending
US7483042B1 (en) * 2000-01-13 2009-01-27 Ati International, Srl Video graphics module capable of blending multiple image layers
US7034828B1 (en) * 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6765695B2 (en) * 2001-09-12 2004-07-20 Seiko Epson Corporation Color processing architecture and algorithms for color laser printers
EP1495412B1 (en) * 2002-03-22 2012-11-28 Alandro Consulting NY LLC Scalable high performance 3d graphics
US7590299B2 (en) * 2004-06-10 2009-09-15 Samsung Electronics Co., Ltd. Increasing gamma accuracy in quantized systems
US20060239579A1 (en) * 2005-04-22 2006-10-26 Ritter Bradford A Non Uniform Blending of Exposure and/or Focus Bracketed Photographic Images

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07295547A (ja) * 1994-04-22 1995-11-10 Hitachi Ltd 高機能画像メモリlsi及びそれを用いた表示装置
JPH08212377A (ja) * 1994-12-02 1996-08-20 Sony Computer Entateinmento:Kk 画像情報生成装置及び方法、画像情報処理装置及び方法、並びに記録媒体
JPH09325759A (ja) * 1995-11-22 1997-12-16 Nintendo Co Ltd 高速高効率3dグラフィックス及びデジタル音声信号処理を提供するコプロセッサを備える高性能低コストビデオゲームシステム
JP2000510268A (ja) * 1996-11-22 2000-08-08 エス・スリー,インコーポレイテッド 3次元グラフィックス補間を実行するための乗算器
JPH11286150A (ja) * 1997-12-22 1999-10-19 Adobe Syst Inc フレームバッファにおけるグラフィックオブジェクトの混合
JP2001005957A (ja) * 1999-05-06 2001-01-12 Adobe Syst Inc トランスペアレンシィが存在する場合の色の混合
JP2003515851A (ja) * 1999-12-06 2003-05-07 エヌヴィディア グラフィックプロセッサ中の変換モジュール用の方法、装置および製品
JP2002092631A (ja) * 2000-01-28 2002-03-29 Namco Ltd ゲームシステム、プログラム及び情報記憶媒体
WO2006034422A2 (en) * 2004-09-23 2006-03-30 Qualcomm Incorporated Flexible antialiasing in embedded devices
JP2006238429A (ja) * 2005-02-25 2006-09-07 Microsoft Corp ハードウエア・アクセラレーティド・ブレンド・モード
JP2006252426A (ja) * 2005-03-14 2006-09-21 Namco Bandai Games Inc プログラム、情報記憶媒体及び画像生成システム

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CSNJ200710054004; 爰島快行, 外3名: '"GPUを用いた動的に変形するベクトルデータのレンダリング"' Visual Computing グラフィクスとCAD 合同シンポジウム2006 予稿集 , 20060622, p.17-22 *
JPN5009015239; JIANG X ET AL: '"An automatic detergent blending system based on virtual x device driver"' IEEE ICIT '02 vol.2, 20021211, p.810-814, IEEE *
JPN6011055866; 爰島快行, 外3名: '"GPUを用いた動的に変形するベクトルデータのレンダリング"' Visual Computing グラフィクスとCAD 合同シンポジウム2006 予稿集 , 20060622, p.17-22 *

Also Published As

Publication number Publication date
WO2008049110A3 (en) 2008-07-17
CN101523443A (zh) 2009-09-02
TWI361394B (en) 2012-04-01
EP2082373A2 (en) 2009-07-29
ES2399150T3 (es) 2013-03-26
CA2665087A1 (en) 2008-04-24
CN101523443B (zh) 2016-04-27
US7973797B2 (en) 2011-07-05
CA2665087C (en) 2013-05-14
KR20090068250A (ko) 2009-06-25
KR101013345B1 (ko) 2011-02-10
US20080094410A1 (en) 2008-04-24
EP2082373B1 (en) 2013-01-16
JP5180222B2 (ja) 2013-04-10
WO2008049110A2 (en) 2008-04-24
TW200834465A (en) 2008-08-16

Similar Documents

Publication Publication Date Title
JP5180222B2 (ja) グラフィック処理ユニットにおけるプログラマブルなブレンディング
JP5006412B2 (ja) 効率的な2d及び3dグラフィックス処理
US8619085B2 (en) Method and system for compressing tile lists used for 3D rendering
US7355603B2 (en) Filtering unit for floating-point texture data
US20150022534A1 (en) Graphics processor with arithmetic and elementary function units
EP1980998A2 (en) Programmable graphics processing element
US20130093766A1 (en) Interpolation of vertex attributes in a graphics processor
WO2007146574A2 (en) Convolution filtering in a graphics processor
US20070268289A1 (en) Graphics system with dynamic reposition of depth engine
EP2831754A1 (en) Post tesellation edge cache
US8619077B1 (en) Efficient execution of color space processing functions in a graphics processing unit
US7274373B1 (en) System, method and computer program product for providing arbitrary texture filtering
US6778188B2 (en) Reconfigurable hardware filter for texture mapping and image processing
US20150054843A1 (en) Color-correct alpha blending texture filter and method of use thereof
US20030164842A1 (en) Slice blend extension for accumulation buffering
JPH04315275A (ja) コンピュータグラフィックにおける飽和演算をデータプロセッサによって行う方法
CN116778073A (zh) 阴影渲染方法、装置、设备及计算机可读存储介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111025

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120124

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120131

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120227

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120305

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120323

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120612

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120912

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121112

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: 20121211

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130110

R150 Certificate of patent or registration of utility model

Ref document number: 5180222

Country of ref document: JP

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