CN101802874B - 图形处理单元中的片段着色器旁路及其设备和方法 - Google Patents
图形处理单元中的片段着色器旁路及其设备和方法 Download PDFInfo
- Publication number
- CN101802874B CN101802874B CN200880106821.6A CN200880106821A CN101802874B CN 101802874 B CN101802874 B CN 101802874B CN 200880106821 A CN200880106821 A CN 200880106821A CN 101802874 B CN101802874 B CN 101802874B
- Authority
- CN
- China
- Prior art keywords
- unit
- fragment shading
- unified
- pixel
- tinter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Power Sources (AREA)
Abstract
使用配置信息以做出绕过由图形处理单元的着色器单元所进行的片段着色的确定,所述着色器单元能够执行顶点着色与片段着色器两者。基于所述确定,所述着色器单元执行顶点着色并绕过片段着色。可使用不同于所述着色器单元的处理元件(例如像素掺合器)来执行某种片段着色。管理功率以在所述片段着色被绕过的情况下“切断”去往未使用组件的功率。举例来说,可切断去往若干算术逻辑单元的功率,从而所述着色器单元使用数目减少了的算术逻辑单元来执行顶点着色。可将所述着色器单元的至少一个寄存器组用作FIFO缓冲器,所述FIFO缓冲器存储供与纹理数据一起用于由另一处理元件进行的片段着色操作的像素属性数据。
Description
技术领域
本发明涉及图形处理单元,且更明确地说,涉及使用图形处理单元来处理图像。
背景技术
图形处理单元(GPU)是用以产生供显示于显示装置上的计算机化图形的专用图形再现装置。GPU经建置有高度并行结构,所述并行结构为一系列复杂算法提供比典型的通用中央处理单元(CPU)更有效的处理。举例来说,复杂算法可对应于三维计算机化图形的表示。在此情况下,GPU可实施若干基元图形操作以创建供显示于显示装置上的三维图像,这比使用CPU来绘制供显示于显示装置上的图像更迅速。
典型GPU接收图像几何形状且使用管线方法来产生可被输出(例如)以供显示于显示装置上的图形。典型的图形管线包括并行操作的若干级,其中来自一个级的输出可能在所述管线中的另一级处使用。举例来说,典型的图形管线包含顶点着色器级、基元组合级、视口变换级、基元设立级、光栅化级、隐藏基元及像素拒绝级、属性设立级、属性内插级及片段着色器级。
顶点着色器应用于图像的图像几何形状且产生所述图像几何形状内的顶点的顶点坐标及属性。顶点属性包括(例如)与顶点相关联的色彩、法线及纹理坐标。基元组合基于图像几何形状而从所述顶点形成基元(例如,点、线及三角形基元)。可使用变换(例如,将基元从标准化装置空间变换到屏幕空间的视口变换)来将所形成的基元从一个空间变换到另一空间。可使用基元设立来确定基元面积、边缘系数,且执行遮挡剔除(例如,背面剔除)及3D裁剪操作。
光栅化基于基元内的顶点的XY坐标及基元中所包括的像素的数目而将基元转换为像素。隐藏基元及像素拒绝使用基元及/或像素的z坐标来确定并拒绝那些被确定为被隐藏的基元及像素(例如,位于图像帧中的另一基元或像素后面的基元或像素,所述另一基元或像素为透明的基元或像素)。属性设立确定与基元内的像素相关联的属性的属性梯度,例如,在水平(X)方向或垂直(Y)方向上移动的基元内第一像素处的属性值与第二像素处的属性值之间的差。属性内插基于所确定的属性梯度值而在基元内的像素范围中内插属性。将所内插的属性值发送到片段着色器以用于像素再现。可将片段着色器的结果输出到后处理块及帧缓冲器以用于将经处理的图像呈现于显示装置上。
发明内容
本发明试图解决此项技术中的缺点及提供图形图像处理的效率以根据输入图像几何形状来使用一个或一个以上可编程处理器。GPU可包含一个或一个以上处理器,所述一个或一个以上处理器提供用于与图形管线一起使用的强大处理能力。然而,在某些情形下,应用程序可能不需要由GPU所提供的所有处理能力,例如,应用程序可能需要较不强大的替代方案。在此情况下,举例来说,能够绕过GPU的某些部分(例如,片段着色器)以便基于使用GPU的应用程序的需求来有效地使用GPU的资源将是有益的。
本文中揭示了一种系统、方法及设备,其使用配置信息来做出绕过或放弃由图形处理单元的着色器单元进行的片段着色的确定,所述着色器单元能够执行顶点着色与片段着色器两者。根据所述确定,着色器单元执行顶点着色且绕过片段着色。在将由图形处理单元执行某种片段着色的情况下,可使用不同于着色器单元的处理元件(例如,像素掺合器)来执行片段着色。可管理经供应到由着色器单元所使用的算术逻辑单元的功率,使得在片段着色被绕过的情况下切断去往若干算术逻辑单元的功率。着色器单元使用数目减少了的算术逻辑单元来执行顶点着色。还可切断去往其它组件(例如线程压缩缓冲器及用以将信息从所述线程压缩缓冲器输送到着色器单元的输入总线)的功率。可将至少一个通常由着色器单元使用的寄存器组用作缓冲器以缓冲供连同纹理数据一起用于执行由另一处理元件进行的片段着色操作的像素属性数据。
根据本发明的一个或一个以上实施例,经配置以执行顶点着色与片段着色两者的可编程处理元件(着色器单元)经动态地“重新配置”以基于经提供到GPU的信息而执行顶点着色并绕过或放弃片段着色。依靠此布置,可绕过经确定为在经重新配置的管线中“不必要”的组件。可将在片段着色被绕过的情况下未使用的组件用于替代性用途。或者,可通过“切断”去往这些组件的功率来节省功率。可实现其它效率,例如具有数目减少了的顶点的顶点着色器线程。
在至少一个实施例中,描述了一种供与图形处理单元一起使用的方法,其使用配置信息以做出在能够执行顶点着色与片段着色两者的着色器单元中绕过或放弃片段着色的确定,使用着色器单元来执行顶点着色,且基于所述确定而绕过由着色器单元执行片段着色。
根据一个或一个以上实施例,描述了一种设备,其中包含图形处理单元及着色器单元。所述图形处理单元包含命令解码器,所述命令解码器经配置以使用配置信息来做出在着色器单元中绕过或放弃片段着色的确定。着色器单元能够执行顶点着色与片段着色两者。着色器单元经配置以基于所述确定来执行顶点着色并绕过执行片段着色。
已提供此简短概要,使得可快速地理解本发明的本质。对本发明的较完整理解可通过结合附图参看以下对其优选实施例的详细描述来获得。
附图说明
本发明的上文所提及的特征及目标将参看以下结合附图所进行的描述而变得更加显而易见,其中相同参考标号指示相同元件,且在附图中:
图1是说明示范性装置的框图,所述示范性装置包括供根据本发明的一个或一个以上实施例使用的图形处理单元。
图2提供根据本发明的一个或一个以上实施例的着色器单元的组件的概观,所述着色器单元能够实施顶点着色器及片段着色器处理元件。
图3提供用于根据本发明的一个或一个以上实施例使用的图形处理单元的图形管线的实例。
图4提供说明用于与本发明的一个或一个以上实施例一起使用的可编程图形处理元件的实例框图。
具体实施方式
现将参看上文所提及的图式来论述本发明的某些实施例,其中相同参考标号指代相同组件。
根据一个或一个以上实施例,揭示一种系统、方法及设备,其中着色器单元是根据经提供到图形处理单元的配置信息来配置的。通过使用所述配置信息,能够执行片段着色与顶点着色两者的着色器单元可经配置以执行顶点着色且放弃片段着色。可使用不同于着色器单元的另一处理元件来执行某种片段着色。将原本由着色器单元用以执行片段着色的一个或一个以上组件可用于另一用途,或替代地可切断去往原本未使用的组件的功率。
图1是说明示范性计算装置100的框图,所述计算装置100包括供根据本发明的一个或一个以上实施例来使用的图形处理单元(GPU)104。计算装置100可包含个人计算机、桌上型计算机、膝上型计算机、工作站、视频游戏平台或控制台、蜂窝式或卫星无线电电话、陆上通信线电话、因特网电话、手持式装置(例如便携式视频游戏装置或个人数字助理)、个人音乐播放器、服务器、中间网络装置、主机计算机或另一类型的输出图形信息的装置。
在图1的实例中,计算装置100包括中央处理单元(CPU)102、GPU 104及存储器模块116(例如,随机存取存储器(RAM)存储器模块)。CPU 102、GPU 104及存储器模块116使用总线106来通信,所述总线106可包含任何类型的现在已知或稍后被发现的总线或装置互连件。CPU 102可包含通用或专用微处理器。举例来说,CPU 102可包含由加利福尼亚州圣克拉拉市的英特尔公司(Intel Corporation of Santa Clara,California)提供的核心2处理器或另一类型的微处理器。GPU 104是专用图形再现装置。举例来说,GPU 104可集成到计算装置100的母板中,可存在于安装在计算装置100的母板中的端口中的图形卡上,或可另外经配置以与计算装置100相互操作。
举例来说,耦合到计算装置100的显示单元124可包含监视器、电视、投影装置、液晶显示器、等离子体显示面板、发光二极管(LED)阵列、阴极射线管显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或另一类型的显示单元。在图1的实例中,显示单元124可为计算装置100的一部分。举例来说,显示单元124可为移动电话的屏幕。或者,举例来说,显示单元124可位于计算机装置100的外部且可经由有线或无线通信连接或其它连接而与计算装置100通信。借助于非限制性实例,显示单元124可为经由有线或无线连接而连接到个人计算机的计算机监视器或平板显示器。
可经由CPU 102来执行软件应用程序110。软件应用程序110可包含能够经由CPU102来执行的任何软件应用程序,例如(借助于非限制性实例)视频游戏、图形用户接口引擎、用于工程或艺术应用的计算机辅助设计程序,或另一类型的使用二维(2D)或三维(3D)图形的软件应用程序。
当CPU 102正在执行软件应用程序110时,软件应用程序110可调用图形处理应用程序编程接口(API)112的子例程,例如(借助于非限制性实例)OpenVG API、OpenGLAPI、Direct3D API、图形装置接口(GDI)、Quartz、QuickDraw或另一类型的2D或3D图形处理API中的任何一者或一者以上。
根据至少一个实施例,当软件应用程序110调用图形处理API 112的子例程时,图形处理API 112调用GPU驱动器114的一个或一个以上子例程,所述一个或一个以上子例程经由计算装置100上的CPU 102来执行。举例来说,GPU驱动器114可包含一组软件及/或固件指令,所述指令提供图形处理API 112与GPU 104之间的接口。当图形处理API 112调用GPU驱动器114的子例程时,GPU驱动器114制定并发出致使GPU 104产生可显示的图形信息的命令。举例来说,当图形处理API 112调用GPU驱动器114的子例程以再现一批图形基元时,GPU驱动器114向GPU 104提供处理配置,GPU 104使用所述处理配置来再现所述批图形基元。举例来说,GPU 104再现所述批图形基元,且输出所述图形基元的光栅图像。
由GPU驱动器114制定的命令可识别GPU 104将用以执行所述命令的图形处理配置,所述配置可识别一组待由GPU 104执行的指令、一组状态寄存器值及GPU 104执行所述命令可能需要的其它类型的信息。
在GPU驱动器114将所述图形处理配置存储于存储器116中的情况下,GPU驱动器114可参考存储器模块116中的对应于由GPU驱动器114所制定的命令中的所述图形处理配置的存储位置。当GPU 104接收所述命令时,GPU 104可从存储器116中检索在从GPU驱动器114接收的命令中所提及的图形处理配置。
根据至少一个实施例,GPU 104的命令解码器126解码来自GPU驱动器114的命令并配置处理元件128中的一者或一者以上以执行所述命令。借助于非限制性实例,命令解码器126从存储器116中检索所述图形处理配置,并将由所述图形处理配置所识别的一组指令加载到处理元件128中。命令解码器126还可经配置以将输入数据提供到一个或一个以上处理元件128。
根据一个或一个以上实施例,处理元件128实施图形管线108。根据这些实施例,处理元件128可以并行模式来实施图形管线108。在并行模式中,处理元件128可并行地对数据进行操作,其中来自处理元件128的输出被用作到另一处理元件128的输入。借助于非限制性实例,处理元件128A对从命令解码器126接收的第一组初始输入数据执行第一图形操作且将第一组中间结果输出到处理元件128B。举例来说,初始输入数据可包含对应于一个或一个以上顶点的数据,所述数据可包含坐标及属性数据。顶点坐标基于(例如)四维坐标系统来识别图像内的位置,所述四维坐标系统具有X、Y及Z(宽度、高度及深度)坐标以及包含透视参数的W坐标。举例来说,顶点属性可包括与顶点相关联的色彩、法线及纹理坐标。处理元件128B可对由处理元件128A输出的第一组中间结果执行另一图形操作,且将第二组中间结果输出到处理元件128中的另一者,等等。当处理元件128B正在执行第二图形操作时,处理元件128A可对从命令解码器126接收的第二组初始输入数据执行第一图形操作。
处理元件128可以此方式继续,直到处理元件128N将像素对象输出到存储器模块116中的一个或一个以上缓冲器或将此新像素对象输出到某一其它目的地为止。像素对象是描述像素的数据。每一像素对象可指定多个色彩值,且可指定像素的透明程度。在一些情形中,像素对象可指定呈第一色彩格式的第一色彩及呈第二色彩格式的第二色彩。
根据本发明的一个或一个以上实施例,处理元件128中的一者包含着色器单元,所述着色器单元可经配置以执行一个或一个以上顶点着色操作(所述顶点着色操作中的每一者对顶点数据进行操作)及执行一个或一个以上片段着色操作(所述片段着色操作中的每一者对像素数据进行操作)。因此,根据一个或一个以上实施例,可将处理元件128配置为统一着色器单元,所述统一着色器单元能够执行为对顶点数据进行操作的顶点着色器,且进一步能够执行为对像素数据进行操作的片段着色器。根据一个或一个以上实施例,所述着色器单元是可编程处理元件。
图2提供根据本发明的一个或一个以上实施例的着色器单元的组件的概观,所述着色器单元能够实施顶点着色器及片段着色器处理元件。如本文中较详细描述,命令解码器126基于从存储器模块116中检索的图形处理配置来确定如果将使用着色器单元206来执行任何着色操作则将会如何。在一些情况下,应用程序110可能不需要任何片段着色或需要非常少量的片段着色。在需要少量片段着色的情况下,GPU 104可配置不同于着色器单元206的处理元件128来执行少量片段着色,如本文中进一步描述。
根据本发明的一个或一个以上实施例,GPU 104可经配置以使得使用着色器单元206来处理使用着色器单元206所执行的顶点着色器线程的顶点数据。另外且如本文中所揭示,GPU 104的其它处理元件128可经配置以适应片段着色器处理元件的不存在。
着色器单元206包含两个或两个以上算术逻辑单元(ALU)群组228,所述算术逻辑单元(ALU)群组228中的每一者包含若干ALU 258。每一ALU 258依照从指令高速缓冲存储器224中获取的指令而对一个或一个以上操作数执行运算。所述操作数可包含一个或一个以上经由通信线路248而从RAM 226中检索的常数及/或一个或一个以上经由通信线路250而从位于寄存器组262中的一者中的寄存器中检索的临时存储值。举例来说,本文中所识别的通信线路(例如,通信线路248及250)可为总线。位于着色器单元206内部的通信线路可包含单一总线或若干总线。根据一个或一个以上实施例,加载控制模块(本文中还称作加载控制器)222控制常数到RAM 226的存储(经由通信线路264)及/或临时值到寄存器堆组262的存储与临时值从寄存器堆组262中的检索(经由通信线路260)。根据一个或一个以上实施例,举例来说,RAM 226可包含存储器模块116的某一部分。
存储于RAM 226中的常数可为供着色器线程210使用的全局值。借助于非限制性实例,在加载控制模块222的控制下,RAM 226可存储供与所有用以处理从GPU驱动器114接收的命令的着色器线程210一起使用的常数。寄存器堆组262(对其的存取也是在加载控制器222的控制下)可包含一组用以临时存储值的寄存器。可使用一组寄存器来临时存储供与着色器线程210中的给定一者一起使用的值。ALU 258可经由通信线路250来存取(例如,存储或检索)寄存器组262中的临时值。
根据一个或一个以上实施例,着色器单元206进一步包含线程调度器及上下文寄存器(TSCR)220,所述TSCR 220根据用于给定着色器线程210的上下文寄存器中所含有的信息来操作以调度着色器线程210且使线程切换与加载控制模块222同步。由TSCR220调度的着色器线程210可为顶点着色器线程及片段着色器线程。顶点着色器线程210是实施图形管线108中所使用的顶点着色器的若干线程中的一者,每一顶点着色器线程210包含可由着色器单元206执行以提供用于图形管线108的顶点着色器的若干顶点着色操作。类似地,片段着色器线程210是实施片段着色器的若干线程中的一者,每一片段着色器线程210包含可由着色器单元206执行以提供用于图形管线108的片段着色器的若干片段着色操作。根据本发明的实施例,着色器单元206经配置以调度顶点着色器线程210。着色器单元206进一步经配置以基于从GPU驱动器114获得的信息来调度片段着色器线程210。
TSCR 220调度着色器线程210以用于执行,且经由通信线路236而与加载控制模块222通信,使得用于所调度着色器线程210的上下文可由加载控制器222来加载。着色器线程210的上下文包括待由着色器单元206结合着色器线程210所处理的指令。加载控制器222控制指令高速缓冲存储器224,使得待由ALU 258针对所调度着色器线程210执行的指令被加载于指令高速缓冲存储器224中,且到RAM 226及寄存器堆组262中的寄存器的指针指向存储对应于所调度着色器线程210的值(全局及临时)的位置/寄存器。因而,从指令高速缓冲存储器224获取的用于结合所调度着色器线程210执行的指令在所述所调度着色器线程210的上下文中操作。举例来说,从指令高速缓冲存储器224获取指令并由ALU 258中的一者或一者以上针对所调度着色器线程210来执行所述指令。所述所调度着色器线程210可根据所获取的指令而使用来自与所述所调度着色器线程210相关联的寄存器堆组262的一个或一个以上临时值及/或来自与所述所调度着色器线程210相关联的RAM 226的一个或一个以上全局值。
线程压缩缓冲器202可存储用于着色器线程210的数据。可由加载控制器222经由总线(图2中未展示)而将用于所调度着色器线程210的着色器指令或程序从外部存储器或GPU管线108中的L2高速缓冲存储器预先加载或在运行时间加载到指令高速缓冲存储器224中,且可基于由TSCR 220提供到加载控制器222的信息而将数据加载到对应于所调度着色器线程210的寄存器组262中,其识别所调度着色器线程210。常数RAM226存储例如可用于所有着色器线程210的全局值等值。加载控制件可请求用于与所调度着色器线程210一起使用的来自纹理引擎212的纹理样本。
根据本发明的一个或一个以上实施例,着色器单元206以一时钟速率操作,所述时钟速率可快于图形管线108的时钟速率/速度。使用异步接口以允许通信着色器单元206与位于着色器单元206外部的组件通信。举例来说,通信线路230、232、234、238及240可包含一个或一个以上通信总线结构,着色器单元206通过所述一个或一个以上通信总线结构而与一个或一个以上外部组件通信。
尽管着色器单元206可以高于其它图形管线组件的时钟速度来操作,但无需如此。任选地使用较高时钟速率来(例如)实现顶点着色器及/或片段着色器的着色器操作的处理量以匹配其它图形管线处理量(如果需要的话)。或者,如果着色器计算工作负荷是轻的,则着色器单元206的时钟速度可低于图形管线108的时钟速度。当根据本发明的实施例而绕过片段着色时,可将着色器单元206专门地用于顶点着色器操作,使得即使在每线程数目减少了的顶点及数目减少了的ALU 258(例如,群组228A中的ALU 258)的情况下,仍可在单位时间周期中使用所述数目减少了的ALU 258来实现类似于通过ALU 258的完整补充所实现的顶点着色处理量的顶点着色处理量,例如,其中着色器单元206调度使用数目减少了的着色器单元206的ALU 258的若干顶点着色器线程。当并未绕过片段着色时,着色器单元206由顶点着色器操作与片段着色器操作两者共享,例如,其中使用ALU 258的完整补充及较大的线程大小(例如,每线程更多顶点)来保持适当的处理量。
借助于非限制性实例,在着色器单元206的每一时钟周期中,ALU群组228A与228B两者中的ALU 258可对与ALU群组228A及228B中的ALU 258的数目相等的若干顶点或像素进行操作。举例来说,在N等于2的情况下,ALU群组228A及228B在着色器单元206的每个时钟周期中可对四个顶点或像素进行操作。在所调度着色器线程210是顶点着色器线程210的情况下,在着色器单元206的给定时钟周期期间,对着色器线程210中的四个顶点进行操作,每一顶点由来自ALU群组228A或228B或来自228A与228B两者的ALU 258操作。类似地,在所调度着色器线程210是片段着色器线程210的情况下,对片段着色器线程210中的四个像素进行操作,每一像素由来自ALU群组228A或228B或来自228A与228B两者的ALU 258操作。
在图2所示的实例中,ALU群组228A及228B具有相同数目的ALU 258。根据一个或一个以上实施例,ALU群组228A可具有数目不同于ALU群组228B中的ALU 258的数目的ALU 258。此外,根据本发明的实施例,顶点着色操作(及所处理的顶点)的数目无需与片段着色操作(及所处理的像素)的数目相同。在一些情况下,举例来说,顶点着色操作与片段着色操作之间的工作负荷比可为1∶4、1∶2、1∶1、2∶1或任何其它比。类似地,寄存器堆组262A在大小上可不同于寄存器堆组262B的大小,所述寄存器堆组262A及寄存器堆组262B两者的大小可经静态或动态地配置。一般来说,在单位时间周期中且在顶点着色操作的工作负荷对于所处理的顶点的数目来说被指定为“NV”且片段着色操作的工作负荷对于所处理的像素的数目来说被指定为“MP”的情况下,着色器单元206在所述单位时间周期期间以时间共享型式完成NV个顶点及MP个像素。作为时间共享的替代方案,根据另一配置或实施例,可调度ALU群组228A以对顶点着色器线程210进行操作,同时可并行调度ALU群组228B以在着色器单元206时钟周期处对片段着色器线程210进行操作。
如上文所论述,举例来说,GPU 104(例如,GPU 104的命令解码器126)可基于由应用程序110所提供的信息来确定不需要片段着色或需要少量片段着色。根据一个或一个以上实施例,在确定不需要片段着色或需要少量片段着色的情况下,在着色器单元206中绕过片段着色操作,且着色器单元206无需处理任何片段着色器线程210。此外且根据一个或一个以上此类实施例,可减少与每一顶点着色器线程210相关联的顶点的数目,如下文较详细论述,且有可能使用数目减少的ALU 258来操作着色器单元206,同时在图形管线108的每个时钟周期仍产生相同水平的输出。通过这样做,可实现功率节省而无着色器单元206的性能的任何显著降级或着色器单元206的输出水平的改变。在指示无片段着色或指示少量片段着色且着色器单元206实施顶点着色操作以排除片段着色操作的情况下,就将结合片段着色操作来使用其来说,可停用线程压缩缓冲器202及对应的输入总线232(例如,线程压缩缓冲器202B及输入总线232B),且可切断去往这些组件的功率。另外,由片段着色器线程210使用的寄存器堆组262可用于存储由属性内插器204输出的属性数据(例如,色彩数据)。通过这样做,有可能将寄存器堆组262B(例如)用作先进先出(FIFO)缓冲器以存储供输入到像素掺合器208的色彩或其它数据。举例来说,将寄存器堆组(例如,寄存器堆组262B)用作FIFO可覆盖经由纹理引擎212所执行的某一纹理加载/检索的等待时间。
根据一个或一个以上实施例,可使用功率管理单元或功率控制器来控制供应到着色器单元206的组件(包括ALU 258)的功率以及去往位于着色器单元206外部的组件(例如,线程压缩缓冲器202及输入总线232)的功率。在组件(例如,ALU 258、线程压缩缓冲器202、输入总线232等)未由着色器单元206使用的情况下,功率管理单元可调整(例如,切断)供应到所述组件的功率。通过这样做,对于在着色器单元206执行顶点着色操作以排除片段着色操作的情况下不使用的组件,可减少或完全关闭去往未使用的一个或一个以上组件的功率以实现GPU 104的经减少程度的功率消耗。根据这些实施例,功率管理单元可独立于其它组件来控制供应到一个组件的功率。借助于非限制性实例,功率管理单元可独立于其它ALU 258来控制去往ALU 258中的每一者的功率。在此实例中,功率管理单元操作以切断去往ALU 258A及258B中的一者或一者以上的功率供应且将功率供应到ALU 258A及258B中的其它者。或者,在组件包含ALU群组的情况下,功率管理单元可独立于ALU群组228中的其它者来控制供应到ALU群组228的功率。借助于非限制性实例,功率管理单元可独立于ALU群组228B中的ALU 258B来控制去往ALU群组228A中的ALU 258A的功率。在此实例中,功率管理单元操作以切断去往ALU 258A的功率供应且将功率供应到ALU群组228B中的ALU 258B。
在需要少量片段着色的情况下,GPU 104可配置不同于着色器单元206的处理元件128以执行片段着色。根据一个或一个以上实施例,可由处理元件128来执行所需的少量片段着色,所述处理元件128可经编程以执行片段着色操作,如下文较详细描述。通过这样做,着色器单元210的资源可集中于较繁杂的着色操作,且执行所述较繁杂的着色操作所不需要的着色器单元210的资源被断电。
在着色器单元206经配置以不执行片段着色操作的情况下,TSCR 220调度顶点着色器线程210,所述顶点着色器线程210中的每一者可包括数目减少了的顶点。更明确地说,着色器单元206经配置以使用数目减少了的ALU 258来处理顶点,同时仍在相同的单位时间周期中产生相同水平的输出(例如,NV个顶点),因为着色器单元206专门地调度顶点着色器线程以在着色器单元203被如此配置的每个单位时间周期中对ALU群组228A进行操作。
借助于非限制性实例来描述本发明的实施例,其中每一ALU群组228的ALU 258的数目为2。在此情况下,着色器单元206(且明确地说,TSCR 220)可在单位时间周期中调度若干顶点着色器线程210。使用ALU群组228A及228B中的一者(例如,ALU群组228A)来对与由TSCR 220调度的每一顶点着色器线程210相关联的顶点进行操作。在着色器单元206的第一时钟周期中,TSCR 220调度第一顶点着色器线程210,此产生第一组两个顶点,其对应于由着色器单元206使用ALU群组228A所处理的第一顶点着色器线程210。在着色器单元206的第二时钟周期中,TSCR 220调度第二顶点着色器线程210,此产生由着色器单元206及ALU群组228处理的另外两个顶点(第二顶点着色器线程210中的顶点)。因此,在单位时间周期中,使用着色器单元206的一半ALU 258来处理包含预期数目的顶点的一组顶点。依靠此布置,可绕过若干ALU 258,且可通过减少或完全关闭去往未使用的ALU 258的功率来节省原本被消耗以操作被绕过的ALU258的功率。
图3提供用于根据本发明的一个或一个以上实施例来使用的GPU 104的图形管线108的实例。如图3所示,图形管线108包括图1的命令解码器126及图2的属性内插器204、像素掺合器208与纹理引擎212。可使用着色器单元206来实施顶点着色器306。在图3所示的实例中,根据一个或一个以上实施例,片段着色器318(其将原本使用图形管线108中的着色器单元206来实施)被绕过。根据本文中所揭示的实施例,在片段着色器318被绕过的情况下,原本将已转发到片段着色器的输入(例如,由纹理引擎212输出的纹理及由属性内插器204输出的色彩与属性数据)被转向像素掺合器208。在确定需要将不由着色器单元206执行的某种片段着色的情况下,像素掺合器208可经配置以除其掺合操作以外还执行片段着色。
除顶点着色器306以外,GPU 104的图形管线108还包括基元设立及拒绝模块308、属性梯度设立模块310、光栅化器312、隐藏基元及像素拒绝模块314、属性内插器204、像素掺合器208及纹理引擎212。
顶点着色器306确定图像内的顶点处的图像表面特性。以此方式,顶点着色器306产生图像几何形状内的顶点中的每一者的顶点坐标及属性。顶点坐标基于(例如)四维坐标系统来识别图像几何形状内的顶点,所述四维坐标系统具有识别图像几何形状内的顶点的位置的X、Y及Z(宽度、高度及深度)坐标以及包含图像几何形状的透视参数的W坐标。顶点属性(例如)可包括与顶点相关联的色彩、法线及纹理坐标。根据本文中所揭示的实施例,GPU 104内的顶点着色器306使顶点的属性及/或坐标由到管线108的其它级的顶点着色器306来处理。
基元设立及拒绝模块308、属性梯度设立模块310、光栅化器312、隐藏基元及像素拒绝模块314与属性内插器204各自使用顶点坐标或顶点属性来处理图像几何形状。基元设立及拒绝模块308向基元组合图像几何形状内的一个或一个以上顶点,将透视投影及视口变换应用于基元顶点,且确定每一基元边缘的边缘系数。另外,(例如)通过使用基元顶点的XY坐标来执行剪裁或背面剔除以确定针对给定图像帧是否拒绝考虑所述基元或其一部分,基元设立及拒绝模块308可检验基元以确定是否将拒绝所述基元。举例来说,可将基元或基元部分确定为不可见的,例如位于图像帧内的物体的背部上,在此情况下,基元或其部分可由基元设立及拒绝模块308拒绝。
属性梯度设立模块310计算与图像几何形状的基元相关联的属性的梯度。根据当前所揭示的实施例,属性梯度包含在水平(X)方向或垂直(Y)方向上移动的基元内第一像素处的属性值与第二像素处的属性值之间的差。属性梯度设立模块310使用顶点属性来计算属性梯度。
一旦计算出属性梯度值,光栅化器312便基于图像几何形状的基元内的顶点中的每一者的XY坐标及所述基元中所包括的像素的数目而将所述基元转换为像素。隐藏基元及像素拒绝模块314(例如)基于基元内的顶点的Z坐标而使用早期深度及模板测试来拒绝隐藏基元及所述基元内的隐藏像素。基元或基元内的像素可被认为是隐藏的,且在处理图像的特定帧期间被拒绝考虑(例如,当基元或基元内的像素位于图像帧内的另一物体后面时)。
属性内插器204基于属性梯度值而在基元内的像素范围中内插属性。在由属性内插器204进行的处理结束时压缩片段着色器线程并经由通信线路234而将其传送到着色器单元206。属性内插器204可忽略与图像几何形状内的被拒绝基元相关联的顶点的属性。根据一个或一个以上实施例,经内插的属性值变成到像素掺合器208的输入,从而绕过片段着色器318。可输出像素掺合器208的结果以用于使用输出装置(例如,显示单元124)来呈现经处理的图像。
如图3的实例中所说明,来自顶点着色器306的输出(例如,由顶点着色器306产生的纹理数据)可输出到纹理引擎212,以供在由图形管线108进行的随后处理中使用。另外,顶点着色器306可向纹理引擎212提交纹理数据查找请求,以检索用于与顶点着色器306一起使用的纹理数据。参看图2,举例来说,加载控制模块222可经由纹理引擎212来取样用于顶点着色器线程210的纹理数据。
在图形管线108中执行片段着色器318(例如,其未被绕过)的情况下,属性内插器204将其输出(例如,像素属性/色彩数据)转发到片段着色器318。另外,属性内插器204向纹理引擎212提交针对初始纹理的请求。作为响应,纹理引擎212获得所请求的纹理并经由加载控制器222以及通信线路238及260而将其转发到寄存器堆组262以供实施片段着色器318的着色器线程210使用。
或者,在片段着色器318被绕过且将执行某种少量片段着色的情况下,从属性内插器204将针对初始纹理的请求提交到纹理引擎212。作为响应,纹理引擎212将所请求的纹理转发到像素掺合器208,所述像素掺合器208在由像素掺合器208执行的片段着色操作中使用纹理数据。再次参看图2,输入/输出(I/O)总线238经由加载控制器222而将纹理(例如,包含来自先前操作的纹理结果的相依性纹理)传递到纹理引擎212及从纹理引擎212传递所述纹理。属性内插器204经由通信线路254而向纹理引擎212请求初始纹理。作为响应,纹理引擎212经由通信线路252而将初始纹理转发到像素掺合器208。如上文所论述,可将未由片段着色器线程210使用的寄存器堆组(例如,寄存器堆组262B)用作FIFO缓冲器以存储供输入到像素掺合器208的色彩值及由属性内插器204输出的其它数据(例如,非纹理数据)。经由通信线路240而将存储于包含寄存器堆组262的某一部分的FIFO缓冲器中的数据输入到像素掺合器。图3中展示位于属性内插器204与片段着色器318之间及位于片段着色器318与像素掺合器208之间的虚线以进一步说明当着色器单元206绕过片段着色时,属性/色彩值是经由着色器单元206的寄存器堆组262而发送到像素掺合器208。
在由像素掺合器208进行的初始处理期间,使来自寄存器堆组262 FIFO的色彩数据与由像素掺合器208从纹理引擎212接收的初始纹理同步。根据一个或一个以上实施例且在将执行某种片段着色(例如,纹理组合)的情况下,像素掺合器208经配置以执行或仿真片段着色功能性或纹理组合功能性。像素掺合器208进一步经配置以对由像素掺合器208执行的所述片段着色操作的结果执行掺合(例如,α掺合)。
根据本文中所揭示的这些实施例中的一者或一者以上,可使用可编程图形处理元件(PGPE)来实施程序元件128中的一者或一者以上。举例来说,根据这些实施例,可使用PGPE来实施像素掺合器208,所述像素掺合器208经编程以执行掺合以及未由着色器单元206执行的片段着色(如果需要任何的话)。根据这些实施例中的一者或一者以上,PGPE可为(例如)如标题为“可编程图形处理元件(Programmable GraphicsProcessing Element)”的第1,号美国申请案(高通代理人案号070380)中所描述的PGPE,所述美国申请案的内容以引用的方式并入本文中。
根据一个或一个以上实施例,PGPE可执行一指令集,所述指令集可依据需要使用PGPE来执行的功能性而变化。图4是说明示范性PGPE 405的框图。如图4的实例中所说明,PGPE 405包含输入模块430,所述输入模块430将对应于像素的数据(本文中还称作像素对象)接收作为输入。举例来说,PGPE 405可从处理元件128、存储器模块116、寄存器堆组262等中的一者或一者以上接收一个或一个以上像素对象。
根据一个或一个以上实施例,输入模块430使用一个或一个以上算术逻辑单元(ALU)444来执行格式转换。在所示的实例中,ALU 444是ALU阵列(ALU 434)的一部分。ALU 444中的每一者能够执行算术运算,例如(借助于少数非限制性实例)单乘法、双乘法、2D点积、最大值运算、寄存器复制操作、γ编码、γ解码操作及/或其它类型的操作(包括其它类型的算术运算)。举例来说,ALU阵列434可每个色彩分量使用8位整数、10位整数、16位浮点、32位浮点等值。ALU 444可为单线程型或多线程型。
输入模块430可将中间值(例如,格式转换的结果)存储于统一寄存器堆432中的寄存器中,例如寄存器堆包含若干硬件寄存器。依据ALU阵列434的实施方案而定,举例来说,每一硬件寄存器可存储四个表示色彩分量的8位整数、四个表示色彩分量的10位整数、四个表示色彩分量的16位浮点值等。
PGPE 405中的指令执行模块(IEM)436从指令模块438获取一个或一个以上使用程序计数器446所识别的指令。指令模块438能够(例如)使用硬件寄存器、同步随机存取存储器(SRAM)等存储若干指令。IEM 436解码所获取的指令,且获取如由经解码的指令所指定的操作数。举例来说,IEM 436可从统一寄存器堆432及/或常数寄存器堆440获取操作数。如与寄存器堆432一样,举例来说,常数寄存器堆440可包含硬件寄存器及/或SRAM。借助于非限制性实例,常数寄存器堆440可存储掺合因子、用于旧版2D光栅操作(ROP)的模式或其它常数值。
指令可致使IEM 436从存储于统一寄存器堆432中的一个或一个以上寄存器中的像素对象提取一个或一个以上色彩分量且将这些色彩分量用作操作数。举例来说,可以RGBA格式来格式化存储于统一寄存器堆432中的寄存器中的像素对象,所述RGBA格式每色彩分量具有八个位。当以RGBA格式来格式化像素对象时,位0到7可表示红色分量,位8到15可表示绿色分量,位16到23可表示蓝色分量,且位24到31可表示α分量。像素的α分量表示像素的透明程度。使用此实例且根据一个示范性指令,IEM 436提取像素对象的红色分量并将所述红色分量用作操作数(例如,来自像素对象的位0到7)。其它指令可指令IEM 436从像素对象提取不同或多个分量(例如,色彩及/或α分量)。在另一实例中,深度/模板图形操作中的指令可指令IEM 436从位于统一寄存器堆432中的寄存器中的一者中的像素对象提取模板值或Z值。
指令可指令IEM 436在将操作数提供到ALU阵列434之前修改所述操作数。在一些例子中,指令可使用所谓的源修改符来指令IEM 436如何修改操作数。举例来说,指令可指令IEM 436提供操作数的负数(“-”),提供操作数的绝对(“abs”)值,或提供操作数的倒数(“~”)值。倒数运算以标准化整数表示来计算(1.0-x)的运算。
在获取操作数之后,IEM 436可指令ALU阵列434(且明确地说,ALU阵列434中的一个或一个以上ALU 444)使用所获取的操作数来执行由经解码的指令所指定的一个或一个以上算术运算。当ALU阵列434完成执行算术运算时,ALU阵列434可将所得值传送回到IEM 436。当IEM 436从ALU阵列434接收到所述结果时,IEM 436将所述结果存储于统一寄存器堆432中。IEM 436可将存储于统一寄存器堆432中的所述值提供到ALU阵列434作为结合另一算术运算的一个或一个以上操作数。
程序计数器446经递增以识别指令模块438中的下一指令,可接着获取所述下一指令以供作为新的“当前指令”来执行。这继续进行,直到所有指令得到处理为止。
如图4的实例中所说明,PGPE 405可包括输出模块442。举例来说,输出模块442可从统一寄存器堆432读取数据且输出所述数据以供在图形管线108的另一处理元件128中使用。举例来说,输出模块442可将数据输出到多个位置(例如,以连续或并行方式)。输出模块442可使用ALU阵列434以在输出数据之前对数据执行一个或一个以上格式转换。
根据一个或一个以上实施例,将图4用作实例,ALU 444由输入模块430、IEM 436及输出模块442共享,所述输入模块430、所述IEM 436及所述输出模块442中的每一者负责获得待由ALU 444操作的数据且将指令及所获得的数据发送到ALU 444以供执行。在完成所述操作之后,ALU 444将结果返回到将输入提供到ALU 444的模块。因此,在此实例中,ALU 444充当负责在另一模块的命令下执行操作的从属者,所述另一模块向ALU 444供应待由ALU 444操纵的输入及待由ALU 444执行的指令。在此情况下,ALU 444不负责从寄存器堆(例如统一寄存器堆432及/或常数寄存器堆440)读取源输入或将结果写入到寄存器堆。
作为替代方案,根据一个或一个以上实施例,ALU 444由输入模块430、IEM 436及输出模块442共享,然而,ALU 444可负责从一个或一个以上寄存器堆读取输入源数据及将结果输出到所述一个或一个以上寄存器堆。在此情况下,ALU 444从另一模块(例如,输入模块430、IEM 436及输出模块442)接收指令,从寄存器堆中的一者或一者以上读取输入源数据,基于从输入模块430、IEM 436或输出模块442接收的指令/命令来执行一个或一个以上操作,且将所得数据写入到一个或一个以上寄存器堆。
在此替代性情况下,ALU阵列434与统一寄存器堆432之间的读取/写入通信路径(图4中未展示)可由ALU 444使用以用于基于从输入模块430、IEM 436或输出模块442接收的控制信号信息而将数据输入到统一寄存器堆434/从统一寄存器堆434输出数据。类似地,读取通信路径(图4中也未展示)可由ALU阵列434使用以用于基于从输入模块430、IEM 436或输出模块442接收的控制信号信息而将常数数据从常数寄存器堆440输入到ALU 444。举例来说,所述通信路径可替代常数寄存器堆440或统一寄存器堆434与图4中所示的输入模块430、IEM 436及输出模块442中的一者或一者以上之间的通信路径。
根据一个或一个以上实施例,ALU阵列434可在相同或不同时钟周期中同时执行用于色彩分量及α分量的指令。
根据一个或一个以上实施例,使用PGPE 405所执行的每一指令可符合单一语法,所述语法指定操作代码(操作码)、某一数目的目的地寄存器(例如,一个或两个目的地寄存器)及某一数目的源寄存器(例如,四个源寄存器)。举例来说,指令中所指定的源寄存器可为统一寄存器堆432中的寄存器、常数寄存器堆440中的寄存器或存储数据的另一位置。
供根据本发明的实施例来使用的指令集可包含任何数目及类型的指令,每一指令可对若干操作数进行运算。所述指令集可包括输入/输出、算术(例如,加、乘、减、倒数、γ解码、γ编码等)、比较(例如,最小、最大、比较等)、逻辑(例如,如果、否则、另外、结束条件等)、二进制(例如,与、或、异或、非等)、赋值、移动及结束指令。
可使用利用PGPE 405实施的指令集来执行若干变化及不同图形操作中的任一者。根据一个或一个以上实施例,PGPE 405可经配置以实施一个或一个以上使用此指令集的掺合操作以及不使用着色器单元206来执行的片段着色操作。
根据一个或一个以上实施例,像素掺合器208使从使用寄存器堆组262实施的FIFO接收的色彩数据与纹理数据同步。其后,像素掺合器208可使用纹理组合操作(例如,使用主要与次要输入像素对象)来执行某一量的片段着色。在此情况下,像素掺合器208接收来自属性内插器204的主要输入像素对象(例如,经由使用寄存器堆组262所提供的FIFO)及次要输入像素对象。举例来说,所述次要输入像素对象可为指定使用纹理过滤操作所产生的纹理映射像素的纹理色彩及被识别为附近纹理像素(纹素)的纹素的色彩连同过滤因子及/或权数的像素对象,其可由纹理引擎212来执行。
使用纹理过滤操作所产生的新像素对象使用由次要输入像素对象指定的附近纹素的色彩来指定纹理映射像素的纹理色彩。可将新像素对象供应到像素掺合器208作为输入到像素掺合器208的像素对象中的一者以执行片段着色操作(例如,纹理组合操作)。在使用PGPE 405来实施像素掺合器208的情况下,PGPE 405使用主要输入像素对象及次要输入像素对象来执行纹理组合操作。可存储结果以供像素掺合器208存取而对所述结果执行像素掺合操作。根据一个或一个以上实施例,可使用PGPE 405来实施OpenVGAPI的VG_BLEND_MULTIPLY模式、VG_BLEND_SCREEN 模式及VG_BLEND_DARKEN模式,或实施波特-达芙(Porter-Duff)掺合图形操作,例如(借助于某非限制性实例)波特-达芙“源”操作、“源上的目的地”操作、“目的地中的源”操作及“源中的目的地”操作。与着色器单元206相比,PGPE 405在大小上相对较小,因此可使用较少功率消耗来对PGPE 405执行相同量的操作。
在一个或一个以上示范性实施例中,所描述的功能可以硬件、软件及/或固件或其任何组合来实施。如果以硬件来实施,则可将所述功能实施于一个或一个以上微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其类似物中。这些组件可驻留于通信系统、数据写入及/或读取系统或其它系统内。如果以软件来实施,则可将所述功能作为一个或一个以上指令或代码来存储于计算机可读媒体上或经由计算机可读媒体来传输。计算机可读媒体包括有形计算机存储媒体及通信媒体,所述通信媒体包括促进将计算机程序从一个位置传送到另一位置的任何媒体。存储媒体可为可由计算机存取的任何可用媒体。借助于实例而非限制,此类计算机可读媒体可包含RAM、快闪存储器、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、压缩光盘只读存储器(CD-ROM)或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或者可用于以指令或数据结构的形式存储所要程序代码且可由计算机存取的任何其它媒体。还可将术语“计算机可读媒体”界定为有形计算机程序产品。如本文中所使用,磁盘与光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用光盘(DVD)、软盘及蓝光光盘,其中“磁盘”通常磁性地再现数据,而“光盘”使用激光来光学地再现数据。以上各项的组合也应包括在计算机可读媒体的范围内。
尽管已就当前被认为是最实际且优选的实施例的内容来描述了所述设备及方法,但应理解,本发明无需限于所揭示的实施例。既定涵盖权利要求书的精神及范围内所包括的各种修改与类似布置,所述权利要求书的范围应被赋予最广泛解释以便包含所有此类修改与类似结构。本发明包括所附权利要求书的任何及所有实施例。
Claims (19)
1.一种供与图形处理单元一起使用的方法,其包含:
在再现一批图形基元之前,使用配置信息,做出能够执行顶点着色与片段着色两者的统一着色器单元是否将绕过片段着色的确定;
使用所述统一着色器单元来执行顶点着色;
基于所述统一着色器单元将绕过片段着色的确定,绕过由所述统一着色器单元进行的片段着色;以及
基于确定所述统一着色器单元将绕过片段着色,使用不同于所述统一着色器单元的处理单元来执行片段着色。
2.根据权利要求1所述的方法,还包括:
基于确定所述统一着色器单元将绕过片段着色:
切断去往所述统一着色器单元的若干算术逻辑单元的功率,且将功率供应到所述算术逻辑单元的剩余部分,所述剩余部分包含所述统一着色器单元的数目减少了的所述算术逻辑单元;
调度若干顶点着色器线程以使用所述数目减少了的算术逻辑单元来执行顶点着色,其中每一顶点着色器线程对数目减少了的顶点进行操作。
3.根据权利要求2所述的方法,还包括:
基于确定所述统一着色器单元将绕过片段着色,切断去往至少一个线程压缩缓冲器及输入总线的功率,所述输入总线用以将信息从所述至少一个线程压缩缓冲器传送到所述统一着色器单元。
4.根据权利要求1所述的方法,还包括:
基于确定所述统一着色器单元将绕过片段着色:
将所述统一着色器单元的寄存器组用作用于不同于所述统一着色器单元的所述处理单元的缓冲器,所述统一着色器单元的寄存器组用以存储供不同于所述统一着色器单元的所述处理单元用以执行片段着色的像素属性数据,所述像素属性数据包括像素色彩数据;及
将原本由所述统一着色器单元使用的纹理数据转发到不同于所述统一着色器单元的所述处理单元。
5.根据权利要求1所述的方法,其中不同于所述统一着色器单元的所述处理单元包含像素掺合器。
6.根据权利要求1所述的方法,其中不同于所述统一着色器单元的所述处理单元包含可编程图形处理单元,所述方法进一步包含:
通过所述可编程图形处理元件来执行纹理组合与像素掺合操作。
7.一种用于图形处理的设备,其包含:
图形处理单元,其包含命令解码器,所述命令解码器经配置以:在所述图形处理单元再现批图形基元之前,使用配置信息,做出能够执行顶点着色与片段着色两者的统一着色器单元是否将绕过片段着色的确定;
所述统一着色器单元,经配置以:
执行顶点着色;
基于所述统一着色器单元将绕过片段着色的确定而绕过片段着色;及
所述图形处理单元配置为:基于所述统一着色器单元将绕过由片段着色的确定,配置不同于所述统一着色器单元的处理单元来执行片段着色。
8.根据权利要求7所述的用于图形处理的设备,其中所述统一着色器单元包含多个算术逻辑单元,所述设备进一步包含:
功率管理单元,其耦合到所述多个算术逻辑单元,其中基于所述统一着色器单元绕过片段着色的确定,所述功率管理单元经配置以:
切断去往若干所述算术逻辑单元的功率;及
将功率供应到所述算术逻辑单元的剩余部分,所述剩余部分包含数目减少了的所述多个算术逻辑单元;及
所述统一着色器单元的调度器,所述调度器经配置以:
基于所述统一着色器单元绕过片段着色的确定,调度若干顶点着色器线程以使用所述数目减少了的算术逻辑单元来执行所述顶点着色,其中每一顶点着色器线程对数目减少了的顶点进行操作。
9.根据权利要求8所述的用于图形处理的设备,其中基于所述统一着色器单元将绕过片段着色的确定,所述功率管理单元进一步经配置以切断去往线程压缩缓冲器及输入总线的功率供应,所述输入总线用以将信息从所述线程压缩缓冲器传送到所述统一着色器单元。
10.根据权利要求7所述的用于图形处理的设备,其中响应于所述统一着色器单元将绕过片段着色的确定,所述统一着色器单元的寄存器组用作用于不同于所述统一着色器单元的所述处理单元的缓冲器,所述统一着色器单元的缓冲器存储供不同于所述统一着色器单元的所述处理单元用以执行片段着色的像素属性数据,所述像素属性数据包括像素色彩数据。
11.根据权利要求7所述的用于图形处理的设备,其中不同于所述统一着色器单元的所述处理单元包含像素掺合器,所述像素掺合器经配置以基于所述统一着色器单元将绕过片段着色的确定而执行片段着色。
12.根据权利要求7所述的用于图形处理的设备,其中不同于所述统一着色器单元的所述处理单元包含可编程图形处理元件。
13.根据权利要求12所述的用于图形处理的设备,其中所述可编程图形处理元件经配置以执行纹理组合与像素掺合操作。
14.一种用于图形处理的设备,其包含:
图形处理装置,其包含:
命令解码装置,其在所述图形处理装置再现批图形基元之前,使用配置信息,做出能够执行顶点着色与片段着色两者的统一着色装置是否将绕过片段着色的确定;
所述统一着色装置,能够执行顶点着色及片段着色两者,所述统一着色装置基于所述命令解码装置做出的所述统一着色装置将绕过片段着色的确定,绕过片段着色;以及
所述图形处理装置基于所述统一着色装置将绕过片段着色的确定,使用不同于所述统一着色装置的处理装置来进行片段着色。
15.根据权利要求14所述的用于图形处理的设备,其中所述统一着色装置包含多个算术处理装置,所述设备进一步包含:
功率管理装置,其用于管理去往所述多个算术处理装置的功率供应,其中基于所述统一着色装置将绕过片段着色的确定,所述功率管理装置管理去往所述多个算术处理装置的功率,使得:
去往若干所述算术处理装置的功率被切断;且
功率被供应到所述算术处理装置的剩余部分,所述剩余部分包含数目减少了的
所述多个算术处理装置;及
所述统一着色装置的调度装置,所述调度装置用于调度着色器线程,其中基于所述统一着色装置将绕过片段着色的确定,所述调度装置调度若干顶点着色器线程以使用所述数目减少了的算术处理装置来执行所述顶点着色,其中每一顶点着色器线程对数目减少了的顶点进行操作。
16.根据权利要求15所述的用于图形处理的设备,其中基于所述统一着色装置将绕过片段着色的确定,所述功率管理装置管理功率供应以便切断去往线程压缩缓冲器及输入总线的功率,所述输入总线用以将信息从所述线程压缩缓冲器传送到所述统一着色装置。
17.根据权利要求14所述的用于图形处理的设备,其中基于所述统一着色装置将绕过片段着色的确定,所述统一着色装置的寄存器组用作用于不同于所述统一着色装置的所述处理装置的缓冲器,所述缓冲器存储像素属性数据,所述像素属性数据包括像素色彩数据。
18.根据权利要求14所述的用于图形处理的设备,其中不同于所述统一着色装置的所述处理装置包含像素掺合器。
19.根据权利要求14所述的用于图形处理的设备,其中不同于所述统一着色装置的所述处理装置包含可编程图形处理元件,所述可编程图形处理元件经配置以执行纹理组合与像素掺合操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/855,832 US8325184B2 (en) | 2007-09-14 | 2007-09-14 | Fragment shader bypass in a graphics processing unit, and apparatus and method thereof |
US11/855,832 | 2007-09-14 | ||
PCT/US2008/076227 WO2009036314A2 (en) | 2007-09-14 | 2008-09-12 | Fragment shader bypass in a graphics processing unit, and apparatus and method thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101802874A CN101802874A (zh) | 2010-08-11 |
CN101802874B true CN101802874B (zh) | 2014-04-16 |
Family
ID=39951607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880106821.6A Active CN101802874B (zh) | 2007-09-14 | 2008-09-12 | 图形处理单元中的片段着色器旁路及其设备和方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8325184B2 (zh) |
EP (1) | EP2037417B1 (zh) |
JP (2) | JP5166535B2 (zh) |
KR (1) | KR101134241B1 (zh) |
CN (1) | CN101802874B (zh) |
HU (1) | HUE046975T2 (zh) |
TW (1) | TW200931339A (zh) |
WO (1) | WO2009036314A2 (zh) |
Families Citing this family (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8253732B2 (en) * | 2008-01-03 | 2012-08-28 | International Business Machines Corporation | Method and system for remote visualization client acceleration |
US9142057B2 (en) | 2009-09-03 | 2015-09-22 | Advanced Micro Devices, Inc. | Processing unit with a plurality of shader engines |
US8675003B2 (en) * | 2009-09-09 | 2014-03-18 | Advanced Micro Devices, Inc. | Efficient data access for unified pixel interpolation |
EP2302845B1 (en) | 2009-09-23 | 2012-06-20 | Google, Inc. | Method and device for determining a jitter buffer level |
US8817031B2 (en) * | 2009-10-02 | 2014-08-26 | Nvidia Corporation | Distributed stream output in a parallel processing unit |
US8810592B2 (en) * | 2009-10-09 | 2014-08-19 | Nvidia Corporation | Vertex attribute buffer for inline immediate attributes and constants |
US8477050B1 (en) | 2010-09-16 | 2013-07-02 | Google Inc. | Apparatus and method for encoding using signal fragments for redundant transmission of data |
KR101719485B1 (ko) | 2010-09-20 | 2017-03-27 | 삼성전자주식회사 | 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법 |
US8838680B1 (en) | 2011-02-08 | 2014-09-16 | Google Inc. | Buffer objects for web-based configurable pipeline media processing |
GB201103698D0 (en) * | 2011-03-03 | 2011-04-20 | Advanced Risc Mach Ltd | Graphics processing |
GB201103699D0 (en) | 2011-03-03 | 2011-04-20 | Advanced Risc Mach Ltd | Graphic processing |
US10817043B2 (en) * | 2011-07-26 | 2020-10-27 | Nvidia Corporation | System and method for entering and exiting sleep mode in a graphics subsystem |
GB2496394B (en) * | 2011-11-08 | 2014-12-17 | Imagination Tech Ltd | A method and system for implementing multisample antialiasing |
US9239793B2 (en) * | 2011-12-13 | 2016-01-19 | Ati Technologies Ulc | Mechanism for using a GPU controller for preloading caches |
US8842122B2 (en) * | 2011-12-15 | 2014-09-23 | Qualcomm Incorporated | Graphics processing unit with command processor |
US9202308B2 (en) | 2011-12-28 | 2015-12-01 | Think Silicon Sa | Methods of and apparatus for assigning vertex and fragment shading operations to a multi-threaded multi-format blending device |
US9093015B2 (en) * | 2012-01-27 | 2015-07-28 | Samsung Electronics Co., Ltd. | Display apparatus, upgrade apparatus, control method thereof, and display system |
US9691360B2 (en) | 2012-02-21 | 2017-06-27 | Apple Inc. | Alpha channel power savings in graphics unit |
US10535185B2 (en) | 2012-04-04 | 2020-01-14 | Qualcomm Incorporated | Patched shading in graphics processing |
TWI597599B (zh) * | 2012-06-05 | 2017-09-01 | 威盛電子股份有限公司 | 圖形處理單元與其管理方法 |
US8928680B1 (en) | 2012-07-10 | 2015-01-06 | Google Inc. | Method and system for sharing a buffer between a graphics processing unit and a media encoder |
US20140067894A1 (en) * | 2012-08-30 | 2014-03-06 | Qualcomm Incorporated | Operations for efficient floating point computations |
US9697006B2 (en) * | 2012-12-19 | 2017-07-04 | Nvidia Corporation | Technique for performing memory access operations via texture hardware |
US9286647B2 (en) * | 2013-03-12 | 2016-03-15 | Nvidia Corporation | Pixel shader bypass for low power graphics rendering |
US10096079B2 (en) * | 2013-06-10 | 2018-10-09 | Sony Interactive Entertainment Inc. | Fragment shaders perform vertex shader computations |
US9274591B2 (en) * | 2013-07-22 | 2016-03-01 | Globalfoundries Inc. | General purpose processing unit with low power digital signal processing (DSP) mode |
US9299181B2 (en) * | 2013-08-28 | 2016-03-29 | Qualcomm Incorporated | Target independent stenciling in graphics processing |
DE102015002581A1 (de) * | 2014-04-03 | 2015-10-08 | Intel Corporation | Abbilden eines Mehrratenshadings auf monolithische Programme |
CN103995725B (zh) * | 2014-04-24 | 2018-07-20 | 深圳中微电科技有限公司 | 在cpu上执行像素着色器的程序转换方法及装置 |
US9659341B2 (en) * | 2014-06-25 | 2017-05-23 | Qualcomm Incorporated | Texture pipe as an image processing engine |
US9449363B2 (en) * | 2014-06-27 | 2016-09-20 | Intel Corporation | Sampling, fault management, and/or context switching via a compute pipeline |
US9946331B2 (en) | 2014-06-27 | 2018-04-17 | Samsung Electronics Co., Ltd. | System and method to process signals having a common component |
US9454841B2 (en) * | 2014-08-05 | 2016-09-27 | Qualcomm Incorporated | High order filtering in a graphics processing unit |
US9536342B2 (en) * | 2014-08-15 | 2017-01-03 | Intel Corporation | Automatic partitioning techniques for multi-phase pixel shading |
US9934606B2 (en) * | 2014-09-16 | 2018-04-03 | Intel Corporation | Deferred coarse pixel shading |
US10007965B2 (en) * | 2014-12-16 | 2018-06-26 | Intel Corporation | Dynamic kernel modification for graphics processing units |
KR20160074154A (ko) | 2014-12-18 | 2016-06-28 | 삼성전자주식회사 | 컴파일러 |
KR101646194B1 (ko) * | 2014-12-31 | 2016-08-05 | 서경대학교 산학협력단 | 멀티 스레드 그래픽 처리 장치 |
GB2536964B (en) | 2015-04-02 | 2019-12-25 | Ge Aviat Systems Ltd | Avionics display system |
US9881351B2 (en) * | 2015-06-15 | 2018-01-30 | Microsoft Technology Licensing, Llc | Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation |
CN104933752B (zh) * | 2015-06-29 | 2018-08-07 | 上海兆芯集成电路有限公司 | 一种计算机系统、图形处理单元及其图形处理方法 |
US9824458B2 (en) * | 2015-09-23 | 2017-11-21 | Qualcomm Incorporated | Dynamically switching between late depth testing and conservative depth testing |
US10262455B2 (en) * | 2015-12-04 | 2019-04-16 | Intel Corporation | Merging fragments for coarse pixel shading using a weighted average of the attributes of triangles |
CN105574925A (zh) * | 2015-12-11 | 2016-05-11 | 中国航空工业集团公司西安航空计算技术研究所 | 一种自适应的光照处理算法动态选择策略 |
US10311540B2 (en) | 2016-02-03 | 2019-06-04 | Valve Corporation | Radial density masking systems and methods |
US9817431B2 (en) * | 2016-02-03 | 2017-11-14 | Qualcomm Incorporated | Frame based clock rate adjustment for processing unit |
US10535186B2 (en) * | 2016-08-30 | 2020-01-14 | Intel Corporation | Multi-resolution deferred shading using texel shaders in computing environments |
US10460513B2 (en) | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
US9984434B1 (en) * | 2016-09-23 | 2018-05-29 | Apple Inc. | Techniques to derive efficient conversion and/or color correction of video data |
KR102680270B1 (ko) * | 2016-12-16 | 2024-07-01 | 삼성전자주식회사 | 그래픽스 처리 장치 및 그래픽스 처리 장치에서 그래픽스 파이프라인을 처리하는 방법 |
US10417815B2 (en) * | 2017-01-27 | 2019-09-17 | Advanced Micro Devices, Inc. | Out of order pixel shader exports |
US10417731B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10417734B2 (en) * | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10431545B2 (en) * | 2017-06-29 | 2019-10-01 | Intel IP Corporation | Cross-connected multi-chip modules coupled by silicon bent-bridge interconnects and methods of assembling same |
US10474464B2 (en) * | 2017-07-05 | 2019-11-12 | Deep Vision, Inc. | Deep vision processor |
US10074210B1 (en) * | 2017-07-25 | 2018-09-11 | Apple Inc. | Punch-through techniques for graphics processing |
CN108958921B (zh) * | 2018-07-19 | 2023-06-20 | 南京军微半导体科技有限公司 | Gpu中一种染色片段调度管理的硬件加速实现方法 |
CN109669770B (zh) * | 2018-12-12 | 2022-10-11 | 中国航空工业集团公司西安航空计算技术研究所 | 一种图形处理器并行着色任务调度单元系统 |
CN109727186B (zh) * | 2018-12-12 | 2023-03-21 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于SystemC面向GPU片元着色任务调度方法 |
GB2608094B (en) * | 2021-01-27 | 2024-08-21 | Advanced Risc Mach Ltd | Graphics processing |
US20230004385A1 (en) * | 2021-06-30 | 2023-01-05 | Advanced Micro Devices, Inc. | Accelerated processing device and method of sharing data for machine learning |
US12079897B2 (en) * | 2022-09-23 | 2024-09-03 | Qualcomm Incorporated | Visibility generation improvements in tile based GPU architectures |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6425068B1 (en) * | 1996-12-09 | 2002-07-23 | Pact Gmbh | Unit for processing numeric and logic operations for use in central processing units (cpus), multiprocessor systems, data-flow processors (dsps), systolic processors and field programmable gate arrays (epgas) |
EP1594091A3 (en) * | 2004-05-03 | 2006-02-08 | Microsoft Corporation | System and method for providing an enhanced graphics pipeline |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3972784B2 (ja) * | 2002-09-30 | 2007-09-05 | ソニー株式会社 | 画像処理装置およびその方法 |
US7385607B2 (en) | 2004-04-12 | 2008-06-10 | Nvidia Corporation | Scalable shader architecture |
US7091982B2 (en) * | 2004-05-14 | 2006-08-15 | Nvidia Corporation | Low power programmable processor |
US7324106B1 (en) * | 2004-07-27 | 2008-01-29 | Nvidia Corporation | Translation of register-combiner state into shader microcode |
US9098932B2 (en) * | 2004-08-11 | 2015-08-04 | Ati Technologies Ulc | Graphics processing logic with variable arithmetic logic unit control and method therefor |
US7362325B2 (en) | 2004-12-21 | 2008-04-22 | Qualcomm Incorporated | 2D/3D line rendering using 3D rasterization algorithms |
US7836284B2 (en) * | 2005-06-09 | 2010-11-16 | Qualcomm Incorporated | Microprocessor with automatic selection of processing parallelism mode based on width data of instructions |
US7830390B2 (en) * | 2005-07-19 | 2010-11-09 | Graphics Properties Holdings, Inc. | Color computation of pixels using a plurality of vertex or fragment shader programs |
US8144149B2 (en) * | 2005-10-14 | 2012-03-27 | Via Technologies, Inc. | System and method for dynamically load balancing multiple shader stages in a shared pool of processing units |
US20070091088A1 (en) | 2005-10-14 | 2007-04-26 | Via Technologies, Inc. | System and method for managing the computation of graphics shading operations |
JPWO2007049610A1 (ja) * | 2005-10-25 | 2009-04-30 | 三菱電機株式会社 | 画像処理装置 |
US9135017B2 (en) * | 2007-01-16 | 2015-09-15 | Ati Technologies Ulc | Configurable shader ALU units |
-
2007
- 2007-09-14 US US11/855,832 patent/US8325184B2/en active Active
-
2008
- 2008-03-31 EP EP08006445.4A patent/EP2037417B1/en active Active
- 2008-03-31 HU HUE08006445A patent/HUE046975T2/hu unknown
- 2008-09-12 WO PCT/US2008/076227 patent/WO2009036314A2/en active Application Filing
- 2008-09-12 CN CN200880106821.6A patent/CN101802874B/zh active Active
- 2008-09-12 JP JP2010525035A patent/JP5166535B2/ja active Active
- 2008-09-12 KR KR1020107008043A patent/KR101134241B1/ko active IP Right Grant
- 2008-09-15 TW TW097135406A patent/TW200931339A/zh unknown
-
2012
- 2012-12-20 JP JP2012277985A patent/JP5563054B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6425068B1 (en) * | 1996-12-09 | 2002-07-23 | Pact Gmbh | Unit for processing numeric and logic operations for use in central processing units (cpus), multiprocessor systems, data-flow processors (dsps), systolic processors and field programmable gate arrays (epgas) |
EP1594091A3 (en) * | 2004-05-03 | 2006-02-08 | Microsoft Corporation | System and method for providing an enhanced graphics pipeline |
Non-Patent Citations (3)
Title |
---|
AKENINE-MOLLER T.PCU:The Programmable Culling Unit.《ACM TRANSACTIONS ON GRAPHICS》.2007,第26卷(第3期),参见说明书摘要,说明书第92-5页,右边栏,第10-16行,左下倒数第1段,附图2. * |
AKENINE-MOLLER T.PCU:the programmable culling unit.《ACM TRANSACTIONS ON GRAPHICS》.2007,第26卷(第3期),第92-5页,右下倒数第1段. * |
HASSELGREN J * |
Also Published As
Publication number | Publication date |
---|---|
EP2037417B1 (en) | 2020-01-08 |
WO2009036314A2 (en) | 2009-03-19 |
JP2013122769A (ja) | 2013-06-20 |
US8325184B2 (en) | 2012-12-04 |
JP5166535B2 (ja) | 2013-03-21 |
HUE046975T2 (hu) | 2020-04-28 |
US20090073168A1 (en) | 2009-03-19 |
EP2037417A3 (en) | 2009-07-01 |
WO2009036314A3 (en) | 2009-07-09 |
JP5563054B2 (ja) | 2014-07-30 |
KR101134241B1 (ko) | 2012-04-09 |
CN101802874A (zh) | 2010-08-11 |
TW200931339A (en) | 2009-07-16 |
EP2037417A2 (en) | 2009-03-18 |
JP2010539602A (ja) | 2010-12-16 |
KR20100051750A (ko) | 2010-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101802874B (zh) | 图形处理单元中的片段着色器旁路及其设备和方法 | |
CN109478310B (zh) | 在计算环境中使用纹素着色器的多分辨率延迟着色 | |
EP2946364B1 (en) | Rendering graphics data using visibility information | |
US20210072955A1 (en) | Programmable conversion hardware | |
US10360717B1 (en) | Method and apparatus for subdividing shader workloads in a graphics processor for efficient machine configuration | |
US10102662B2 (en) | Primitive culling using automatically compiled compute shaders | |
US10643369B2 (en) | Compiler-assisted techniques for memory use reduction in graphics pipeline | |
US11776195B2 (en) | Techniques to manage execution of divergent shaders | |
KR102006584B1 (ko) | 레이트 심도 테스팅과 컨서버티브 심도 테스팅 간의 동적 스위칭 | |
US8907979B2 (en) | Fast rendering of knockout groups using a depth buffer of a graphics processing unit | |
CN109564694A (zh) | 用于基于入库的图形处理的顶点着色器 | |
WO2021242577A1 (en) | Task graph scheduling for workload processing | |
US20210157600A1 (en) | Issuing execution threads in a data processor | |
US11029960B2 (en) | Apparatus and method for widened SIMD execution within a constrained register file | |
US11538165B2 (en) | Technologies for automated screen segmentation | |
US20240169641A1 (en) | Vertex index routing through culling shader for two level primitive batch binning | |
US20240086161A1 (en) | Automatic code generation of optimized rtl via redundant code removal | |
US20230377086A1 (en) | Pipeline delay elimination with parallel two level primitive batch binning | |
WO2021242576A1 (en) | Task graph generation for workload processing |
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 |