JP7227404B2 - デュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ - Google Patents
デュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ Download PDFInfo
- Publication number
- JP7227404B2 JP7227404B2 JP2021573726A JP2021573726A JP7227404B2 JP 7227404 B2 JP7227404 B2 JP 7227404B2 JP 2021573726 A JP2021573726 A JP 2021573726A JP 2021573726 A JP2021573726 A JP 2021573726A JP 7227404 B2 JP7227404 B2 JP 7227404B2
- Authority
- JP
- Japan
- Prior art keywords
- ratio
- inte
- data
- mode
- filtering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 239000000872 buffer Substances 0.000 title claims description 115
- 238000013507 mapping Methods 0.000 title claims description 22
- 230000009977 dual effect Effects 0.000 title claims description 21
- 238000001914 filtration Methods 0.000 claims description 107
- 238000004364 calculation method Methods 0.000 claims description 44
- 238000000034 method Methods 0.000 claims description 22
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 10
- 238000005094 computer simulation Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 2
- 101150046432 Tril gene Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/36—Level of detail
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Description
[関連出願の相互参照]
本開示は2019年6月10日に提出された、出願番号201910495890.0、名称「デュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ」という特許文献の優先権を主張し、その内容の全てが参照によって本開示に組み込まれる。
Image U0ユニットと、LOD U1ユニットと、Coordinate U2ユニットと、Coordinate controller U3ユニットと、address controller U4ユニットと、を含み、
前記Image U0ユニットは、imageの基本情報を記憶し、mipmapテクスチャを有効にした場合、target及び異なるmapレイヤーをアドレスとすることによって、対応するimageのmode、width、height、depth、border、inte_format、format、type、baseを記憶し、layerレイヤーを有効にした場合、target及び異なるlayerレイヤーをアドレスとすることによって、対応するレイヤーのmode、width、height、depth、border、inte_format、format、type、base値を記憶し、cubemapを有効にした場合、mipmapレイヤーの1つのアドレスを6つに細分化し、それぞれ0、1、2、3、4、5の異なるface情報を表し、layerレイヤーを有効にし、且つmapレイヤーの情報がない場合、異なるlayerレイヤーのmode、width、height、depth、border、inte_format、format、typeが同じであるが、baseが異なり、layerを有効にし、且つmapレイヤーを有効にした場合、mode、width、height、depth、border、inte_format、format、typeが同じであるが、baseが異なり、1D、2D、3D、rectangle、cubemap、1D_ARRAY、2D_ARRAY、cubemap_array、2D_multisample、2D_multisample、2D_multisample_arrayモードでのレジスタコンフィギュレーションをサポートし、
前記U1ユニットは、異なるフィルタリングモードでのlevel値の計算を完了し、targetアドレスへのアクセスと組み合わせてimageユニットにアクセスするアドレスを得、level値を計算する前に、まずtarget及びbase_level値をlevel0とし、imageユニットを読み取り、後のlevel計算時の参考としてimageの基本情報を得る必要があり、そしてlevel値の計算に下記の2つの場合が考えられ、lodを有効にした場合、imageがlayerモードであれば、このとき、異なるレイヤーのwidth、heightの情報が等しく、フィルタリングモードがmag_filterかmin_filterかに関わらず、整数を取ってbase_level方向に最も近い一つのlevel値をlevel0としてimage情報のoffsetを読み取り、filter_typeのサイズがリクエストされたフィルタリングのサイズにマッチし、lodを有効にした場合、imageがmipmapモードであれば、このとき、異なるレイヤーのwidth、height、depthが等しくなく、mag_filterがnear及びlinearモードで整数を取ってbase_levelに最も近い値を取りimage情報のoffsetを読み取ることが考えられ、min_filterモードでnear、linear、near_mipmap_near、linear_mipmap_nearがbase_levelに最も近くない値をlevel0としてimageのoffsetを読み取ることが考えられ、filter_typeがそれぞれリクエストされたフィルタリングモードにマッチし、min_filterがnear_mipmap_linear、linear_mipmap_linearモードで整数を取って隣接する2つのレイヤーを、読み取るimage情報のoffsetとすることが考えられ、ratio_lがlod値からlevel値を引いた小数部であり、このときlodの整数部がlevel0と言い、level0に1を加算するとlevel1となり、lod値がmin_lodであれば、このときlevel0とlevel1とが同じであるので、fiter_typeがそれぞれnear_mipmap_near及びlinear_mipmap_nearフィルタリングであり、同様に、lodとして偏導関数を有効にした場合、rasterにより伝達されるグラフ要素タイプのprimitive、dux、duy、dvx、dvy、dwx、dwy、delt_x、delt_yに従って、polygon/pointとlineの2つの場合に分け、それぞれ計算しpolygon/point及びlineのlodを得、imageがlayerモードであれば、このとき、異なるレイヤーのwidth、heightの情報が等しいが、フィルタリングモードがmag_filterかmin_filterかに関わらず、整数を取ってbase_level方向に最も近い一つのlevel値をlevel0としてimage情報のoffsetを読み取り、filter_typeのサイズがリクエストされたフィルタリングのサイズにマッチし、imageがmipmapモードであれば、このとき、異なるレイヤーのwidth、height、depthが等しくなく、mag_filterがnear及びlinearモードで整数を取って最も近いbase_levelに最も近い値を取り、image情報のoffsetを読み取ることが考えられ、min_filterモードでnear、linear、near_mipmap_near、linear_mipmap_nearが最も近くないbase_levelに最も近くない値をlevel0としてimageのoffsetを読み取ることが考えられ、filter_typeがそれぞれリクエストされたフィルタリングモードにマッチし、min_filterがnear_mipmap_linear、linear_mipmap_linearモードで整数を取って隣接する2つのレイヤーを、読み取るimage情報のoffsetとすることが考えられ、ratio_lがlod値からlevel値を引いた小数部であり、このときlodの整数部がlevel0と言い、level0に1を加算するとlevel1となり、lod値がmin_lodであれば、このときlevel0とlevel1とが同じであるので、fiter_typeがそれぞれnear_mipmap_near及びlinear_mipmap_nearフィルタリングであり、level0及びlevel1を有効にした場合、trilinearフィルタリング方式であることが考えられ、trilinear isotropic(near_mipmap_linear、linear_mipmap_linear)、trilinear anisotropicというフィルタリング方式があり、level0だけが有効である場合、point isotropic(near、near_mipmap_near)、bilinear isotropic(linear、linear_mipmap_near)、bilinear anisotropicというフィルタリング方式があり、
前記Coordinate U2ユニットは、fetch、samplerモードでのs、t、r、qの座標、アドレスの変換を完了し、cubemap_arrayを有効にした場合、このときのQ座標が0ではなく、layerライン番号を示し、s、t、rがそれぞれx、y、z方向でのサイズを示し、マッピング関係により平面座標におけるs、t座標を得、rectangleモードを有効にした場合、このときのs、t座標を非正規化する必要がなく、s、t、r座標がそれぞれの範囲外にあれば、異なるwrapモードで座標を拘束し、level0及びlevel1を有効にした場合、imageユニットからlevel0及びlevel1のそれぞれのwidth、height、depth値を得、それぞれs、t、rを乗じ、非正規化されたテクスチャ座標のu0、v0、w0及びu1、v1、w1を得、level0だけが有効である場合、imageユニットからlevel0のwidth、height、depth値を得、それぞれs、t、rを乗じ、非正規化されたテクスチャ座標のu0、v0、w0を得、このときのratio_u0、ratio_v0、ratio_w0がそれぞれu0、v0、w0の小数部であり、ratio_u1、ratio_v1、ratio_w1がそれぞれu1、v1、w1の小数部であり、inte_u0、inte_v0、inte_w0がそれぞれu0、v0、w0の整数部であり、inte_u1、inte_v1、inte_w1がそれぞれu1、v1、w1の整数部であり、wrap操作を実行する際、imageコンテンツのborde値に値があり、かつこのときアドレスがオーバーフローした場合、このときdisableがテクセルをリクエストし、border_color値を最終pixel段階での入力として有効にし、
前記Coordinate controller U3ユニットは、level0及びlevel1を有効にした場合、filter_typeがpointモードであるとき、modeが1Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferu1に書き込まれたデータがinte_u1であり、modeが2Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferv0に書き込まれたデータがinte_v0であり、coordinate bufferu1に書き込まれたデータがinte_u1であり、coordinate bufferv1に書き込まれた整数部がinte_v1であり、modeが3Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferv0に書き込まれたデータがinte_v0であり、coordinate bufferw0に書き込まれたデータがinte_w0であり、coordinate bufferu1に書き込まれたデータがinte_u1であり、coordinate bufferv1に書き込まれたデータがinte_v1であり、coordinatew1に書き込まれたデータがinte_w1であり、filter_typeがlinearモードであるとき、modeが1Dであれば、coordinate bufferu1に書き込まれたデータがinte_u1であり、coordinate bufferu1に書き込まれたデータがinte_u1+1であり、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferu0に書き込まれたデータがinte_u0+1であり、modeが2Dであれば、coordinate bufferu0、coordinate bufferv0に書き込まれたデータが順次(inte_u0、inte_v0)、(inte_u0+1、inte_v0)、(inte_u0、inte_v0+1)、(inte_u0+1、inte_v0+1)であり、coordinate bufferu1、coordinate bufferv1に書き込まれたデータが順次(inte_u1、inte_v1)、(inte_u1+1、inte_v1)、(inte_u1、inte_v1+1)、(inte_u1+1、inte_v1+1)であり、modeが3Dであれば、coordinate bufferu0、coordinate bufferv0、coordinate bufferw0に書き込まれたデータが順次(inte_u0、inte_v0、inte_w0)、(inte_u0+1、inte_v0、inte_w0)、(inte_u0、inte_v0+1、inte_w0)、(inte_u0+1、inte_v0+1、inte_w0)、(inte_u0、inte_v0、inte_w0+1)、(inte_u0+1、inte_v0、inte_w0+1)、(inte_u0、inte_v0+1、inte_w0+1)、(inte_u0+1、inte_v0+1、inte_w0+1)であり、coordinate bufferu1、coordinate bufferv1、coordinate bufferw1に書き込まれたデータが順次(inte_u1、inte_v1、inte_w1)、(inte_u1+1、inte_v1、inte_w1)、(inte_u1、inte_v1+1、inte_w1)、(inte_u1+1、inte_v1+1、inte_w1)、(inte_u1、inte_v1、inte_w1+1)、(inte_u1+1、inte_v1、inte_w1+1)、(inte_u1、inte_v1+1、inte_w1+1)、(inte_u1+1、inte_v1+1、inte_w1+1)であり、level0を有効にした場合、filter_typeがpointモードであるとき、modeが1Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、modeが2Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferv0に書き込まれたデータがinte_v0であり、modeが3Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferv0に書き込まれたデータがinte_v0であり、coordinate bufferw0に書き込まれたデータがinte_w0であり、filter_typeがlinearモードであるとき、modeが1Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferu0に書き込まれたデータがinte_u0+1であり、modeが2Dであれば、coordinate bufferu0、coordinate bufferv0に書き込まれたデータが順次(inte_u0、inte_v0)、(inte_u0+1、inte_v0)、(inte_u0、inte_v0+1)、(inte_u0+1、inte_v0+1)であり、modeが3Dであれば、coordinate bufferu0、coordinate bufferv0、coordinate bufferw0に書き込まれたデータが順次(inte_u0、inte_v0、inte_w0)、(inte_u0+1、inte_v0、inte_w0)、(inte_u0、inte_v0+1、inte_w0)、(inte_u0+1、inte_v0+1、inte_w0)、(inte_u0、inte_v0、inte_w0+1)、(inte_u0+1、inte_v0、inte_w0+1)、(inte_u0、inte_v0+1、inte_w0+1)、(inte_u0+1、inte_v0+1、inte_w0+1)であり、
前記address controller U4ユニットは、まずテクスチャ座標からテクスチャオフセットアドレスへの計算を完了し、level0が有効である場合、modeが1Dであれば、アドレス計算がオーバーフローしていないときのオフセットがsize*u0となり、modeが2Dであれば、アドレス計算がオーバーフローしていないときのオフセットがsize*(width0*u0+v0)となり、modeが3Dであれば、アドレス計算がオーバーフローしていないときのオフセットがsize*(width0*u0+v0)+w0*width0*height0となり、texel cacheにアクセスする最終アドレスがbase0+オフセットとなり、そしてオフセットのエンド部と4バイトのアライメントにより、異なるinte_format条件でのアドレス数を得、offset0 bufferにエンドデータを記憶し、level1が無効であるので、デュアルBufferの操作方式により、texel cacheをリクエストするとき、奇数のアドレスの場合、cache0にアクセスするtexel cacheアドレスをリクエストし、偶数のアドレスの場合、cache1へのアクセスをリクエストし、アドレスへの並行アクセスを実現し、level0及びlevel1がいずれも有効である場合、modeが1Dであれば、アドレス計算がオーバーフローしていないときのオフセットがsize*u0、size*u1となり、modeが2Dであれば、アドレス計算がオーバーフローしていないときのオフセットがsize*(width0*u0+v0)、size*(width1*u1+v1)となり、modeが3Dであれば、アドレス計算がオーバーフローしていないときのオフセットがsize*(width0*u0+v0)+w0*width0*height0、size*(width1*u1+v1)+w1*width1*height1となり、texel cacheにアクセスする最終アドレスがbase0+level0オフセット、base1+level1オフセットとなり、このとき、cache0及びcache1を並行してリクエストする。
前記data controllerU0ユニットは、level0及びlevel1が同時に有効である場合、それぞれ異なるinte_formatに従って、off0及びoff1を結び付け、1つのcache lineにおいてデータのスティッチングタスクを完了し、テクスチャアドレスに対応するテクスチャデータを得、かつそれぞれのデータをdata buffer0及びdata buffer1に同時に書き込み、かつdata buffer0、data buffer1がそれぞれのlevelのデータをそれぞれ格納し、level0だけが有効である場合、同様に、cache0及びcache1からそれぞれのcache lineのデータをそれぞれ読み出し、異なるinte_format及びoff0に従って、odd data及びeven dataを得、data buffer0及びdata buffer1に二重に書き込み、このときdata buffer0及びdata buffer1に同じlevelのテクセルデータを格納し、
前記filterU1ユニットは、まず、切り捨て演算を完了し、異なるinte_formatに対して、異なるビット幅のr、g、b、a値を切り捨て、そして独立な方式でそれぞれフィルタリング計算を行い、ビット幅の切り捨て方法が異なるinte_formatに従って実行し、level0及びlevel1がいずれも有効である場合、このときfilter_typeのフィルタリング方式には、NAF(non-anisotropic)(near_mipmap_linear isotropic、linear_mipmap_linear isotropic)、BAF(bilinear-anisotropic)(無効)、TAF(trilinear-anisotropic)があり、level0が有効で、level1が無効である場合、このときfilter_typeのフィルタリング方式には、NAF(non-anisotropic)(near、near_mipmap_near、linear_mipmap_near)、BAF(bilinear anisotropic)、TAF(trilinear-anisotropic)(無効)があり、level0及びlevel1が同時に有効で、filter_typeがTAF(near_mipmap_linear)である場合、modeが1D、2D、3Dであるかに関わらず、同時にdata buffer0、data buffer1からdata0及びdata1という1つのデータを同時に読み取り、得たフィルタリング結果がdata0*(1.0-ratio_l)+data1*ratio_lであり、フィルタリング方式がTAF(linear_mipmap_linear)で、modeが1Dであれば、まずdata buffer0、data buffer1から同時にdata0、data1及びdata2、data3という2つのデータを順次読み取り、フィルタリングの中間結果がdata0*(1.0-ratio_u0)+data2*ratio_u0、data1*(1.0-ratio_u1)+data3*ratio_u1であり、得たフィルタリングの最終結果が(data0*(1.0-ratio_u0)+(data2*ratio_u0)*(1.0-ratio_l)+(data1*1.0-ratio_u1)+(data3*ratio_u1)*ratio_lであり、modeが2Dであれば、data buffer0、data buffer1から同時にdata0、data1、data2、data3及びdata4、data5、data6、data7という4つのデータを順次読み取り、そうするとまずdata0、data2、data4、data6という最初の4つのデータにより得たフィルタリングの中間結果がdata0*(1.0-ratio_u0)+data2*ratio_u0、data4*(1.0-ratio_u1)+data6*ratio_u1であり、そしてdata1、data3、data5、data7という後の4つのデータにより得たフィルタリングの中間結果がdata1*(1.0-ratio_u0)+data3*ratio_u0、data5*(1.0-ratio_u1)+data7*ratio_u1であり、最後にそれぞれ(data0*(1.0-ratio_u0)+data1*ratio_u0)*(1.0-ratio_v0)+(data2*(1.0-ratio_u0)+data3*ratio_u0*ratio_v0、(data4*(1.0-ratio_u1)+data5*ratio_u1)*(1.0-ratio_v1)+(data6*(1.0-ratio_u1)+data7*ratio_u1)*ratio_v1というlevel0及びlevel1の最終結果を得、最終的なフィルタリング結果が((data0*(1.0-ratio_u0)+data1*ratio_u0)*(1.0-ratio_v0)+(data2*(1.0-ratio_u0)+data3*ratio_u0)*ratio_v0)*(1.0-ratio_l)+((data4*(1.0-ratio_u1)+data5*ratio_u1)*(1.0-ratio_v1)+(data6*(1.0-ratio_u1)+data7*ratio_u1)*ratio_v1)*ratio_lであり、modeが3Dであれば、data buffer0、data buffer1から同時にdata0、data1、data2、data3、data4、data5、data6、data7及びdata8、data9、data10、data11、data12、data13、data14、data15という8つのデータを順次読み取り、まずdata0、data1、data2、data3、data8、data9、data10、data11という最初の8つのデータにより得たフィルタリングの中間結果がそれぞれ((data0*(1.0-ratio_u0)+data2*ratio_u0)*(1.0-ratio_v0)+((data1*(1.0-ratio_u0)+data3*ratio_u0)*ratio_v0、((data8*(1.0-ratio_u1)+data9*ratio_u1)*(1.0-ratio_v1)+((data10*(1.0-ratio_u1)+data11*ratio_u1)*ratio_v1であり、そしてdata4、data5、data6、data7、data12、data13、data14、data15という後の8つのデータにより得たフィルタリングの中間結果がそれぞれ((data4*(1.0-ratio_u0)+data5*ratio_u0)*(1.0-ratio_v0)+((data6*(1.0-ratio_u0)+data7*ratio_u0)*ratio_v0、((data12*(1.0-ratio_u1)+data13*ratio_u1)*(1.0-ratio_v1)+((data14*(1.0-ratio_u1)+data15*ratio_u1)*ratio_v1であり、最後に得たフィルタリングの最終結果が((((data0*(1.0-ratio_u0)+data2*ratio_u0)*(1.0-ratio_v0)+((data1*(1.0-ratio_u0)+data3*ratio_u0)*ratio_v0)*(1.0-ratio_w0)+(((data4*(1.0-ratio_u0)+data5*ratio_u0)*(1.0-ratio_v0)+((data6*(1.0-ratio_u0)+data7*ratio_u0)*ratio_v0)*ratio_w0)*(1.0-ratio_l)+((((data8*(1.0-ratio_u1)+data9*ratio_u1)*(1.0-ratio_v1)+((data10*(1.0-ratio_u1)+data11*ratio_u1)*ratio_v1)*(1.0-ratio_w1)+(((data12*(1.0-ratio_u1)+data13*ratio_u1)*(1.0-ratio_v1)+((data14*(1.0-ratio_u1)+data15*ratio_u1)*ratio_v1)*ratio_w1)*ratio_lであり、anisotropicを有効にした場合、このときdata buffer0、data buffer1におけるデータに対してそれぞれanisotropic計算した後にdata0、data1の中間フィルタリング結果を得、そうすると最終的なフィルタリング結果がdata0*(1.0-ratio_l)+data1*ratio_lであり、level0だけが有効で、filter_typeがnear、near_mipmap_nearである場合、modeが1D、2D、3Dであるかに関わらず、同時にdata buffer0、data buffer1からdata0及びdata1という1つのデータを同時に読み取り、フィルタリングせず、data0、data1フォーマットを変換した後に直接出力し、フィルタリング方式がBAFである場合、modeが1Dであれば、まずdata buffer0、data buffer1から同時にdata0、data1という1つのデータを順次読み取り、最終的なフィルタリング結果がdata0*(1.0-ratio_u0)+data2*ratio_u0であり、modeが2Dであれば、data buffer0、data buffer1から同時にdata0、data1、data2、data3という2つのデータを順次読み取り、そうするとまずdata0、data2という最初の2つのデータにより得たフィルタリングの中間結果がdata0*(1.0-ratio_u0)+data2*ratio_u0であり、そしてdata1、data3という後の2つのデータにより得たフィルタリングの中間結果がdata1*(1.0-ratio_u0)+data3*ratio_u0であり、最後に得たフィルタリングの最終結果が(data0*(1.0-ratio_u0)+data2*ratio_u0)*(1.0-ratio_l)+(data1*(1.0-ratio_u0)+data3*ratio_u0)*ratio_lであり、modeが3Dであれば、data buffer0、data buffer1から同時にdata0、data1、data2、data3及びdata4、data5、data6、data7という4つのデータを順次読み取り、まずdata0、data1、data4、data5という最初の4つのデータにより得たフィルタリングの中間結果が(data0*(1.0-ratio_u0)+data1*ratio_u0)*(1.0-ratio_v0)+(data4*(1.0-ratio_u0)+data5*ratio_u0)*ratio_v0であり、そしてdata2、data3、data6、data7という後の4つのデータにより得たフィルタリングの中間結果がそれぞれ(data2*(1.0-ratio_u0)+data3*ratio_u0)*(1.0-ratio_v0)+(data6*(1.0-ratio_u0)+data7*ratio_u0)*ratio_v0であり、最後に得たフィルタリングの最終結果が((data0*(1.0-ratio_u0)+data1*ratio_u0)*(1.0-ratio_v0)+(data4*(1.0-ratio_u0)+data5*ratio_u0)*ratio_v0)*(1.0-ratio_w0)+((data2*(1.0-ratio_u0)+data3*ratio_u0)*(1.0-ratio_v0)+(data6*(1.0-ratio_u0)+data7*ratio_u0)*ratio_v0)*ratio_w0であり、フィルタリング操作を実行した後、異なるinte_formatフォーマットに従って、texel_r、texel_g、texel_b、texel_aというfilterの出力結果に割り当て操作を行い、formatがcolorであれば、inte_formatにおけるrのみに値がある場合、このときtexel_rがフィルタリング結果であり、texel_g、texel_bがいずれも0であり、texel_aが1であり、formatがdepth、stencilであれば、このときフィルタリングせず、結果をtexel_r、texel_g成分に割り当て、texel_b、texel_a成分が0であり、
前記pixelユニットU2は、border_colorを有効にした場合、border_colorデータをpixel段階の入力データとして採用し、swizzle操作を有効にしていない場合、pixel_r、pixel_g、pixel_b、pixel_aとborder_colorのborder_color_r、border_color_g、border_color_b、border_color_aが等しく、swizzle操作を有効にした場合、swizzleモードによりそれぞれのチャンネルデータをそれぞれ変換し、最終的にpixel_r、pixel_g、pixel_b、pixel_aという4つの色成分を並行して出力する。
該発明はデュアルBufferを用いることによりテクスチャインデックスアドレスの計算効率を向上させることができ、2つのレイヤーのデータを同時に計算する必要がある場合、並行計算を開始することができ、1つのレイヤーのデータを有効にして計算する必要がある場合、奇数偶数方式並行的にステクセルをインデックすることを採用してデータの並行計算を保証し、それによってテクセルデータのインデックス時間を短縮し、テクセルの計算効率を向上させる。
data5という最初の4つのデータにより得たフィルタリングの中間結果が(data0*(1.0-ratio_u0)+data1*ratio_u0)*(1.0-ratio_v0)+(data4*(1.0-ratio_u0)+data5*ratio_u0)*ratio_v0であり、そしてdata2、data3、data6、data7という後の4つのデータにより得たフィルタリングの中間結果がそれぞれ(data2*(1.0-ratio_u0)+data3*ratio_u0)*(1.0-ratio_v0)+(data6*(1.0-ratio_u0)+data7*ratio_u0)*ratio_v0であり、最後に得たフィルタリングの最終結果が((data0*(1.0-ratio_u0)+data1*ratio_u0)*(1.0-ratio_v0)+(data4*(1.0-ratio_u0)+data5*ratio_u0)*ratio_v0)*(1.0-ratio_w0)+((data2*(1.0-ratio_u0)+data3*ratio_u0)*(1.0-ratio_v0)+(data6*(1.0-ratio_u0)+data7*ratio_u0)*ratio_v0)*ratio_w0であり、次の図7に示され、フィルタリング操作を実行した後、異なるinte_formatフォーマットに従って、texel_r、texel_g、texel_b、texel_aというfilterの出力結果に割り当て操作を行い、formatがcolorであれば、inte_formatにおけるrのみに値がある場合、このときtexel_rがフィルタリング結果であり、texel_g、texel_bがいずれも0であり、texel_aが1であり、formatがdepth、stencilであれば、このときフィルタリングせず、結果をtexel_r、texel_g成分に割り当て、texel_b、texel_a成分が0である。
Claims (6)
- デュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータであって、
Image U0ユニットと、LOD U1ユニットと、Coordinate U2ユニットと、Coordinate controller U3ユニットと、address controller U4ユニットと、を含み、
前記Image U0ユニットは、
imageの基本情報を記憶し、mipmapテクスチャを有効にした場合、target及び異なるmapレイヤーをアドレスとすることによって、対応するimageのmode、width、height、depth、border、inte_format、format、type、baseを記憶し、
layerレイヤーを有効にした場合、target及び異なるlayerレイヤーをアドレスとすることによって、対応するレイヤーのmode、width、height、depth、border、inte_format、format、type、base値を記憶し、cubemapを有効にした場合、mipmapレイヤーの1つのアドレスを6つに細分化し、それぞれ0、1、2、3、4、5の異なるface情報を表し、
layerレイヤーを有効にし、且つmapレイヤーの情報がない場合、異なるlayerレイヤーのmode、width、height、depth、border、inte_format、format、typeが同じであるが、baseが異なり、
layerを有効にし、且つmapレイヤーを有効にした場合、mode、width、height、depth、border、inte_format、format、typeが同じであるが、baseが異なり、
1D、2D、3D、rectangle、cubemap、1D_ARRAY、2D_ARRAY、cubemap_array、2D_multisample、2D_multisample、2D_multisample_arrayモードでのレジスタコンフィギュレーションをサポートし、
前記U1ユニットは、
異なるフィルタリングモードでのlevel値の計算を完了し、targetアドレスへのアクセスと組み合わせてimageユニットにアクセスするアドレスを得、
level値を計算する前に、まずtarget及びbase_level値をlevel0とし、imageユニットを読み取り、後のlevel計算時の参考としてimageの基本情報を得る必要があり、そしてlevel値の計算に下記の2つの場合が考えられ、lodを有効にした場合、imageがlayerモードであれば、このとき、異なるレイヤーのwidth、heightの情報が等しく、フィルタリングモードがmag_filterかmin_filterかに関わらず、整数を取ってbase_level方向に最も近い一つのlevel値をlevel0としてimage情報のoffsetを読み取り、filter_typeのサイズがリクエストされたフィルタリングのサイズにマッチし、lodを有効にした場合、imageがmipmapモードであれば、このとき、異なるレイヤーのwidth、height、depthが等しくなく、mag_filterがnear及びlinearモードで整数を取ってbase_levelに最も近い値を取りimage情報のoffsetを読み取ることが考えられ、min_filterモードでnear、linear、near_mipmap_near、linear_mipmap_nearがbase_levelに最も近くない値をlevel0としてimageのoffsetを読み取ることが考えられ、filter_typeがそれぞれリクエストされたフィルタリングモードにマッチし、min_filterがnear_mipmap_linear、linear_mipmap_linearモードで整数を取って隣接する2つのレイヤーを、読み取るimage情報のoffsetとすることが考えられ、ratio_lがlod値からlevel値を引いた小数部であり、このときlodの整数部がlevel0と言い、level0に1を加算するとlevel1となり、lod値がmin_lodであれば、このときlevel0とlevel1とが同じであるので、fiter_typeがそれぞれnear_mipmap_near及びlinear_mipmap_nearフィルタリングであり、
同様に、lodとして偏導関数を有効にした場合、rasterにより伝達されるグラフ要素タイプのprimitive、dux、duy、dvx、dvy、dwx、dwy、delt_x、delt_yに従って、polygon/pointとlineの2つの場合に分け、それぞれ計算しpolygon/point及びlineのlodを得、imageがlayerモードであれば、このとき、異なるレイヤーのwidth、heightの情報が等しいが、フィルタリングモードがmag_filterかmin_filterかに関わらず、整数を取ってbase_level方向に最も近い一つのlevel値をlevel0としてimage情報のoffsetを読み取り、filter_typeのサイズがリクエストされたフィルタリングのサイズにマッチし、
imageがmipmapモードであれば、このとき、異なるレイヤーのwidth、height、depthが等しくなく、mag_filterがnear及びlinearモードで整数を取ってbase_levelに最も近い値を取り、image情報のoffsetを読み取ることが考えられ、min_filterモードでnear、linear、near_mipmap_near、linear_mipmap_nearがbase_levelに最も近くない値をlevel0としてimageのoffsetを読み取ることが考えられ、filter_typeがそれぞれリクエストされたフィルタリングモードにマッチし、min_filterがnear_mipmap_linear、linear_mipmap_linearモードで整数を取って隣接する2つのレイヤーを、読み取るimage情報のoffsetとすることが考えられ、ratio_lがlod値からlevel値を引いた小数部であり、このときlodの整数部がlevel0と言い、level0に1を加算するとlevel1となり、lod値がmin_lodであれば、このときlevel0とlevel1とが同じであるので、fiter_typeがそれぞれnear_mipmap_near及びlinear_mipmap_nearフィルタリングであり、
level0及びlevel1を有効にした場合、trilinearフィルタリング方式であることが考えられ、trilinear isotropic(near_mipmap_linear、linear_mipmap_linear)、trilinear anisotropicというフィルタリング方式があり、
level0だけが有効である場合、point isotropic(near、near_mipmap_near)、bilinear isotropic(linear、linear_mipmap_near)、bilinear anisotropicというフィルタリング方式があり、
前記Coordinate U2ユニットは、
fetch、samplerモードでのs、t、r、qの座標、アドレスの変換を完了し、
cubemap_arrayを有効にした場合、このときのQ座標が0ではなく、layerライン番号を示し、s、t、rがそれぞれx、y、z方向でのサイズを示し、マッピング関係により平面座標におけるs、t座標を得、
rectangleモードを有効にした場合、このときのs、t座標を非正規化する必要がなく、
s、t、r座標がそれぞれの範囲外にあれば、異なるwrapモードで座標を拘束し、
level0及びlevel1を有効にした場合、imageユニットからlevel0及びlevel1のそれぞれのwidth、height、depth値を得、それぞれs、t、rを乗じ、非正規化されたテクスチャ座標のu0、v0、w0及びu1、v1、w1を得、level0だけが有効である場合、imageユニットからlevel0のwidth、height、depth値を得、それぞれs、t、rを乗じ、非正規化されたテクスチャ座標のu0、v0、w0を得、
このときのratio_u0、ratio_v0、ratio_w0がそれぞれu0、v0、w0の小数部であり、ratio_u1、ratio_v1、ratio_w1がそれぞれu1、v1、w1の小数部であり、inte_u0、inte_v0、inte_w0がそれぞれu0、v0、w0の整数部であり、inte_u1、inte_v1、inte_w1がそれぞれu1、v1、w1の整数部であり、
wrap操作を実行する際、imageコンテンツのborde値に値があり、かつこのときアドレスがオーバーフローした場合、このときdisableがテクセルをリクエストし、border_color値を最終pixel段階での入力として有効にし、
前記Coordinate controller U3ユニットは、
level0及びlevel1を有効にした場合、filter_typeがpointモードであるとき、modeが1Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferu1に書き込まれたデータがinte_u1であり、modeが2Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferv0に書き込まれたデータがinte_v0であり、
coordinate bufferu1に書き込まれたデータがinte_u1であり、coordinate bufferv1に書き込まれた整数部がinte_v1であり、
modeが3Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferv0に書き込まれたデータがinte_v0であり、coordinate bufferw0に書き込まれたデータがinte_w0であり、coordinate bufferu1に書き込まれたデータがinte_u1であり、coordinate bufferv1に書き込まれたデータがinte_v1であり、coordinatew1に書き込まれたデータがinte_w1であり、filter_typeがlinearモードであるとき、modeが1Dであれば、coordinate bufferu1に書き込まれたデータがinte_u1であり、coordinate bufferu1に書き込まれたデータがinte_u1+1であり、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferu0に書き込まれたデータがinte_u0+1であり、
modeが2Dであれば、coordinate bufferu0、coordinate bufferv0に書き込まれたデータが順次(inte_u0、inte_v0)、(inte_u0+1、inte_v0)、(inte_u0、inte_v0+1)、(inte_u0+1、inte_v0+1)であり、
coordinate bufferu1、coordinate bufferv1に書き込まれたデータが順次(inte_u1、inte_v1)、(inte_u1+1、inte_v1)、(inte_u1、inte_v1+1)、(inte_u1+1、inte_v1+1)であり、
modeが3Dであれば、coordinate bufferu0、coordinate bufferv0、coordinate bufferw0に書き込まれたデータが順次(inte_u0、inte_v0、inte_w0)、(inte_u0+1、inte_v0、inte_w0)、(inte_u0、inte_v0+1、inte_w0)、(inte_u0+1、inte_v0+1、inte_w0)、(inte_u0、inte_v0、inte_w0+1)、(inte_u0+1、inte_v0、inte_w0+1)、(inte_u0、inte_v0+1、inte_w0+1)、(inte_u0+1、inte_v0+1、inte_w0+1)であり、
coordinate bufferu1、coordinate bufferv1、coordinate bufferw1に書き込まれたデータが順次(inte_u1、inte_v1、inte_w1)、(inte_u1+1、inte_v1、inte_w1)、(inte_u1、inte_v1+1、inte_w1)、(inte_u1+1、inte_v1+1、inte_w1)、(inte_u1、inte_v1、inte_w1+1)、(inte_u1+1、inte_v1、inte_w1+1)、(inte_u1、inte_v1+1、inte_w1+1)、(inte_u1+1、inte_v1+1、inte_w1+1)であり、
level0を有効にした場合、filter_typeがpointモードであるとき、modeが1Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、
modeが2Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferv0に書き込まれたデータがinte_v0であり、
modeが3Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferv0に書き込まれたデータがinte_v0であり、coordinate bufferw0に書き込まれたデータがinte_w0であり、
filter_typeがlinearモードであるとき、modeが1Dであれば、coordinate bufferu0に書き込まれたデータがinte_u0であり、coordinate bufferu0に書き込まれたデータがinte_u0+1であり、modeが2Dであれば、coordinate bufferu0、coordinate bufferv0に書き込まれたデータが順次(inte_u0、inte_v0)、(inte_u0+1、inte_v0)、(inte_u0、inte_v0+1)、(inte_u0+1、inte_v0+1)であり、
modeが3Dであれば、coordinate bufferu0、coordinate bufferv0、coordinate bufferw0に書き込まれたデータが順次(inte_u0、inte_v0、inte_w0)、(inte_u0+1、inte_v0、inte_w0)、(inte_u0、inte_v0+1、inte_w0)、(inte_u0+1、inte_v0+1、inte_w0)、(inte_u0、inte_v0、inte_w0+1)、(inte_u0+1、inte_v0、inte_w0+1)、(inte_u0、inte_v0+1、inte_w0+1)、(inte_u0+1、inte_v0+1、inte_w0+1)であり、
前記address controller U4ユニットは、
まずテクスチャ座標からテクスチャオフセットアドレスへの計算を完了し、
level0が有効である場合、modeが1Dであれば、アドレス計算がオーバーフローしていないときのオフセットがsize*u0となり、
modeが2Dであれば、アドレス計算がオーバーフローしていないときのオフセットがsize*(width0*u0+v0)となり、
modeが3Dであれば、アドレス計算がオーバーフローしていないときのオフセットがsize*(width0*u0+v0)+w0*width0*height0となり、
texel cacheにアクセスする最終アドレスがbase0+オフセットとなり、
そしてオフセットのエンド部と4バイトのアライメントにより、異なるinte_format条件でのアドレス数を得、offset0 bufferにエンドデータを記憶し、
level1が無効であるので、デュアルBufferの操作方式により、texel cacheをリクエストするとき、奇数のアドレスの場合、cache0にアクセスするtexel cacheアドレスをリクエストし、偶数のアドレスの場合、cache1へのアクセスをリクエストし、アドレスへの並行アクセスを実現し、
level0及びlevel1がいずれも有効である場合、modeが1Dであれば、アドレス計算がオーバーフローしていないときのオフセットがsize*u0、size*u1となり、
modeが2Dであれば、アドレス計算がオーバーフローしていないときのオフセットがsize*(width0*u0+v0)、size*(width1*u1+v1)となり、
modeが3Dであれば、アドレス計算がオーバーフローしていないときのオフセットがsize*(width0*u0+v0)+w0*width0*height0、size*(width1*u1+v1)+w1*width1*height1となり、texel cacheにアクセスする最終アドレスがbase0+level0オフセット、base1+level1オフセットとなり、このとき、cache0及びcache1を並行してリクエストする、
ことを特徴とするデュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ。 - 前記LOD U1ユニットは、直接接続されている2つのcacheを含み、異なるtexelが所在するcacheラインのインデックス付け及びcache lineのstore、replace操作を完了し、level0及びlevel1が同時に有効である場合、cache0及びcache1の読み取り操作リクエストを並行して完了し、level0だけが有効である場合、cache0にodd cache lineを記憶し、cache1にeven cache lineを記憶する、
ことを特徴とする請求項1に記載のデュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ。 - 前記Coordinate U2ユニットは、data controllerU0ユニットと、filterU1ユニットと、pixelユニットU2と、を含み、
前記data controllerU0ユニットは、
level0及びlevel1が同時に有効である場合、それぞれ異なるinte_formatに従って、off0及びoff1を結び付け、1つのcache lineにおいてデータのスティッチングタスクを完了し、テクスチャアドレスに対応するテクスチャデータを得、かつそれぞれのデータをdata buffer0及びdata buffer1に同時に書き込み、かつdata buffer0、data buffer1がそれぞれのlevelのデータをそれぞれ格納し、
level0だけが有効である場合、同様に、cache0及びcache1からそれぞれのcache lineのデータをそれぞれ読み出し、異なるinte_format及びoff0に従って、odd data及びeven dataを得、data buffer0及びdata buffer1に二重に書き込み、このときdata buffer0及びdata buffer1に同じlevelのテクセルデータを格納し、
前記filterU1ユニットは、
まず、切り捨て演算を完了し、異なるinte_formatに対して、異なるビット幅のr、g、b、a値を切り捨て、そして独立な方式でそれぞれフィルタリング計算を行い、ビット幅の切り捨て方法が異なるinte_formatに従って実行し、
level0及びlevel1がいずれも有効である場合、このときfilter_typeのフィルタリング方式には、NAF(non-anisotropic)(near_mipmap_linear isotropic、linear_mipmap_linear isotropic)、BAF(bilinear-anisotropic)(無効)、TAF(trilinear-anisotropic)があり、level0が有効で、level1が無効である場合、このときfilter_typeのフィルタリング方式には、NAF(non-anisotropic)(near、near_mipmap_near、linear_mipmap_near)、BAF(bilinear anisotropic)、TAF(trilinear-anisotropic)(無効)があり、
level0及びlevel1が同時に有効で、filter_typeがTAF(near_mipmap_linear)である場合、modeが1D、2D、3Dであるかに関わらず、同時にdata buffer0、data buffer1からdata0及びdata1という1つのデータを同時に読み取り、得たフィルタリング結果がdata0*(1.0-ratio_l)+data1*ratio_lであり、
フィルタリング方式がTAF(linear_mipmap_linear)で、modeが1Dであれば、まずdata buffer0、data buffer1から同時にdata0、data1及びdata2、data3という2つのデータを順次読み取り、フィルタリングの中間結果がdata0*(1.0-ratio_u0)+data2*ratio_u0、data1*(1.0-ratio_u1)+data3*ratio_u1であり、得たフィルタリングの最終結果が(data0*(1.0-ratio_u0)+(data2*ratio_u0)*(1.0-ratio_l)+(data1*1.0-ratio_u1)+(data3*ratio_u1)*ratio_lであり、
modeが2Dであれば、data buffer0、data buffer1から同時にdata0、data1、data2、data3及びdata4、data5、data6、data7という4つのデータを順次読み取り、そうするとまずdata0、data2、data4、data6という最初の4つのデータにより得たフィルタリングの中間結果がdata0*(1.0-ratio_u0)+data2*ratio_u0、data4*(1.0-ratio_u1)+data6*ratio_u1であり、
そしてdata1、data3、data5、data7という後の4つのデータにより得たフィルタリングの中間結果がdata1*(1.0-ratio_u0)+data3*ratio_u0、data5*(1.0-ratio_u1)+data7*ratio_u1であり、最後にそれぞれ(data0*(1.0-ratio_u0)+data1*ratio_u0)*(1.0-ratio_v0)+(data2*(1.0-ratio_u0)+data3*ratio_u0*ratio_v0、(data4*(1.0-ratio_u1)+data5*ratio_u1)*(1.0-ratio_v1)+(data6*(1.0-ratio_u1)+data7*ratio_u1)*ratio_v1というlevel0及びlevel1の最終結果を得、最終的なフィルタリング結果が((data0*(1.0-ratio_u0)+data1*ratio_u0)*(1.0-ratio_v0)+(data2*(1.0-ratio_u0)+data3*ratio_u0)*ratio_v0)*(1.0-ratio_l)+((data4*(1.0-ratio_u1)+data5*ratio_u1)*(1.0-ratio_v1)+(data6*(1.0-ratio_u1)+data7*ratio_u1)*ratio_v1)*ratio_lであり、
modeが3Dであれば、data buffer0、data buffer1から同時にdata0、data1、data2、data3、data4、data5、data6、data7及びdata8、data9、data10、data11、data12、data13、data14、data15という8つのデータを順次読み取り、
まずdata0、data1、data2、data3、data8、data9、data10、data11という最初の8つのデータにより得たフィルタリングの中間結果がそれぞれ((data0*(1.0-ratio_u0)+data2*ratio_u0)*(1.0-ratio_v0)+((data1*(1.0-ratio_u0)+data3*ratio_u0)*ratio_v0、((data8*(1.0-ratio_u1)+data9*ratio_u1)*(1.0-ratio_v1)+((data10*(1.0-ratio_u1)+data11*ratio_u1)*ratio_v1であり、そしてdata4、data5、data6、data7、data12、data13、data14、data15という後の8つのデータにより得たフィルタリングの中間結果がそれぞれ((data4*(1.0-ratio_u0)+data5*ratio_u0)*(1.0-ratio_v0)+((data6*(1.0-ratio_u0)+data7*ratio_u0)*ratio_v0、((data12*(1.0-ratio_u1)+data13*ratio_u1)*(1.0-ratio_v1)+((data14*(1.0-ratio_u1)+data15*ratio_u1)*ratio_v1であり、
最後に得たフィルタリングの最終結果が((((data0*(1.0-ratio_u0)+data2*ratio_u0)*(1.0-ratio_v0)+((data1*(1.0-ratio_u0)+data3*ratio_u0)*ratio_v0)*(1.0-ratio_w0)+(((data4*(1.0-ratio_u0)+data5*ratio_u0)*(1.0-ratio_v0)+((data6*(1.0-ratio_u0)+data7*ratio_u0)*ratio_v0)*ratio_w0)*(1.0-ratio_l)+((((data8*(1.0-ratio_u1)+data9*ratio_u1)*(1.0-ratio_v1)+((data10*(1.0-ratio_u1)+data11*ratio_u1)*ratio_v1)*(1.0-ratio_w1)+(((data12*(1.0-ratio_u1)+data13*ratio_u1)*(1.0-ratio_v1)+((data14*(1.0-ratio_u1)+data15*ratio_u1)*ratio_v1)*ratio_w1)*ratio_lであり、anisotropicを有効にした場合、このときdata buffer0、data buffer1におけるデータに対してそれぞれanisotropic計算した後にdata0、data1の中間フィルタリング結果を得、そうすると最終的なフィルタリング結果がdata0*(1.0-ratio_l)+data1*ratio_lであり、
level0だけが有効で、filter_typeがnear、near_mipmap_nearである場合、modeが1D、2D、3Dであるかに関わらず、同時にdata buffer0、data buffer1からdata0及びdata1という1つのデータを同時に読み取り、フィルタリングせず、data0、data1フォーマットを変換した後に直接出力し、
フィルタリング方式がBAFである場合、modeが1Dであれば、まずdata buffer0、data buffer1から同時にdata0、data1という1つのデータを順次読み取り、最終的なフィルタリング結果がdata0*(1.0-ratio_u0)+data2*ratio_u0であり、
modeが2Dであれば、data buffer0、data buffer1から同時にdata0、data1、data2、data3という2つのデータを順次読み取り、そうするとまずdata0、data2という最初の2つのデータにより得たフィルタリングの中間結果がdata0*(1.0-ratio_u0)+data2*ratio_u0であり、
そしてdata1、data3という後の2つのデータにより得たフィルタリングの中間結果がdata1*(1.0-ratio_u0)+data3*ratio_u0であり、最後に得たフィルタリングの最終結果が(data0*(1.0-ratio_u0)+data2*ratio_u0)*(1.0-ratio_l)+(data1*(1.0-ratio_u0)+data3*ratio_u0)*ratio_lであり、
modeが3Dであれば、data buffer0、data buffer1から同時にdata0、data1、data2、data3及びdata4、data5、data6、data7という4つのデータを順次読み取り、まずdata0、data1、data4、data5という最初の4つのデータにより得たフィルタリングの中間結果が(data0*(1.0-ratio_u0)+data1*ratio_u0)*(1.0-ratio_v0)+(data4*(1.0-ratio_u0)+data5*ratio_u0)*ratio_v0であり、そしてdata2、data3、data6、data7という後の4つのデータにより得たフィルタリングの中間結果がそれぞれ(data2*(1.0-ratio_u0)+data3*ratio_u0)*(1.0-ratio_v0)+(data6*(1.0-ratio_u0)+data7*ratio_u0)*ratio_v0であり、
最後に得たフィルタリングの最終結果が((data0*(1.0-ratio_u0)+data1*ratio_u0)*(1.0-ratio_v0)+(data4*(1.0-ratio_u0)+data5*ratio_u0)*ratio_v0)*(1.0-ratio_w0)+((data2*(1.0-ratio_u0)+data3*ratio_u0)*(1.0-ratio_v0)+(data6*(1.0-ratio_u0)+data7*ratio_u0)*ratio_v0)*ratio_w0であり、フィルタリング操作を実行した後、異なるinte_formatフォーマットに従って、texel_r、texel_g、texel_b、texel_aというfilterの出力結果に割り当て操作を行い、formatがcolorであれば、inte_formatにおけるrのみに値がある場合、このときtexel_rがフィルタリング結果であり、texel_g、texel_bがいずれも0であり、
texel_aが1であり、
formatがdepth、stencilであれば、このときフィルタリングせず、結果をtexel_r、texel_g成分に割り当て、texel_b、texel_a成分が0であり、
前記pixelユニットU2は、
border_colorを有効にした場合、border_colorデータをpixel段階の入力データとして採用し、swizzle操作を有効にしていない場合、pixel_r、pixel_g、pixel_b、pixel_aとborder_colorのborder_color_r、border_color_g、border_color_b、border_color_aが等しく、swizzle操作を有効にした場合、swizzleモードによりそれぞれのチャンネルデータをそれぞれ変換し、最終的にpixel_r、pixel_g、pixel_b、pixel_aという4つの色成分を並行して出力する、
ことを特徴とする請求項1に記載のデュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ。 - Color、depth、stencil、depth_stencilモードにおけるFP32、FP16、FP11、FP10、INT32のデータタイプをサポートする、
ことを特徴とする請求項3に記載のデュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ。 - RGB/BGR formatにおける異なる整数型、浮動小数点型type、RGBA/BGRA formatにおける異なる整数型、浮動小数点型typeの変換もサポートする、
ことを特徴とする請求項3に記載のデュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ。 - depth、stencil、depth_stencilの深度テクスチャに対する比較及びstencil indexの計算もサポートする、
ことを特徴とする請求項3に記載のデュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910495890.0 | 2019-06-10 | ||
CN201910495890.0A CN112070651A (zh) | 2019-06-10 | 2019-06-10 | 一种基于双Buffer架构下的纹理贴图硬件加速器 |
PCT/CN2020/095464 WO2020249026A1 (zh) | 2019-06-10 | 2020-06-10 | 一种基于双Buffer架构下的纹理贴图硬件加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022536738A JP2022536738A (ja) | 2022-08-18 |
JP7227404B2 true JP7227404B2 (ja) | 2023-02-21 |
Family
ID=73657991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021573726A Active JP7227404B2 (ja) | 2019-06-10 | 2020-06-10 | デュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220327759A1 (ja) |
EP (1) | EP3982255A4 (ja) |
JP (1) | JP7227404B2 (ja) |
KR (1) | KR20220019791A (ja) |
CN (1) | CN112070651A (ja) |
WO (1) | WO2020249026A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230122931A (ko) | 2022-02-15 | 2023-08-22 | 연세대학교 산학협력단 | 심방세동 진단을 위한 엑소좀 내 긴 비암호화 RNA(long non-coding RNA) 바이오마커 및 이의 용도 |
CN116433464B (zh) * | 2023-06-14 | 2023-11-17 | 北京象帝先计算技术有限公司 | 存储地址偏移量计算装置、方法、电子组件及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006244426A (ja) | 2005-03-07 | 2006-09-14 | Sony Computer Entertainment Inc | テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5594854A (en) * | 1995-03-24 | 1997-01-14 | 3Dlabs Inc. Ltd. | Graphics subsystem with coarse subpixel correction |
US6331856B1 (en) * | 1995-11-22 | 2001-12-18 | Nintendo Co., Ltd. | Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
US6002410A (en) * | 1997-08-25 | 1999-12-14 | Chromatic Research, Inc. | Reconfigurable texture cache |
US6246422B1 (en) * | 1998-09-01 | 2001-06-12 | Sun Microsystems, Inc. | Efficient method for storing texture maps in multi-bank memory |
US6766281B1 (en) * | 2000-05-12 | 2004-07-20 | S3 Graphics Co., Ltd. | Matched texture filter design for rendering multi-rate data samples |
US7057623B1 (en) * | 2000-11-15 | 2006-06-06 | Micron Technology, Inc. | Texture addressing circuit and method |
US6778181B1 (en) * | 2000-12-07 | 2004-08-17 | Nvidia Corporation | Graphics processing system having a virtual texturing array |
US6859209B2 (en) * | 2001-05-18 | 2005-02-22 | Sun Microsystems, Inc. | Graphics data accumulation for improved multi-layer texture performance |
JP4264530B2 (ja) * | 2002-07-19 | 2009-05-20 | ソニー株式会社 | 画像処理装置およびその方法 |
US6987517B1 (en) * | 2004-01-06 | 2006-01-17 | Nvidia Corporation | Programmable graphics processor for generalized texturing |
US8300059B2 (en) * | 2006-02-03 | 2012-10-30 | Ati Technologies Ulc | Method and apparatus for selecting a mip map level based on a min-axis value for texture mapping |
US20100091018A1 (en) * | 2008-07-11 | 2010-04-15 | Advanced Micro Devices, Inc. | Rendering Detailed Animated Three Dimensional Characters with Coarse Mesh Instancing and Determining Tesselation Levels for Varying Character Crowd Density |
CN102903146B (zh) * | 2012-09-13 | 2015-09-16 | 中国科学院自动化研究所 | 用于场景绘制的图形处理方法 |
US10430169B2 (en) * | 2014-05-30 | 2019-10-01 | Apple Inc. | Language, function library, and compiler for graphical and non-graphical computation on a graphical processor unit |
KR102329475B1 (ko) * | 2014-08-27 | 2021-11-19 | 삼성전자주식회사 | 렌더링 퀄리티 제어 장치 및 방법 |
US9811875B2 (en) * | 2014-09-10 | 2017-11-07 | Apple Inc. | Texture state cache |
KR102264163B1 (ko) * | 2014-10-21 | 2021-06-11 | 삼성전자주식회사 | 텍스쳐를 처리하는 방법 및 장치 |
US10388058B2 (en) * | 2017-02-16 | 2019-08-20 | Microsoft Technology Licensing, Llc | Texture residency hardware enhancements for graphics processors |
CN109064535B (zh) * | 2018-07-19 | 2023-05-23 | 南京军微半导体科技有限公司 | Gpu中一种纹理贴图的硬件加速实现方法 |
CN109634666B (zh) * | 2018-12-11 | 2022-11-15 | 华夏芯(北京)通用处理器技术有限公司 | 一种预取机制下融合btb的方法 |
-
2019
- 2019-06-10 CN CN201910495890.0A patent/CN112070651A/zh active Pending
-
2020
- 2020-06-10 KR KR1020227000824A patent/KR20220019791A/ko active IP Right Grant
- 2020-06-10 US US17/617,596 patent/US20220327759A1/en active Pending
- 2020-06-10 EP EP20823324.7A patent/EP3982255A4/en active Pending
- 2020-06-10 WO PCT/CN2020/095464 patent/WO2020249026A1/zh unknown
- 2020-06-10 JP JP2021573726A patent/JP7227404B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006244426A (ja) | 2005-03-07 | 2006-09-14 | Sony Computer Entertainment Inc | テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20220327759A1 (en) | 2022-10-13 |
WO2020249026A1 (zh) | 2020-12-17 |
KR20220019791A (ko) | 2022-02-17 |
EP3982255A1 (en) | 2022-04-13 |
EP3982255A4 (en) | 2023-07-12 |
JP2022536738A (ja) | 2022-08-18 |
CN112070651A (zh) | 2020-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8149243B1 (en) | 3D graphics API extension for a packed float image format | |
JP7227404B2 (ja) | デュアルBufferアーキテクチャに基づくテクスチャマッピング用ハードウェアアクセラレータ | |
US7986325B1 (en) | Loading integer-based data into a graphics processing system | |
US7528843B1 (en) | Dynamic texture fetch cancellation | |
US8514235B2 (en) | System and method for managing the computation of graphics shading operations | |
US20130271465A1 (en) | Sort-Based Tiled Deferred Shading Architecture for Decoupled Sampling | |
US7466318B1 (en) | Avoiding unnecessary uncovered texture fetches | |
US20130002651A1 (en) | Apparatus and Method For Texture Level Of Detail Computation | |
US7880745B2 (en) | Systems and methods for border color handling in a graphics processing unit | |
US20110216068A1 (en) | Edge processing techniques | |
US20080094409A1 (en) | Image Generation Device and Image Generation Method | |
US6333743B1 (en) | Method and apparatus for providing image and graphics processing using a graphics rendering engine | |
US7405735B2 (en) | Texture unit, image rendering apparatus and texel transfer method for transferring texels in a batch | |
JP2006244426A (ja) | テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 | |
CA2558657A1 (en) | Embedded system with 3d graphics core and local pixel buffer | |
US7773092B1 (en) | Texture map coverage optimization | |
US10013735B2 (en) | Graphics processing unit with bayer mapping | |
US7136071B1 (en) | Method and apparatus for sampling non-power of two dimension texture maps | |
US20080211823A1 (en) | Three-dimensional graphic accelerator and method of reading texture data | |
US7619635B1 (en) | Anisotropic texture sampling for odd ratios | |
US11257277B2 (en) | Methods and apparatus to facilitate adaptive texture filtering | |
US7091983B1 (en) | Coordinate wrapping for anisotropic filtering of non-power of two textures | |
US10706607B1 (en) | Graphics texture mapping | |
KR100420858B1 (ko) | 3차원 렌더링 프로세서의 매핑 처리 장치 및 방법 | |
US7167183B1 (en) | Reorganized anisotropic sampling order |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220209 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221215 |
|
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: 20230110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230209 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7227404 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |