CN101779219A - 用于图形系统中的变动包装和链接的方案 - Google Patents
用于图形系统中的变动包装和链接的方案 Download PDFInfo
- Publication number
- CN101779219A CN101779219A CN200880100932A CN200880100932A CN101779219A CN 101779219 A CN101779219 A CN 101779219A CN 200880100932 A CN200880100932 A CN 200880100932A CN 200880100932 A CN200880100932 A CN 200880100932A CN 101779219 A CN101779219 A CN 101779219A
- Authority
- CN
- China
- Prior art keywords
- group
- tinter
- register
- change
- packing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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/60—Memory management
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Devices For Executing Special Programs (AREA)
- Complex Calculations (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明描述一种无线装置,其对变动执行第一层级编译器包装过程和第二层级硬件包装过程。所述编译器包装过程将分量总和等于M的两个或两个以上着色器变量(变动或属性)包装到共享的M维(MD)向量寄存器中。所述硬件包装将所述着色器变量(变动或属性)的M个分量和任何剩余变量连贯地包装在顶点高速缓冲存储器或其它存储媒体中。
Description
技术领域
本发明大体上涉及图形处理领域,且更特定来说,涉及用于在图形系统中变动包装和链接的技术。
背景技术
公共图形标准OpenGL或OpenGL ES具有可使用顶点和片段着色器在每顶点和每像素操作期间进行更改的固定功能性。已开发出顶点和片段着色器以呈现默认OpenGL功能性尚未实现的特殊效果。
现参看图1,其展示具有着色器的图形处理单元(GPU)中的常规管线级的一般流程图。存在三个主要管线级:块S10处表示的顶点着色器、块S12处表示的图元装配器(primitive assembler)和光栅器以及块S14处表示的片段着色器。提供另一块S16以进行每样本操作。
顶点着色器(VS)S10是针对几何对象的每一顶点而执行的程序或计算机程序产品。VS S10的输入称作属性,其表示于块A2处。VS S10还接受顶点统一VU2作为输入,其可包括若干顶点统一0到95(即,96个顶点统一)。来自VS S10和随后图元装配器和光栅器S12的输出通常称作变动(表示于块V3处),且通常位于顶点高速缓冲存储器(存储VS输出)或其它存储媒体(存储光栅器输出)中。变动V3可能是与几何对象的三角形的像素相关联的值。与像素相关联的值为基于与几何对象的三角形的顶点相关联的VS结果来计算的图元装配器和光栅器S12的结果。与顶点相关联的VS结果和与像素相关联的变动V3具有相同名称或ID、类型和排序。与像素相关联的变动V3为到片段着色器(FS)S14的输入。FS S14还接受片段统一FU3作为输入,其大体上包括一定数目(例如,16个)的片段统一。
图2展示具有着色器的常规管线级的一般框图。对于位于图形处理单元(GPU)内部的VS S10,大体上存在八个(8)属性寄存器RA2以存储属性0到7。大体上存在八个输出变动寄存器RV3A以存储变动0到7。变动寄存器RV3A存储VS输出,其通常为顶点高速缓冲存储器。大体上存在八个输出变动寄存器RV3B以存储变动0到7。变动寄存器RV3B存储对应于与像素相关联的变动的光栅器结果。属性寄存器RA2和变动寄存器RV3A分别为以属性0到7索引的输入寄存器和以变动0到7索引的输出变动寄存器RV3。这些寄存器ID由编译器指派,所述编译器将顶点着色器和片段着色器程序从高级语言编译为机器层级语言。通过名称而非ID/索引来命名高级语言中在着色器程序中使用的寄存器。仅可从应用程序开发者处看到寄存器名称。应用程序经由寄存器名称来存取寄存器。仅可由GPU硬件(HW)中的VS S10或FS S14看到寄存器ID。因此,将由编译器建立符号表,例如VS输入符号表、输出符号表和FS输入符号表。然而,就内容、ID和名称来说,VS输入或输入符号表与输出或输出符号表并无关系。
就内容和名称来说,VS输出或输出符号表应匹配FS S14的输入或输入符号表,但FS S14的输入或输入符号表可能为VS S10的输出或输出符号表的子集。
VS S10还接受存储在存储媒体中的顶点统一VU2以及表示为T2的纹理和表示为TV2的临时变量以作为输入。图元装配器和光栅器S12接收以变动0到7索引的输出变动寄存器RV3A中的变动和参数gl_Position P。图元装配器和光栅器S12输出以变动0到7索引的输出变动寄存器RV3B中的变动和参数gl_Position P。FS S14接受存储在存储媒体中的片段统一FU3以及表示为T3的纹理和表示为TV3的临时变量以作为输入。FS S14接收以变动0到7索引的输出变动寄存器RV3B中的变动和表示为P的参数gl_Position。FS S14还接收表示为FF的额外参数gl_Frontfacing和表示为PP的gl_PointPosition。FS S14输出gl_FragColor FC。属性和变动还称作着色器变量。
发明内容
本文中描述用于图形管线中的变动包装和链接的技术。着色器变量的包装在移动GPU中是有益的,使得更有效地使用存储装置或存储器。着色器变量的包装还可减小业务带宽、节省功率且改进性能。
在一个配置中,一种装置包含具有多个共享的M维(MD)寄存器的存储媒体。所述装置还包括处理单元以实施一组操作,以将分量总和等于M的一个或一个以上着色器变量包装在每一共享的MD寄存器中。
在另一配置中,一种集成电路包含具有多个共享的M维(MD)寄存器的存储媒体。所述集成电路还包括处理单元以实施一组操作,以将分量总和等于M的一个或一个以上着色器变量包装在每一共享的MD寄存器中。
另一配置包括一种计算机程序产品。所述计算机程序产品包括计算机可读媒体,其具有用于使计算机将一组着色器变量中的分量总和等于M的一个或一个以上着色器变量包装在多个共享的MD向量寄存器中的每一共享的M维(MD)向量寄存器内的指令。
又一配置包括一种处理器,其包含具有多个共享的M维(MD)寄存器的存储媒体。所述处理器还包括集成电路以实施一组操作,以将分量总和等于M的一个或一个以上着色器变量包装在每一共享MD寄存器中。
将从“具体实施方式”更容易地明白额外方面,在结合附图考虑时尤其如此。
附图说明
当结合图式考虑时,通过以下陈述的详细描述将更加明白本发明的方面和配置,在图式中,相同参考符号始终识别对应者。
图1展示具有着色器的图形处理单元中的常规管线级的一般流程图。
图2展示具有着色器的常规管线级的一般框图。
图3展示无线装置的框图。
图4展示用于顶点着色器和包装操作的图形处理单元(GPU)的一般框图。
图5展示具有片段着色器和链接操作的图形处理单元(GPU)的一般框图。
图6展示驱动器的一般框图。
图7展示二层级着色器变量包装过程的一般流程图。
图8A和图8B展示移除绕过的属性之前和之后的顶点着色器程序。
图9A和图9B展示移除绕过的属性之前和之后的另一顶点着色器程序。
图10A和图10B展示移除绕过的属性之前和之后的又一顶点着色器程序。
图11A和图11B展示移除绕过的属性之前和之后的又一顶点着色器程序。
图12A和图12B展示移除绕过的属性之前和之后的又一顶点着色器程序。
图13A到图13C展示与属性的绕过相组合的着色器变量包装过程的一般流程图。
图14展示链接过程的一般流程图。
图式中的图像出于说明的目的而被简化,且并未按比例描绘。为了便于理解,在可能的情况下均使用相同参考数字来指示各图中共同的相同元件,但在适当的时候可附加后缀来区分所述元件。
附图说明本发明的示范性配置,且因而,不应视为限制本发明的范围,本发明的范围可许可其它同等有效的配置。预期一个配置的特征或步骤可有利地并入于其它配置中,而无需进一步陈述。
在以上各种配置中,以所描绘的次序执行流程图方框或可同时、并行或以不同次序执行这些方框或其部分。
具体实施方式
本文中使用词语“示范性”以指“充当实例、例子或说明”。不必将本文中描述为“示范性”的任何配置或设计解释为比其它配置或设计优选或有利。
本文中所描述的技术可用于无线通信、计算、个人电子器件等。下文中描述用于无线通信的技术的示范性使用。
图3展示用于在无线通信系统中使用的无线装置10的配置的框图。无线装置10可为蜂窝式或相机电话、终端、手持机、个人数字助理(PDA)或某一其它装置。无线通信系统可为码分多址(CDMA)系统、全球移动通信系统(GSM)或某一其它系统。
无线装置10能够经由接收路径和发射路径而提供双向通信。在接收路径上,基站发射的信号由天线12接收并提供到接收器(RCVR)14。接收器14调节并数字化所接收的信号且将样本提供到数字区段20以供进一步处理。在发射路径上,发射器(TMTR)16接收待从数字区段20发射的数据、处理并调节所述数据且产生经调制的信号,经由天线12将所述信号发射到基站。
数字区段20包括各种处理、接口和存储器单元,例如调制解调器处理器22、视频处理器24、控制器/处理器26、显示器处理器28、ARM/DSP 32、图形处理单元(GPU)34、内部存储器36和外部总线接口(EBI)38。调制解调器处理器22执行处理以用于数据发射和接收(例如,编码、调制、解调和解码)。视频处理器24对视频内容(例如,静态图像、运动视频和运动文本)执行处理以用于例如摄录机、视频回放和视频会议等视频应用。控制器/处理器26可引导数字区段20内的各种处理和接口单元的操作。显示器处理器28执行处理以促进在显示器单元30上显示视频、图形和文字。ARM/DSP 32可针对无线装置10执行各种类型的处理。图形处理单元34执行图形管线的图形处理。
可使用本文中所描述的技术以用于数字区段20中的处理器中的任一者,例如,图形处理单元34。内部存储器36存储用于数字区段20内的各个单元的数据和/或指令。EBI 38促进沿总线或数据线DL在数字区段20(例如,内部存储器36)与主存储器40之间传递数据。
可用一个或一个以上DSP、微处理器、RISC等来实施数字区段20。数字区段20还可制造于一个或一个以上专用集成电路(ASIC)或某一其它类型的集成电路(IC)上。
可在各种硬件单元中实施本文中描述的技术。举例来说,所述技术可实施于ASIC、DSP、RISC、ARM、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器和其它电子单元中。
GPU 34还可顺从例如OpenGL2.0、OpenGL ES2.0或D3D9.0的公共图形标准。
图4展示用于顶点着色器和包装操作的图形处理单元(GPU)34的一般框图。GPU34包括向VS输入寄存器堆56输出多个属性的流解码器50。这些属性由顶点着色器(VS)60接受。VS 60的输出包括存储在VS输出寄存器堆57中的变动。如可了解,“寄存器”堆为例如用以存储信息的存储媒体等硬件组件。在此例子中,“VS输入寄存器堆”存储待发送到VS 60的输入文件。为简便起见,在大多数例子中,当提及VS输入寄存器堆56时,是指VS 60和/或用于存储“输入文件”的硬件的“输入文件”。同样,为简便起见,在大多数例子中,当提及VS输出寄存器堆57时,是指VS 60和/或用于存储“输出文件”的硬件的“输出文件”。如稍后将更详细地描述,由编译器62(图6)智能地包装这些变动以用于第一层级变动包装。连续逐次地或以链式顺序将VS输出寄存器堆57中的变动发送到包装缓冲器58,其将所述变动包装在第二层级变动包装中。当填充包装缓冲器58时,接着将经包装的变动存储在顶点高速缓冲存储器54中。
如将在以下描述中所见,VS输出寄存器堆57和VS输入寄存器堆56各包括多个共享的M维(MD)寄存器。包装缓冲器58和52中的每一者包括至少一个共享的M维(MD)寄存器。
在图4的配置中,流解码器50产生两个流:一绕过流和一非绕过流。非绕过流被发送到VS输入寄存器堆56且优选还以表1所示的方式包装。将绕过的属性包装在包装缓冲器52中。稍后将关于图8A、图8B、图9A、图9B、图10A、图10B、图11A、图11B、图12A和图12B详细描述绕过的属性。
图5展示具有片段着色器和链接操作的图形处理单元(GPU)的一般框图。将经包装的变动存储在顶点高速缓冲存储器54中。图元装配器和光栅器90接受顶点高速缓冲存储器54中的变动作为输入。图元装配器和光栅器90将经包装的变动输出到变动缓冲器92中。链接单元88具有由变动重新映射和加载模块84使用的一组链接指令82。图6中的链接器80产生链接表86,其由驱动器61加载到用于图5中的链接指令82的存储装置中。以下陈述的表4和表6中展示链接表86的一实例,其将VS输出符号表(表2)中的经包装的变动链接到FS输入符号表(表3)。FS输入符号表可具有少于VS输出符号表的符号。在由链接单元88执行链接过程之后,将来自变动重新映射和加载模块84的变动发送到FS输入寄存器堆79以供片段着色器(FS)70使用。
图6展示驱动器的一般框图。驱动器61包括编译器62和链接器80。编译器62产生VS输入符号表64和VS输出符号表66。下文于表1中展示示范性VS输入符号表。下文于表2中展示示范性VS输出符号表。由于编译器62可独立编译顶点着色器60与片段着色器70,所以编译器62可在VS输出符号表66中向同一符号指派不同于FS输入符号表74中的ID的ID。因此,存在一链接器80用于使驱动器61通过在VS输出符号表66与FS输入符号表74中查找相同符号而在VS输出符号表66中的寄存器ID与FS输入符号表74中的寄存器ID之间进行映射。链接器80与GPU 34通信以针对同一变动符号向片段着色器70的输入寄存器堆79中的对应输入寄存器加载变动(对应于顶点高速缓冲存储器54或变动缓冲器92中的位置)。
驱动器61为具有一组指令的软件驱动器。编译器62和链接器80为在CPU 32或控制器/处理器26上运行的软件驱动器61的部分,而GPU 34为由驱动器61指令的特殊协处理器。
表1所示的VS输入符号表包括以下条目:属性名称、类型、最初指派的属性输入寄存器ID、原始掩码、新指派的属性输入寄存器ID和新掩码。表2所示的VS输出符号表包括以下条目:变动名称、类型、最初指派的变动输出寄存器ID、原始掩码、新指派的变动输出寄存器ID和新掩码。表中的掩码表示属性向量或变动向量的有效分量,其对应于在GPU 34的硬件(HW)中分配的默认MD(M=4)向量寄存器存储。仅为说明起见而将最初指派的ID与掩码以及新指派的ID与掩码一起置于下表中。实际上,最初指派的ID与掩码可能为临时结果,且将通过在操作期间使用同一存储位置而变为新指派的ID与掩码。
编译器62产生FS输入符号表74和FS输出76,其表示为gl_FragColor FC(图2)。表3所示的FS输入符号表74包括以下条目:变动名称、类型、最初指派的变动输入寄存器ID、原始掩码、新指派的变动输入寄存器ID和新掩码。
在以下表1和表2中,根据稍后描述的包装过程而新近更新最后两行。
表1:VS输入符号表
属性名称 | 类型 | 最初指派的属性输入寄存器ID | 原始掩码 | 新指派的属性输入寄存器ID | 新掩码 |
position0 | 浮动向量4 | 0 | 1111 | 0 | 1111 |
position1 | 浮动向量3 | 1 | 0111 | 1 | 0111 |
Weight | 浮动 | 5 | 0001 | 2 | 1000 |
Normal | 短浮动向量3 | 2 | 0111 | 2 | 0111 |
Texcoord0 | 浮动向量2 | 3 | 0011 | 3 | 0011 |
Texcoord1 | 浮动向量2 | 4 | 0011 | 3 | 1100 |
表2:VS输出符号表
变动名称 | 类型 | 最初指派的变动输出寄存器ID | 原始掩码 | 新指派的变动输出寄存器ID | 新掩码 |
position | 浮动向量4 | 1 | 1111 | 1 | 1111 |
color0 | 浮动向量4 | 2 | 1111 | 2 | 1111 |
color1 | 浮动向量3 | 3 | 0111 | 3 | 0111 |
Texcoord0 | 浮动向量2 | 0 | 0011 | 0 | 0011 |
Texcoord1 | 浮动向量2 | 5 | 0011 | 0 | 1100 |
Texcoord2 | 浮动向量3 | 4 | 0111 | 4 | 0111 |
表3:FS输入符号表
变动名称 | 类型 | 最初指派的变动输入寄存器ID | 原始掩码 | 新指派的变动输入寄存器ID | 新掩码 |
Color0 | 浮动向量4 | 0 | 1111 | 2 | 1111 |
Color1 | 浮动向量3 | 1 | 0111 | 0 | 0111 |
texcoord0 | 浮动向量2 | 3 | 0011 | 1 | 0011 |
texcoord1 | 浮动向量2 | 2 | 0011 | 1 | 1100 |
表4:VS输出和FS输入的链接表
变动名称 | 最初指派的VS变动输出寄存器ID | 最初指派的FS变动输入寄存器ID | 原始掩码 | 新指派的VS变动输出寄存器ID | 新指派的FS变动输入寄存器ID | 新掩码 |
Position | 1 | 1 | ||||
color0 | 2 | 2 | 1111 | 2 | 2 | 1111 |
变动名称 | 最初指派的VS变动输出寄存器ID | 最初指派的FS变动输入寄存器ID | 原始掩码 | 新指派的VS变动输出寄存器ID | 新指派的FS变动输入寄存器ID | 新掩码 |
color1 | 3 | 3 | 0111 | 3 | 0 | 0111 |
Texcoord0 | 0 | 1 | 0011 | 0 | 1 | 0011 |
Texcoord1 | 5 | 1 | 1100 | 0 | 1 | 1100 |
Texcoord2 | 4 | 4 |
变动可能为浮动、二维(2D)向量、三维(3D)向量、四维(4D)向量、阵列和2D/3D/4D矩阵等。OpenGL ES着色语言规范要求在移动GPU 34中支持至少32个变动分量。每一变动具有不同大小且通常占用其自身的寄存器/缓冲器空间。在顶点高速缓冲存储器54中,寄存器通常为4D向量。此外,对应于VS输入寄存器堆56的寄存器和对应于VS输出寄存器堆57的寄存器通常为4D向量。变动包装在每一顶点或像素的连续空间中将不同变动紧密放在一起。举例来说,本文中描述的变动包装将两个2D向量放在4D向量寄存器中。在另一实例中,变动包装将把一3D向量和一浮动(1D)放在一4D向量寄存器中。如果不紧密地对其包装,则其可能被松散地存储。
以上描述涉及变动。然而,除了变动之外,还可包装属性。
图7展示二层级着色器变量包装过程100的一般流程图。所述过程100开始于方框102,其中发生由编译器62指令的智能包装。在方框102处,将分量总和等于M的两个或两个以上着色器变量指派到共享的M维(MD)向量寄存器。为准许说明,以列和行来展示VS输出寄存器堆57。每一行具有表示为X、Y、Z和W的四个(4)块。方框102之后为方框104,在方框104处,在包装缓冲器58中发生硬件变动包装,其将VS输出寄存器堆57中的着色器变量连贯地且逐次地包装在顶点高速缓冲存储器54的N×M存储媒体块中。图7的着色器变量为变动。
如将从以下描述中所见,类似于关于图13A描述的方框104的过程,将绕过的属性包装在包装缓冲器52中。可使用上文中关于方框102描述的过程来包装非绕过的属性。因此,包装过程100的各级可用于属性。因此,着色器变量包括变动或属性。
第一层级:编译器层级包装
下文将关于以上表1和表2来描述由编译器62指令的方框102处的智能包装。所述智能包装适用于着色器变量(变动和属性两者)。表1说明属性包装,且表2说明变动包装。编译器62通过将具有与其相关联的寄存器ID的同一或共同MD(M维)向量寄存器重新指派到分量总和等于M(M=4)的两个或两个以上变动来执行非绕过的属性或变动包装,且相应地更新掩码。属性的MD向量寄存器对应于用于图4中的VS输入寄存器堆56的存储装置。变动的MD向量寄存器对应于用于图4中的VS输出寄存器堆57的存储装置。在示范性配置中,M=4,因此将向量表示为X、Y、Z和W。然而,可使用具有更多或更少维度的其它配置。
掩码具有M位位置。因此,使用与特定MD向量寄存器的每一重新指派和/或组合的属性或变动(着色器变量)相关联的掩码来指定或区分将共享的MD向量寄存器的哪一部分指派给(组合的)每一相异属性或变动以供稍后再调用和使用。
举例来说,通过特定参看以上表1,texcoord0和texcoord1分别为列最初指派的属性输入寄存器ID中由ID号3和4来表示的最初指派的不同属性输入寄存器。此外,texcoord0和texcoord1的原始掩码分别为0011和0011。编译器62确定texcoord0和texcoord1均为2D向量,其向量总和等于4D(M=4)向量。因此,编译器62指令将texcoord0和texcoord1包装到由列新指派的属性输入寄存器ID中的ID号3来表示的同一属性寄存器中。在包装期间,可向texcoord0指派掩码的最低有效位位置0011,且可向texcoord1指派表1中的新掩码列中所表示的掩码的最高有效位位置1100。掩码0011指定可在MD向量寄存器3的哪一部分中找到对应于texcoord0的数据。同样,掩码1100指定可在MD向量寄存器3的哪一部分中找到对应于texcoord1的数据。此命名法允许两个或两个以上属性以非重叠的方式共享一共同寄存器。如可了解,掩码中的位数目将视维度而改变。
通过特定参看VS输出符号表66的变动texcoord0和texcoord1,如最佳在表2中所见,其被包装到具有在列新指派的变动寄存器输出ID中表示的ID号0的同一变动寄存器中。texcoord0的新掩码为0011,其与旧掩码相同。然而,texcoord1的新掩码为1100,其与旧掩码不同。因此,掩码具有M个位,每一位表示在共享的MD向量寄存器中的位置。
在另一实例中,VS输入符号表64的属性Weight和Normal被包装到具有在表1的新指派的属性输入寄存器ID中表示的ID号2的同一属性寄存器中。在编译器62指令重新指派寄存器ID和新掩码之后,GPU 34的硬件(HW)将自动根据表样指令(其具有更新的掩码)将对应的着色器变量(属性或变动)加载到所指派的寄存器中,此完成由编译器62指令的第一层级包装。
可在逻辑上将阵列或矩阵划分为2D/3D/4D向量或单个浮动,接着可执行由编译器62指令的包装。可由一系列浮动、2D向量、3D向量或4D向量来表示一阵列。举例来说,可将具有10个浮动的阵列划分为两个4D向量加上一个2D向量,或10个个别浮动。可分别将矩阵2×2划分为两个2D向量,将矩阵3×3划分为三个3D向量且将矩阵4×4划分为四个4D向量。因此,编译器62可指令以下情形的包装:2D向量+2D向量;3D向量+浮动;2D向量+浮动[+浮动];以及浮动+浮动[+浮动[+浮动]]。这些实例是针对4D向量寄存器。可基于维度数构想其它组合。可通过第一层级包装来最小化对输入寄存器堆和输出寄存器堆的使用。
在进行编译器62指令的包装之后,所有着色器变量(变动)可能仍未布置在4D(MD)向量中,举例来说,可能存在一些3D向量、一些4D向量等。在示范性配置中,执行用于针对第二层级的变动包装使HW将变动紧密包装在变动存储装置或顶点高速缓冲存储器54中的机制。
第二层级:HW包装
在变动存储装置或顶点高速缓冲存储器54中,将顶点或像素的所有变动存储在N×M缓冲器块中。N为变动的数目;M=4指4D向量。可将存储块视为若干(N×M个)连续(连贯)分量。对于32位/分量和M=4,可用0到((N×4)-1)对分量进行编号。举例来说,N=8,可将8×4存储媒体块视为用0到31编号的32个连续(连贯)分量。
在图4中,将包装缓冲器58表示为2×M(M=4)槽阵列。箭头指示包装缓冲器58中的槽的填充方向。包装缓冲器58的顶部行表示为临时缓冲器58A,而第二行表示为工作缓冲器58B。表5说明HW包装结果。
表5-从VS输出寄存器堆向变动存储装置或顶点高速缓冲存储器传递时的包装
可通过首先连贯地逐次地填充临时缓冲器58A(包装缓冲器58的第一行)而在HW中完成第二层级包装。在包装缓冲器58的临时缓冲器58A满了之后,可传递临时缓冲器58A的内容以用于存储在顶点高速缓冲存储器54中。在此配置中,包装缓冲器58包括指定为临时缓冲器58A的第一行M个槽和指定为工作缓冲器的第二行M个槽。
使用表5中陈述的实例,以从VS输出寄存器堆57中读取具有表示为V0.x、V0.y和V0.z的三个分量的变动V0且连贯地以变动V0.x、V0.y和V0.z来填充临时缓冲器58A(上部行)的槽X、Y、Z和W来开始HW包装。如可见,临时缓冲器58A的槽W为空的。未将变动V0.x、V0.y和V0.z发送到顶点高速缓冲存储器54,直到临时缓冲器58A满了为止。
通过从VS输出寄存器堆57处读取具有表示为V1.x、V1.y、V1.z和V1.w的四个分量的变动V1且填充临时缓冲器58A中的剩余槽来继续HW包装。在此情形中,以变动V1.x来填充临时缓冲器58A(上部行)的槽W。将剩余变动分量V1.y、V1.z和V1.w连贯地填充在第二行或工作缓冲器58B的槽X、Y和Z中。当完全填充临时缓冲器58A时,可将临时缓冲器58A的内容写入到顶点高速缓冲存储器54的(第一)行中以清空临时缓冲器58A。
如果临时缓冲器58A为空的,则将连贯地填充在工作缓冲器58B的槽X、Y和Z中的剩余变动分量V1.y、V1.z和V1.w的内容传递到临时缓冲器58A。再次,临时缓冲器58A未满。因此,通过从VS输出寄存器堆57处读取具有表示为V2.x和V2.y的两个分量的变动V2且填充临时缓冲器58A中的剩余槽来继续HW包装。在此情形中,以变动V2.x来填充临时缓冲器58A(上部行)的槽W。将剩余变动分量V2.y填充在第二行或工作缓冲器58B的槽X中。当完全填充临时缓冲器58A时,可将临时缓冲器58A的内容写入到顶点高速缓冲存储器54的(第二)行中以清空临时缓冲器58A。
针对VS输出寄存器堆57中的变动继续此过程。在所述实例中,由于最后的变动仅填充临时缓冲器58A的X、Y和Z槽,所以用掩码=xyz或(111)将内容写入到变动存储装置或顶点高速缓冲存储器54。
包装缓冲器58的临时缓冲器58A和工作缓冲器58B是针对性能的。当临时缓冲器58A满了且准备好写出到变动存储装置或顶点高速缓冲存储器54中,另一缓冲器(工作缓冲器58B)可同时被填充。可同时使用读取总线和写入总线来用于四个(M)分量。如果一个读取或写入数据小于4个分量,则使用读取或写入掩码来指示哪些分量有效以进行读取或写入。
在完成第二层级HW包装之后,对应于表4中的对应于VS输出符号表(表2)中的经包装的变动的新指派的VS变动输出寄存器ID的寄存器ID将改变以对应于表6中的列新指派的VS变动输出寄存器ID中所表示的变动存储装置或顶点高速缓冲存储器54。为简便和灵活起见,基于分量单元而非向量寄存器来指派与顶点高速缓冲存储器54中的位置的输出ID关系。对于此实例,假设将ID=0的texcoord0和ID=2的texcoord1包装到变动存储装置或顶点高速缓冲存储器54的第一行中,将ID=4的color0包装到第二行中且将ID=8的color1包装到第三行中。FS 70中不使用位置和texcoord2,因此FS输入寄存器堆79中不针对其分配存储/包装。因此,表4或表6中不提供新指派的FS变动输入寄存器ID。
通过HW来完成第二层级HW包装,但由驱动器61的链接器80来更新例如表6所示的链接表86。驱动器61能够基于图4中的相同的包装机构和VS输入符号表64和输出符号表66以及FS输入符号表74等来计算每一变动分量的变动存储装置或顶点高速缓冲存储器54中的新寄存器ID/分量ID。表4说明在不进行第二层级HW包装时链接表将表示的内容。表6说明在进行HW包装之后链接表将表示的内容。
表6-第二层级HW包装之后的VS输出和FS输入的链接表
变动名称 | 新指派的VS | 新指派的FS | 新掩码 |
(变动)输出ID | (变动)输入ID | ||
位置 | |||
color0 | 4 | 2 | 1111 |
color1 | 8 | 3 | 0111 |
Texcoord0 | 0 | 1 | 0011 |
Texcoord1 | 2 | 1 | 1100 |
Texcoord2 |
绕过的属性
例如VS 60的可编程顶点着色器为PC游戏装置和移动装置中的现代GPU中的关键计算单元。VS 60在计算方面消耗功率且通常还为性能瓶颈。然而,一些应用可能不使用着色器功能性。另一考虑在于,VS 60的一些输入可在无需进行任何计算的情况下直接移动到输出。
功能性的最简单的解决方案是将所有输入传递到顶点着色器内,其中顶点着色器执行移动指令。然而,所述解决方案将消耗大量计算能力且使顶点着色器的性能降低。性能降低是因为:1)数据输入/输出的不必要的业务带宽;以及2)在顶点着色器中执行的不必要的移动指令。
因此,用来自输入流解码器50的输入绕过路径来建构和布置GPU 34。输入绕过路径可直接通向顶点高速缓冲存储器54。驱动器61或编译器62可指定哪些输入可直接绕过到顶点高速缓冲存储器54且哪些输入应被载入到顶点着色器60中。编译器62将针对绕过输入从着色器程序中移除所有不必要的移动指令。
图4中以虚线展示的小型硬件控制逻辑51位于输入流解码器50中。因此,当将所接收的输入被指定为“绕过”时,在进行输入格式解码后,将沿绕过路径发送输入并将其存储在顶点高速缓冲存储器54中。仅所接收的未表示为“绕过”的输入将被包装在VS输入寄存器堆56中且发送到顶点着色器60。
在示范性实施例中,在存储于顶点高速缓冲存储器54中之前将绕过的属性包装在包装缓冲器52中。编译器62将以上文关于包装缓冲器58A描述的方式来修改掩码和/或寄存器ID。将连同绕过输入将高速缓冲存储器索引传递到顶点高速缓冲存储器54。来自顶点着色器60的输出对于同一顶点将具有相同的ID/索引,因此,顶点高速缓冲存储器54可轻易地使绕过输入与顶点着色器输出同步。
图8A和图8B展示移除绕过属性之前和之后的顶点着色器程序。一些顶点着色器具有位于由L3和L4表示的线上的MOV指令。MOV指令引起从与属性相关联的输入寄存器到与变动相关联的输出寄存器的移动。可从顶点着色器60绕过所述属性。举例来说,在图8A中,参数v0、v1、v2为输入属性,且oPos、oFog、oT0和oD0为输出变动。在此实例中,线L1和L3上的输入属性v1与线L2和L4上的输入属性v2不涉及顶点着色器60中的任何计算且仅被移动到oT0和oD0。因此,可在执行顶点着色器60的程序(指令集)之前将属性v1和v2直接绕过到变动存储装置或顶点高速缓冲存储器54。在属性v1和v2被绕过之后,其将不被发送到顶点着色器60中,此是通过删除图8B中的线L1、L2、L3和L4来表示。此外,未从顶点着色器60输出输出变动oT0和oD0,此是通过图8B中缺少线L3和L4来表示。因此,绕过功能性节省业务带宽和顶点着色器计算能力。
对于属性绕过,如下文所述调整第二层级HW包装。绕过的属性仅在包装缓冲器52中经受第二层级HW包装。包装缓冲器52从流解码器50处接收绕过的属性。流解码器50负责从主(外部)存储器40中获取顶点流(属性)和从不同属性格式到IEEE浮动格式的格式转换。驱动器61将向流解码器50传达哪些属性将被绕过以及哪些属性将被发送到顶点着色器60的VS输入寄存器堆56。将使用以上临时缓冲器58A和工作缓冲器58B以与上文所述相同的方式来包装绕过的属性。非绕过的属性将被发送到顶点着色器60的VS输入寄存器堆56并包装在其中。
来自绕过的属性和VS输出寄存器堆57两者的变动将填充在整个变动存储装置或顶点高速缓冲存储器54中以作为整个变动占据区域。为简便起见,来自绕过的属性的变动被包装并存储在变动存储装置或顶点高速缓冲存储器54的前几行中,且在包装缓冲器58中包装的VS输出随后被存储在变动存储装置或顶点高速缓冲存储器54中。举例来说,再次参看图8A,将变动输出(绕过的属性)oD0(v2)包装在包装缓冲器52的临时缓冲器52A中且将其存储在变动存储装置或顶点高速缓冲存储器54的第一行中。变动输出(绕过的属性)oT0(v1)被包装或存储在变动存储装置或顶点高速缓冲存储器54的第二行中的两个低有效分量中。随后将从第二行的两个最高有效分量开始包装或存储VS输出oPos和oFog。在此情形中,将在临时缓冲器的zw槽处包装oPos.xy且接着用写入掩码=zw将其写入到变动存储装置或顶点高速缓冲存储器54的第二行。因此,其在oT0之后被连贯地包装于同一行中但在不同分量位置处。oPos.zw和oFog将被包装在工作缓冲器52B中的xyz分量槽处且用写入掩码=xyz将其写入到变动存储装置或顶点高速缓冲存储器的第三行中。将相应地更新链接表86。
图9A和图9B展示移除绕过属性之前和之后的另一顶点着色器程序。可绕过位于由箭头L5、L6、L7、L8和L9表示的线上的移动指令。举例来说,在由箭头L5表示的线上,可绕过变动输出oT0(v1)。也可绕过其它变动输出oT1(v1)、oT2(v3)、oD0(v4)和oD1(v5)。在图9B中,移除图9A的箭头L5、L6、L7、L8和L9所表示的线。
图10A和图10B展示移除绕过属性之前和之后的又一顶点着色器程序。可绕过位于由箭头L10和L11表示的线上的移动指令。在图10B中,移除图10A中由箭头L10和L11表示的线。
图11A和图11B展示移除绕过属性之前和之后的又一顶点着色器程序。可绕过位于由箭头L12、L13、L14、L15和L16表示的线上的移动指令。在图11B中,移除图11A的箭头L12、L13、L14、L15和L16所表示的线。
图12A和图12B展示移除绕过属性之前和之后的又一顶点着色器程序。可绕过位于由箭头L17和L18表示的线上的移动指令。在图12B中,移除由图12A的箭头L17和L18表示的线。图8A、图8B、图9A、图9B、图10A、图10B、图11A、图11B、图12A和图12B中所示的实例仅出于说明目的,且可将不要求计算的其它移动指令或属性指定为“绕过属性”。
可容易看到,绕过属性过程的优势包括:1)减小着色器程序代码大小和执行指令;2)减小输入/输出的业务带宽;3)减小寄存器堆大小以允许更多顶点覆盖ALU(算术和逻辑单元)等待时间和纹理载入等待时间;4)归因于更少指令和更多顶点来覆盖等待时间而产生的更佳性能;5)归因于更少的所执行指令和更少业务而产生的功率节省;6)着色器绕过/停用的通用性;7)使驱动器61通过将着色器程序的一部分移动到CPU或DSP以用于CPU/DSP 32与GPU 34之间的负载平衡而调谐性能的选项;以及8)使驱动器61针对意外问题工作的选项。
已确定,来自真实游戏和基准的大多数顶点着色器(VS)的一些输入直接移动到输出。表7说明不同着色器程序以及基于本文中所描述的绕过功能性的所节省的输入业务与所节省的输出业务的比较。表7还提供所节省的指令的比率。
表7业务带宽和计算节省
着色器 | 所节省的输入业务(DW) | 所节省的输出业务(DW) | 所节省的指令(标量) |
VSF8(3DMark06)(图12A和图12B) | 4/17=23.5% | 4/27=14.8% | 4/97=4.1% |
着色器 | 所节省的输入业务(DW) | 所节省的输出业务(DW) | 所节省的指令(标量) |
VSF12(FarCry)(图8A和图8B) | 6/10=60% | 6/11=54.5% | 4/28=14.3% |
VSF14(FarCry)(图9A和图9B) | 13/21=61.9% | 15/20=75% | 15/70=21.4% |
VSF17(FarCry)(图10A和图10B) | 0% | 3/7=42.8% | 3/19=16.8% |
VSF25(FarCry)(图11A和图11B) | 9/13=69.2% | 15/21=71.4% | 15/61=24.6% |
图13A到图13C展示与属性的绕过相组合的着色器变量包装过程200的一般流程图。将关于图4的框图来描述着色器变量包装过程200。着色器变量包装过程200开始于方框201,在方框201处,由(例如)流解码器50对输入属性格式进行解码。方框201之后为方框202,在方框202处,作出来自流解码器50的属性是否为“绕过的属性”的确定。如果确定为“是”,则方框202之后为方框204,在方框204处,有效(绕过的)属性分量积聚到临时缓冲器52A中。方框204之后为方框206,在方框206处,作出临时缓冲器52A是否存满的确定。举例来说,可将至多M(M=4)个绕过的属性分量填充于临时缓冲器52A中。通过还填充工作缓冲器52B来填充临时缓冲器52A。
然而,如果方框206的确定为“否”,则过程循环到方框211。方框211为确定块,其评估是否已到达最后一个输入属性。稍后将描述方框211的细节。
当临时缓冲器52A存满时,方框206之后为方框208,在方框208处,将存储或填充在临时缓冲器52A中的绕过的属性分量发送到并存储于顶点高速缓冲存储器54中。如上文所述,接着将工作缓冲器52B中的绕过的属性传递到临时缓冲器52A,直到填充或重新充填。方框208之后为稍后将描述的方框211。
再次返回方框202,如果属性为非绕过的属性(意味着方框202的确定为“否”),则根据预定义的包装指令,将在方框210处将非绕过的属性包装到VS输入寄存器堆56中。方框210之后为方框211,在方框211处,作出是否已到达最后一个输入属性的确定。如果确定为“否”,则方框211循环返回到方框201,在方框201处,对更多输入属性进行解码。否则,如果确定为“是”,则方框211之后为方框212,在方框212处,将临时缓冲器52A中的剩余绕过的属性发送到顶点高速缓冲存储器54。
方框212之后为方框213,在方框213处,作出是否存在任何可用的非绕过的属性的确定。如果确定为“否”,则过程200结束。然而,如果方框213的确定为“是”,则方框213之后为图13B的方框214。在方框214处,接着将非绕过的属性发送到VS 60。在已将非绕过的属性分量发送到VS 60之后,在方框216处,VS 60执行顶点着色操作。在VS 60完成之后,在执行着色器指令期间将有效输出变动分量自动包装到VS输出寄存器堆57中,在方框218处,其完成第一层级编译器包装。方框218处的包装对应于图7的方框102。
方框218之后为图13C的方框222。如上文中关于表5所描述,来自VS输出寄存器堆57的输出变动积聚在临时缓冲器58A中。临时缓冲器58A与工作缓冲器58B组合地被填充。方框222之后为方框224,其用以确定临时缓冲器58A是否存满。如果“否”,则过程返回到方框222。如果确定为“是”,则方框224之后为方框226,在方框226处,将临时缓冲器58A的内容发送到顶点高速缓冲存储器54。方框226之后为方框228,在方框228处,作出是否为VS输出寄存器堆57中的文件的末尾的确定。如果确定为“否”,则过程返回到方框222。如果确定为“是”,则方框228之后为方框230,在方框230处,将临时缓冲器58A中的剩余变动分量发送到顶点高速缓冲存储器54。
包装之后,业务带宽减小。存储器被高度利用且性能还得以改善。
可使用替代性包装机制。举例来说,不使用第二层级HW包装来包装VS输出寄存器堆57中的变动。而是,在顶点高速缓冲存储器54中照原样复制文件57。关于表5,将表5的左手侧复制到顶点高速缓冲存储器54。此保持相同布局和形状。在图元装配器和光栅器90之后完成相同包装机制,其中将光栅器结果发送到变动缓冲器92。图元装配器和光栅器90将跳过基于表2中的掩码来计算无效(掩码=0)分量,从而节省计算。
链接器和链接
来自VS 60的变动将为FS 70的输入。因此,由编译器62产生VS 60的变动符号且将其输入VS输出符号表66中。FS 70的相应输入限于VS输出符号表66中的如由其变动符号或变动名称界定的相应变动符号输出。因此,如果VS输出符号表66(表1)中由变动名称表示的变动符号与FS输入符号表74(表3)中由FS变动名称表示的一个条目相匹配,则来自VS 60的输出(变动)限于FS 70的输入。链接器80确定哪一VS输出限于哪一FS输入,因为VS 60中的次序和包装通常不同于FS 70。链接器80为驱动器61的一部分,其产生链接指令82或链接表86以用于图5中的变动重新映射和加载模块84。
将一类似的链接解决方案应用于顶点流解码器50与VS输入符号表64所表示的VS输入之间的链接。此外,应用链接解决方案以用于链接FS输出符号表76所表示的FS输出与每样本操作单元的输入。可将链接器80用于任何两个相邻的可编程处理级。
图14展示链接过程300的一般流程图。链接过程300开始于方框302,其中链接器80在方框302处搜索并比较来自VS输出符号表66与FS输入符号表76的相同符号。在方框304处,从变动缓冲器92中读取与匹配符号相关联的变动。方框206将变动发送到FS输入寄存器堆79。由此完成链接。表6中展示一示范性所得链接表。针对FS 70所要求的每一变动重复链接过程300。
归因于编译器62中的包装,VS输出符号表66不同于FS输入符号表76。因此,以每一变动分量为基础界定优选的链接指令。
如可看到,二层级包装使得可能且易于进行紧密的变动包装。第一层级编译器包装使得输入和输出较少,其减小寄存器堆占据区域大小。HW包装简单且有效。包装过程进一步减小输入/输出的业务带宽。包装过程100或200高度利用高速缓冲存储器存储装置且归因于较少业务而节省功率。
图4和图5所示的GPU管线将通用链接用于任何两个相邻的可编程处理级。此允许分层链接,从而将例如阵列和矩阵等大型且复杂的变动结构映射到向量和浮动。包装过程允许编译器62自由地重新排序或重新分配寄存器以达到最佳。如果FS中不使用VS输出中的某些VS输出,则所述过程允许驱动器/链接器通过修改链接指令中的某些链接指令而轻易地将其移除。
在一个或一个以上示范性配置中,所描述的功能可以硬件、软件、固件或其任一组合实施。如果以软件实施,则可将所述功能作为一个或一个以上指令或程序代码存储于计算机可读媒体上或经由计算机可读媒体进行传输。计算机可读媒体包括计算机存储媒体和通信媒体,其包括促进将计算机程序从一处传递到另一处的任何媒体。存储媒体可为可由计算机存取的任何可用媒体。以实例而非限制的方式,所述计算机可读媒体可包含RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于携载或存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。而且,任何连接均可适当地称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,则同轴电缆、光纤电缆、双绞线、DSL或例如红外、无线电和微波等无线技术包括于媒体的定义中。如本文中所使用,磁盘和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字化多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。上述组合也应包括在计算机可读媒体的范围中。
提供所揭示配置的先前描述以使得所属领域的技术人员能够制造或使用本发明。所属领域的技术人员将容易明白对这些配置的各种修改,且可在不偏离本发明的精神或范围的情况下将本文中所界定的一般原理应用于其它配置。因此,不希望本发明限于本文中所示的配置,而是将赋予本发明与本文所揭示的原理和新颖特征一致的最广范围。
Claims (38)
1.一种装置,其包含:
存储媒体,其具有多个共享的M维(MD)寄存器;以及
处理单元,其实施用以将分量总和等于M的一个或一个以上着色器变量包装在每一共享的MD寄存器中的一组操作。
2.根据权利要求1所述的装置,其中所述组操作包装以下中的一者:两个2D向量着色器变量;一3D向量着色器变量和一浮动着色器变量;一2D向量着色器变量和两个相异浮动着色器变量;以及四个浮动着色器变量。
3.根据权利要求1所述的装置,其中所述着色器变量包含来自顶点着色器的一组输出变动;且其中所述组操作包括用以将所述组输出变动包装在所述多个共享的MD寄存器中且将任何剩余变动充填于所述存储媒体中以创建顶点着色器输出文件的操作。
4.根据权利要求3所述的装置,其进一步包含:具有多个MD高速缓冲存储器寄存器的顶点高速缓冲存储器;且其中所述存储媒体包括具有MD寄存器的包装缓冲器以将所述顶点着色器输出文件的M个分量连贯地包装在其中,且在存满时将所述包装缓冲器的所述MD寄存器的内容传递到所述顶点高速缓冲存储器中的相应MD高速缓冲存储器寄存器。
5.根据权利要求4所述的装置,其中所述处理单元实施用以将所述顶点高速缓冲存储器中的所述输出变动链接到片段着色器的一组输入变动的第二组操作。
6.根据权利要求5所述的装置,其中所述第二组操作包括使对应于所述顶点着色器中的所述输出变动的变动符号名称与用于所述片段着色器的所述组输入变动中的对应变动符号名称相匹配的操作。
7.根据权利要求4所述的装置,其进一步包含具有第二多个共享的MD寄存器的第二存储媒体;其中所述着色器变量进一步包含用于输入到所述顶点着色器的非绕过的输入属性和绕过的输入属性;且其中所述组操作包括用以将所述非绕过的输入属性包装在所述第二多个共享的MD寄存器中且将任何剩余非绕过的输入属性充填于所述第二存储媒体中以创建顶点着色器输入文件的操作。
8.根据权利要求7所述的装置,其中所述顶点高速缓冲存储器进一步包含第二多个MD高速缓冲存储器寄存器;且其中所述存储媒体包括具有MD寄存器的第二包装缓冲器以将所述绕过的输入属性的M个分量连贯地包装在其中,且在存满时将所述第二包装缓冲器的所述MD寄存器的内容传递到所述顶点高速缓冲存储器中的所述第二多个MD高速缓冲存储器寄存器中的每一MD高速缓冲存储器寄存器中。
9.根据权利要求4所述的装置,其进一步包含具有第二多个共享的MD寄存器的第二存储媒体;其中所述着色器变量包含用于输入到所述顶点着色器的一组输入属性;且其中所述组操作包括以下操作:将所述组输入属性包装在所述第二多个共享的MD寄存器中直到剩余未包装的输入属性的分量在包装的情况下将超过M为止,及将所述剩余输入属性充填于所述第二存储媒体中以创建顶点着色器输入文件。
10.根据权利要求1所述的装置,其中所述处理单元为蜂窝式电话、无线装置、无线通信装置、视频游戏控制台、个人数字助理(PDA)、膝上型计算机和具备音频/视频能力的装置中的一者的一部分。
11.一种集成电路,其包含:
存储媒体,其具有多个共享的M维(MD)寄存器;以及
处理单元,其实施用以将分量总和等于M的一个或一个以上着色器变量包装在每一共享的MD寄存器中的一组操作。
12.根据权利要求11所述的集成电路,其中所述组操作包装以下中的一者:两个2D向量着色器变量;一3D向量着色器变量和一浮动着色器变量;一2D向量着色器变量和两个相异浮动着色器变量;以及四个浮动着色器变量。
13.根据权利要求11所述的集成电路,其中所述着色器变量包含来自顶点着色器的一组输出变动;且其中所述组操作包括用以将所述组输出变动包装在所述多个共享的MD寄存器中及将任何剩余变动充填于所述存储媒体中以创建顶点着色器输出文件的操作。
14.根据权利要求13所述的集成电路,其进一步包含:具有多个MD高速缓冲存储器寄存器的顶点高速缓冲存储器;且其中所述存储媒体包括具有MD寄存器的包装缓冲器以将所述顶点着色器输出文件的M个分量连贯地包装在其中,且在存满时将所述包装缓冲器的所述MD寄存器的内容传递到所述顶点高速缓冲存储器中的相应(MD)高速缓冲存储器寄存器。
15.根据权利要求14所述的集成电路,其中所述处理单元实施用以将所述顶点高速缓冲存储器中的所述输出变动链接到片段着色器的一组输入变动的第二组操作。
16.根据权利要求15所述的集成电路,其中所述第二组操作包括用以使对应于所述顶点着色器中的所述输出变动的变动符号名称与所述片段着色器的所述组输入变动中的对应变动符号名称相匹配的操作。
17.根据权利要求14所述的集成电路,其进一步包含具有第二多个共享的MD寄存器的第二存储媒体;其中所述着色器变量进一步包含用于输入到所述顶点着色器的非绕过的输入属性和绕过的输入属性;且其中所述组操作包括用以将所述非绕过的输入属性包装在所述第二多个共享的MD寄存器中且将任何剩余非绕过的输入属性充填于所述第二存储媒体中以创建顶点着色器输入文件的操作。
18.根据权利要求17所述的集成电路,其中所述顶点高速缓冲存储器进一步包含第二多个MD高速缓冲存储器寄存器;且其中所述存储媒体包括具有MD寄存器的第二包装缓冲器以将所述绕过的输入属性的M个分量连贯地包装在其中,且在存满时将所述第二包装缓冲器的所述MD寄存器的内容传递到所述顶点高速缓冲存储器中的所述第二多个MD高速缓冲存储器寄存器中的每一MD高速缓冲存储器寄存器中。
19.根据权利要求14所述的集成电路,其进一步包含具有第二多个共享的MD寄存器的第二存储媒体;其中所述着色器变量包含用于输入到所述顶点着色器的一组输入属性;且其中所述组操作包括以下操作:将所述组输入属性包装在所述第二多个共享的MD寄存器中直到剩余未包装的输入属性的分量在包装的情况下将超过M为止,及将所述剩余输入属性充填于所述第二存储媒体中以创建顶点着色器输入文件。
20.根据权利要求11所述的集成电路,其中所述处理单元为蜂窝式电话、无线装置、无线通信装置、视频游戏控制台、个人数字助理(PDA)、膝上型计算机和具备音频/视频能力的装置中的一者的一部分。
21.一种无线装置,其包含:
存储装置,其具有多个共享的M维(MD)寄存器,所述多个共享的M维(MD)寄存器用于存储一组着色器变量;以及
包装装置,其用于将所述组着色器变量中的分量总和等于M的一个或一个以上着色器变量包装在每一共享的MD寄存器中。
22.根据权利要求21所述的无线装置,其中所述包装装置包含用于包装以下中至少一者的装置:两个2D向量着色器变量;一3D向量着色器变量和一浮动着色器变量;一2D向量着色器变量和两个相异浮动着色器变量;以及四个浮动着色器变量。
23.根据权利要求21所述的无线装置,其中所述组着色器变量包含来自顶点着色器的一组输出变动;且其中所述包装装置包含用于将所述组输出变动包装在所述多个共享的MD寄存器中的变动包装装置以及用于将任何剩余变动充填于所述存储装置中以创建顶点着色器输出文件的充填装置。
24.根据权利要求21所述的无线装置,其中所述组着色器变量包含到顶点着色器的一组输入属性;且其中所述包装装置包含用于将所述组输入属性包装在所述多个共享的MD寄存器中的属性包装装置以及用于将任何剩余输入属性充填于所述存储装置中以创建顶点着色器输入文件的充填装置。
25.根据权利要求21所述的无线装置,其中所述包装装置为蜂窝式电话、无线装置、无线通信装置、视频游戏控制台、个人数字助理(PDA)、膝上型计算机和具备音频/视频能力的装置中的一者的一部分。
26.一种包括计算机可读媒体的计算机程序产品,所述计算机可读媒体具有用于致使计算机执行以下操作的指令:
将一组着色器变量中的向量总和等于M的一个或一个以上着色器变量包装在多个共享的M维(MD)向量寄存器中的每一共享的MD向量寄存器中。
27.根据权利要求26所述的计算机程序产品,其中所述组着色器变量包括来自顶点着色器的一组输出变动;且其中所述指令致使所述计算机包装所述组输出变动且用剩余的输出变动充填剩余的向量寄存器。
28.根据权利要求27所述的计算机程序产品,其进一步包含用以致使所述计算机将所述组经包装的输出变动链接到片段着色器的一组输入变动的指令。
29.根据权利要求28所述的计算机程序产品,其中所述链接指令包括用以致使所述计算机将对应于来自所述顶点着色器的所述组经包装的输出变动的变动符号名称与所述片段着色器的所述组输入变动中的对应变动符号名称相匹配的指令。
30.根据权利要求26所述的计算机程序产品,其中所述组着色器变量包括到顶点着色器的一组输入属性;且其中所述指令致使所述计算机包装所述组输入属性且用剩余的输入属性充填剩余的向量寄存器。
31.一种方法,其包含:
将一组着色器变量中的向量总和等于M的一个或一个以上着色器变量包装在多个共享的M维(MD)向量寄存器中的每一共享的MD向量寄存器中;以及
在所述多个共享的MD向量寄存器中重复所述包装直到任何剩余的着色器变量不可包装为止。
32.根据权利要求31所述的方法,其中所述组着色器变量包含来自顶点着色器的一组输出变动,且其中所述包装包括将所述组输出变动包装在所述多个共享的M维(MD)寄存器中。
33.根据权利要求31所述的方法,其进一步包含:
用所述组经包装的输出变动和剩余的输出变动创建顶点着色器输出文件;
将所述顶点着色器输出文件的M个分量连贯地包装在包装缓冲器的MD临时寄存器中;以及
在存满时将所述MD临时寄存器的内容传递到顶点高速缓冲存储器中的相应MD高速缓冲存储器寄存器。
34.根据权利要求31所述的方法,其中所述组着色器变量包含到顶点着色器的一组非绕过的输入属性,且其中所述包装包括将所述组输入属性包装在所述多个共享的MD寄存器中。
35.根据权利要求34所述的方法,其进一步包含:
将绕过的输入属性的M个分量连贯地包装在包装缓冲器的MD临时寄存器中;以及
在存满时将所述MD临时寄存器的内容传递到顶点高速缓冲存储器中的相应MD高速缓冲存储器寄存器。
36.一种处理器,其包含:
具有多个共享的M维(MD)寄存器的存储媒体;以及
集成电路,其实施用以将分量总和等于M的一个或一个以上着色器变量包装在每一共享的MD寄存器中的一组操作。
37.根据权利要求36所述的处理器,其中所述着色器变量包含来自顶点着色器的一组输出变动;且其中所述组操作包括用以将所述组输出变动包装在所述多个共享的M维(MD)寄存器中及将任何剩余变动充填于所述存储媒体中以创建顶点着色器输出文件的操作。
38.根据权利要求37所述的处理器,其进一步包含:具有多个MD高速缓冲存储器寄存器的顶点高速缓冲存储器;且其中所述存储媒体包括具有MD寄存器的包装缓冲器以将所述顶点着色器输出文件的M个分量连贯地包装在其中,且在存满时将所述包装缓冲器的所述MD寄存器的内容传递到所述顶点高速缓冲存储器中的相应MD高速缓冲存储器寄存器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/830,667 | 2007-07-30 | ||
US11/830,667 US8355028B2 (en) | 2007-07-30 | 2007-07-30 | Scheme for varying packing and linking in graphics systems |
PCT/US2008/071655 WO2009018385A2 (en) | 2007-07-30 | 2008-07-30 | Scheme for packing and linking of variables in graphics systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101779219A true CN101779219A (zh) | 2010-07-14 |
CN101779219B CN101779219B (zh) | 2013-03-27 |
Family
ID=39940557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008801009326A Active CN101779219B (zh) | 2007-07-30 | 2008-07-30 | 用于图形系统中的变动包装和链接的方案 |
Country Status (11)
Country | Link |
---|---|
US (1) | US8355028B2 (zh) |
EP (1) | EP2023285B8 (zh) |
JP (1) | JP5048836B2 (zh) |
KR (1) | KR101118814B1 (zh) |
CN (1) | CN101779219B (zh) |
BR (1) | BRPI0813854B1 (zh) |
CA (1) | CA2693344C (zh) |
MX (1) | MX2010001064A (zh) |
RU (1) | RU2448369C2 (zh) |
TW (1) | TWI378355B (zh) |
WO (1) | WO2009018385A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016090535A1 (en) * | 2014-12-08 | 2016-06-16 | Intel Corporation | Graphic rendering quality improvements through automated data type precision control |
CN108986014A (zh) * | 2018-07-19 | 2018-12-11 | 芯视图(常州)微电子有限公司 | 适用乱序顶点染色的图元装配单元 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9123151B2 (en) * | 2008-08-05 | 2015-09-01 | Autodesk, Inc. | Exchanging data between vertex shaders and fragment shaders on a graphics processing unit |
US8947444B1 (en) * | 2008-12-09 | 2015-02-03 | Nvidia Corporation | Distributed vertex attribute fetch |
GB201103699D0 (en) | 2011-03-03 | 2011-04-20 | Advanced Risc Mach Ltd | Graphic processing |
GB201103698D0 (en) * | 2011-03-03 | 2011-04-20 | Advanced Risc Mach Ltd | Graphics processing |
US9412193B2 (en) * | 2011-06-01 | 2016-08-09 | Apple Inc. | Run-time optimized shader program |
US9214008B2 (en) * | 2013-01-18 | 2015-12-15 | Nvidia Corporation | Shader program attribute storage |
US9395988B2 (en) * | 2013-03-08 | 2016-07-19 | Samsung Electronics Co., Ltd. | Micro-ops including packed source and destination fields |
CN104995622B (zh) | 2013-03-14 | 2019-06-04 | 英特尔公司 | 用于图形函数的合成器支持 |
US10176621B2 (en) | 2013-06-10 | 2019-01-08 | Sony Interactive Entertainment Inc. | Using compute shaders as front end for vertex shaders |
US10134102B2 (en) | 2013-06-10 | 2018-11-20 | Sony Interactive Entertainment Inc. | Graphics processing hardware for using compute shaders as front end for vertex shaders |
US10102603B2 (en) | 2013-06-10 | 2018-10-16 | Sony Interactive Entertainment Inc. | Scheme for compressing vertex shader output parameters |
US10096079B2 (en) | 2013-06-10 | 2018-10-09 | Sony Interactive Entertainment Inc. | Fragment shaders perform vertex shader computations |
KR20160074154A (ko) | 2014-12-18 | 2016-06-28 | 삼성전자주식회사 | 컴파일러 |
US10460513B2 (en) * | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
US11748839B2 (en) | 2020-04-16 | 2023-09-05 | Samsung Electronics Co., Ltd. | Efficient fast random access enabled geometry attribute compression mechanism |
US11508124B2 (en) | 2020-12-15 | 2022-11-22 | Advanced Micro Devices, Inc. | Throttling hull shaders based on tessellation factors in a graphics pipeline |
US11776085B2 (en) * | 2020-12-16 | 2023-10-03 | Advanced Micro Devices, Inc. | Throttling shaders based on resource usage in a graphics pipeline |
US11710207B2 (en) | 2021-03-30 | 2023-07-25 | Advanced Micro Devices, Inc. | Wave throttling based on a parameter buffer |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9413169D0 (en) | 1994-06-30 | 1994-08-24 | Thomson Consumer Electronics | Modulator data frame interfacing |
GB2317464A (en) * | 1996-09-23 | 1998-03-25 | Advanced Risc Mach Ltd | Register addressing in a data processing apparatus |
US5949421A (en) * | 1997-03-31 | 1999-09-07 | Cirrus Logic, Inc. | Method and system for efficient register sorting for three dimensional graphics |
RU2249245C2 (ru) | 1999-09-01 | 2005-03-27 | Мацусита Электрик Индастриал Ко., Лтд. | Способ и устройство для обработки данных с авторскими правами |
CN1249547C (zh) | 1999-09-01 | 2006-04-05 | 松下电器产业株式会社 | 版权所有的数据处理方法和设备 |
US6717577B1 (en) | 1999-10-28 | 2004-04-06 | Nintendo Co., Ltd. | Vertex cache for 3D computer graphics |
US6829696B1 (en) * | 1999-12-30 | 2004-12-07 | Texas Instruments Incorporated | Data processing system with register store/load utilizing data packing/unpacking |
US6900812B1 (en) * | 2000-08-02 | 2005-05-31 | Ati International Srl | Logic enhanced memory and method therefore |
US6828975B2 (en) * | 2001-03-01 | 2004-12-07 | Microsoft Corporation | Method and system for managing graphics objects in a graphics display system |
US7017154B2 (en) * | 2001-03-23 | 2006-03-21 | International Business Machines Corporation | Eliminating store/restores within hot function prolog/epilogs using volatile registers |
US6704026B2 (en) * | 2001-05-18 | 2004-03-09 | Sun Microsystems, Inc. | Graphics fragment merging for improving pixel write bandwidth |
DE10131254A1 (de) | 2001-07-01 | 2003-01-23 | Deutsche Post Ag | Verfahren zum Überprüfen der Gültigkeit von digitalen Freimachungsvermerken |
US6831653B2 (en) * | 2001-07-31 | 2004-12-14 | Sun Microsystems, Inc. | Graphics pixel packing for improved fill rate performance |
US6847369B2 (en) * | 2002-01-30 | 2005-01-25 | Sun Microsystems, Inc. | Optimized packing of loose data in a graphics queue |
US7530062B2 (en) * | 2003-05-23 | 2009-05-05 | Microsoft Corporation | Optimizing compiler transforms for a high level shader language |
US7746347B1 (en) * | 2004-07-02 | 2010-06-29 | Nvidia Corporation | Methods and systems for processing a geometry shader program developed in a high-level shading language |
US7681187B2 (en) * | 2005-03-31 | 2010-03-16 | Nvidia Corporation | Method and apparatus for register allocation in presence of hardware constraints |
US20080094408A1 (en) * | 2006-10-24 | 2008-04-24 | Xiaoqin Yin | System and Method for Geometry Graphics Processing |
-
2007
- 2007-07-30 US US11/830,667 patent/US8355028B2/en active Active
-
2008
- 2008-03-31 EP EP08006444.7A patent/EP2023285B8/en active Active
- 2008-07-29 TW TW097128649A patent/TWI378355B/zh not_active IP Right Cessation
- 2008-07-30 BR BRPI0813854A patent/BRPI0813854B1/pt active IP Right Grant
- 2008-07-30 MX MX2010001064A patent/MX2010001064A/es unknown
- 2008-07-30 KR KR1020107004551A patent/KR101118814B1/ko active IP Right Grant
- 2008-07-30 RU RU2010107218/08A patent/RU2448369C2/ru not_active IP Right Cessation
- 2008-07-30 CN CN2008801009326A patent/CN101779219B/zh active Active
- 2008-07-30 JP JP2010520164A patent/JP5048836B2/ja not_active Expired - Fee Related
- 2008-07-30 WO PCT/US2008/071655 patent/WO2009018385A2/en active Application Filing
- 2008-07-30 CA CA2693344A patent/CA2693344C/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016090535A1 (en) * | 2014-12-08 | 2016-06-16 | Intel Corporation | Graphic rendering quality improvements through automated data type precision control |
US10332308B2 (en) | 2014-12-08 | 2019-06-25 | Intel Corporation | Graphic rendering quality improvements through automated data type precision control |
CN108986014A (zh) * | 2018-07-19 | 2018-12-11 | 芯视图(常州)微电子有限公司 | 适用乱序顶点染色的图元装配单元 |
Also Published As
Publication number | Publication date |
---|---|
KR101118814B1 (ko) | 2012-03-20 |
CN101779219B (zh) | 2013-03-27 |
US8355028B2 (en) | 2013-01-15 |
BRPI0813854B1 (pt) | 2020-01-14 |
TW200910110A (en) | 2009-03-01 |
RU2448369C2 (ru) | 2012-04-20 |
CA2693344C (en) | 2017-01-17 |
JP2010535393A (ja) | 2010-11-18 |
TWI378355B (en) | 2012-12-01 |
MX2010001064A (es) | 2010-03-03 |
CA2693344A1 (en) | 2009-02-05 |
EP2023285A1 (en) | 2009-02-11 |
WO2009018385A3 (en) | 2009-03-26 |
KR20100038462A (ko) | 2010-04-14 |
JP5048836B2 (ja) | 2012-10-17 |
BRPI0813854A2 (pt) | 2019-02-12 |
US20090033672A1 (en) | 2009-02-05 |
EP2023285B1 (en) | 2017-12-20 |
EP2023285B8 (en) | 2018-06-27 |
WO2009018385A2 (en) | 2009-02-05 |
RU2010107218A (ru) | 2011-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101779219B (zh) | 用于图形系统中的变动包装和链接的方案 | |
US11763183B2 (en) | Compression for deep learning in case of sparse values mapped to non-zero value | |
CN109643443B (zh) | 图形处理器流水线中的高速缓存和压缩互操作性 | |
US20220114781A1 (en) | Apparatus and method for using alpha values to improve ray tracing efficiency | |
CN108885796B (zh) | 利用平面重复使用的降低精度的光线遍历 | |
CN101449239A (zh) | 具有算术及初等函数单元的图形处理器 | |
CN109564699A (zh) | 用于经优化光线追踪的装置和方法 | |
CN108734637A (zh) | 图形控制流机制 | |
CN106575442A (zh) | 使用通过自适应着色的纹理查找的带宽缩减 | |
US10546411B2 (en) | Directed acyclic graph path enumeration with application in multilevel instancing | |
US10748323B2 (en) | GPU based shader constant folding | |
US20210191868A1 (en) | Mechanism to partition a shared local memory | |
US11783530B2 (en) | Apparatus and method for quantized convergent direction-based ray sorting | |
US11360686B2 (en) | Distributed copy engine | |
WO2017155610A1 (en) | Method and apparatus for efficient submission of workload to a high performance graphics sub-system | |
CN107408293B (zh) | 支持计算装置处的图形命令流中对命令缓冲器的多级嵌套 | |
TW202301203A (zh) | 用於類神經網路加速器的稀疏張量儲存的方法與設備 | |
US20210149811A1 (en) | Parallel decompression mechanism | |
CN109791684A (zh) | 将内核执行转移到图形装置 | |
EP3903896B1 (en) | Cloud gaming adaptive synchronization mechanism | |
CN109155077B (zh) | 渐进渲染的体积光线追踪 | |
WO2021154732A1 (en) | Shared scratchpad memory with parallel load-store | |
CN109643279A (zh) | 使用虚拟到虚拟地址表进行存储器压缩 | |
CN113032159A (zh) | 编译器辅助的寄存器堆写入减少 | |
CN117561542A (zh) | 用于通用可消耗压缩的统一无状态压缩系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |