CN109255750A - 图形处理系统 - Google Patents
图形处理系统 Download PDFInfo
- Publication number
- CN109255750A CN109255750A CN201810771118.2A CN201810771118A CN109255750A CN 109255750 A CN109255750 A CN 109255750A CN 201810771118 A CN201810771118 A CN 201810771118A CN 109255750 A CN109255750 A CN 109255750A
- Authority
- CN
- China
- Prior art keywords
- data
- texture
- chroma
- group
- caching
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 154
- 238000009877 rendering Methods 0.000 claims abstract description 66
- 238000003860 storage Methods 0.000 claims description 165
- 238000005070 sampling Methods 0.000 claims description 114
- 238000012545 processing Methods 0.000 claims description 97
- 239000000872 buffer Substances 0.000 claims description 77
- 238000000034 method Methods 0.000 claims description 53
- 238000003491 array Methods 0.000 claims description 13
- 238000000151 deposition Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 230000005611 electricity Effects 0.000 claims 2
- 230000000875 corresponding effect Effects 0.000 description 64
- 241000023320 Luma <angiosperm> Species 0.000 description 33
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 33
- 239000000284 extract Substances 0.000 description 18
- 238000000605 extraction Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000014759 maintenance of location Effects 0.000 description 9
- 230000004044 response Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- UFYREEIANXVLMJ-UHFFFAOYSA-N Macroline Natural products CN1C2=CC=CC=C2C(C2)=C1C1N(C)C2C(CO)C(C(=C)C(C)=O)C1 UFYREEIANXVLMJ-UHFFFAOYSA-N 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000003362 replicative effect Effects 0.000 description 6
- 241001269238 Data Species 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 239000012634 fragment Substances 0.000 description 5
- 238000012432 intermediate storage Methods 0.000 description 4
- 238000012805 post-processing Methods 0.000 description 4
- 239000003086 colorant Substances 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 3
- AHVPOAOWHRMOBY-UHFFFAOYSA-N 2-(diethylamino)-1-[6,7-dimethoxy-1-[1-(6-methoxynaphthalen-2-yl)ethyl]-3,4-dihydro-1h-isoquinolin-2-yl]ethanone Chemical compound C1=C(OC)C=CC2=CC(C(C)C3C4=CC(OC)=C(OC)C=C4CCN3C(=O)CN(CC)CC)=CC=C21 AHVPOAOWHRMOBY-UHFFFAOYSA-N 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000004087 circulation Effects 0.000 description 2
- 238000004040 coloring Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- 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
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/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/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4007—Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/02—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
图形处理系统。在图形处理系统中,在将在存储器中存储的图形纹理用作YUV纹理数据时,将YUV纹理数据存储在纹理缓存中,在生成渲染输出时,从该纹理缓存读取该YUV纹理数据,使得用于纹理的色度数据元素及其关联的一个或更多个亮度数据元素的组的数据值作为群组一起存储在缓存中。缓存中的数据的群组标记有用于色度数据元素及其关联的一个或更多个亮度数据元素的组的数据值的标识符,该标识符可用于识别缓存中的色度数据元素及其关联的一个或更多个亮度数据元素的组,并且指示YUV图形纹理中的位置。
Description
技术领域
本发明涉及用于在图形处理系统中的缓存中存储数据的方法和设备,具体涉及用于在图形处理系统中的缓存中存储纹理数据的方法和设备。
背景技术
在图形处理系统中常见的是生成用于通过向要绘制的表面应用所谓的纹理或纹理数据生成的渲染输出(例如,要显示的图像)中的采样位置的颜色。这种纹理通常通过存储纹理元素或“纹素”的阵列且然后将纹素映射到用于讨论中的渲染输出(例如,要显示的图像)的对应元素(诸如(且实际上通常为)采样位置的组)上来应用,各纹素表示给定的纹理数据(诸如颜色、亮度和/或光/阴影等值)。
由此,图形纹理通常将被构造为数据元素(纹理元素(纹素))的阵列,各数据元素具有对于它存储的纹理数据的对应组。然后通过(例如,使用双线性插值处理)对该位置处的纹理采样确定用于该纹理内的给定位置的纹理数据。
纹理数据可以被提供为“YUV”颜色空间中的数据。YUV颜色由表示颜色的亮度的“亮度”(Y)值和表示颜色的色度信息的两个“色度”值(U和V)来描述。YUV数据经常用于视频图像,并且其使用例如随着数字TV和机顶盒的使用增加而在图形处理系统中变得更常见。由此,这种类型的数据的高效处理变得更重要。
在“YUV”纹理的情况下,对于纹理内的各数据元素,将存储适当的亮度(Y)和色度(U和V)值。
在用于YUV纹理的亮度和色度数据以相同分辨率存储的情况下,对于纹理中的各数据元素,将存在相应的亮度(Y)值和两个色度(U和V)值。换言之,对于纹理中的各“色度”数据元素,将存在对应的一个亮度数据元素的组。
人眼对亮度比对色度更敏感,因此通常使用被称为“色度二次采样”的技术来压缩YUV数据。色度二次采样以比亮度(Y)信息更低的分辨率存储色度(U和V)信息。
在对色度数据二次采样的情况下,相应地将对于纹理存储并以比亮度数据更低的分辨率在纹理中表示色度数据。由此,存储色度数据的数据元素的阵列将处于比存储亮度数据的数据元素的阵列低的分辨率。这一点的效果然后将为:对于各色度数据元素(位置),将存在用于该色度数据元素的多个亮度数据元素(位置)的组(即,色度数据元素对应于的纹理中的区域将具有实际上与它关联的多个亮度数据元素的组,因为亮度数据以比色度数据更高的分辨率来存储)。
由此,通常对于YUV纹理数据,对于YUV纹理中的各色度数据元素(位置(样本)),将取决于是否对色度数据二次采样且色度数据被二次采样到什么程度而存在一个或更多个关联的亮度数据元素(位置(样本))的组。
三个示例性色度二次采样模式为:
1.YUV444-亮度和色度数据以相同分辨率来存储(没有色度二次采样);在这种情况下,各色度数据元素(样本)将关联有一个亮度数据元素(样本)。
2.YUV422-色度数据在水平方向上以亮度数据的分辨率的一半来存储,但在垂直方向上以与亮度数据相同的分辨率来存储;在这种情况下,各色度数据元素(样本)将关联有两个亮度数据元素(样本)。
3.YUV420-色度数据在水平方向和垂直方向这两者上以亮度数据的分辨率的一半来存储;在这种情况下,各色度数据元素(样本)将关联有四个亮度数据元素(样本)。
图1示出了用于YUV420二次采样模式的色度和亮度数据元素的示例性阵列(或更大阵列的一部分)。在该图中(且在另外的这种图中),圆指示用于色度数据元素40的位置,并且十字指示用于亮度数据元素41的位置。可以看到,色度数据在水平方向和垂直方向这两者上以亮度数据的分辨率的一半来采样。由此,各色度数据元素关联有四个亮度数据元素。
YUV纹理数据,特别是色度二次采样的YUV数据(例如,在YUV422或YUV420模式下),常作为两个或三个单独的数据阵列(以所谓的“多平面”格式)存储在存储器中,一个数据阵列(平面)包含亮度(Y)信息,并且一个或两个其他数据阵列(平面)包含色度(U和V)信息。在为色度数据提供一个数据阵列(平面)的情况下,U和V色度数据这两者存储在同一阵列中。在为色度数据提供两个数据阵列(平面)的情况下,U色度数据存储在一个阵列中,并且V色度数据存储在另一个阵列中。
在图形处理器(例如,为了渲染要显示的图像而)需要纹理数据时,通常首先从存储渲染处理所需的纹理数据的存储器提取该纹理数据并将其加载到图形处理器的或可由图形处理器访问的缓存(例如,纹理缓存)中,图形处理器(由图形处理器实施的渲染流水线)然后从缓存读取纹理数据,以便使用。
申请人相信存在针对处理图形处理系统中的YUV纹理数据的改进的范围。
发明内容
根据本发明的第一方面,提供了一种操作图形处理系统的方法,在该图形处理系统中,在渲染渲染输出时可以使用图形纹理,并且从存储器将要在渲染渲染输出时使用的纹理的数据加载到缓存中,以便在渲染渲染输出时由图形处理系统使用,方法包括以下步骤:
在将存储在存储器中的图形纹理用作包括亮度和色度纹理数据的YUV纹理数据时:
将用于纹理的YUV纹理数据存储在缓存中,从该缓存,在生成渲染输出时要由图形处理系统读取该纹理数据,使得用于色度数据元素和关联的纹理的一个或更多个亮度数据元素的组的数据值作为一个群组一起存储在缓存中;以及
与缓存关联地存储用于色度数据元素及其关联的一个或更多个亮度数据元素的组的数据值的标识符,标识符可用于识别缓存中的、色度数据元素及其关联的一个或更多个亮度数据元素的组,并且指示在图形纹理中的位置。
根据本发明的第二方面,提供了一种图形处理系统,该图形处理系统包括:
存储器;
图形处理单元;以及
缓存;并且
其中,在渲染渲染输出时可以使用图形纹理,并且从存储器将要在渲染渲染输出时使用的纹理的数据加载到缓存中,以便在渲染渲染输出时由图形处理单元使用;
图形处理系统还包括:
处理电路,在将存储在存储器中的图形纹理用作包括亮度和色度纹理数据的YUV纹理数据时,该处理电路可操作为:
在缓存中存储用于纹理的YUV纹理数据,使得用于纹理的色度数据元素和关联的一个或更多个亮度数据元素的组的数据值作为一个群组一起存储在缓存中;以及
与缓存关联地存储用于色度数据元素及其关联的一个或更多个亮度数据元素的组的数据值的标识符,标识符可用于识别缓存中的、色度数据元素及其关联的一个或更多个亮度数据元素的组,并且指示在图形纹理中的位置。
本发明涉及为YUV纹理数据(即,如上所述的“YUV”颜色空间中的数据)形式的图形纹理的使用(且具体为缓存)。
在本发明中,用于YUV纹理的纹理数据存储在缓存中,以便在渲染渲染输出(诸如要显示的图像(帧))时使用,使得(优选地为各)色度数据元素(的数据值)连同其关联的一个或更多个亮度数据元素(亮度数据元素(值)的数量例如取决于用于纹理数据的色度二次采样模式)的组(的数据值)一起存储在缓存中(而不是例如将色度和亮度数据值单独地存储在缓存中)。
此外,在本发明中,借助于指示图形纹理中的位置的标识符在缓存中识别色度数据元素的组及其关联的一个或更多个亮度数据元素的组。这一点的效果然后为:如以下将进一步讨论的,可以在缓存中访问(可以从缓存读取)缓存中的纹理数据,以便直接基于所需的纹理位置直接使用(而不是例如必须将该位置转换成可以存储纹理数据的适当存储地址)。
如以下将进一步讨论的,这全部促进YUV纹理数据的使用(例如,用于渲染渲染输出),因为用于给定纹理位置的色度和亮度数据值可以基于(例如,使用)(要采样的)所需纹理位置从缓存一起读取(例如与必须例如使用存储地址从缓存单独读取亮度和色度数据值相反)。
实际上,申请人已经发现:通过使用本发明,可以将YUV纹理数据的处理吞吐量按照因数2(例如,对于2平面YUV格式)或3(例如,对于3平面YUV格式)进行加速。这意味着单核图形处理单元(GPU)可以用于进行与双或三核GPU相同的作业。这可以相当于面积和功率这两者上的巨大节省。这例如在数字TV和机顶盒的情况下是特别有用的。当在60Hz下对于数字TV以4K分辨率渲染时,每秒必须读取大约5亿个像素。如果系统以500MHz运行,则这意味着可以使用单核GPU,代替2核或3核GPU。由此,可以以每核非常小的开销提供更佳高效的GPU,特别是在视频的情况下。
被使用的YUV纹理可以为任意合适且期望的这种纹理。在优选实施方式中,它表示要显示的图像(帧)。在特别优选的实施方式中,它包括例如来自要显示的视频帧的序列的、要显示的视频帧。
YUV纹理可以根据任意期望且合适的色度二次采样模式来配置。在优选实施方式中,它根据以上所讨论的三个模式(由此为YUV444、YUV422或YUV420)中的一个来配置。
由此,可以以比(YUV纹理数据的)亮度(Y)数据更低的分辨率为纹理提供(YUV纹理数据)的色度(U和V)数据,例如,可以对(YUV纹理数据的)色度数据二次采样。例如,在一些情况下,色度数据在水平方向上可以以亮度数据的分辨率的一半来存储,但在垂直方向上以与亮度数据相同的分辨率来存储。在其他情况下,色度数据可以在水平方向和垂直方向这两者上以亮度数据的分辨率的一半来存储。
还可以使用其他色度二次采样模式。
如以上所讨论的,在本发明中,用于YUV纹理的纹理数据存储在缓存中,使得色度数据元素(数据值)及其关联的一个或更多个亮度数据元素(值)的组一起存储在缓存中。
如以上所讨论的,申请人在这一点上已经认识到:对于YUV纹理中的各色度数据元素(位置),将(取决于是否使用色度二次采样模式和使用哪个模式)存在对应的一个或更多个亮度数据元素(位置)的组。换言之,YUV纹理可以被有效地认为由多个“宏纹素(macrotexel)”(“宏数据元素”)组成,各这种宏纹素包括YUV纹理的一个色度数据元素(一个色度样本)和关联的YUV纹理的一个或更多个亮度数据元素(亮度样本)的组(并且具有纹理内的相应位置,例如,实际上与纹理中的宏纹素的色度数据元素的位置对应)。
例如,对于YUV444纹理,各“宏纹素”将包括一个色度数据元素(样本)和一个亮度数据元素(亮度样本)。对于YUV422纹理,各宏纹素将包括一个色度数据元素和一对亮度数据元素。对于YUV420,各宏纹素将包括一个色度数据元素和四个亮度数据元素。
在本发明中,用于这种宏纹素的数据值(亮度和色度数据值)作为一组一起存储在缓存中。
换言之,YUV纹理数据存储在缓存中,作为该数据的群组(作为“宏纹素”),该群组(宏纹素)包括用于色度样本及其关联的一个或更多个亮度样本的数据值。例如,色度样本(数据值)可以关联有一个、两个或四个亮度样本(数据值)。
优选地对于在缓存中存储的YUV纹理数据的所有数据进行这一点(即,不管YUV纹理的数据是否存储在缓存中)。
由此,YUV纹理数据优选地存储在缓存中,作为该数据的各组(“宏纹素”),各这种群组(宏纹素)包括用于一个色度数据元素(样本)及其关联的一个或更多个亮度数据元素(样本)的数据值。
对应地,在优选实施方式中,在需要YUV纹理的特定宏纹素是,该数据存储在缓存中,使得用于宏纹素的色度数据值及其关联的一个或更多个亮度数据值的组作为一个群组一起存储在缓存中,然后在需要另外的YUV纹理宏纹素时,该另外的宏纹素对应地存储在缓存中,使得色度数据值及其关联的一个或更多个亮度数据值的组作为一个群组一起存储在缓存中。
在缓存中存储的YUV纹理数据的群组(各群组)(宏纹素)将包括用于一个色度数据元素(样本)的数据值和用于关联的一个或更多个亮度数据元素(样本)的数据值。对于群组(宏纹素)存储的亮度样本的数量将取决于用于YUV纹理的色度二次采样模式。
例如,在色度和亮度数据以相同分辨率提供(即,没有色度二次采样)时,各群组(宏纹素)应且优选地确实包含相等数量的色度和亮度数据值,例如且优选地为一个色度数据值和一个亮度数据值。
在色度数据以比亮度数据更低的分辨率提供时,各群组应且优选地确实包含一个色度数据值和多个(两个或更多个)(例如,四个)亮度数据值。
更具体地,在色度数据在水平方向上以亮度数据的分辨率的一半来提供但在垂直方向上以与亮度数据相同的分辨率来提供时,各群组(宏纹素)应且优选地确实包含一个色度数据值和两个亮度数据值。
当色度数据在水平方向和垂直方向这两者上以亮度数据的分辨率的一半来存储时,各群组(宏纹素)应且优选地确实包含一个色度数据值和四个亮度数据值。
在另选实施方式中且甚至在色度数据在存储器中以比亮度数据更低的分辨率存储的情况下,各群组(宏纹素)可以包含相等数量的色度和亮度数据值,例如,可以在群组中将用于亮度值的给定组的单个色度数据值(对于U和V中的每一个)复制为等于亮度数据值的数量。
由此,虽然在缓存中存储的纹理数据的群组(宏纹素)优选地包含单个色度数据值,但可以复制给定的色度数据值,例如使得相等数量的色度和亮度数据值存储在缓存中。
这例如可以在系统将在“复制色度”模式下操作时进行。
在这种情况下,纹理数据可以存储为群组(宏纹素),这些宏纹素包含一个(单个)色度(一个U和一个V)数据值和一个(单个)对应的亮度数据值(例如,与具有用于给定的色度(U和V)值的多个亮度数据值的宏纹素相反)。由此,实际上,凭借这种“复制色度”系统,可以在从存储器提取缓存行期间将色度二次采样纹理数据转换成没有二次采样的YUV444数据(即,相等数量的色度和亮度数据值)。
用于包括色度数据元素及其关联的一个或更多个亮度数据元素的组的群组(宏纹素)的数据值可以以任意合适且期望的方式一起存储在缓存中。在特别优选的实施方式中,数据值作为已定义数据单元(诸如且优选地作为相应的数据字)存储在缓存中。数据值的各相应群组(各“宏纹素”)例如可以且优选地作为64位数据字存储在缓存中。
优选地,公共数据单元(例如,数据字)结构用于在缓存中存储的色度和亮度数据值的各相应群组(用于各宏纹素)。优选地,数据单元(例如,数据字)具有用于数据值的相应字段,并且各这种数据单元(数据字)具有这些字段的相同顺序和配置。
在一个示例中,数据单元(例如,数据字)按用于一个或更多个亮度数据值的字段且然后为用于色度数据值的字段(U和V)的顺序包含用于数据值的字段。另选地,在数据单元(例如,数据字)中可以首先设置包含(或用于)色度数据值(U和V)的字段,其后为包含(或用于)一个或更多个亮度数据值的字段,或者包含(或用于)色度数据值(U和V)的字段可以与包含(或用于)一个或更多个亮度数据值的字段交织。其他结构当然会是可能的。
优选地,使用固定尺寸数据单元(数据字),即使这种单元可能大于数据值所需。优选地,数据单元(例如,数据字)的尺寸被形成为适于图形处理系统的缓存和缓存系统(以及存储系统)。
在用于特定群组(宏纹素)的色度和亮度数据不填充数据单元(字)的情况下,数据单元中的任意未用位可以用“虚拟值”填补,和/或用于编码其他特性,诸如透明度。这可以帮助确保色度和/或亮度数据存储在各数据单元(字)内的一致位置处,从而促进所缓存纹理数据的读取。
优选地,相同量的存储(例如,相同量的位)用于将各亮度和各色度(例如,U和V)数据值存储在缓存中。例如,在优选情况下,10个位可以用于存储各亮度数据值和各色度数据值。任意未用的位优选地用虚拟值来填补(例如,如上所述)。
例如,在色度数据在YUV纹理中在水平方向和垂直方向这两者上以亮度数据的分辨率的一半存储的情况下,各组(宏纹素)可以包含两个色度数据值(一个U和一个V)和四个亮度数据值。在10个位用于存储各亮度和各色度数据值的情况下,这将合计60个位(四个亮度数据值中的每一个10位,并且两个色度(U和V)数据值中的每一个10位)。如果64位字用于存储该数据(例如,在优选情况下),那么这将导致剩余字的4位,并且该四位优选用虚拟值“填补”或填充、或为透明掩码。
对应的结构优选地用于其他色度(二次)采样模式。
缓存应且优选地确实包括一个或更多个(优选地为多个)缓存行。
优选地,YUV纹理数据的多个群组(宏纹素)存储在缓存行中(优选地为存储在各缓存行中)(缓存行用于存储来自YUV纹理的数据)。对应的,缓存行(各缓存行)优选地包括多个数据单元(数据字),各数据单元包含用于纹理数据的一个群组(宏纹素)的数据。
缓存行可以存储纹理数据的任意合适且期望数量的群组(宏纹素)。这例如可以取决于各缓存行的尺寸和用于存储纹理数据的各群组(宏纹素)的数据单元(数据字)的尺寸。例如,在各缓存行包含1024位且64位数据字用于存储用于宏纹素的数据的情况下,各缓存行可以且优选地确实包含多达(且优选地确实包含)纹理数据的16个群组(宏纹素)。
由此,在优选情况下,各缓存行可以且优选地确实包含纹理数据的16个群组(宏纹素)。
优选地,在缓存行中存储的纹理数据的多个群组(宏纹素)包括YUV纹理的连续宏纹素的组(即,表示纹理的相邻(或连续)色度数据元素位置(及其对应的亮度数据元素位置)的组)。
换言之,在缓存行中存储的纹理数据的多个群组(宏纹素)优选地包括覆盖YUV纹理的特定区域(面积)的宏纹素的组(由此还有用于YUV纹理的特定区域(面积)的纹理的色度数据元素位置(及其对应的亮度数据元素位置)的组)。
在缓存行中存储的连续宏纹素的组可以具有宏纹素的任意合适且期望的配置。在优选实施方式中,连续宏纹素的组为矩形(包括正方形)。例如,缓存行可以存储分别为一个宏纹素高或宽的宏纹素的行或列。
在优选实施方式中,缓存行用于存储是两行(或两列)宏纹素高(或宽)的连续宏纹素的组(然后由缓存行的整体容量确定行或列中的宏纹素的数量)。在另一个实施方式中,缓存行存储连续宏纹素的正方形组。
由此,在各缓存行包含纹理数据的16个群组(宏纹素)的情况下,这16个群组(宏纹素)优选地包括来自YUV纹理的这种群组(宏纹素)的8x 2、2x 8或4x 4组。
纹理数据的群组(宏纹素)可以以任意合适且期望的顺序存储在缓存行中。在特别优选的实施方式中,它们以具体、优选选择的、优选预定的顺序(例如且优选地关于它们对应于的纹理的连续宏纹素的组)存储在缓存行中。这然后将促进例如从知道缓存行中的纹理数据的群组中的一个的位置识别缓存行内的纹理数据的相应群组(宏纹素)。
优选地,纹理数据的多个群组(或宏纹素)按它们与要处理的图像对应的顺序(例如,按莫顿(Z)顺序、栅格顺序等)存储在缓存行中。
通过将纹理数据这样设置并存储在缓存中,这可以促进纹理的特定面积或样本位置的纹理数据的稍后处理,因为用于纹理的面积的所有纹理数据一起存储在缓存行中。
在本发明中,用于识别在缓存中存储的纹理数据的群组(宏纹素)的标识符(“查找”键)也与缓存关联地存储(并且优选地存储在缓存中),以便用于识别缓存中的纹理数据的群组(宏纹素)(即,这些宏纹素可以且优选地用于从缓存读取纹理数据)。
标识符可以以任意合适且期望的方式来提供。在特别优选的实施方式中,标识符作为标签提供给讨论中的缓存行(在该缓存行中,存储纹理数据的群组(宏纹素))。
标识符指示YUV纹理的位置(与例如包括存储数据的存储地址相反)。
用作用于纹理数据的群组(宏纹素)的标识符的纹理中的位置可以为纹理中的任意合适且期望的位置。在优选实施方式中,标识符指示(宏纹素的)色度数据元素及其关联的一个或更多个亮度数据元素的组的、图形纹理中的位置。
位置不需要是讨论中的纹理数据的群组(宏纹素)的位置(并且实际上,在优选实施方式中通常将不是,如以下将进一步讨论的),而是应为可以从其确定YUV纹理中的讨论中的纹理数据的群组(宏纹素)的位置的位置。
在一个优选实施方式中,标识符指示纹理中的色度数据元素(值)的位置。因为纹理数据的各群组(宏纹素)将包含单个色度数据元素(位置)(但可以包含多个亮度数据元素(位置)),所以通过在缓存中存储指示色度数据元素的位置的标识符,这可以帮助促进确定为了纹理化例如要渲染图像的特定样本位置而应读取哪个纹理数据。
在特别优选的实施方式中,标识符指示((宏纹素的)色度数据元素及其关联的一个或更多个亮度数据元素的组落入的)纹理内的区域。
虽然将可以为纹理数据的各群组(宏纹素)提供单独的标识符,但优选地,单个(一个)标识符(标签)被提供给并用于纹理数据的多于一个群组(宏纹素)。在特别优选的实施方式中,单个“位置”标识符(标签)被提供给并用于给定缓存行(由此,共同用于在缓存行中存储的纹理数据的多个群组(宏纹素))。
在特别优选的这种实施方式中,在单个“位置”标识符(标签)被提供给并用于给定缓存行的情况下,被提供给并用于给定缓存行的单个“位置”标识符(标签)指示在讨论中的缓存行中存储的纹理数据的多个群组(宏纹素)(连续宏纹素的组)的位置。
在特别优选的这种结构中,整个纹理被认为被分成相应区域(块)。各这种区域优选地具有相同尺寸和形状(配置),并且优选地包含相同数量(和布局)的宏纹素。各区域优选地与将存储在(将填充)缓存行中的宏纹素的给定群组(宏纹素的块)对应。
在这种情况下,纹理被分成的相应区域(块)优选地跨纹理编索引,并且然后将用于给定缓存行的位置标识符(标签)设置为在缓存行中存储的多个宏纹素(宏纹素的组)对应于的、纹理内的纹理数据区域的索引位置(坐标)。由此,位置标识符(例如,缓存行标签)优选地指示纹理区域(块)中的一个。
由此,在特别优选的实施方式中,存储在缓存中的纹理被分成多个区域(块),各区域与将存储在单个缓存行中的多个宏纹素的组对应,并且用于纹理缓存中的缓存行的位置标识符(标签)指示在缓存行中存储的宏纹素的组对应于的、纹理区域(块)的纹理内的相对位置。
其他结构当然会是可能的。
例如,用于缓存行的标识符(标签)可以(并且在实施方式中确实)指示在缓存行中存储的一个纹理数据群组(宏纹素)的(优选地为色度)数据元素的位置。例如,用于缓存行的标识符可以(并且在优选实施方式中确实)指示在缓存行中存储的第一纹理数据群组(宏纹素)中的色度数据元素的位置。
在这种实施方式中,用于缓存行的标识符优选地指示在缓存行中存储的多个连续宏纹素的组的纹理数据的具体、优选选择的、且优选预定的一个群组(宏纹素)的数据元素(优选地为色度数据元素)的位置。例如,用于缓存行的标识符可以指示在缓存行中存储的纹理数据的第一群组(宏纹素)的数据元素(并且优选地为色度数据元素)的位置。
在优选的这种实施方式中,用于缓存行的标识符指示在缓存行中存储的宏纹素的连续组(阵列)的左上角宏纹素的(优选地为色度)数据元素的位置。然而,在另选实施方式中,标识符可以指示在缓存行中存储的不同(例如,色度)数据元素的位置。
指示YUV纹理中的位置的标识符可以以任意合适且期望的形式来配置。由此,它例如可以包括YUV纹理中的“绝对”位置。然而,在特别优选的实施方式中,标识符例如且优选地如以上所讨论的通过指示在缓存行中存储的宏纹素的组的(相对)位置索引(坐标)(x和y索引)来将位置指示为位置索引。另选地,标识符例如且优选地可以通过指示位置对应于的、讨论中的例如色度数据元素的索引来将位置指示为位置索引。
在前者的情况下,位置索引可以指示纹理中的区域(宏纹素的组)的位置,索引(0,0)(例如)指示左上角区域(块),(1,0)指示沿着水平方向的下一区域(块),并且(0,1)指示(0,0)处的区域下方的下一区域(块)。由此,索引将从(0,0)延伸到(x-1,y-1),其中,x为水方向上的纹理区域(块)的数量,并且y为垂直方向上的纹理区域(块)的数量,并且索引(x-1,y-1)将指示纹理中的右下角区域(块)。
对应地,在后者的情况下,位置索引可以指示例如纹理中的数据元素阵列中的例如色度数据元素的位置,索引(0,0)指示左上角(色度)数据元素,(1,0)指示沿着水平方向的下一(色度)数据元素,并且(0,1)指示在(0,0)处的元素下方的下一(色度)数据元素。由此,索引将从(0,0)延伸到(x-1,y-1),其中,x为水平方向上的(色度)数据元素的数量,并且y为垂直方向上的(色度)数据元素的数量,并且索引(x-1,y-1)将指示纹理中的右下角(色度)数据元素。
YUV纹理将被存储在图形处理系统是其一部分的数据处理系统的存储器中。存储YUV纹理的存储器可以为整个数据处理系统的任意合适且期望的存储器,诸如且优选地为用于图形处理系统的主存储器(例如,其中,存在用于图形处理器的单独存储系统)、或与数据处理系统的其他元件(诸如主处理器(CPU))共享的数据处理系统的主存储器。其他结构当然会是可能的。
因此,YUV纹理的数据将需要从存储它的存储器提取并加载到缓存中(在本发明的结构中)。
由此,在优选实施方式中,本发明还包括(并且图形处理系统还被配置为)从存储器提取YUV纹理的数据并以所需方式将其存储在缓存中。
在将纹理数据从存储YUV纹理的存储器提取时以所需方式将纹理数据存储在缓存中可以以任意合适且期望的方式来执行。这样可以且优选地确实取决于用于YUV纹理的数据存储在存储器中的格式。
例如,在用于YUV纹理的数据存储在存储器中使得已经一起存储用于色度数据元素(位置)及其关联的一个或更多个亮度数据元素(位置)的组的数据值的情况下,那么情况可以是这样:数据可以以它存储的布局来从存储器读取并直接存储在缓存中(并且在这种情况下,这优选地是所做的处理)。
另一方面,如以上所讨论的,用于YUV纹理的数据可以单独存储在存储器中,例如,作为存储器中的单独数据阵列。情况将是这样:纹理数据以多平面格式来存储(如以上所讨论的)。因此,在这种情况下,纹理数据将不以适当的群组(宏纹素)存储在存储器中,因此将需要随着它存储到缓存中(或之前)设置为适当的群组(宏纹素)。
因此,在这种情况下,纹理数据将以与它存储在存储器中的结构不同的结构(格式)存储在缓存中。因此,从存储器提取数据并将其存储在缓存中的处理应且优选地确实操作为将数据从它存储在存储器中的结构重新设置为缓存中的期望结构。
由此,在特别优选的实施方式中,将纹理数据存储在缓存中的操作可操作为对用于YUV纹理中的数据位置的数据值分组,以便将用于色度数据元素(位置)及其关联的一个或更多个亮度数据元素(位置)的组的相应群组的数据值一起存储在缓存中(缓存中的相邻数据位置(字段)中,并且优选地一起存储在缓存中的同一共同限定数据单元(数据字)中)。
由此,用于纹理数据的特定群组(宏纹素)的色度和亮度数据值从存储器读取并存储在缓存中的连续数据位置(数据字段)中,使得用于纹理数据的特定群组(宏纹素)的色度和亮度数据值存储在一起,即使它们从存储器单独读取。
由此,在特别优选的实施方式中,本发明的方法包括以下步骤(并且图形处理系统对应地被配置为):在YUV纹理被存储为色度数据元素的一个或更多个单独阵列和亮度数据元素的单独阵列的情况下,分别读取用于纹理中的色度数据元素的数据值和与色度数据元素对应的亮度数据元素的数据值,但然后将这些数据值一起存储在缓存的行中(例如,存储在数据单元(数据字)中)。
例如,在方法中,(例如,用于纹理数据的群组(宏纹素)的)色度数据值(例如,U或V或这两者)可以从存储器提取并在适当的(所确定)数据位置中存储在缓存中。另一个色度数据值(例如,V或U,在U和V色度数据值单独存储在缓存中时,例如存储在单独的数据阵列(平面)中时)可以从存储器提取并在适当的(所确定)数据位置中存储在缓存中。关联的亮度数据值可以从存储器提取并在适当的(所确定)数据位置(或者多个适当的所确定的数据位置)中存储在缓存中。色度和亮度数据值可以从存储器提取并按任意时间顺序存储在缓存中(在它们的适当数据位置中)。
色度和关联的亮度数据值可以从存储器提取并直接写入缓存中(在它们的适当数据位置中)。因此,在这种情况下,色度和关联的亮度数据值将随着亮度和色度数据值存储在缓存中(在亮度和色度数据值存储在缓存中时)一起分组为它们相应的群组(宏纹素)(在这些数据值单独设置在存储器中(例如,在多平面结构中)的情况下)。
为了促进该操作(及其他),缓存优选地被配置为可在合适的数据细分等级上寻址。例如,缓存可以在单个位或单个字节的等级上寻址。在优选实施方式中,缓存可以四个位的单位寻址。
这例如可以通过将位选通用于存储写入来实现。例如,仅可以在将亮度数据写入缓存行中时对于缓存行中的亮度数据位置设置位启用(反之亦然)。
在其他实施方式中,色度和亮度数据值在从存储器提取之后可以不直接存储在缓存中,而是可以首先存储在某种形式的中间存储(诸如缓存器)中。因此,在这种情况下,从存储器提取的色度和亮度数据值将首先存储在中间存储(例如,缓存器)中,然后从该中间存储(缓存器)写入缓存中。在这种情况下,将色度和亮度数据值设置为它们的相应群组(宏纹素)可以在将值写入到中间存储(缓存器)中时执行,使得它们将按它们相应的群组存储在缓存器中,色度和亮度数据值的相应群组(宏纹素)然后例如作为群组(作为整个数据字)在缓存的缓存行中的适当位置处写入缓存中。
在将从存储器提取的色度和亮度数据值存储在缓存中之前将它们存储在诸如缓存器的中间存储中可以促进在将该数据按群组(宏纹素)存储在缓存中之前将色度和亮度数据值重新设置(分组)为群组(宏纹素)。
不管时间顺序如何且不管是否使用缓存器,一旦(例如,用于纹理数据的群组(宏纹素)的)色度和关联的亮度数据值已经从存储器提取并存储在缓存中,则最终结果都应且优选地为它们按群组存储在缓存(例如,缓存行中的连续数据位置)中,各群组包括(例如,用于纹理数据的群组(宏纹素))的色度和关联的亮度数据值。
如以上所讨论的,例如且优选地与YUV纹理的连续宏纹素的组对应的纹理数据的多个群组(宏纹素)优选地按具体、优选选择的、优选预定的顺序存储在缓存行中。
由此,方法优选地包括以下步骤(并且系统优选地被配置为):对于纹理数据元素值基于数据元素属于的纹理数据的群组(宏纹素)的纹理内的(相对)位置确定缓存行中的数据位置,然后将纹理数据元素值存储在缓存行中的该数据位置中。
缓存行中的数据位置所基于的纹理数据的群组(宏纹素)的位置优选地为在讨论中的缓存行中存储的YUV纹理的连续宏纹素的组中的纹理数据的群组(宏纹素)的相对位置。
如以上所讨论的,优选地,确定数据位置,使得从存储器提取的纹理数据的群组(宏纹素)按与它们设置在YUV纹理的优选连续宏纹素的组中的顺序对应的顺序存储在缓存行中。
如以上所描述的,用于存储纹理数据的缓存行中的数据单元(例如,数据字)应包含用于纹理数据(例如,亮度和色度数据)的字段。由此,方法优选地包括以下步骤(并且系统优选地被配置为):确定在数据单元内的哪些字段中存储来自纹理数据的所提取群组(宏纹素)的亮度和色度数据。
例如来自要提取的YUV纹理的连续宏纹素的组的纹理数据的各群组(宏纹素)可以从存储器单独或分别提取。例如,例如来自要提取的YUV纹理的连续宏纹素的组的纹理数据的群组(宏纹素)可以按任意顺序从存储器提取。由此,优选地对于纹理数据的各群组(宏纹素)例如随着它从存储器提取而单独确定从存储器提取的纹理数据的群组(宏纹素)要保存在的缓存行中的数据位置。
纹理数据的群组(宏纹素)优选地可以按任意顺序从存储器提取。它们优选地还可以按任意时间顺序存储缓存行中(但优选地存储在它们所确定的数据位置中,例如基于被提取的YUV纹理的连续宏纹素的组中的、从存储器提取的纹理数据的各群组(宏纹素)的位置)。由此,优选地可以按任意顺序填充缓存行中的数据单元(例如,数据字)。
在将纹理数据加载到纹理缓存中时进行的纹理数据的这种“重新设置”被视为独立发明的,因此,从另外的方面来看,提供了一种操作图形处理系统的方法,在该图形处理系统中,在渲染渲染输出时可以使用图形纹理,并且从存储器将要在渲染渲染输出时使用的纹理的数据加载到缓存中,以便在渲染渲染输出时由图形处理系统使用,方法包括以下步骤:
在将存储在存储器中的图形纹理用作YUV纹理数据时(YUV纹理数据包括存储纹理的亮度数据的数据阵列和存储纹理的色度数据的一个或更多个其他数据阵列):
从存储器中存储YUV纹理的色度数据的一个或更多个其他数据阵列读取用于色度数据元素的色度数据值;
从存储器中存储YUV纹理的亮度数据的数据阵列读取用于与值已经被读取的色度数据元素关联的亮度数据元素的组的一个或更多个亮度数据值;以及
在缓存中存储所读取的色度数据值和亮度数据值,使得用于色度数据元素和关联的一个或更多个亮度数据元素的组的数据值作为一组一起存储在缓存中。
根据本发明的另外方面,提供了一种图形处理系统,该图形处理系统包括:
存储器;
图形处理单元;以及
缓存;并且
其中,在渲染渲染输出时可以使用图形纹理,并且从存储器将要在渲染渲染输出时使用的纹理的数据加载到缓存中,以便在渲染渲染输出时由图形处理单元使用;
图形处理系统还包括:
处理电路,在将存储在存储器中的图形纹理用作YUV纹理数据时(YUV纹理数据包括存储纹理的亮度数据的数据阵列和存储纹理的色度数据的一个或更多个其他数据阵列),该处理电路可操作以:
从存储器中存储YUV纹理的色度数据的一个或更多个其他数据阵列读取用于色度数据元素的色度数据值;
从存储器中存储YUV纹理的亮度数据的数据阵列读取用于与值已经被读取的色度数据元素关联的亮度数据元素的组的一个或更多个亮度数据值;并且
在缓存中存储所读取的色度数据值和亮度数据值,使得用于色度数据元素和关联的一个或更多个亮度数据元素的组的数据值作为一组一起存储在缓存中。
由此,在本发明的这些方面中,YUV纹理数据从它例如以多平面格式在存储器中存储的两个或更多个数据阵列(例如,分别用于色度和亮度纹理数据)读取,但YUV纹理数据然后在存储在缓存中时被重新设置为群组,各群组包括色度数据值及其关联的一个或更多个亮度数据值的组。
由此,例如,将从存储色度数据元素的数据阵列读取色度数据值并将其存储在缓存中的数据位置中,然后是从亮度数据阵列读取一个或更多个亮度数据值,并且将这些亮度数据值存储在与存储色度数据值的数据位置相邻(与其连续)的、缓存中的数据位置中(反之亦然,即,首先读取并存储亮度数据值,然后是色度数据值)。
如上所述,通过将YUV纹理数据按这种群组重新设置并存储在缓存中,这可以意味着读取用于要处理的图像的所需纹理数据需要读取缓存更少次数(例如,与YUV纹理数据不按这种群组存储在缓存中的情况相比,例如在将色度和亮度纹理数据存储在缓存中的单独行和/或数据字中时),因为用于纹理的给定面积(例如,宏纹素)的色度和亮度数据样本这两者一起存储在缓存中(并且可一起在缓存中访问)。
如本领域技术人员将理解的,本发明的这些方面和实施方式可以酌情包括这里所描述的本发明的优选和可选特征中的任意一个或更多个或全部。
由此,例如,所读取的色度数据值和关联的一个或更多个亮度数据值的组优选地存储在缓存行中的连续数据字段中,这些数据字段优选地属于缓存中的给定(可辨认的)数据字。相等地,色度值和关联的一个或更多个亮度数据值的组实际上可以从存储器直接写入缓存中,以便将它们分组在一起(例如,以以上所讨论的方式中的一个),或者可以经由中间缓存器执行将数据值设置为群组,然后从该中间缓存器,将数据值写入到缓存中。
如以上更详细描述的,纹理数据优选地可以按任意时间顺序存储在缓存中,只要最终结果是纹理数据按群组存储在缓存中即可,各群组包括色度数据值及其关联的一个或更多个亮度数据值的组。
优选地,该方法还包括以下步骤:在缓存中存储用于色度数据元素及其关联的一个或更多个亮度数据元素的组的数据值的标识符,标识符可用于识别缓存中的、色度数据元素及其关联的一个或更多个亮度数据元素的组,并且指示在图形纹理中的位置(例如,如上所述)。
本发明的这些方面可以包括以上或以下所描述的其他可选或优选特征中的任意一个。
在本发明的任意方面中且如上所述,可以在将数据存储在缓存中时复制色度数据值,使得在色度数据以比亮度数据更低的分辨率存储在存储器中的情况下,缓存中的各群组(宏纹素)包含单个色度数据值(对于U和V中的每一个)和单个亮度数据值。在这种情况下,在从存储器提取色度数据值时,色度数据值例如且优选地可以取决于所用的色度二次采样模式在多于一个位置中存储在缓存中(即,复制它)。在这种情况下,优选地,各色度数据值对于它将关联的各亮度数据值存储在缓存行中的一个数据位置处。例如,在YUV422模式下,各色度数据值将在缓存中存储两次,与其关联的各亮度数据值存储一次。另选地,在YUV420模式下,各色度数据值将在缓存中存储四次,再次,针对与其关联的各亮度数据值存储一次。
另选地且在期望复制色度时,可以在从缓存读出数据时复制色度数据值。
为了将数据取入到缓存中,数据处理系统将需要向存储器发送对纹理数据的适当存储请求。这些请求可以且优选地通过图形处理器尝试从缓存读取纹理数据或检查在缓存中是否存储所需纹理数据且然后发现纹理数据不存在于缓存中来触发(即,遭遇缓存缺失)。请求优选地然后发送到存储器,以提取“缺失”数据,并且优选地以提取包括期望的“缺失”纹理数据的纹理数据的多个群组(例如,与纹理的区域对应)(例如,用于或足以填充缓存行)。
在本发明中且如以下将进一步讨论的,图形处理器将使用适当的纹理位置对于纹理数据对缓存进行寻址(因为纹理数据使用纹理位置在缓存中识别)。然而,为了将数据从存储器取入到缓存中,用于对缓存进行寻址的纹理位置将需要转换成在存储器中存储用于该纹理位置的纹理数据的适当存储地址。
由此,方法优选地包括以下步骤(并且图形处理系统还被配置为):对于需要(要采样)纹理数据(且纹理被确定为尚未存储在于缓存中)的纹理位置,将该纹理位置转换成一个或更多个存储地址,该一个或更多个存储地址用于对存储包括用于该纹理位置的纹理数据的纹理数据的存储器进行寻址。
例如且在一些情况下,纹理位置可以被转换成例如用于纹理位置的所有纹理数据(例如,色度和亮度纹理数据这两者)在存储器中一起存储的单个存储地址。所有所需的纹理数据可以存储在单个存储地址处,或者另选地,纹理数据可以存储在若干纹理地址中,其他存储地址可从纹理位置转换到的单个存储地址确定(例如,所需纹理数据可以存储在例如一系列连续存储地址的组中,其中,为了确定从其提取所需纹理数据的所有存储地址而仅需要这些存储地址中的一个(例如,第一个))。
在其他情况下,纹理位置可以转换成两个或更多个存储地址,例如在该存储地址中,对于各纹理位置(讨论中的纹理位置)所需的纹理数据存储在存储器中的两个或更多个位置(存储位置)中(例如,在色度和亮度纹理数据单独存储在存储器中(例如两个或更多个数据阵列中)的情况下)。
纹理位置到存储地址(或到两个或更多个存储地址)的转换可以以任意合适且期望的方式来进行。例如且优选地,该转换可以通过应用用于这种转换的一个或更多个预定规则或公式来进行。另选地,转换可以通过使用查找表或其他合适的手段来进行。
纹理位置本身可以以任意期望的方式来指示。例如且在优选实施方式中,纹理位置例如通过提供在0至1或-1/2至+1/2范围内的x和y坐标来被指示为跨纹理的宽度的分数位置(fractional position)和跨纹理高度的分数位置。
在一些优选的实施方式中,首先将纹理位置转换成YUV纹理中的纹理数据元素的位置(例如,位置索引)(例如,YUV纹理中最靠近该纹理位置的纹理数据元素的位置),然后将纹理数据元素的该位置转换成一个或更多个存储地址。这可以对于亮度和色度数据元素单独进行,例如在色度数据以比亮度数据更低的分辨率来提供的情况下和/或在亮度和色度数据单独存储在存储器中的情况下。以下更详细地描述纹理位置到YUV纹理中的纹理数据元素的位置的转换。
由此,可以对于给定纹理位置为要采样的亮度和色度数据元素中的每一个或这两者提供x、y(例如)位置索引。然后优选地将该位置索引转换成存储地址。位置索引优选地基于用于被采样的纹理的以下内容中的一个或更多个且优选地基于全部来转换成存储地址:基地址(被采样的纹理中的第一数据元素的存储地址)、用于讨论中的数据类型(亮度或色度)的两个连续扫描行的开始地址之间的跨步(地址差)、以及由讨论中的数据类型(亮度或色度)的数据值占用的尺寸(优选地单位为字节)。例如,位置索引可以转换成与基地址加(垂直索引(y)乘以跨步)加(水平索引(x)乘以数据值尺寸)对应的存储地址。
由此,在本发明的任意一个方面中但纹理数据存储在存储器中,本发明优选地包括执行将所需纹理数据从存储器取入到缓存(缓存行)中的一个或更多个存储请求。存储请求的数量可以取决于纹理数据如何存储在存储器中和例如存储纹理数据的(不同)位置的数量。存储请求的数量还可以(或另选地)取决于要存储在缓存或缓存行中的纹理数据的群组的结构。
在纹理数据以多平面格式(或多个不同数据阵列)存储在存储器中的情况下,对于纹理的各平面(阵列)执行优选地至少一个(且优选地为仅一个)存储请求。
例如,可以每个平面用一遍(存储请求)读取多平面纹理数据(例如,在两个或三个平面中),这意味着读取两平面纹理可以花费两遍,因此每个负载花费两个循环,并且读取三平面纹理可以花费三遍,因此每个负载花费三个循环。
优选地,纹理数据用对于(或对应于)纹理中的数据的(给定)行的一个存储请求来从存储器提取。在这种情况下,如果例如垂直地对色度数据二次采样,那么对亮度数据的行比对色度数据的行可以存在更多请求。
例如,在要从例如纹理中的宏纹素的8x 2(两行八个)块将16个宏纹素(纹理数据的群组)存储在缓存行中且纹理数据以YUV420二次采样模式提供的情况下,各宏纹素将包含2x 2个亮度数据位置(值)和一个色度数据位置(值),因此宏纹素的8x 2块将对应于16x4个亮度数据值和8x 2个色度数据值。因此,从3平面YUV420纹理进行的、来自存储器的缓存行提取将涉及8个存储请求:对于四个连续亮度扫描的4个请求、对于U平面中的色度的两行的2个请求、以及对V平面中的色度的两行的2个请求。
在各存储请求返回(这例如可以按任意顺序(实际上,操作优选地支持“无序”数据提取或任意顺序的数据提取))时,数据值优选地取决于它们在纹理中的对应位置而在适当的数据位置中(例如,在适当位中)写入到缓存行中。存储请求例如可以包括以下内容中的一个或更多个的指示:要存储数据的缓存行和缓存行中的位置、数据要存储在缓存中的格式等,以促进这一点。
优选地,一旦已经返回对缓存行的所有存储请求,则缓存行(仅)被指示为“有效”(即,所有所请求的纹理数据存储在缓存行中,因此可用于使用)。例如,可以为了确定何时返回所有存储请求而跟踪和/或记录所发送和返回的存储请求的数量。优选地,这包括使用与填充缓存行所需的存储请求的数量对应的参考计数。
任意合适的缓存“填充”结构可以用于选择所取纹理数据存储到的缓存行,诸如最近最少已用的缓存行代替结构等。
一旦纹理数据已经存储在缓存中(缓存行中),则可以从缓存(缓存行)读取该纹理数据,以便在渲染渲染输出(诸如要显示的图像)时使用。
所需的纹理数据将通常且优选地通过指示要采样的YUV纹理中的位置来指示(对于该纹理,需要纹理数据)。
对应地,在优选实施方式中,图形处理器(或图形处理器的纹理映射器)使用指示所需纹理数据的纹理的位置来对存储YUV纹理数据的缓存进行寻址。
如上所述,可以根据期望指示要在YUV纹理中采样的位置(纹理或采样位置)。在优选实施方式中,该位置例如通过提供在0至1或-1/2至+1/2范围内的x和y坐标来指示为跨纹理的宽度的分数位置和跨纹理高度的分数位置。
在优选实施方式中,所指示的采样位置被映射到YUV纹理中的纹理数据元素的位置(且优选地映射到YUV纹理中最近数据元素(例如,离采样位置最近的四个数据元素中的一个且优选地为左上角的一个)的位置),即,映射到YUV纹理中的对应数据元素(纹素)索引。
YUV纹理数据元素(纹素)索引可以根据期望的源于所指示的采样位置。在优选实施方式中,纹素索引从所指示的采样位置以及YUV纹理的宽度和高度来确定,该宽度和高度(分别)鉴于跨纹理的宽度和高度的数据位置的数量来限定。
在优选实施方式中,与要采样的纹理位置对应的纹理数据元素(纹素)x和y索引(在以下公式中分别为macrotexel_index_x和macrotexel_index_y)被确定为:
macrotexel_index_x=floor(sample_position_x*macrotexel_horizontal_count–chroma_offset_x) (1)
macrotexel_index_y=floor(sample_position_y*macrotexel_vertical_count–chroma_offset_y) (2)
其中,sample_position_x和sample_position_y是要采样的纹理中的位置的x和y坐标,并且在从0至1的范围内限定(由此,因此给出跨纹理的样本位置的分数位置);并且“macrotexel_horizontal_count”和“macrotexel_vertical_count”变量分别与跨纹理的宽度和高度的色度数据位置的数量对应。对于YUV444,macrotexel_horizontal_count和macrotexel_vertical_count分别与在纹素中测量的纹理的宽度和高度相同。对于YUV420和YUV422,macrotexel_horizontal_count等于在纹素中测量的纹理的宽度的一半。对于YUV422,macrotexel_vertical_count与在纹素中测量的纹理的高度相同。对于YUV420,macrotexel_vertical_count等于在纹素中测量的纹理的高度的一半。
在优选实施方式中,纹理具有均匀/恒定的宽度和高度。
chroma_offset_x和chroma_offset_y值分别与宏纹素内的色度样本的分数水平和垂直位置对应(被称为色度“坐落”在宏纹素内)。下面更详细地描述这一点。
chroma_offset_x和chroma_offset_y值分别可以从用于色度二次采样模式YUV444、YUV422以及YUV420中的不同色度坐落的以下表来找到:
YUV444
色度坐落X | 色度坐落Y | chroma_offset_x | chroma_offset_y |
共站 | 共站 | 0.50 | 0.50 |
中心 | 共站 | 0.50 | 0.50 |
共站 | 中心 | 0.50 | 0.50 |
中心 | 中心 | 0.50 | 0.50 |
YUV422
色度坐落X | 色度坐落Y | chroma_offset_x | chroma_offset_y |
共站 | 共站 | 0.25 | 0.50 |
中心 | 共站 | 0.50 | 0.50 |
共站 | 中心 | 0.25 | 0.50 |
中心 | 中心 | 0.50 | 0.50 |
YUV420
色度坐落X | 色度坐落Y | chroma_offset_x | chroma_offset_y |
共站 | 共站 | 0.25 | 0.25 |
中心 | 共站 | 0.50 | 0.25 |
共站 | 中心 | 0.25 | 0.50 |
中心 | 中心 | 0.50 | 0.50 |
在特别优选的实施方式中,确定与所需采样位置对应的色度数据元素(即,最靠近所需采样位置或若干(例如,四个)最靠近所需采样位置的色度数据元素中的一个)的数据位置(索引)。由此,在这种情况下,因此,将鉴于跨纹理的宽度和高度的色度数据位置(元素)(色度纹素)的数量限定(例如,用于以上公式中的)纹理的宽度和高度。
因为在缓存中存储的纹理数据的各群组(宏纹素)将仅包含单个色度数据位置值(但潜在地包含多于一个亮度数据位置值,这取决于所用的色度二次采样模式以及在存储到缓存中时是否已经复制色度数据值),这然后具有直接识别所期望的采样位置对应于的纹理数据的群组(宏纹素)的效果。这然后促进更直接地识别缓存中的所需纹理数据并同时从缓存读取对于采样位置将所需的所有色度数据和亮度数据。
在优选实施方式中,纹素索引(纹理数据位置)确定还考虑色度数据位置相对于其关联的一个或更多个亮度数据位置的组的相对位置。
色度和亮度数据在纹理数据的群组(宏纹素)内可以具有各种(相对)位置和/或结构。这些取决于所用的色度二次采样模式(例如,多少亮度数据位置与单个色度数据位置关联)。不同的(相对)位置和/或结构也可以用于各色度二次采样模式。然而,优选地,纹理数据群组(宏纹素)内的色度和亮度数据位置的相同相对位置和结构用于给定纹理(作为一个整体)。
在一个实施方式中(并且在存在色度数据的二次采样的情况下),(单个)色度数据位置位于(优选但不是必须地,中心地位于)纹理数据群组(宏纹素)中的关联亮度数据位置之间。在这种情况下,亮度数据位置优选地均匀分布在色度数据位置周围(例如,在水平方向和/或垂直方向上在任意一侧上),和/或在色度数据位置周围形成正方形,色度数据位置优选地在正方形的中心处。
在另选实施方式中,(单个)色度数据位置可以具有与亮度数据位置(或单个亮度数据位置,如果没有色度二次采样)中的一个相同的位置。例如且优选地,色度数据位置可以具有与纹理数据群组(宏纹素)中的左侧或左上角亮度数据位置相同的位置。另选地,色度数据位置可以具有与纹理数据群组(宏纹素)中的不同(例如,左下角、右侧、右上角或右下角)亮度数据位置相同的位置。
在另选实施方式中,复制色度数据值,使得存在与亮度数据位置相同数量(例如,两个或四个)的色度数据位置。在这种情况下,各色度数据位置将具有相同数据值。所复制的色度数据值优选地被提供在与亮度数据位置相同的位置处。
色度和/或亮度数据位置的其他位置和结构也是可能的。
纹素索引(纹理数据位置)确定优选地例如通过取决于纹理数据群组(宏纹素)中的色度数据元素的相对位置而在上述公式中包括水平和/或垂直“偏移”来考虑色度数据元素相对于其关联的一个或更多个亮度数据元素的组的相对位置。
一旦已经确定YUV纹理中的纹理元素位置(例如,色度数据元素位置),那么该所确定的位置可以且优选地用于读取对应的数据,该对应的数据用于对于该所确定的纹理数据位置(例如,色度数据位置)存储在缓存中的纹理数据群组(该纹理数据位置用于对纹理数据缓存进行寻址,以从缓存检索纹理数据)。
在这一点上将可以的是简单地读取并使用纹理数据的单个群组(宏纹素)来确定用于要在YUV纹理中采样的位置的数据。然而,在优选实施方式中,纹理化处理可操作为从用于YUV纹理中的多个已限定纹理数据元素位置的数据值对用于YUV纹理中的位置的值插值。优选地,用于YUV纹理中的位置的数据值使用用于YUV纹理中的纹理数据元素的数据值的双线性插值来确定。
因此,在特别优选的实施方式中,识别YUV纹理中的2x2宏纹素的组并将其用于确定用于要采样的该纹理中的位置的数据值。这可以通过例如以以上所讨论的方式分别确定用于各宏纹素的相应纹素索引来进行。
然而,在特别优选的实施方式中,以以上所讨论的方式识别单个宏纹素位置(索引),以便识别要使用的宏纹素的2x2组中的一个宏纹素的宏纹素位置(并且优选地为以便识别2x2宏纹素块的左上角宏纹素),因此然后识别(确定)该2x2组的其他(例如,三个)宏纹素。
由此,优选地,确定靠近或最靠近样本位置(例如,左上角)的纹理数据位置(优选地为色度数据位置)的索引,然后例如通过将相关数量的位置加到索引或从其减去(例如,通过沿一个或各轴向加一个)基于首先确定的纹理数据位置(优选地为色度数据位置)索引来确定在被采样位置周围或最靠近该位置的其他(例如,三个其他)纹理数据位置(优选地为色度数据位置)的索引。
上述表达式(1)和(2)指定围绕样本位置(色度数据值在该样本位置中位于宏纹素的中心)的2x2(宏纹素)块的左上角色度数据值的索引。另选(例如,适当修改的)表达式可以用于例如通过分别用“+chroma_offset_x”和/或“+chroma_offset_y”代替“-chroma_offset_x”和/或“-chroma_offset_y”来指定围绕样本位置的四个色度数据值中不同的一个。
一旦已经确定最靠近样本位置的纹理数据值(优选地例如为四个色度数据值)的索引,则优选地从缓存读取与这些纹理数据值对应的纹理数据值的群组(例如,一个色度数据值及其关联的亮度数据值的群组)。
如以上所说明的,在YUV纹理数据从存储器加载并存储在缓存中之后或随着YUV纹理数据从存储器加载并存储在缓存中,用于色度数据元素及其关联的一个或更多个亮度数据元素的组的数据值的标识符也(在一些情况下为优选地)存储在缓存中。这种标识符可用于在缓存中识别色度数据元素及其关联的一个或更多个亮度数据元素的组,并且指示图形纹理中的位置。
由此,该标识符(这些标识符)可以用于确定对于讨论中的样本位置(例如,如以上所确定的)所需的纹理数据值在缓存中存储在哪里(例如,存储在哪个缓存行中和/或哪个数据单元(字)中),因此然后可以从缓存读取所需的纹理数据值。
一旦已经从缓存读提取自要用于要采样纹理位置的(例如,四个)宏纹素(例如,色度数据位置)的数据值,则优选地对来自这些宏纹素的数据值适当进行插值,以确定用于被采样的纹理位置的色度和亮度数据值。优选地,数据值使用双线性采样(双线性插值)来插值。
因为各宏纹素将仅关联有单个色度数据位置(数据值),所以可以且优选地通过使用各宏纹素的色度数据值(例如且优选地为已经被识别的四个宏纹素的四个色度数据值)适当插值来确定用于被采样的位置的色度数据值。
然而,因为各宏纹素色度数据(位置)可以关联有多于一个亮度数据值(例如,在纹理数据被色度二次采样且各纹理数据群组(宏纹素)包含两个或更多个(例如,两个或四个)亮度数据值的情况下),所以不是简单地使用所有宏纹素的所有亮度值来确定用于被采样的位置的亮度值,而是优选地确定例如且优选地四个亮度数据值的组,这些亮度数据值将从用于讨论中的样本位置的纹理数据群组(宏纹素)确定用于被采样的纹理位置的亮度值。
由此,在这种情况下,本发明优选地包括确定来自纹理数据值群组(宏纹素)的哪些(例如,四个)亮度数据值最靠近被采样的纹理位置,然后使用(插值)这些所确定的亮度值来确定用于被采样的纹理位置的亮度值。
确定来自纹理数据值的(例如,四个)群组(宏纹素)的哪些(例如,四个)亮度数据值最靠近被采样的纹理位置例如且优选地通过以下方式来进行:检查样本位置的分数索引位置(即,样本索引位置的分数部分),然后例如遵循确定哪些(例如,四个)亮度数据值最靠近被采样的纹理位置的规则或公式。取决于样本位置的定位和所用的色度二次采样模式,所需的(例如,四个)亮度数据值例如可以来自纹理数据值的单个、两个或四个群组(宏纹素)(例如,取决于色度坐落)。
一旦已经确定来自最靠近被采样纹理位置的纹理数据值的群组(宏纹素)的(例如,四个)亮度数据值的子集,则优选地对这些亮度数据值插值(例如且优选地用双线性插值),以确定用于讨论中的纹理样本位置的亮度值。
在以上述方式对用于YUV纹理的数据值进行插值时,优选地从各群组中的色度(或亮度)数据元素的分数位置确定用于围绕要确定的样本位置的四个色度(或亮度)数据元素中的每一个的插值权重(weight_top_left、weight_top_right、weight_bottom_left以及weight_bottom_right),例如且优选地以便表示色度(或亮度)数据元素与要确定的纹理位置的距离的测量。
例如,以下表达式(3)至(6)可以用于确定在(靠近)样本位置(分别为左上角、右上角、左下角以及右下角)周围的四个色度(或亮度,通过用“亮度”代替对“色度”的参照)数据元素值中的每一个的权重:
weight_top_left=(1–chroma_texel_index_frac_x)*(1–chroma_texel_index_frac_y) (3)
weight_top_right=chroma_texel_index_frac_x*(1–chroma_texel_index_frac_y) (4)
weight_bottom_left=(1–chroma_texel_index_frac_x)*chroma_texel_index_frac_y (5)
weight_bottom_right=chroma_texel_index_frac_x*chroma_texel_index_frac_y (6)
其中,chroma_texel_index_frac_x和chroma_texel_index_frac_y分别是x和y样本位置索引的分数部分,并且可以用以下表达式来确定:
chroma_texel_index_frac_x=frac(sample_position_x*macrotexel_horizontal_count–chroma_offset_x) (7)
以及
chroma_texel_index_frac_y=frac(sample_position_y*macrotexel_vertical_count–chroma_offset_y) (8)
chroma_offset_x和chroma_offset_y被提供在用于上述的三个色度二次采样模式中的每一个的表中。在上述公式(3)至(8)用于确定亮度权重的情况下,在以下的表中提供用于亮度的偏移。
在例如宏纹素包含一个色度样本和一个亮度样本的YUV444纹理化的情况下,chroma_offset_x和chroma_offset_y都等于0.5,并且macrotexel_horizontal_count和macrotexel_vertical_count分别等于若干纹素中的纹理的宽度和高度。
在一个实施方式中,单独(优选地并行)计算用于亮度和色度数据值的插值权重(例如,通过将上述公式(3)至(8)用于色度和亮度数据值这两者)。
在优选实施方式中,从用于色度样本的分数值计算用于亮度样本的分数值。例如,可以使用以下公式来计算用于亮度数据值的插值权重:
luma_texel_index_frac_x=frac(chroma_texel_index_frac_x*downsampling_factor_x+luma_offset_x) (9)
luma_texel_index_frac_y=frac(chroma_texel_index_frac_y*downsampling_factor_y+luma_offset_y) (10)
其中,
downsampling_factor_x对于YUV444是1且对于YUV420和YUV422是2,
并且
downsampling_factor_y对于YUV444和YUV422是1且对于YUV420是2。
偏移luma_offset_x和luma_offset_y可以从这些表找到:
YUV444
色度坐落X | 色度坐落Y | luma_offset_x | luma_offset_y |
共站 | 共站 | 0.0 | 0.0 |
中心 | 共站 | 0.0 | 0.0 |
共站 | 中心 | 0.0 | 0.0 |
中心 | 中心 | 0.0 | 0.0 |
YUV422
色度坐落X | 色度坐落Y | luma_offset_x | luma_offset_y |
共站 | 共站 | 0.0 | 0.0 |
中心 | 共站 | 0.5 | 0.0 |
共站 | 中心 | 0.0 | 0.0 |
中心 | 中心 | 0.5 | 0.0 |
YUV420
色度坐落X | 色度坐落Y | luma_offset_x | luma_offset_y |
共站 | 共站 | 0.0 | 0.0 |
中心 | 共站 | 0.5 | 0.0 |
共站 | 中心 | 0.0 | 0.5 |
中心 | 中心 | 0.5 | 0.5 |
然后可以使用公式(3)至(6)但用luma_texel_index_frac_x和luma_texel_index_frac_y代替这些公式中的texel_index_frac_x和texel_index_frac_y来计算用于亮度数据样本的插值权重。
一旦(例如,如上所述)已经确定用于色度和亮度数据元素的所确定组的插值权重(在讨论中的样本位置周围的色度和亮度数据元素值),则优选地将它们应用于在讨论中的样本位置周围的色度和亮度数据元素值,以确定用于讨论中的样本位置的纹理数据(例如,在讨论中的样本位置周围的纹理数据值的加权和)。该所确定的纹理数据然后优选地用于在该样本位置处执行图像纹理化。
在优选实施方式中,在用于采样位置的纹理的采样实际上将需要来自位于已限定纹理的边缘外部的纹素的纹素值的情况(诸如可以为在纹理边缘处或附近采样时的情况下)下,那么该“边缘”情形优选地被当作采样操作然后考虑该情形的特殊情况。在优选的这种实施方式中,通过将“缺失的”色度和亮度值钳位(clamp)到用于纹理的最近的对应的已限定的这种值来处理这种“边缘”情形。优选地,单独钳位亮度和色度值,并且钳位优选地取决于色度坐落。由此,在优选实施方式中,用于将在纹理外部的位置的亮度值将沿适当方向被钳位到对于纹理(且对应地对于色度值)限定的最近亮度值。
如以上所描述的,当在“复制色度”模式下操作时,可以在到缓存中的存储时复制色度数据值,使得与各亮度数据值关联地存储单个(所复制)色度数据值。然而,在另选实施方式中,色度数据值可以在“未复制”情况下存储在缓存中(即,对于各色度数据值仅一次),但然后可以随着从缓存读取它们(或在此之后)复制它们。
在这种情况下,在已经从缓存读取所需纹理数据之后,优选地调节用于亮度数据值的权重,使得输出变得与色度数据值以复制方式存储在缓存中的情况相同。更具体地,色度数据样本中的一个优选地在对应亮度数据样本之间的面积内的所有位置处被分配有权重1.0,并且在宏纹素之间(例如,在来自不同宏纹素的亮度数据样本之间)的位置处,对来自周围宏纹素的色度数据值进行插值(例如,用双线性插值)。
为了使用该复制色度技术确定用于色度数据值(分别为U和V)的插值权重(frac_x_chr和frac_y_chr),可以使用以下公式。
首先:
frac_x_chr=frac(texel_x) (11)
frac_y_chr=frac(texel_y) (12)
然后:
frac_x_chr=max(min(frac_x_chr*2–0.5,1.0),0.0) (13)
frac_y_chr=max(min(frac_y_chr*2–0.5,1.0),0.0) (14)
其中,texel_x和texel_y是用于被采样纹理位置的x和y坐标。
该权重调节处理优选地在权重计算处理开始时执行。
在以上描述中,确定围绕采样位置的纹理数据并对其进行插值,以提供用于该采样位置的纹理数据。然而,在另选实施方式中,没有插值,并且用于与采样位置对应的一个宏纹素的纹理数据被简单地读取并用作用于该采样位置的纹理数据。例如,可以读取左上角宏纹素(即,具有以上的左侧色度数据位置到采样位置的宏纹素),并且其色度数据值用于采样位置。
在这种情况下,以上公式(1)和(2)优选地被修改为:
texel_index_x=floor(sample_position_x*width) (1’)
以及
texel_index_y=floor(sample_position_y*height) (2’)
在另选实施方式中,可以使用不同的宏纹素(例如,右上角、左下角或右下角)。另选地,可以确定并读取色度数据值最靠近采样位置的宏纹素。如果所读取的宏纹素包含多于一个亮度数据值,那么类似地,单个亮度数据值(例如,左上角、右上角、左下角、右下角或最近)可以用作用于讨论中的采样位置的亮度数据值。
在这种情况下,因为没有插值,所以这可能导致所生成纹理的“块状”外观(例如,在它被放大时)。然而,这种模式有时用于图形处理中。
如将从上述内容理解的,本发明优选地在包括存储器、缓存以及图形处理单元(GPU)的系统中实施。用于渲染输出(例如,要显示的图像)的纹理数据优选地存储在存储器中。GPU优选地被设置为以以上所描述的方式从存储器提取所需的纹理数据并将其存储在缓存中。GPU然后优选地从缓存读取所需的纹理数据,以便生成渲染输出(例如,以以上所描述的方式)。一旦这样生成渲染输出,那么渲染输出优选地显示在例如诸如数字电视、计算机屏幕等的显示器上。
本发明可以用于图形处理系统可以用于生成的任意形式的输出。在优选实施方式中,本发明可以在图形处理系统用于生成用于显示的图像时使用,但它可以用于图形处理系统可以根据期望产生的任意其他形式的图形处理输出,诸如渲染到纹理操作中的图形纹理等。
图形处理系统优选地包括图形处理器,该图形处理器例如且优选地实施并执行图形处理流水线,该图形处理流水线执行图形处理。在特别优选的实施方式中,图形处理系统包括主处理器,该主处理器执行可以需要由图形处理流水线和图形处理器进行的图形处理的应用。系统优选地还包括适当的储存器(例如,存储器)、缓存等。
本发明可以用于任意合适且期望的图形处理系统和处理器中并与其一起使用。
本发明特别适于与分区块渲染器(基于区块的图形处理系统)一起使用。由此,在优选实施方式中,图形处理器(处理流水线)是基于区块的图形处理器(处理流水线)。
图形处理器(处理流水线)可以包括(且优选地确实包括)图形处理器(处理流水线)通常可以包括的处理阶段中的任意一个或更多个(且优选地为全部)。由此,例如,图形处理器优选地包括图元设置阶段、栅格化器以及渲染器。在优选实施方式中,渲染器为可编程片段着色器的形式或包括可编程片段着色器。
图形处理器(处理流水线)优选地还包括一个或更多个可编程着色阶段,诸如顶点着色阶段、外壳着色器、镶嵌阶段(例如,其中,通过执行着色器程序来执行镶嵌)、域(评估)着色阶段(着色器)、几何结构着色阶段(着色器)以及片段着色器中的一个或更多个(且优选地为全部)。
图形处理器(处理流水线)还可以包含图形处理流水线可以包含的任意其他合适且期望的处理阶段,诸如深度(或深度与模板)测试器、混合器、块缓存器、写输出单元等。
图形处理系统和/或处理器优选地还包括一个或更多个存储器和/或存储装置和/或与该存储器和/或存储装置通信,该存储器和/或存储装置存储这里描述的数据,和/或存储用于这行这里描述的处理的软件。图形处理系统和/或处理器还可以与主微处理器、和/或与用于基于由图形处理器(处理流水线)生成的数据显示图像的显示器通信。
在特别优选实施方式中,本发明的各种功能在单个图形处理平台上执行,图形处理平台生成并输出例如写到用于显示装置的帧缓存器的、渲染后的片段数据。
本发明可以在任意合适的系统中实现,诸如基于合适构造的微处理器的系统。在一些实施方式中,本发明实现在计算机和/或基于微处理器的系统中。
本发明的各种功能可以以任意期望且合适的方式执行。例如,本发明的功能可以实现在硬件或软件中(根据期望)。由此,例如,本发明的各种功能元件、阶段以及“装置”可以包括合适的处理器、控制器、功能单元、电路、处理逻辑、微处理器结构等,它们可操作以进行各种功能等,诸如适当专用硬件元件(处理电路)和/或可以被编程以以期望方式操作的的可编程硬件元件(处理电路)。
这里还应当注意的是,如本领域技术人员将理解的,本发明的各种功能等可以在给定处理器上重复和/或并行执行。等同地,各种处理阶段可以共享处理电路等(如果期望)。
此外,本发明的处理阶段中的任意一个或更多个或所有可以被具体实施为处理阶段电路,该处理阶段电路例如为一个或更多个固定功能单元(硬件)的形式(处理电路)、和/或可以被编程为执行期望操作的可编程处理电路的形式。相等地,本发明的处理阶段和处理阶段电路中的任意一个或更多个可以作为单独的电路元件提供给其他处理阶段或处理阶段电路中的任意一个或更多个,和/或处理阶段和处理阶段电路中的任意一个或更多个或所有可以至少部分由共享处理电路来形成。
如本领域技术人员还将理解的,本发明的所有描述的实施方式可以酌情包括这里描述的优选可选特征中的任意一个或更多个或所有。
根据本发明的方法至少部分地可以使用软件(例如,计算机程序)实现。由此将看到当从另外的实施方式看时,本发明提供计算机软件,该计算机软件当安装在数据处理装置上时专门适用于执行这里描述的方法;计算机程序元件,该计算机程序元件包括计算机软件代码部,用于在程序元件在数据处理装置上运行时执行这里描述的方法;和计算机程序,该计算机程序包括代码装置,该代码装置当程序在数据处理系统上运行时适用于执行这里描述的方法的所有步骤。数据处理系统可以是微处理器、可编程FPGA(现场可编程门阵列)等。
本发明还扩展到计算机软件载体,该计算机软件载体包括这种软件,这种软件当用于操作图形处理器、渲染器或包括数据处理器的其他系统时与数据处理装置结合使处理器或系统执行本发明的方法的步骤。这种计算机软件载体可以是物理存储介质,诸如ROM芯片、CD ROM、RAM、闪存或盘,或可以是信号,诸如电线上的电信号、光信号或无线电信号,诸如卫星等。
还将进一步理解的是,不是本发明的方法的所有步骤都需要由计算机软件执行,并且由此根据更宽实施方式,本发明提供了计算机软件并且这种软件安装在计算机软件载体上,用于执行这里阐述的方法的步骤中的至少一个。
本发明可以因此适当地具体实施为用于与计算机系统一起使用的计算机程序产品。这种实现可以包括一系列计算机可读指令,该一系列计算机可读指令固定在有形、永久介质上,诸如计算机可读介质,例如,磁盘、CD-ROM、ROM、RAM、闪存或硬盘。还可以包括一系列计算机可读指令,在有形介质(包括但不限于,光学或模拟通信线)上,或无形地使用无线技术(包括但不限于,微波、红外或其他传输技术),这些指令经由调制解调器或其他界面装置可发送到计算机系统。该系列计算机可读指令具体实施这里之前描述的功能的所有或一部分。
本领域技术人员将理解这种计算机可读指令可以以多种编程语言来写,用于与许多计算机架构或操作系统一起使用。进一步地,这种指令可以使用任意存储技术来存储(存储技术现在或将来包括但不限于半导体、磁或光),或使用任意通信技术来发送(通信技术现在或将来包括但不限于光学、红外或微波)。预期的是,这种计算机程序产品可以作为可去除介质来分发,附有已打印的文档或电子文档,例如,现成软件;例如利用计算机系统预加载在系统ROM或固定盘上;或在网络(例如,因特网或万维网)上从服务器或电子公告栏分发。
附图说明
现在将仅以示例的方式并参照附图来描述本发明的优选实施方式,附图中:
图1示出了YUV纹理中的色度和亮度数据采样位置的示例阵列(或阵列的一部分);
图2示意性示出了可以实施本发明的实施方式的图形处理系统;
图3是例示了根据本发明的实施方式的方法的主要步骤的流程图;
图4的(a)至(c)分别示出了用于YUV444、YUV422以及YUV420色度二次采样模式的宏纹素的示例,各示例具有填隙色度样本;
图5的(a)至(d)示出了用于YUV422((a)和(b))和YUV420((c)和(d))色度二次采样模式的宏纹素的另外示例,各示例具有共站或复制色度样本;
图6示出了来自YUV420宏纹素的纹理数据可以如何存储在数据字中的实施方式;
图7示出了来自YUV420宏纹素的纹理数据可以如何存储在数据字中的另一个实施方式;
图8例示了根据本发明的实施方式的、纹理数据存储在一个纹理缓存行中的纹理的区域;
图9示出了根据本发明的实施方式的、来自十六个宏纹素的数据如何存储在缓存行中的实施方式;
图10例示了根据本发明的实施方式的、对于特定采样位置将选择哪些亮度数据样本;
图11例示了根据本发明的实施方式的、亮度和色度纹理数据的双线性插值;
图12示出了可以实施本发明的示例性数据处理系统;
图13示出了根据本发明的实施方式的、如何将亮度数据存储在存储器中;
图14示出了根据本发明的实施方式的、如何将色度数据存储在存储器中;
图15示出了根据本发明的实施方式的缓存行坐标系;
图16例示了根据本发明的实施方式的、纹理数据存储在一个纹理缓存行中的纹理的区域;
图17示出了根据本发明的实施方式的、来自三十二个宏纹素的纹理数据如何存储在缓存行中的实施方式;
图18示出了来自YUV422宏纹素的纹理数据可以如何存储在数据字中的实施方式;
图19示出了来自YUV444宏纹素的纹理数据可以如何存储在数据字中的实施方式;以及
图20例示了根据本发明的实施方式的、纹理数据存储在一个纹理缓存行中的纹理的区域。
同样的附图标记在附图中用于同样的特征(在适当的情况下)。
具体实施方式
图12示出了可以实施本发明和本实施方式的示例性数据处理系统。
图12所示的示例性数据处理系统包括:主处理器,该主处理器包括中央处理单元(CPU)57;图形处理单元(GPU)10;视频编解码器51;显示控制器55;以及存储控制器58。如图12所示,这些单元经由互连59通信并访问芯片外存储器20。在该系统中,GPU 10、视频编解码器51和/或CPU 57将生成要显示的帧(图像),并且显示控制器55然后将向显示器54提供这些帧,以便显示。
在该系统的使用中,在主处理器(CPU)57上执行的、诸如游戏的应用60例如将需要在显示器54上显示帧。为此,应用60将向用于在CPU 57上执行的图形处理单元10的驱动器61提交适当的命令和数据。驱动器61然后将生成适当的命令和数据,以使得图形处理单元10渲染用于显示的适当帧,并且将这些帧存储在适当的帧缓存器中(例如,在主存储器20中)。显示控制器55然后将把这些帧读取到用于显示器的缓存器中,从该缓存器,然后读出这些帧并在显示器54的显示面板上显示这些帧。
本实施方式和本发明具体涉及图形处理单元10在渲染用于输出(例如,用于显示)的帧时使用纹理(具体为YUV纹理)的情形。这种纹理将包括数据元素(纹理元素(纹素))的阵列,各数据元素具有为讨论中的纹理的数据格式的关联数据值。
纹理通常将包括要应用于要渲染的图形实体(诸如图元)的图像,并且通常将存储在芯片外存储器20中,然后在需要时可以由GPU 10从该芯片外存储器读入图形实体。具体地,在将纹理用于生成渲染输出时,GPU 10将从存储器20提取纹理数据并将其存储在GPU10的局部纹理缓存中。纹理数据然后将在需要时从纹理缓存读取并用于生成渲染输出,例如,用于显示的帧。
图2示意性示出了与本实施方式的操作相关的、图12所示的系统的图形处理单元10的元件。如本领域技术人员将理解的,可以有图2未例示的图形处理单元10的其他元件。
在本实施方式中,GPU 10是基于区块的图形处理器。然而,其他结构当然会是可能的。
如图2所示,图形处理单元10实施图形处理流水线,该图形处理流水线尤其包括栅格化器11、为(可编程)着色器核形式的渲染器12、用于存储输出渲染目标(例如,要显示的帧)的缓存器13(例如,在存储器20中)以及纹理映射器14,并且图形处理单元与系统存储器20通信。
系统存储器20将尤其存储要由GPU 10使用的图形纹理。系统存储器20例如可以为图形处理单元10位于其中的主系统的或该主系统可访问的磁盘驱动器或其他存储介质(例如,硬盘、硬盘或固态盘的RAID阵列),并且可以为主系统的内部存储介质、或外部或可移动存储介质。
纹理映射器14包含输入参数提取单元15、坐标计算单元16、纹理缓存查找单元17、纹理过滤单元18、用于存储纹理数据的纹理缓存21、以及数据提取单元19。
纹理缓存21是用于存储纹理数据的局部存储器,并且例如可以包括RAM。它可以为SRAM存储器的形式。其他结构当然会是可能的。
图2中的箭头指示数据在图形处理流水线的各种部件与存储器20之间流动的主路。还可以有未指示的其他通信路线或方向。
栅格化器11接收要用于生成渲染输出(诸如要显示的帧)的图元(例如,三角形),作为其输入,并且将这些图元栅格化为用于处理的独立图形片段。为了这样做,栅格化器11将图元栅格化为表示渲染输出的采样点,并且生成代表用于渲染图元的适当采样位置的图形片段。由栅格化器11生成的片段然后向前发送到着色器核(渲染器)12,以便着色。片段按使纹理缓存查找模块17的效率最大化的顺序从栅格化器11输出。
着色器核12为了渲染(着色)片段而执行用于由栅格化器11发布的片段的着色器程序。着色器程序可以没有、具有一个或更多个需要由纹理映射器14执行的纹理化指令(纹理化操作)。在着色器核12遭遇纹理化指令时,从着色器核12向纹理映射器14发送纹理化消息,该消息指示纹理映射器14遵守一个或更多个纹理化指令。在纹理映射器14已经完成其纹理处理(进行这些指令)之后,最终结果在响应消息中发回到着色器核12,以便在对讨论中的片段着色时使用。
纹理映射器14包括执行纹理化指令的合适处理电路。该处理电路例如可以为适当配置的专用硬件元件的形式,或者它例如可以包括已经被适当编程的可编程处理电路。在实施方式中,使用专用硬件纹理映射器。
然后存储来自着色器核12的“已着色”片段,作为缓存器13(例如,主存储器20)中的输出渲染目标的一部分,例如以便随后显示。
由此,在由着色器核12指示时,纹理映射器14从存储器20读取纹理(按需),执行各种处理步骤,并且将从纹理采样的颜色返回到着色器核12。
在纹理映射器14内,输入参数提取单元15读入要采样的纹理的参数和如何从用于纹理的适当状态信息对纹理采样的参数。
在本实施方式中,该纹理状态信息分别包括“纹理描述符”和“采样器描述符”。在本实施方式中,“纹理描述符”包含参数,诸如图像宽度和高度(单位为像素)、像素格式(在本实施方式的情况下例如为YUV或在其他情况下为未压缩RGB或压缩RGB等)、与和纹理关联的锥形纹理(mip-map)层的数量有关的信息等。“采样器描述符”包含参数,诸如纹理过滤模式、锥形纹理夹、边框色彩、包裹模式等。
在已经由参数提取单元15读取要采样的纹理的参数之后,这些参数被传递到坐标计算单元16。来自着色器核12的纹理化请求消息通常包含在归一化坐标系中给出的纹理中采样的坐标,其中,(0.0,0.0)是纹理的左上角,并且(1.0,1.0)是纹理的右下角。坐标计算单元16将这些坐标连同在输入参数提取阶段单元15中读取的参数一起接收,并且确定要从纹理缓存21查找的、纹理中的实际纹素索引。
纹理缓存查找单元17检查所需的纹理数据是否存储在缓存21中,如果存在,则从纹理缓存21读取纹理数据。对于典型的双线性查找,从纹理的2x 2纹素(或宏纹素)区域读提取自四个纹素(或宏纹素)的纹理数据。
纹理过滤单元18从纹理缓存查找单元17接收双线性查找的四个纹素(或宏纹素),确定插值权重,并且计算用于讨论中的采样位置的纹理数据的加权平均。这然后输出到(返回到)着色器核12。
在所需纹理数据尚未存储在纹理缓存21中的情况下,数据提取单元19操作为从系统存储器20读取纹理数据并将该数据存储在纹理缓存21中,以便纹理缓存查找单元17然后重试其到纹理缓存21中的查找(读取)。这可以以任意合适且期望的方式来实现。
本实施方式具体涉及以下情形:图形处理单元10要在渲染渲染输出时使用的纹理数据包括YUV纹理数据(即,相关图像数据以YUV格式存储的纹理)。
根据本发明,在使用YUV纹理数据时的本实施方式中,纹理数据存储在纹理缓存21中,使得用于特定纹理位置(面积)的YUV纹理数据一起分组为宏纹素,作为存储的基本单元,各宏纹素包含用于讨论中的纹理位置(面积)的色度(U和V)和关联的亮度(Y)数据。
图4和图5示出了在本实施方式中用于不同色度二次采样模式的宏纹素的示例。
在图4和图5中(而且在图8、图10以及图11中),十字表示亮度数据元素,并且圆表示色度数据元素。
图4的(a)示出了用于YUV444色度二次采样模式的宏纹素1的示例,即,其中,亮度和色度数据以相同分辨率存储(没有二次采样),因此在宏纹素1中存在一个亮度样本和一个色度样本。
图4的(b)示出了用于YUV422色度二次采样模式的宏纹素2的示例,即,其中,色度数据在水平方向上以亮度数据的分辨率的一半来存储,但在垂直方向上以与亮度数据相同的分辨率来存储,因此在宏纹素2中存在水平设置的两个亮度样本和一个色度样本。
图4的(c)示出了用于YUV420色度二次采样模式的宏纹素3的示例,即,其中,色度数据在水平方向和垂直方向这两者上以亮度数据的分辨率的一半来存储,因此在宏纹素3中存在四个亮度样本和一个色度样本。
在图4的示例中,色度样本被示出为在各宏纹素1、2、3中居中。这被称为“填隙色度”。在用于YUV420的另选“填隙色度”宏纹素(未示出)中,色度样本位于亮度样本中的两个(例如,顶部的两个亮度样本)之间。
然而,色度样本在宏纹素中的位置还可能取决于所用的特定模式而变化。
图5的(a)至(d)示出了用于YUV422((a)和(b))和YUV420((c)和(d))色度二次采样模式的宏纹素的另外示例。
图5的(a)示出了具有“共站”色度的YUV422宏纹素2’,即,色度样本位于与(在该示例中,为左侧)亮度样本相同的位置处。
图5的(b)示出了具有“复制”色度的YUV422宏纹素2”,即,在两个亮度样本位置处复制色度样本。在这种情况下,亮度样本之间的整个面积具有相同色度值,并且在进一步处理时,色度值仅插值在宏纹素之间的区域中。连接两个色度样本的线指示它们具有相同值。
图5的(c)示出了具有“共站”色度的YUV420宏纹素3’。在这种情况下,色度样本与左上角亮度样本共站(被证明处于与左上角亮度样本相同的位置处)。
图5的(d)示出了具有“复制”色度的YUV420宏纹素3,即,在四个亮度样本位置中的每一个处复制色度样本,并且亮度样本之间的整个面积具有相同色度值。与图5的(b)相同,在这种情况下,在进一步处理时,色度值仅插值在宏纹素之间的区域中。再次,连接色度样本的线指示它们具有相同值。
由此,在本实施方式中,YUV纹理数据从存储器20提取并取决于所用的色度二次采样模式按群组或宏纹素(诸如图4的(a)至(c)或图5的(a)至(d)所示的宏纹素)存储在缓存21中。
在本实施方式中,存储纹理数据的纹理缓存21包含若干缓存行。各缓存行存储若干数据字(例如,十六个),并且各数据字存储用于一个宏纹素的纹理数据。各数据字包含若干数据字段(例如,取决于所用的色度二次采样模式以及是否使用复制色度),并且各数据字段存储用于一个纹理数据元素(例如,Y、U或V)的数据。
图6示出了包含一个U色度值、一个V色度值以及四个亮度值(Y0-Y3)的一个YUV420宏纹素3可以如何存储在64位数据字4a中的示例。在该示例中,在用于四个亮度(Y0、Y1、Y2以及Y3)和两个色度(U和V)样本值的六个字段4b中的每一个中分别设置10个位,并且用虚拟值(或透明掩码(例如))4c填补4个位,以取得数据字4a中的总共64个位。
在图6所示的实施方式中,首先在字4a中存储四个亮度值Y0、Y1、Y2以及Y3,随后是色度U和V值,然后是虚拟值4c的4位。然而,在其他实施方式中,可以使用其他顺序的亮度、色度以及虚拟(或其他)值。
图7示出了可以如何将一个YUV420宏纹素存储在64位数据字4a中的另选示例。再次,在该示例中,在用于四个亮度(Y0、Y1、Y2以及Y3)和两个色度(U和V)样本值中的每一个的字段4b中设置10个位,并且用虚拟(或其他)值(A0、A1、A2以及A3)填补4个位4c,以取得数据字4a中的总共64个位。在这种情况下,首先在字4a中存储四个亮度值Y0、Y1、Y2以及Y3,随后是色度U值,然后是虚拟(或其他)值的两位(A0和A1),随后是色度V值,然后是虚拟(或其他)值的两个另外位(A2和A3)。
图8例示了纹理数据值根据实施方式一起存储在缓存行中的纹理的区域6。在这种情况下,区域6在8x 2结构中包含十六个宏纹素3(两行八个宏纹素)。宏纹素3在行中从左到右且从顶行到底行被编号为0至15。如在区域6中的左上角宏纹素中指示的,各宏纹素3中的亮度样本被编号为Y0至Y3。
图9示出了根据实施方式的,可以如何将来自图8所示的纹理的区域6的十六个宏纹素3存储在缓存行4中。宏纹素3(0至15)按顺序(从0至15)存储在缓存行4中的连续数据字4a中。
各数据字4a具有64个位(如以上所讨论的),并且缓存行4包含16个数据字4a(与它包含纹理数据的十六个宏纹素对应),因此,如图9指示,缓存行4包含1024个位。
缓存行4用在缓存行中存储的十六个宏纹素3的组对应于(来自)的纹理的区域(块)的X、Y位置标记为4f。下面将更详细地讨论这一点。
在其他实施方式中,包含不同数量的宏纹素(数据字)和/或不同定尺的数据字(例如,对于不同二次采样模式,具有不同数量的数据字段)的不同(或相同)定尺的缓存行是可能的。
例如,图18示出了可以如何将一个YUV422宏纹素存储在32位数据字4a’中的示例。在该示例中,对于两个亮度样本值Y0和Y1以及两个色度样本值U和V中的每一个在字段4b’中设置8个位。这填充整个数据字4a’,因此,在这种情况下,没有用虚拟(或其他)值进行的数据字的填补。首先在字4a’中存储两个亮度值Y0和Y1,随后是色度U值,然后是色度V值。
图16例示了纹理数据值根据实施方式一起存储在缓存行中的、YUV422二次采样模式下的纹理的区域6’。在这种情况下,区域6’在8x 4结构中包含32个YUV422宏纹素2(四行八个宏纹素)。宏纹素2在行中从左到右且从顶行到底行被编号为0至31。如在区域6’中的左上角宏纹素中指示的,各宏纹素2中的亮度样本被编号为Y0和Y1。
图17示出了根据实施方式的,可以如何将来自图16所示的纹理的区域6’的32个宏纹素2存储在缓存行4中。宏纹素2(0至31)按顺序(从0至31)存储在缓存行4中的连续数据字4a’中。
各数据字4a’具有32个位(如以上所讨论的),并且缓存行4包含32个数据字4a’(与它包含纹理数据的32个宏纹素对应),因此,如图17指示,缓存行4包含1024个位。
再次,缓存行4用在缓存行中存储的宏纹素2的组对应于(来自)的纹理的区域6’的X、Y位置标记为4f’。
图19和图20呈现了另外的示例。
图19示出了可以如何将一个YUV444宏纹素存储在32位数据字4a’中的示例。在该示例中,在用于亮度Y和两个色度(U和V)样本值中的每一个的字段4b’中设置8个位,并且在用值A填补的字段4c’中设置8个位,以取得数据字4a’中的总共32个位。在这种情况下,首先在字4a’中存储亮度值Y,随后是色度U值、色度V值,然后是值A。值A通常用于在从0.0到1.0的规模上对透明度编码,其中,值1.0意指完全不透明,并且值0.0意指完全透明。
图20例示了纹理数据值根据实施方式一起存储在缓存行中的、YUV444模式(因此没有色度数据的人二次采样)下的纹理的区域6”。在这种情况下,区域6”在16x2结构中包含32个YUV444宏纹素1(两行十六个宏纹素)。宏纹素1在行中从左到右且从顶行到底行被编号为0至31。
图17示出了根据实施方式的,可以如何将来自图20所示的纹理的区域6”的32个宏纹素1存储在缓存行4中。宏纹素1(0至31)按顺序(从0至31)存储在缓存行4中的连续数据字4a’中。
再次,缓存行4用在缓存行中存储的宏纹素2的组对应于(来自)的纹理的区域6”的X、Y位置标记。
在复制色度数据的情况下,色度数据的复制可以在将数据写入到缓存行4中之前或在从缓存行4读出之后来执行。如果复制在将数据写入到缓存行4中之前来执行,那么缓存行4中的数据结构对于以上所描述且图17、19和图20所示的模式YUV444相同。如果复制在从缓存行4读出之后来执行,那么缓存行4中的数据结构将与在未复制色度数据时相同(例如,对于模式YUV420或YUV422对应于以上所讨论的数据)。
如以上所说明的,各缓存行4存储宏纹素的块。在一个示例中,缓存行4存储来自纹理中的8x 2块6的16个宏纹素。另选地,例如,在存储器中的纹理数据为基于区块的压缩形式的情况下,缓存行4可以包含来自宏纹素的4x 4块的16个宏纹素。在其他实施方式中可以使用不同尺寸和/或形状块。
为了促进在缓存21中存储纹理数据,各缓存行可以用单位四位寻址,即,各数据字段4b(或4b’)可以被单独寻址以用适当的纹理数据来填充。
纹理数据元素可以按任意顺序从存储器20返回。由此,需要确定返回的纹理数据元素值应存储在缓存行中的哪个数据字段4b(或4b’)(数据字段4b(或4b’)可以按任意时间顺序来填充,并且不是必须为顺序地)中,然后将所返回的纹理数据元素存储在该所确定的数据字段4b(或4b’)中。
在本实施方式中,基于数据元素属于的宏纹素的纹理内的(相对)位置确定用于所返回纹理数据元素的相关数据字段4b(或4b’)。
在本实施方式中,存储所返回纹理数据元素值的缓存行中的数据字4a(或4a’)基于它在缓存行用于存储的纹理的区域6(或6’或6”)中对应的宏纹素的相对位置(例如,如图8(或图16或图20)所示)(例如,对应于它在纹理的区域6(或6’或6”)中对应的宏纹素的数量(在从左到右、从左上角到右下角计数时)(例如,如图8(或图16或图20)所示))。
数据字4a(或4a’)内的数据字段4b(4b’)取决于返回什么类型的纹理数据(Y、U或V),如果是亮度(Y)纹理数据被返回,则它对应于的亮度数据元素在宏纹素内。如上所述,纹理数据元素总是按相同顺序存储在数据字4a(或4a’)中(即,在同一相对数据字段4b(或4b’)中)。
如以上所讨论的,各缓存行4设置有关联的“标签”,以识别它存储的数据(宏纹素)。
在本实施方式中,如以上所讨论的且如图15例示的,纹理缓存21内的各缓存行4存储来自纹理的相应区域(块)的纹理数据(宏纹素)。因此,如图15所示,这些纹理区域(块)可以且是用x和y编索引(被分配有相应的x和y坐标),以便指示它们在整个纹理内的相对位置。
因此,缓存行4根据在缓存行中存储的区域(块)的纹理的位置标记有纹理区域索引(在图15中被称为(chunk_x,chunk_y))。
由此,在本实施方式中,如图15指示的,用于缓存行4的标签对应于缓存行存储的纹理的区域(块)的“纹理区域”索引。
其他结构当然会是可能的。
例如,在另选实施方式中,用于缓存行4的标签可以包括YUV纹理中的位置,诸如在讨论中的缓存行4中存储的纹理区域6的左上角(x,y)坐标。标签相反可以对应于纹理区域6的不同坐标(例如,中心或不同角)(如果期望)。
在这种结构中,纹理区域6的左上角坐标优选地对应于在缓存行4中存储的纹理区域6的左上角(即,第一)宏纹素的色度数据元素的坐标。坐标作为整个纹理(即,不仅仅在纹理区域6中)的位置索引指示色度数据元素的位置,即,在索引(0,0)指示纹理中的左上角色度数据元素的情况下,(1,0)指示沿着水平方向上的下一色度数据元素,并且(0,1)指示处于(0,0)下方的下一色度数据元素。由此,索引将从(0,0)延伸到(x-1,y-1),其中,x为水平方向上的色度数据元素的数量,并且y为垂直方向上的色度数据元素的数量,并且索引(x-1,y-1)指示纹理中的右下角色度数据元素。
在本实施方式中,如图8例示,在缓存行4中存储的16个宏纹素对应于纹理中的宏纹素3的8x 2块6(两行八个)。在YUV420模式下,各宏纹素包含2x 2个亮度样本和一个色度样本,因此宏纹素的8x 2块对应于16x 4个亮度样本和8x 2个色度样本。
因此,从线性3平面YUV420纹理进行的、来自存储器20的缓存行提取涉及8个存储请求:对于4个连续亮度扫描的4个请求、对于U平面中的色度的两行的2个请求、以及对V平面中的色度的两行的2个请求。
在这些存储请求中的每一个返回(这可以按任意顺序)时,数据(亮度和/或色度)取决于它们在纹理中的位置写入到缓存行4中的适当数据字4a的适当数据字段4b中(如上所述)。在所有八个请求已经返回时,缓存行被认为“有效”,并且可以用于纹理化处理中。
一旦已经返回对缓存行4的所有存储请求,则缓存行4仅被指示为“有效”(即,所有所需要的纹理数据存储在缓存行4中,因此可用于使用)。
为了确定所有存储请求何时返回,设置“有效计数器”,该计数器随着返回各存储请求而从请求的总数(在这种情况下为8)倒计数,并且在所有存储请求已经返回时,有效计数器等于零,并且这指示缓存行4“有效”(即,纹理数据可用于使用)。在首先发送存储请求时,将有效计数器设置为等于所发送的存储请求的数量(即,在这种情况下为8)。有效计数器然后在每次返回存储请求时倒计数1。由此,在有效计数器达到零时,这指示所有存储请求已经返回,并且缓存行有效(纹理数据可用于使用)。
在本实施方式中,YUV纹理数据从存储器20读取并直接存储在缓存21中(在适当的数据位置/结构中)。所检索的纹理数据通过将位选通用于存储写入来分组为缓存21的RAM库本身的适当结构(即,在宏纹素中)。更具体地,在亮度响应从存储器20返回时,仅对缓存行4中的亮度位设置位启用,并且将亮度数据写入到缓存21中。如果在缓存行4中已经有色度数据,则它将保持不变。在色度响应从存储器20返回时,仅对缓存行中的色度位设置位启用,并且将色度数据写入到缓存21中。已经存在于缓存行4中的任意亮度数据将保持不变。在两个响应回来时,缓存行4被标记为有效。
在其他实施方式中,在将YUV纹理数据存储在缓存21中之前,首先将其存储在中间缓存器(未示出)中。
图3是例示了根据本发明的实施方式的方法的主要步骤的流程图。
图3所例示的方法由如以下所描述的纹理映射器14的部件来执行。
在步骤30处,在从用于渲染要渲染的图形纹理中的采样位置的着色器核12接收指令时(并且在输入参数提取单元15已经如上所述的提取输入参数之后),坐标计算单元16将讨论中的采样位置转换成离采样位置最近(左侧上方)的色度数据元素的色度数据元素索引。然后,在步骤31处,坐标计算单元16确定离采样位置最近的其他三个(右侧上方、左下角以及右下角)色度数据元素,使得确定围绕采样位置的四个最近色度数据元素。
在步骤32处,纹理缓存查找单元17检查与围绕采样位置的所确定的四个最近的色度数据元素对应的宏纹素的纹理数据是否已经存储在缓存21中。
如果所需的纹理数据尚未存储在缓存21中,则在步骤33处,数据提取单元19从存储器20提取所需的纹理数据。在步骤34处,数据提取单元19将该纹理数据分组(重新设置)(如果需要),并且用适当的标签(标识符)将其以所需结构存储在缓存21中(如以上所讨论的)。纹理缓存查找单元17然后执行步骤35。
如果所需纹理数据已经存在于缓存21中,则省略步骤33和步骤34,并且纹理映射器14直接移至步骤35。
在步骤35处,纹理缓存查找单元17从缓存21读取所需纹理数据。
在步骤36处,纹理过滤单元18执行从缓存21读取的相关纹理数据的双线性插值,以确定用于讨论中的采样位置的纹理数据值。
现在将更详细地描述这些步骤。
步骤30
为了从缓存21读取纹理数据,纹理映射器14使用指示所需纹理数据的纹理位置(即,所需纹素(或宏纹素)的纹素索引)来对存储YUV纹理数据的缓存21进行寻址。
由此,在步骤30处,将要采样的纹理中的位置转换成离采样位置最近(左侧上方)色度数据元素的色度数据元素索引。
在该实施方式中,要在YUV纹理中采样的位置通过提供在0至1范围内的x和y坐标来指示为跨纹理宽度的分数位置和跨纹理高度的分数位置,x和y坐标被指定为2D浮动点向量(具体为32位IEEE 754-2008浮动点向量)。
该采样位置被转换成离被采样位置最近(具体为左侧上方)的、YUV纹理中的色度数据元素的位置。(这可以不是离被采样位置最近的色度数据元素,它反而是四个最近元素中的一个,具体为左侧上方的一个。)
从所指示采样位置的x和y坐标(分别为sample_position_x和sample_position_y)以及鉴于分别跨纹理的宽度和高度的色度数据元素(位置)的数量限定的YUV纹理的宽度和高度(宽度和高度),使用以下的公式(1)和(2)确定左侧上方的色度数据元素索引(被给定位x和y坐标macrotexel_index_x和macrotexel_index_y):
macrotexel_index_x=floor(sample_position_x*macrotexel_horizontal_count–chroma_offset_x) (1)
macrotexel_index_y=floor(sample_position_y*macrotexel_vertical_count–chroma_offset_y) (2)
其中,sample_position_x和sample_position_y是要采样的纹理中的位置的x和y坐标,并且在从0至1的范围内限定(由此,因此给出跨纹理的样本位置的分数位置);并且“macrotexel_horizontal_count”和“macrotexel_vertical_count”变量分别与跨纹理的宽度和高度的色度数据位置的数量对应。对于YUV444,macrotexel_horizontal_count和macrotexel_vertical_count分别与在纹素中测量的纹理的宽度和高度相同。对于YUV420和YUV422,macrotexel_horizontal_count等于在纹素中测量的纹理的宽度的一半。对于YUV422,macrotexel_vertical_count与在纹素中测量的纹理的高度相同。对于YUV420,macrotexel_vertical_count等于在纹素中测量的纹理的高度的一半。
用于“macrotexel_horizontal_count”和“macrotexel_vertical_count”(分别为宽度和高度)的值如上所述的由输入参数提取单元15来获得。这些是在从1至65536范围内的无符号整数。
chroma_offset_x和chroma_offset_y值分别与宏纹素内的色度样本的分数水平和垂直位置对应(被称为色度“坐落(siting)”在宏纹素内)。下面更详细地描述这一点。
chroma_offset_x和chroma_offset_y值分别可以从用于色度二次采样模式YUV444、YUV422以及YUV420中的不同色度坐落的以下表来找到:
YUV444
色度坐落X | 色度坐落Y | chroma_offset_x | chroma_offset_y |
共站 | 共站 | 0.50 | 0.50 |
中心 | 共站 | 0.50 | 0.50 |
共站 | 中心 | 0.50 | 0.50 |
中心 | 中心 | 0.50 | 0.50 |
YUV422
色度坐落X | 色度坐落Y | chroma_offset_x | chroma_offset_y |
共站 | 共站 | 0.25 | 0.50 |
中心 | 共站 | 0.50 | 0.50 |
共站 | 中心 | 0.25 | 0.50 |
中心 | 中心 | 0.50 | 0.50 |
YUV420
色度坐落X | 色度坐落Y | chroma_offset_x | chroma_offset_y |
共站 | 共站 | 0.25 | 0.25 |
中心 | 共站 | 0.50 | 0.25 |
共站 | 中心 | 0.25 | 0.50 |
中心 | 中心 | 0.50 | 0.50 |
以下更详细地描述差异色度坐落模式。
步骤31
在步骤31处,确定离采样位置最近的其他三个(右侧上方、左下角以及右下角)色度数据元素,使得确定围绕采样位置的四个最近色度数据元素。通过识别离采样位置最近的四个色度数据元素,这由此还识别围绕采样位置的四个最近宏纹素,因为各色度数据元素对应于单个宏纹素。
如以上所说明的,上述公式识别离被采样位置最近(左侧上方)的宏纹素。然后是确定离被采样位置最近的右上角、左下角以及右下角宏纹素的直接处理(即,通过将x和/或y索引增加1)。具体地,为了从左上角宏纹素确定右上角宏纹素,将x索引增加1,为了从左上角宏纹素确定左下角宏纹素,将y索引增加1,并且为了从左上角宏纹素确定右下角宏纹素,将x索引和y索引都增加1。
图10例示了由四个最近宏纹素3(左上角、右上角、左下角以及右下角)围绕的纹理的样本位置5。
步骤32
在步骤32处,纹理缓存查找单元17检查与围绕采样位置(如以上确定的)的四个最近的色度数据元素对应的宏纹素的纹理数据是否已经存储在缓存21中。
为了进行这一点,纹理缓存查找单元17确定用于讨论中的宏纹素的纹理数据将存储在哪个(哪些)缓存行中。这通过以下方式来进行:检查缓存行标签(标识符),以查看这些中的哪一个对应于将包括包含讨论中的一个或更多个宏纹素的宏纹素块的纹理的区域(块)。如以上所讨论的,缓存行标签(使用位置索引)识别预定尺寸和形状的纹理的区域(宏纹素的块)。
如果用与包含所需宏纹素中的一个(或更多个)的块对应的标签未找到缓存行,那么纹理缓存查找单元17确定该纹理数据(用于该宏纹素的纹理数据、或包含该宏纹素的块)尚未存储在缓存21中。
另一方面,如果用与包含所需宏纹素中的一个(或更多个)的区域(块)对应的标签找到缓存行,那么纹理缓存查找单元17检查用于该缓存行的有效指示符。有效指示符指示缓存行是否包含用于它对应的宏纹素块的所有纹理数据。如果有效指示符指示讨论中的缓存行有效,那么纹理缓存查找单元17确定纹理数据(用于该宏纹素(这些宏纹素)的纹理数据、或包含该宏纹素(这些宏纹素)的块)存储在缓存21中。另一方面,如果有效指示符指示讨论中的缓存行无效,那么纹理缓存查找单元17确定纹理数据(用于该宏纹素(这些宏纹素)的纹理数据)被取入到缓存21中,但尚未到达缓存21中(因此,停止其操作,直到数据到达缓存行中为止)。
在一些情况下,所有所需宏纹素将来自单个纹理区域(宏纹素的块)(因此将存储在单个缓存行中)。在其他情况下,所需宏纹素可以来自两个或四个不同纹理区域(块)(宏纹素的块)(因此将存储在两个或四个不同的缓存行中)。
如果所需纹理数据已经存在于(或被取入)缓存21中,则纹理映射器14省略步骤33和34并直接移至步骤35。
步骤33
如果步骤32确定所需的纹理数据尚未存在于(或被取入)缓存21中,那么执行步骤33,由此,数据提取单元19从存储器20提取所需的纹理数据。
为此,首先为纹理数据分配缓存行(例如,使用最近最少使用的分配处理)。
在本发明的实施方式中,YUV纹理数据(例如,色度二次采样的YUV数据(例如,在YUV422或YUV420模式下))作为两个或三个单独的数据阵列(以所谓的“多平面”格式)存储在存储器中,一个数据阵列(平面)包含亮度(Y)信息,并且一个或两个其他数据阵列(平面)包含色度(U和V)信息。在为色度数据提供一个数据阵列(平面)的情况下,U和V色度数据这两者存储在同一阵列中。在为色度数据提供两个数据阵列(平面)的情况下,U色度数据存储在一个阵列中,并且V色度数据存储在另一个阵列中。
图13和图14分别示出了可以如何将来自8x 4个像素(亮度样本定尺的)纹理区域的亮度和色度数据在单独存储平面(缓存器)50和60中存储在存储器中的示例。
如图13所示,亮度数据在存储平面(缓存器)50中存储在存储器中,该存储平面在该示例中包含32(8x 4)个亮度数据样本51。在这些附图的示例中,纹理数据以YUV420采样模式来提供,因此色度数据以比亮度数据更低的分辨率来提供。由此,在包含对应色度数据(即,对应于在存储平面50中存储的亮度数据)的存储平面(缓存器)60中,仅存在八(4x 2)个色度数据样本61。如图所示,在该示例中,各色度数据样本61包含用于该样本的U和V色度数据这两者。
在其他实施方式中,YUV纹理数据存储在其他格式(诸如封装存储(其中,用于宏纹素的所有纹理数据存储在一个字中,例如,32位或64位)或压缩存储(其中,压缩方案用于压缩数据))的存储器20中。
为了从存储器20提取所需纹理数据,数据提取单元19将样本索引位置转换成用于该纹理位置的纹理数据在存储器20中存储的(多个)适当存储地址。
在一些情况下,纹理位置(索引位置)被转换成例如用于纹理位置的所有纹理数据(例如,色度和亮度纹理数据这两者)在存储器中一起存储的单个存储地址。所有所需的纹理数据可以存储在单个存储地址处,或者另选地,纹理数据可以存储在若干纹理地址中,其他存储地址可从纹理位置转换到的单个存储地址确定(例如,所需纹理数据存储在例如一系列连续存储地址的组中,其中,为了确定从其提取所需纹理数据的所有存储地址而仅需要这些存储地址中的一个(例如,第一个))。
在其他情况下,纹理位置被转换成两个或更多个存储地址,例如在该存储地址中,对于各纹理位置(讨论中的纹理位置)所需的纹理数据存储在存储器中的两个或更多个位置(存储位置)中(例如,在色度和亮度纹理数据单独存储在存储器中(例如两个或更多个数据阵列中)的情况下)。
在一个实施方式中,通过使用查找表和/或通过将一个或更多个预定规则或公式用于这种转换来将纹理位置转换成存储地址(或两个或更多个存储地址)。
在纹理数据如图13和图14例示的存储在存储器中的情况下(如上所述),为了确定用于特定采样索引的色度和亮度存储地址,可以执行以下方法。
亮度样本索引位置被表达为(x,y)。
亮度存储缓存器50中的起始地址(样本(0,0)的地址)为luma_base_address。
色度存储缓存器60中的对应地址为chroma_base_address。
两个连续亮度扫描行的起始地址之间的地址差为luma_stride,并且用于色度缓存器60的对应值为chroma_stride。
样本索引位置处的亮度和色度数据的地址(分别为luma_address和chroma_address)然后可以被计算为:
luma_address=luma_base_address+y*luma_stride+x*luma_value_size (15)
其中,luma_value_size是亮度值的尺寸(单位为字节),该值在这种情况下(即,在如图13和图14所示的YUV420采样模式下)为1。
并且
chroma_address=chroma_base_address+floor(y/2)*chroma_stride+floor(x/2)*chroma_value_size (16)
其中,chroma_value_size是色度值的尺寸(单位为字节),该值在这种情况下(即,在如图13和图14所示的YUV420采样模式下)为2。
对于16位2平面YUV数据,luma_value_size将为2,并且chroma_value_size将为4。
在色度数据以不同分辨率来提供和/或U和V色度数据存储在单独缓存器(平面)中的情况下,可以适当修改用于色度数据的存储地址的公式(例如,通过酌情用y或x代替y/2和/或x/2)。
一旦已经确定用于所需纹理数据的存储地址,则向存储器20的该(这些)存储地址发送请求,并且提取来自该(这些)存储地址的纹理数据。
在亮度数据和色度数据在单独平面(阵列)中存储在存储器20中的情况下(例如,如在图13和图14中一样),向各阵列发送单独的存储请求。存储请求可以按任意顺序返回。
数据提取单元19内的存储地址计算单元把纹理区域(块)索引(坐标)(如图15例示且如上所述)当作输入,并且发布从存储器提取所需纹理数据的多个存储读取请求,以用与纹理区域(块)对应的纹理数据填充缓存行。
在数据如图13和图14所示的存储在存储器中时,例如,需要六个存储请求来提取所有所需数据。四个亮度扫描行需要四个请求,并且两个色度扫描行需要两个请求。这些请求从以下六个存储地址(luma_0_address至luma_3_address、chroma_0_address以及chroma_1_address)提取数据:
luma_0_address=luma_base_address+(chunk_y*4+0)*luma_stride+chunk_x*16*luma_value_size (17)
luma_1_address=luma_base_address+(chunk_y*4+1)*luma_stride+chunk_x*16*luma_value_size (18)
luma_2_address=luma_base_address+(chunk_y*4+2)*luma_stride+chunk_x*16*luma_value_size (19)
luma_3_address=luma_base_address+(chunk_y*4+3)*luma_stride+chunk_x*16*luma_value_size (20)
chroma_0_address=chroma_base_address+(chunk_y*2+0)*chroma_stride+chunk_x*16*chroma_value_size (21)
chroma_1_address=chroma_base_address+(chunk_y*2+1)*chroma_stride+chunk_x*16*chroma_value_size (22)
其中,chunk_y和chunk_x分别是用于讨论中的纹理区域(块)的y和x索引。
在上述公式(17)至(22)中,对于亮度和色度,chunk_x乘以16。这是因为与亮度相比仅存在一半数量的色度样本,但它们中的每一个占用两个字节,而不是一个。
这些存储请求被发送到将执行读取的存储器20。如上所述,对读取的响应可以按任意顺序从存储器20返回。因此,纹理缓存21需要跟踪什么数据已经从存储器20返回,并且仅在对存储请求的所有响应已经返回且用于各响应的所有所需数据已经写入到纹理缓存21中之后将缓存行状态设置为“有效(VALID)”。这对于各缓存行4用请求计数器来进行。请求计数器被初始化为等于对于讨论中的缓存行4发送的存储请求的数量的值。对于已经被写入到纹理缓存21的讨论中缓存行4中的各响应,将请求计数器减一。一旦它达到零,则将缓存行状态设置为“有效”。
步骤34
在如上所述的从存储器20提取纹理数据之后,数据提取单元19然后在步骤34处将从存储器20检索的纹理数据分组为所需结构(在纹理数据尚未以所需格式处于存储器20中的情况下),并且用所需标识符(标签)将已分组纹理数据存储在纹理缓存21中(如以上所讨论的)。
步骤35
一旦步骤32已经确定所需纹理数据存在于缓存21中或如果不,则所需纹理数据已经从存储器20提取并存储在缓存21中(步骤33和步骤34),那么在步骤35处,从缓存21读取所需纹理数据。
在步骤30和步骤31处确定围绕采样位置的YUV纹理的四个色度数据元素的索引(参见上文)。然后在步骤35处使用这些所确定的色度数据元素索引来对缓存21进行寻址,以读取用于与这些色度数据元素索引对应的宏纹素的纹理数据。
如以上所说明的,纹理缓存21中的各缓存行标记有与在讨论中的缓存行中存储的纹理区域(宏纹素的块)的纹理中的位置对应的标识符。
如上所述,该标识符(这些标识符)用于确定对于讨论中的样本位置(例如,如上所确定的)所需的纹理数据值是否存储在缓存21中且在缓存21中存储在哪里(例如,在哪个缓存行4中)。
所需宏纹素的所确定索引位置各被转换成(或用于确定)存储所需宏纹素的与数据字4a对应的缓存行位置(例如,如图9所示),然后从相关缓存行4中的这些数据字4a,从缓存21读取(用于讨论中的宏纹素的)所需纹理数据。
步骤36
一旦已经从缓存21读取要用于要采样纹理位置的四个宏纹素(例如,色度数据位置)的纹理数据值(步骤35),则在步骤36处,使用双线性插值对来自这些宏纹素的相关纹理数据值插值,以确定用于被采样的纹理位置的色度和亮度数据值。
因为各宏纹素仅关联有单个色度数据值,所以用于被采样位置的色度数据值通过使用来自四个宏纹素的色度数据值执行双线性插值来确定。图11中例示了这一点,图11示出了围绕采样位置5的四个宏纹素3,并且连接色度数据元素(圆)的线指示被执行的双线性插值。
然而,因为各宏纹素色度数据值可以关联有多于一个亮度数据值(例如,在图11所示的情况下,在各宏纹素中存在四个亮度数据值,即,四个亮度数据值与每一个色度数据值关联),不是简单地使用所有宏纹素的所有(例如,16个)亮度值来确定用于被采样位置的亮度值,而是确定最靠近被采样纹理位置的四个亮度数据值的组,然后将其用于确定用于被采样位置的亮度值。
由此,纹理过滤单元18确定来自宏纹素3的哪四个亮度数据值最靠近被采样的纹理位置5,然后使用这些所确定的亮度值来确定用于被采样的纹理位置5的亮度值。
为了确定来自四个宏纹素3的哪四个亮度数据值最靠近被采样的纹理位置5,检查样本位置5的分数索引位置(即,样本索引位置的分数部分),然后应用规则或公式来确定哪四个亮度数据值最靠近被采样的纹理位置5。取决于样本位置5的定位和所用的色度二次采样模式,所需的四个亮度数据值可以来自单个、两个或四个宏纹素。(然而,因为各宏纹素仅包含单个色度数据值,所以所需的色度数据值将总是来自四个宏纹素。)
在实施方式中,以下公式用于选择应使用来自2x 2宏纹素的组的哪四个亮度数据值(最靠近样本位置):
x_lum=frac(sample_position_x)*2+offset_x_lum (23)
y_lum=frac(sample_position_y)*2+offset_y_lum (24)
x_lum_origin=floor(x_lum) (25)
y_lum_origin=floor(y_lum) (26)
其中,
sample_position_x和sample_position_y分别是样本位置的x和y坐标;并且
offset_x_lum和offset_y_lum分别是宏纹素内的左上角亮度数据元素的x和y偏移。
值x_lum_origin和y_lum_origin然后是集合{0,1,2}内的整数。这两个值然后识别应从4x 4个亮度样本拾取哪2x 2个亮度样本(例如,在YUV420色度二次采样模式的情况下),该4x 4个亮度样本通过识别从缓存21读取的4x 4个亮度样本中的、该群组的左上角亮度样本来从纹理缓存21读取。
图11中例示了这一点,图11示出了要用于由线连接的样本点5的插值的所选2x2个亮度样本。
一旦已经确定来自最靠近被采样纹理位置的宏纹素3的四个亮度数据值的子集,则用双线性插值对这些亮度数据值进行插值,以确定用于讨论中的纹理样本位置5的亮度值。图11中例示了这一点,其中,连接最靠近采样位置5的四个亮度数据元素(十字)的线指示被执行的双线性插值。
在以上述方式对用于YUV纹理的数据值插值时,从各宏纹素中的色度(或亮度)数据元素的分数位置确定用于围绕要确定的样本位置5的四个色度(或亮度)数据元素中的每一个的插值权重(weight_top_left、weight_top_right、weight_bottom_left以及weight_bottom_right),以便表示色度(或亮度)数据元素与要确定的纹理位置的距离的测量。计算插值权重,使得最靠近样本位置5的样本被给予最大的插值权重。
具体地,以下表达式(3)至(6)用于确定用于最靠近样本位置5(分别为左上角、右上角、左下角以及右下角)的四个色度数据元素值中的每一个的权重:
weight_top_left=(1–chroma_texel_index_frac_x)*(1–chroma_texel_index_frac_y) (3)
weight_top_right=chroma_texel_index_frac_x*(1–chroma_texel_index_frac_y) (4)
weight_bottom_left=(1–chroma_texel_index_frac_x)*chroma_texel_index_frac_y (5)
weight_bottom_right=chroma_texel_index_frac_x*chroma_texel_index_frac_y (6)
其中,chroma_texel_index_frac_x和chroma_texel_index_frac_y分别是x和y样本位置索引的分数部分,并且可以用以下表达式来确定:
chroma_texel_index_frac_x=frac(sample_position_x*macrotexel_horizontal_count–chroma_offset_x) (7)
以及
chroma_texel_index_frac_y=frac(sample_position_y*macrotexel_vertical_count–chroma_offset_y) (8)
chroma_offset_x和chroma_offset_y在下表中提供。
YUV444
色度坐落X | 色度坐落Y | chroma_offset_x | chroma_offset_y |
共站 | 共站 | 0.50 | 0.50 |
中心 | 共站 | 0.50 | 0.50 |
共站 | 中心 | 0.50 | 0.50 |
中心 | 中心 | 0.50 | 0.50 |
YUV422
色度坐落X | 色度坐落Y | chroma_offset_x | chroma_offset_y |
共站 | 共站 | 0.25 | 0.50 |
中心 | 共站 | 0.50 | 0.50 |
共站 | 中心 | 0.25 | 0.50 |
中心 | 中心 | 0.50 | 0.50 |
YUV420
色度坐落X | 色度坐落Y | chroma_offset_x | chroma_offset_y |
共站 | 共站 | 0.25 | 0.25 |
中心 | 共站 | 0.50 | 0.25 |
共站 | 中心 | 0.25 | 0.50 |
中心 | 中心 | 0.50 | 0.50 |
在例如宏纹素包含一个色度样本和一个亮度样本的YUV444纹理化的情况下,chroma_offset_x和chroma_offset_y都等于0.5,并且macrotexel_horizontal_count和macrotexel_vertical_count分别等于若干纹素中的纹理的宽度和高度。
在一个实施方式中,并行计算用于亮度和色度数据值的插值权重(例如,使用以上的公式(3)至(8),但被修改为使得用“亮度”代替对“色度”的引述)。为了进行这一点,使权重计算器电路在尺寸上加倍(与串行计算它们的情况相比)。
在优选实施方式中,从用于色度样本的分数值计算用于亮度样本的分数值。
例如,可以使用以下公式来计算用于亮度数据值的插值权重:
luma_texel_index_frac_x=frac(chroma_texel_index_frac_x*downsampling_factor_x+luma_offset_x) (9)
luma_texel_index_frac_y=frac(chroma_texel_index_frac_y*downsampling_factor_y+luma_offset_y) (10)
其中,
downsampling_factor_x对于YUV444是1且对于YUV420和YUV422是2,
以及
downsampling_factor_y对于YUV444和YUV422是1且对于YUV420是2。
偏移luma_offset_x和luma_offset_y可以从这些表找到:
YUV444
色度坐落X | 色度坐落Y | luma_offset_x | luma_offset_y |
共站 | 共站 | 0.0 | 0.0 |
中心 | 共站 | 0.0 | 0.0 |
共站 | 中心 | 0.0 | 0.0 |
中心 | 中心 | 0.0 | 0.0 |
YUV422
色度坐落X | 色度坐落Y | luma_offset_x | luma_offset_y |
共站 | 共站 | 0.0 | 0.0 |
中心 | 共站 | 0.5 | 0.0 |
共站 | 中心 | 0.0 | 0.0 |
中心 | 中心 | 0.5 | 0.0 |
YUV420
色度坐落X | 色度坐落Y | luma_offset_x | luma_offset_y |
共站 | 共站 | 0.0 | 0.0 |
中心 | 共站 | 0.5 | 0.0 |
共站 | 中心 | 0.0 | 0.5 |
中心 | 中心 | 0.5 | 0.5 |
在本实施方式中,在纹理的采样实际上将需要来自位于所限定纹理的边缘外部的纹素的纹素值的情况下(例如,诸如可以为在纹理边缘处或附近采样时的情况),用于将在纹理外部的位置的亮度值被钳位到沿适当方向对于纹理(且对应地对于色度值)限定的最近亮度值。
一旦已经确定用于色度和亮度数据元素的所确定组的插值权重(在讨论中的样本位置5周围的四个色度和亮度数据元素值),则分别将它们用于对在讨论中的样本位置5周围的色度和亮度数据元素值加权,以便确定用于讨论中的样本位置5的纹理数据(即,在讨论中的样本位置5周围的纹理数据值的加权和)。
如图6所示,一旦纹理过滤单元18已经确定用于讨论中的样本位置的色度和亮度值,则将这些色度和亮度值返回到着色器核12,以便用于生成渲染目标(例如,着色讨论中的片段),以便输出到渲染目标13。
上述内容主要描述了当在非复制色度值模式下操作且将双线性过滤用于确定要使用的纹理值时的、本实施方式的结构。
如以上所讨论的,还将可能的是在“复制”色度模式下操作本发明,在该模式下,色度值被复制为与存在于宏纹素中的不同亮度值的数量对应。在这种结构中,色度值可以在将纹理数据写入到纹理缓存中时(在这种情况下,处理将在从存储器提取缓存行期间将在存储器中存储的数据转换成YUV444)或在从纹理缓存读出纹理数据时(在这种情况下,数据以与对于所有其他色度坐落模式相同的方式作为宏纹素存储在缓存中)复制。
在复制色度情况下,在从缓存读出之后,在本实施方式中,调整亮度权重,使得输出变得与犹如已经在缓存中复制色度值时确切相同。实际上,色度样本中的一个在对应亮度样本之间的面积内被给予权重1.0。在宏纹素之间取样的情况下,将对用于这些宏纹素的相应色度值插值。
以下示出了用于执行示出完整色度计算(即,对于复制和非复制色度值这两者)的该权重调整的示例性伪代码。
该权重调节处理在权重计算处理开始时执行。
该伪代码还示出了双线性插值(线性(LINEAR))与另选“最近”采样模式(最近(NEAREST))之间的选择,其中,仅从缓存读取一个宏纹素(左上角的一个),并且该宏纹素的色度值在没有(来自相邻宏纹素的)任何插值发生的情况下用于由宏纹素覆盖的整个面积。在没有插值的情况下,类似地处理亮度值。在该“最近”(点采样)过滤模式的情况下,与要采样的纹素位置对应的纹素索引确定(以上所讨论的)被确定为:
macrotexel_index_x=floor(sample_position_x*macrotexel_horizontal_count) (27)
以及
macrotexel_index_y=floor(sample_position_y*macrotexel_vertical_count) (28)
从上述内容可以看到:本发明至少在其优选实施方式中可以提供将YUV纹理用于图形处理系统和单元中的更高效机制。这至少在本发明的优选实施方式中通过以下方式来实现:将用于YUV纹理中的关联位置的色度和亮度数据值一起按组存储在纹理缓存中,然后使用要采样的纹理内的位置从纹理缓存检索该数据(如例如与使用存储地址对缓存进行寻址相比)。
Claims (23)
1.一种操作图形处理系统的方法,在该图形处理系统中,从存储器将要在渲染渲染输出时使用的纹理的数据加载到缓存中,以便在渲染所述渲染输出时由所述图形处理系统使用,所述方法包括以下步骤:
在将存储在存储器中的图形纹理用作包括亮度和色度纹理数据的YUV纹理数据时:
将用于所述纹理的YUV纹理数据存储在缓存中,从该缓存,在生成渲染输出时要由所述图形处理系统读取该纹理数据,使得用于色度数据元素和关联的所述纹理的一个或更多个亮度数据元素的组的数据值作为一个群组一起存储在所述缓存中;以及
与所述缓存关联地存储用于所述色度数据元素及其关联的一个或更多个亮度数据元素的组的所述数据值的标识符,所述标识符能够用于识别所述缓存中的、所述色度数据元素及其关联的一个或更多个亮度数据元素的组,并且指示在所述图形纹理中的位置。
2.根据权利要求1所述的方法,其中,
当以相同分辨率提供色度和亮度数据时,各群组YUV纹理数据包含一个色度数据值和一个亮度数据值;
当色度数据在水平方向上以所述亮度数据的分辨率的一半来提供但在垂直方向上以与所述亮度数据相同的分辨率来提供时,各群组YUV纹理数据包含一个色度数据值和两个亮度数据值;并且
当所述色度数据在水平方向和垂直方向这两者上以所述亮度数据的分辨率的一半来存储时,各群组包含一个色度数据值和四个亮度数据值。
3.根据前述权利要求中任意一项所述的方法,其中,所述缓存包括多个缓存行,并且多群组YUV纹理数据存储在缓存行中,在缓存行中存储的所述多群组纹理数据包括所述纹理的相邻色度数据元素位置及其对应的亮度数据元素位置的组。
4.根据前述权利要求中任意一项所述的方法,其中,所述标识符指示所述图形纹理中的色度数据元素的位置。
5.根据前述权利要求中任意一项所述的方法,其中,对于包括色度数据元素及其关联的一个或更多个亮度数据元素的组的纹理数据的多于一个群组提供并共同使用单个标识符。
6.根据前述权利要求中任意一项所述的方法,其中,
所述YUV纹理数据存储在存储器中,作为存储所述纹理的亮度数据的数据阵列,并且一个或更多个其他数据阵列存储所述纹理的色度数据;
并且,所述方法包括以下步骤:
从所述存储器中存储所述YUV纹理的所述色度数据的所述一个或更多个其他数据阵列读取用于色度数据元素的色度数据值;
从所述存储器中存储所述YUV纹理的所述亮度数据的所述数据阵列读取用于与值已经被读取的所述色度数据元素关联的亮度数据元素的组的一个或更多个亮度数据值;以及
在所述缓存中存储所读取的色度数据值和亮度数据值,使得用于所述色度数据元素和所述关联的一个或更多个亮度数据元素的组的所述数据值作为一个群组一起存储在所述缓存中。
7.一种操作图形处理系统的方法,在该图形处理系统中,从存储器将要在渲染渲染输出时使用的纹理的数据加载到缓存中,以便在渲染所述渲染输出时由所述图形处理系统使用,所述方法包括以下步骤:
在将存储在存储器中的图形纹理用作YUV纹理数据时,其中,所述YUV纹理数据包括存储所述纹理的亮度数据的数据阵列和存储所述纹理的色度数据的一个或更多个其他数据阵列:
从所述存储器中存储YUV纹理的所述色度数据的所述一个或更多个其他数据阵列读取用于色度数据元素的色度数据值;
从所述存储器中存储所述YUV纹理的所述亮度数据的所述数据阵列读取用于与值已经被读取的所述色度数据元素关联的亮度数据元素的组的一个或更多个亮度数据值;以及
在所述缓存中存储所读取的色度数据值和亮度数据值,使得用于所述色度数据元素和所关联的一个或更多个亮度数据元素的组的所述数据值作为一个群组一起存储在所述缓存中。
8.根据前述权利要求中任意一项所述的方法,其中,一旦所述缓存的缓存行充满有效YUV纹理数据,则所述缓存行才被指示为有效。
9.根据前述权利要求中任意一项所述的方法,所述方法还包括以下步骤:通过使用要采样纹理数据的所述YUV纹理中的位置对所述缓存进行寻址来从所述缓存读取YUV纹理数据;以及将所指示的采样位置和用于在所述缓存中存储的YUV纹理数据的所述群组的所述标识符用于识别所述缓存中的所需纹理数据。
10.根据前述权利要求中任意一项所述的方法,其中,
从所述缓存需要的纹理数据用所述YUV纹理中的样本位置来指示;并且
所述方法包括以下步骤:
将该样本位置转换成与所需要的采样位置对应的、所述YUV纹理中的色度数据元素的位置;
其中,将所述样本位置转换成所述YUV纹理中的色度数据元素的位置考虑所述色度数据元素相对于其关联的一个或更多个亮度数据元素的组的相对位置。
11.根据前述权利要求中任意一项所述的方法,所述方法还包括以下步骤:
从用于多群组纹理数据的所述亮度数据值选择亮度数据值的子集,该多群组纹理数据包括对于被采样的纹理位置从所述缓存读取的色度数据值及其关联的亮度数据值;以及
使用亮度数据值的所选择的子集对用于被采样的所述纹理位置的所述亮度数据值进行插值。
12.一种图形处理系统,该图形处理系统包括:
存储器;
图形处理单元;以及
缓存;并且
其中,从所述存储器将要在渲染渲染输出时使用的纹理的数据加载到所述缓存中,以便在渲染所述渲染输出时由所述图形处理单元使用,
所述图形处理系统还包括:
处理电路,在将存储在所述存储器中的图形纹理用作包括亮度和色度纹理数据的YUV纹理数据时,该处理电路能够操作以:
在所述缓存中存储用于所述纹理的所述YUV纹理数据,使得用于所述纹理的色度数据元素和所述关联的一个或更多个亮度数据元素的组的所述数据值作为一个群组一起存储在所述缓存中;以及
与所述缓存关联地存储用于所述色度数据元素及其关联的一个或更多个亮度数据元素的组的所述数据值的标识符,所述标识符能够用于识别所述缓存中的、所述色度数据元素及其关联的一个或更多个亮度数据元素的组,并且指示在所述图形纹理中的位置。
13.根据权利要求12所述的系统,其中,
当以相同分辨率提供色度和亮度数据时,各群组YUV纹理数据包含一个色度数据值和一个亮度数据值;
当色度数据在水平方向上以所述亮度数据的分辨率的一半来提供但在垂直方向上以与所述亮度数据相同的分辨率来提供时,各群组YUV纹理数据包含一个色度数据值和两个亮度数据值;并且
当所述色度数据在水平方向和垂直方向这两者上以所述亮度数据的分辨率的一半来存储时,各群组包含一个色度数据值和四个亮度数据值。
14.根据权利要求12或13所述的系统,其中,所述缓存包括多个缓存行,并且多个群组YUV纹理数据存储在缓存行中,在缓存行中存储的所述多个群组纹理数据包括所述纹理的相邻色度数据元素位置及其对应的亮度数据元素位置的组。
15.根据权利要求12至14中任意一项所述的系统,其中,所述标识符指示所述图形纹理中的色度数据元素的位置。
16.根据权利要求12至15中任意一项所述的系统,其中,对于包括色度数据元素及其关联的一个或更多个亮度数据元素的组的纹理数据的多于一个群组提供并共同使用单个标识符。
17.根据权利要求12至16中任意一项所述的系统,其中,
在将存储在存储器中的图形纹理用作YUV纹理数据时,其中,所述YUV纹理数据包括存储所述纹理的亮度数据的数据阵列和存储所述纹理的色度数据的一个或更多个其他数据阵列,处理电路能够操作以:
从所述存储器中存储YUV纹理的所述色度数据的所述一个或更多个其他数据阵列读取用于色度数据元素的色度数据值;
从所述存储器中存储所述YUV纹理的所述亮度数据的所述数据阵列读取用于与值已经被读取的所述色度数据元素关联的亮度数据元素的组的一个或更多个亮度数据值;以及
在所述缓存中存储所读取的色度数据值和亮度数据值,使得用于所述色度数据元素和所述关联的一个或更多个亮度数据元素的组的所述数据值一起存储在所述缓存中。
18.一种图形处理系统,该图形处理系统包括:
存储器;
图形处理单元;以及
缓存;并且
其中,从所述存储器将要在渲染渲染输出时使用的纹理的数据加载到所述缓存中,以便在渲染所述渲染输出时由所述图形处理单元使用,
所述图形处理系统还包括:
处理电路,在将存储在存储器中的图形纹理用作YUV纹理数据时,其中,所述YUV纹理数据包括存储所述纹理的亮度数据的数据阵列和存储所述纹理的色度数据的一个或更多个其他数据阵列,处理电路能够操作以:
从所述存储器中存储YUV纹理的所述色度数据的所述一个或更多个其他数据阵列读取用于色度数据元素的色度数据值;
从所述存储器中存储所述YUV纹理的所述亮度数据的所述数据阵列读取用于与值已经被读取的所述色度数据元素关联的亮度数据元素的组的一个或更多个亮度数据值;以及
在所述缓存中存储所读取的色度数据值和亮度数据值,使得用于所述色度数据元素和所关联的一个或更多个亮度数据元素的组的所述数据值一起存储在所述缓存中。
19.根据权利要求12至18中任意一项所述的系统,其中,一旦所述缓存的缓存行充满有效YUV纹理数据,则所述缓存行才被指示为有效。
20.根据权利要求12至19中任意一项所述的系统,所述系统还包括处理电路,该处理电路能够操作以通过以下操作来从所述缓存读取YUV纹理数据:使用要采样纹理数据的所述YUV纹理中的位置对所述缓存进行寻址;以及将所指示的采样位置和用于在所述缓存中存储的YUV纹理数据的群组的所述标识符用于识别所述缓存中的所需纹理数据。
21.根据权利要求12至20中任意一项所述的系统,其中,
从所述缓存需要的纹理数据用所述YUV纹理中的样本位置来指示;并且
所述系统包括:
处理电路,该处理电路能够操作以将该样本位置转换成与所需采样位置对应的、所述YUV纹理中的色度数据元素的位置;
其中,将所述样本位置转换成所述YUV纹理中的色度数据元素的位置考虑所述色度数据元素相对于其关联的一个或更多个亮度数据元素的组的相对位置。
22.根据权利要求12至21中任意一项所述的系统,所述系统还包括处理电路,该处理电路能够操作以:
从用于多个群组纹理数据的所述亮度数据值选择亮度数据值的子集,所述多个群组纹理数据包括对于被采样的纹理位置从所述缓存读取的色度数据值及其关联的亮度数据值;以及
使用亮度数据值的所选择的子集对用于被采样的纹理位置的所述亮度数据值进行插值。
23.一种包括计算机软件代码的计算机程序,该计算机软件代码用于在所述程序在数据处理装置上运行时执行根据权利要求1至11中任意一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1711269.9 | 2017-07-13 | ||
GB1711269.9A GB2564466B (en) | 2017-07-13 | 2017-07-13 | Storing YUV texture data in a cache in a graphics processing system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109255750A true CN109255750A (zh) | 2019-01-22 |
Family
ID=59713421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810771118.2A Pending CN109255750A (zh) | 2017-07-13 | 2018-07-13 | 图形处理系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10388057B2 (zh) |
KR (1) | KR20190008125A (zh) |
CN (1) | CN109255750A (zh) |
GB (1) | GB2564466B (zh) |
TW (1) | TWI762664B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021063419A1 (en) * | 2019-10-05 | 2021-04-08 | Beijing Bytedance Network Technology Co., Ltd. | Downsampling filter type for chroma blending mask generation |
US11641464B2 (en) | 2019-09-19 | 2023-05-02 | Beijing Bytedance Network Technology Co., Ltd. | Scaling window in video coding |
US11711547B2 (en) | 2019-10-12 | 2023-07-25 | Beijing Bytedance Network Technology Co., Ltd. | Use and signaling of refining video coding tools |
US11722660B2 (en) | 2019-10-13 | 2023-08-08 | Beijing Bytedance Network Technology Co., Ltd | Interplay between reference picture resampling and video coding tools |
US11743454B2 (en) | 2019-09-19 | 2023-08-29 | Beijing Bytedance Network Technology Co., Ltd | Deriving reference sample positions in video coding |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020040619A1 (ko) | 2018-08-24 | 2020-02-27 | 삼성전자 주식회사 | 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치 |
US11625332B2 (en) | 2020-01-14 | 2023-04-11 | Arm Limited | Cache miss handling for read operations in data processing systems |
US11789867B2 (en) | 2020-01-14 | 2023-10-17 | Arm Limited | Cache arrangement for data processing systems |
US11205243B2 (en) | 2020-01-14 | 2021-12-21 | Arm Limited | Data processing systems |
US11140399B1 (en) * | 2020-04-03 | 2021-10-05 | Sony Corporation | Controlling video data encoding and decoding levels |
CN111882634B (zh) * | 2020-07-24 | 2024-02-06 | 上海米哈游天命科技有限公司 | 一种图像渲染方法、装置、设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5371514A (en) * | 1991-05-16 | 1994-12-06 | International Business Machines Corporation | Method and apparatus for determining the drawing primitives that are visible in a pick aperture of a graphics system |
US5987567A (en) * | 1996-09-30 | 1999-11-16 | Apple Computer, Inc. | System and method for caching texture map information |
US6181350B1 (en) * | 1996-05-20 | 2001-01-30 | Conexant Systems, Inc. | Apparatus for, and method of, interpolating between graphics and video pixels in an expanded image |
US20020167523A1 (en) * | 1999-07-16 | 2002-11-14 | Taylor Ralph Clayton | Pixel engine |
US20030151610A1 (en) * | 2000-06-30 | 2003-08-14 | Valery Kuriakin | Method and apparatus for memory management of video images |
WO2006093383A1 (en) * | 2005-03-04 | 2006-09-08 | Samsung Electronics Co., Ltd. | Color space scalable video coding and decoding method and apparatus for the same |
US7171051B1 (en) * | 2003-06-17 | 2007-01-30 | Nvidia Corporation | Method and apparatus for performing fixed blocksize compression for texture mapping |
WO2013002589A2 (ko) * | 2011-06-28 | 2013-01-03 | 삼성전자 주식회사 | 휘도 성분 영상을 이용한 색차 성분 영상의 예측 방법 및 예측 장치 |
US20140122809A1 (en) * | 2012-10-30 | 2014-05-01 | Nvidia Corporation | Control mechanism for fine-tuned cache to backing-store synchronization |
CN104134183A (zh) * | 2013-05-02 | 2014-11-05 | Arm有限公司 | 图形处理系统 |
WO2015131328A1 (en) * | 2014-03-04 | 2015-09-11 | Microsoft Technology Licensing, Llc | Adaptive switching of color spaces, color sampling rates and/or bit depths |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6483516B1 (en) | 1998-10-09 | 2002-11-19 | National Semiconductor Corporation | Hierarchical texture cache |
US6650333B1 (en) * | 1999-06-09 | 2003-11-18 | 3Dlabs Inc., Ltd. | Multi-pool texture memory management |
US7710425B1 (en) * | 2000-06-09 | 2010-05-04 | 3Dlabs Inc. Ltd. | Graphic memory management with invisible hardware-managed page faulting |
GB0319697D0 (en) * | 2003-08-21 | 2003-09-24 | Falanx Microsystems As | Method of and apparatus for differential encoding and decoding |
US9665951B2 (en) | 2007-12-20 | 2017-05-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Unified compression/decompression graphics architecture |
US8447948B1 (en) | 2008-04-25 | 2013-05-21 | Amazon Technologies, Inc | Dynamic selective cache compression |
US8271734B1 (en) | 2008-12-05 | 2012-09-18 | Nvidia Corporation | Method and system for converting data formats using a shared cache coupled between clients and an external memory |
US8606997B2 (en) | 2008-12-23 | 2013-12-10 | Oracle America, Inc. | Cache hierarchy with bounds on levels accessed |
US9519947B2 (en) * | 2009-09-25 | 2016-12-13 | Nvidia Corporation | Architecture and instructions for accessing multi-dimensional formatted surface memory |
TWI411969B (zh) * | 2010-12-24 | 2013-10-11 | Ind Tech Res Inst | 紋理特徵點比對方法及系統 |
US9612972B2 (en) | 2012-12-03 | 2017-04-04 | Micron Technology, Inc. | Apparatuses and methods for pre-fetching and write-back for a segmented cache memory |
CN103077130B (zh) * | 2012-12-31 | 2016-03-16 | 上海算芯微电子有限公司 | 信息处理方法及装置 |
CN103077129B (zh) * | 2012-12-31 | 2016-07-13 | 上海算芯微电子有限公司 | 信息处理方法与装置 |
US9430394B2 (en) | 2013-12-12 | 2016-08-30 | Mediatek Singapore Pte. Ltd. | Storage system having data storage lines with different data storage line sizes |
US9292449B2 (en) | 2013-12-20 | 2016-03-22 | Intel Corporation | Cache memory data compression and decompression |
US9569862B2 (en) | 2014-08-15 | 2017-02-14 | Qualcomm Incorporated | Bandwidth reduction using texture lookup by adaptive shading |
US10055810B2 (en) | 2016-03-04 | 2018-08-21 | Samsung Electronics Co., Ltd. | Cache architecture for efficiently accessing texture data using buffers |
US10133673B2 (en) | 2016-03-09 | 2018-11-20 | Verizon Digital Media Services Inc. | Cache optimization based on predictive routing |
US10346306B2 (en) | 2016-04-02 | 2019-07-09 | Intel Corporation | Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions |
US10575007B2 (en) * | 2016-04-12 | 2020-02-25 | Microsoft Technology Licensing, Llc | Efficient decoding and rendering of blocks in a graphics pipeline |
CN106210883A (zh) * | 2016-08-11 | 2016-12-07 | 浙江大华技术股份有限公司 | 一种视频渲染的方法、设备 |
US10719447B2 (en) | 2016-09-26 | 2020-07-21 | Intel Corporation | Cache and compression interoperability in a graphics processor pipeline |
-
2017
- 2017-07-13 GB GB1711269.9A patent/GB2564466B/en active Active
-
2018
- 2018-06-26 TW TW107121868A patent/TWI762664B/zh active
- 2018-07-08 US US16/029,619 patent/US10388057B2/en active Active
- 2018-07-12 KR KR1020180080853A patent/KR20190008125A/ko not_active Application Discontinuation
- 2018-07-13 CN CN201810771118.2A patent/CN109255750A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5371514A (en) * | 1991-05-16 | 1994-12-06 | International Business Machines Corporation | Method and apparatus for determining the drawing primitives that are visible in a pick aperture of a graphics system |
US6181350B1 (en) * | 1996-05-20 | 2001-01-30 | Conexant Systems, Inc. | Apparatus for, and method of, interpolating between graphics and video pixels in an expanded image |
US5987567A (en) * | 1996-09-30 | 1999-11-16 | Apple Computer, Inc. | System and method for caching texture map information |
US20020167523A1 (en) * | 1999-07-16 | 2002-11-14 | Taylor Ralph Clayton | Pixel engine |
US20030151610A1 (en) * | 2000-06-30 | 2003-08-14 | Valery Kuriakin | Method and apparatus for memory management of video images |
US7171051B1 (en) * | 2003-06-17 | 2007-01-30 | Nvidia Corporation | Method and apparatus for performing fixed blocksize compression for texture mapping |
WO2006093383A1 (en) * | 2005-03-04 | 2006-09-08 | Samsung Electronics Co., Ltd. | Color space scalable video coding and decoding method and apparatus for the same |
WO2013002589A2 (ko) * | 2011-06-28 | 2013-01-03 | 삼성전자 주식회사 | 휘도 성분 영상을 이용한 색차 성분 영상의 예측 방법 및 예측 장치 |
US20140140401A1 (en) * | 2011-06-28 | 2014-05-22 | Samsung Electronics Co., Ltd. | Prediction method and apparatus for chroma component of image using luma component of image |
US20140122809A1 (en) * | 2012-10-30 | 2014-05-01 | Nvidia Corporation | Control mechanism for fine-tuned cache to backing-store synchronization |
CN104134183A (zh) * | 2013-05-02 | 2014-11-05 | Arm有限公司 | 图形处理系统 |
WO2015131328A1 (en) * | 2014-03-04 | 2015-09-11 | Microsoft Technology Licensing, Llc | Adaptive switching of color spaces, color sampling rates and/or bit depths |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11641464B2 (en) | 2019-09-19 | 2023-05-02 | Beijing Bytedance Network Technology Co., Ltd. | Scaling window in video coding |
US11743454B2 (en) | 2019-09-19 | 2023-08-29 | Beijing Bytedance Network Technology Co., Ltd | Deriving reference sample positions in video coding |
WO2021063419A1 (en) * | 2019-10-05 | 2021-04-08 | Beijing Bytedance Network Technology Co., Ltd. | Downsampling filter type for chroma blending mask generation |
US11611780B2 (en) | 2019-10-05 | 2023-03-21 | Beijing Bytedance Network Technology Co., Ltd. | Level-based signaling of video coding tools |
US11758196B2 (en) | 2019-10-05 | 2023-09-12 | Beijing Bytedance Network Technology Co., Ltd | Downsampling filter type for chroma blending mask generation |
US11711547B2 (en) | 2019-10-12 | 2023-07-25 | Beijing Bytedance Network Technology Co., Ltd. | Use and signaling of refining video coding tools |
US11743504B2 (en) | 2019-10-12 | 2023-08-29 | Beijing Bytedance Network Technology Co., Ltd | Prediction type signaling in video coding |
US11722660B2 (en) | 2019-10-13 | 2023-08-08 | Beijing Bytedance Network Technology Co., Ltd | Interplay between reference picture resampling and video coding tools |
Also Published As
Publication number | Publication date |
---|---|
GB2564466A (en) | 2019-01-16 |
GB201711269D0 (en) | 2017-08-30 |
GB2564466B (en) | 2020-01-08 |
KR20190008125A (ko) | 2019-01-23 |
US20190019323A1 (en) | 2019-01-17 |
TW201909108A (zh) | 2019-03-01 |
TWI762664B (zh) | 2022-05-01 |
US10388057B2 (en) | 2019-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109255750A (zh) | 图形处理系统 | |
US10726519B2 (en) | Cache arrangement for graphics processing systems | |
CN104424621B (zh) | 基于图块的图形处理流水线和操作图形处理流水线的方法 | |
US6819793B1 (en) | Color distribution for texture and image compression | |
US8681168B2 (en) | Methods of and apparatus for processing graphics | |
CN103533364B (zh) | 确定纹元方向的方法及设备,编码方法及设备,存储介质 | |
CN107273301B (zh) | 存储阵列的方法和设备、确定数据值的方法和设备、介质 | |
CN103503032B (zh) | 图形硬件中的纹理化 | |
US5867166A (en) | Method and system for generating images using Gsprites | |
US5864342A (en) | Method and system for rendering graphical objects to image chunks | |
JP3678428B2 (ja) | クロマキー、透明性、およびフォグ動作を行う方法および装置 | |
DE69725057T2 (de) | Gleitkommaprozessor für einen dreidimensionalen graphischen Beschleuniger | |
US6985150B2 (en) | Accelerator control unit configured to manage multiple hardware contexts | |
CN110291563A (zh) | 图形处理中的多个着色器进程 | |
US10748332B2 (en) | Hybrid frustum traced shadows systems and methods | |
CN1655191A (zh) | 基于可编程图形硬件的多边形网格模型的快速体素化方法 | |
GB2547242A (en) | Graphics processing | |
CN108024115A (zh) | 纹理压缩方法和设备以及纹理解压缩方法和设备 | |
WO2017137772A1 (en) | Graphics processing systems | |
EP1058912B1 (en) | Subsampled texture edge antialiasing | |
US20160267702A1 (en) | Graphics processing systems | |
Schmitz et al. | Efficient and quality contouring algorithms on the GPU | |
CN113436307B (zh) | 基于osgEarth影像数据到UE4场景的映射算法 | |
US6816162B2 (en) | Data management to enable video rate anti-aliasing convolution | |
US10706607B1 (en) | Graphics texture mapping |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |