用于基于目的地阿尔法值减少图形处理系统中的存储器存取带宽的技术的制作方法

文档序号:6533158阅读:168来源:国知局
用于基于目的地阿尔法值减少图形处理系统中的存储器存取带宽的技术的制作方法
【专利摘要】本发明描述用于基于目的地阿尔法值减少图形处理系统中的存储器存取带宽的技术。所述技术可包含从频段缓冲器检索目的地阿尔法值,所述目的地阿尔法值是响应于处理与第一基元相关联的第一像素而产生。所述技术可进一步包含基于所述目的地阿尔法值确定是否执行致使不从纹理缓冲器检索用于第二像素的一或多个纹理值的动作。在一些实例中,所述动作可包含在所述第二像素到达像素处理管线的纹理映射级之前,将所述第二像素从所述像素处理管线丢弃。所述第二像素可与不同于所述第一基元的第二基元相关联。
【专利说明】用于基于目的地阿尔法值减少图形处理系统中的存储器存取带宽的技术

【技术领域】
[0001]本发明涉及图形处理系统,且更明确地说,涉及在图形处理系统中处理像素。

【背景技术】
[0002]计算装置通常利用图形处理单元(GPU)来加速将图形数据渲染到显示器上。此些计算装置可包含例如计算机工作站、移动电话、嵌入式系统、个人计算机和视频游戏控制台。GPU还由基于视窗的操作系统用来执行视窗组成操作。基于视窗的操作系统使用图形用户接口(GUI),其包含视窗化系统,所述视窗化系统允许用户结合若干不同开放式应用程序而工作并在所述应用程序之间切换,所述应用程序中的每一者可在其自己的应用视窗中运行。在此系统中,个别视窗可由用户定位并重新定大小成各种重叠和/或非重叠的配置。
[0003]视窗管理器是用以控制视窗在基于视窗的操作系统中的放置和出现两者的一类软件程序。所述视窗管理器还与GPU交互以致使视窗被绘制到屏幕,且周期性地或响应于视窗中的任一者的位置、大小或外观的改变而刷新视窗。每一应用程序通常将应用程序的视窗的当前外观的表示作为表面存储在系统存储器中。表面可指代像素阵列的色彩数据的集合。为了刷新显示器,视窗管理器通常将与所有开放式应用视窗相关联的所有表面重新绘制到屏幕上。因为在给定时间点将显示在显示器上的整组表面可包含彼此重叠的表面,所以视窗管理器通常执行表面组成操作,其将多个独立表面转换成单个屏幕表面以在显示器上呈现。用于执行表面组成的一种技术涉及以从后到前的次序,例如根据绘制工具的算法将表面绘制到屏幕上。以此方式,如果两个表面含有重叠部分,那么最前表面的重叠部分将被绘制到最后表面的重叠部分之上,从而致使第一表面的重叠部分可见,且第二表面的重叠部分不可见,如检视者将预期看到。因此,视窗管理器可通过以特定次序将每一应用表面绘制到屏幕(不管可见还是不可见)来执行表面组成。
[0004]为了绘制每一应用表面,视窗管理器可致使GPU渲染与所述表面相关联的一或多个基元,且将纹理的各种组合应用于所述基元,以给出所述表面的所要外观。应用于所述基元中的每一者的纹理可由对应于包含于与基元相关联的应用表面中的色彩值且/或从其得出的纹理值来界定。另外,视窗管理器可修改纹理值,且/或应用额外纹理来实现特定视觉效果,例如阴影、边界、透明度、调光等。对于应用于基元的每一纹理,GPU通常从芯片外存储器存取与基元相关联的每个像素的纹理值,这可导致较高量的存储器带宽使用率。


【发明内容】

[0005]本发明描述用于基于目的地阿尔法值减少图形处理系统中的存储器存取带宽的技术。当根据本发明的技术处理个别源像素时,目的地阿尔法测试模块可从频段缓冲器检索与所述源像素相关联的目的地阿尔法值,且基于所述目的地阿尔法值确定是否致使从纹理缓冲器检索用于源像素的纹理值。在一些实例中,目的地阿尔法值可指示具有与源像素相同的屏幕位置的目的地像素的不透明度等级。通过基于其对应的目的地阿尔法值选择性地检索用于源像素的纹理值,本发明的技术可在与相对于常规图形系统中的纹理缓冲器通常发生的源读取的数目相比时,有效地减少相对于纹理缓冲器需要发生的源读取的数目。以此方式,可减少用于图形处理系统的存储器存取带宽。
[0006]在一个实例中,本发明描述一种方法,其包含用图形处理器从频段缓冲器检索目的地阿尔法值。所述目的地阿尔法值是响应于处理与第一基元相关联的第一像素而产生。所述方法进一步包含用图形处理器且基于所述目的地阿尔法值确定是否执行致使不从纹理缓冲器检索用于第二像素的一或多个纹理值的动作。所述第二像素与不同于所述第一基元的第二基元相关联。所述方法进一步包含响应于确定执行所述动作,用所述图形处理器执行所述致使不从所述纹理缓冲器检索用于所述第二像素的所述一或多个纹理值的动作。
[0007]在另一实例中,本发明描述一种图形处理装置,其包含经配置以从频段缓冲器检索目的地阿尔法值的目的地阿尔法测试模块。所述目的地阿尔法值是响应于处理与第一基元相关联的第一像素而产生。的地阿尔法测试模块经配置以基于所述目的地阿尔法值确定是否执行致使不从纹理缓冲器检索用于第二像素的一或多个纹理值的动作,且响应于确定执行所述动作而执行致使不从纹理缓冲器检索用于第二像素的一或多个纹理值的动作。所述第二像素与不同于所述第一基元的第二基元相关联。
[0008]在另一实例中,本发明描述一种设备,其包含用于从频段缓冲器检索目的地阿尔法值的装置。所述目的地阿尔法值是响应于处理与第一基元相关联的第一像素而产生。所述设备进一步包含用于基于所述目的地阿尔法值确定是否执行致使不从纹理缓冲器检索用于第二像素的一或多个纹理值的动作的装置。所述第二像素与不同于所述第一基元的第二基元相关联。所述设备进一步包含用于响应于确定执行所述动作执行所述致使不从所述纹理缓冲器检索用于所述第二像素的所述一或多个纹理值的动作的装置。
[0009]在另一实例中,本发明描述一种计算机可读媒体,其包含致使一或多个处理器从频段缓冲器检索目的地阿尔法值的指令。所述目的地阿尔法值是响应于处理与第一基元相关联的第一像素而产生。所述计算机可读媒体进一步包含致使所述一或多个处理器基于所述目的地阿尔法值确定是否执行致使不从纹理缓冲器检索用于第二像素的一或多个纹理值的动作的指令。所述第二像素与不同于所述第一基元的第二基元相关联。所述计算机可读媒体进一步包括响应于确定执行所述动作而致使所述一或多个处理器执行致使不从所述纹理缓冲器检索用于第二像素的一或多个纹理值的动作的指令。
[0010]在附图及下文描述中陈述本发明的一或多个实例的细节。将从描述和图式且从所附权利要求书明白本发明中的其它特征、目标和优点。

【专利附图】

【附图说明】
[0011]图1是说明可用以实施本发明的基于目的地阿尔法值的选择性纹理值检索技术的实例计算装置的框图。
[0012]图2是更详细地说明图1中的计算装置的CPU、GPU和系统存储器的框图。
[0013]图3是说明可用以实施本发明的基于目的地阿尔法值的选择性纹理值检索技术的实例像素处理管线的框图。
[0014]图4是说明可用以实施图3的像素处理管线的实例像素处理管线的框图。
[0015]图5是说明可用以实施本发明的技术的实例目的地阿尔法测试模块的框图。
[0016]图6是说明可用以实施本发明的技术的另一实例目的地阿尔法测试模块的框图。
[0017]图7是说明使用可配置模板测试块来执行目的地阿尔法测试且实施本发明的选择性纹理值检索技术的实例像素处理管线的框图。
[0018]图8是说明可用以实施图7的像素处理管线的实例可配置模板测试块的框图。
[0019]图9是说明使用可配置z/模板测试块根据本发明的选择性纹理值检索技术来执行目的地阿尔法测试的实例像素处理管线的框图。
[0020]图10是说明可用以实施图9的像素处理管线的实例可配置z/模板测试块的框图。
[0021]图11是说明使用可编程着色器单元根据本发明的选择性纹理值检索技术来执行目的地阿尔法测试的实例像素处理管线的框图。
[0022]图12是说明使用可编程着色器单元根据本发明的选择性纹理值检索技术来执行目的地阿尔法测试和纹理映射的另一实例像素处理管线的框图。
[0023]图13是说明根据本发明的用于基于目的地阿尔法值来选择性地检索用于源像素的纹理值的实例技术的流程图。
[0024]图14是说明可用以实施图13中所示的技术的用于执行目的地阿尔法测试的实例技术的流程图。
[0025]图15是说明可用以实施图14中所示的技术的用于将目的地阿尔法值与阈值进行比较的实例技术的流程图。
[0026]图16是说明根据本发明的用于自动启用基于目的地阿尔法值的选择性纹理值检索渲染模式的实例技术的流程图。

【具体实施方式】
[0027]本发明描述用于基于目的地阿尔法值减少图形处理系统中的存储器存取带宽的技术。当根据本发明的技术处理个别源像素时,目的地阿尔法测试模块可基于与源像素相关联的目的地阿尔法值来确定是否致使从缓冲器检索用于源像素的纹理值。在一些实例中,目的地阿尔法值可指示具有与源像素相同的屏幕位置的目的地像素的不透明度等级。通过基于其对应的目的地阿尔法值选择性地检索用于源像素的纹理值,本发明的技术可在与相对于常规图形系统中的纹理缓冲器通常发生的源读取的数目相比时,有效地减少相对于纹理缓冲器需要发生的源读取的数目。以此方式,可减少用于图形处理系统的存储器存取带宽。
[0028]本发明的技术可在图形处理环境下特别有用,其中以从前到后的方式,例如根据反向绘制工具的算法来执行视窗组成。在此环境中,如果目的地像素归因于一或多个先前所处理的表面而已经为不透明,那么针对所述同一像素位置而处理的任何后续源像素将不为目的地像素的整体外观作贡献,因为归因于从前到后渲染,对于所述位置,此些源像素位于所述先前处理的像素后面,且因此不可见。由此,可安全地丢弃用于所述像素位置的任何后续源像素,而不影响所渲染图像的外观。因此,通过在从前到后组成环境中利用本发明的技术,在一些实例中,可使用本发明的技术来减少用于图形处理系统的存储器存取带宽,而不牺牲所得所渲染图像的质量。
[0029]本发明的基于目的地阿尔法值的选择性纹理值检索技术在频段渲染的情境中可特别有用,例如其中将图形图像细分为多个较小部分(例如,目的地像素的子集、像素的瓦片或频段)且将图像的每一部分作为单独渲染遍次来渲染的渲染情境。在此渲染情境中,当目的地阿尔法测试模块需要此些值时,可经由频段缓冲器来存取特定频段的目的地阿尔法值。这减轻了对从帧缓冲器存取目的地阿尔法值的需要,帧缓冲器可位于具有比频段缓冲器低的可用带宽的存储器中。因此,通过在其中目的地阿尔法值是从频段缓冲器检索的频段化情境中实施本发明的技术,检索目的地阿尔法值所需的开销带宽与通过减少对纹理缓冲器的源读取的数目而实现的带宽节省相比,可相对来说最小。
[0030]尽管可使用z缓冲技术,通过丢弃同一像素位置中在其它源像素后面的源像素来减少合成带宽,但当像素具有逐像素源阿尔法值时,此些技术不会恰当地渲染表面,这本质上允许重叠像素半透明。然而,当所有表面均具有逐像素源阿尔法值时,本发明的基于目的地阿尔法值的选择性纹理值检索技术可减少组成带宽,从而提供较稳健的带宽减少机制。
[0031]用以实施本发明的选择性纹理值检索技术的目的地阿尔法测试模块可以各种方式实施。举例来说,可将目的地阿尔法测试模块实施为专用固定功能硬件块、在着色器单元上执行的着色器程序、经配置以执行目的地阿尔法测试的可配置模板测试块,和/或经配置以执行目的地阿尔法测试的可配置z/模板测试块。本发明中稍后将更详细地描述这些各种配置。
[0032]图1是说明可用以实施本本发明的基于目的地阿尔法值的选择性纹理值检索技术的实例计算装置2的框图。计算装置2可包括(例如)个人计算机、桌上型计算机、膝上型计算机、计算机工作站、视频游戏平台或控制台、移动电话(例如蜂窝式或卫星电话)、陆线电话、因特网电话、手持式装置(例如便携式视频游戏装置或个人数字助理(PDA)、个人音乐播放器、视频播放器、显示装置、电视机、电视机顶盒、服务器、中间网络装置、大型计算机或任何其它类型的处理和/或显示图形数据的装置。
[0033]如图1的实例中所说明,计算装置2包含用户输入接口 4、CPU 6、存储器控制器8、系统存储器10、图形处理单元(GPU) 12,GPU高速缓冲存储器14、显示接口 16、显示器18以及总线20、22。用户输入接口 4、CPU 6、存储器控制器8、GPU 12以及显示接口 16可使用总线20彼此通信。存储器控制器8和系统存储器10也可使用总线22彼此通信。总线20、22可为多种总线结构中的任一者,例如第三代总线(例如,超输送总线或无限带宽总线)、第二代总线(例如,高级图形端口总线、外围组件互连(PCI)快速总线,或高级可扩展接口(AXI)总线),或另一类型的总线或装置互连。应注意,图1中所展示的不同组件之间的总线和通信接口的特定配置仅为示范性的,且可使用具有相同或不同组件的计算装置和/或其它图形处理系统的其它配置来实施本发明的技术。
[0034]CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供给计算装置2以致使CPU 6执行一或多个软件应用程序。在CPU 6上执行的软件应用程序可包含(例如)操作系统、文字处理器应用程序、电子邮件应用程序、电子表格应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。用户可经由通过用户输入接口 4耦合到计算装置2的一或多个输入装置(未图示)(例如键盘、鼠标、麦克风、触摸垫或另一输入装置)将输入提供给计算装置2。
[0035]在CPU 6上执行的软件应用程序可包含一或多个图形渲染指令,其指令CPU 6导致图形数据向显示器18的渲染。在一些实例中,软件指令可符合图形应用编程接口(API),例如开放图形库(OpcnGL_?)AP1、开放图形库嵌入式系统(OpenGL ES)AP1、直接3D AP1、X3DAP1、RenderMan AP1、WebGL API,或任何其它共用或专有标准图形API。为了处理图形渲染指令,CPU 6可向GPU 12发出一或多个图形渲染命令,以致使GPU 12执行图形数据的渲染中的一些或全部。在一些实例中,待渲染的图形数据可包含图形基元的列表,例如点、线、三角形、四边形、三角条等。
[0036]存储器控制器8促进进入系统存储器10和从系统存储器10出来的数据的传送。举例来说,存储器控制器8可接收存储器读取和写入命令,且相对于系统存储器10来服务此些命令,以便为计算装置2中的组件提供存储器服务。存储器控制器8经由存储器总线22通信地耦合到系统存储器10。尽管图1中将存储器控制器8说明为与CPU 6和系统存储器10两者分开的处理模块,但在其它实例中,存储器控制器8的功能性的一些或全部可在CPU 6和系统存储器10中的一者或两者上实施。
[0037]系统存储器10可存储可存取以供CPU 6执行的程序模块和/或指令,和/或供在CPU6上执行的程序使用的数据。举例来说,系统存储器10可存储由CPU 6用来在显示器18上呈现图形用户接口(GUI)的视窗管理器应用程序。另外,系统存储器10可存储用户应用程序以及与所述应用程序相关联的应用表面数据。系统存储器10可另外存储供计算装置2的其它组件使用和/或由计算装置2的其它组件产生的信息。举例来说,系统存储器10可充当GPU 12的装置存储器,且可存储待由GPU 12操作的数据以及因GPU 12所执行的操作而产生的数据。举例来说,系统存储器10可存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器等的任何组合。系统存储器10可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
[0038]GPU 12可经配置以执行图形操作,以向显示器18渲染一或多个图形基元。因此,当在CPU 6上执行的软件应用程序中的一者需要图形处理时,CPU 6可将图形命令和图形数据提供给GPU 12,以供向显示器18渲染。图形数据可包含例如绘制命令、状态信息、基元信息、纹理信息等。在一些例子中,GPU 12可建有高度并行的结构,其提供比CPU 6高效的对与复杂图形有关的操作的处理。举例来说,GPU 12可包含多个处理元件,其经配置以便以并行方式对多个顶点或像素进行操作。在一些例子中,GPU 12的高度并行性质可与使用CPU 6直接将场景绘制到显示器18相比,允许GPU 12较快地将图形图像(例如,⑶I和二维(2D)和/或三维(3D)图形场景)绘制到显示器18上。
[0039]根据本发明,GPU 12可经配置以基于与源像素相关联的目的地阿尔法值来选择性地解锁用于源像素的纹理值。举例来说,GPU 12可响应于处理与第一经光栅化基元相关联的第一像素而产生目的地阿尔法值,将目的地阿尔法值存储在频段缓冲器中,响应于处理与第一像素不同的第二像素而从频段缓冲器检索目的地阿尔法值,基于目的地阿尔法值来确定是否执行致使不从缓冲器检索用于第二像素的一或多个纹理值的动作,以及响应于确定执行所述动作而执行致使不从缓冲器检索用于第二像素的一或多个纹理值的动作。第二像素可与不同于第一经光栅化基元的第二经光栅化基元相关联。另外,第二像素可具有与第一像素相同的像素位置(例如,第一和第二像素可在屏幕空间中具有相同位置坐标)。通过基于其对应目的地阿尔法值选择性地检索用于源像素的纹理值,GPU 12可有效地减少相对于纹理值而需要发生的源读取的数目,从而减少GPU 12渲染图形图像所需的存储器存取带宽。
[0040]在一些实例中,GPU 12可至少部分地通过将目的地阿尔法值与阈值进行比较,且基于通过将目的地阿尔法值与阈值进行比较而产生的结果确定是否执行动作,来确定应从纹理缓冲器检索的用于第二像素的一或多个纹理值。在一些实施方案中,GPU 12可至少部分地通过确定目的地阿尔法值是否小于或等于阈值来将目的地阿尔法值与阈值进行比较。在此些实例中,GPU 12可响应于确定目的地阿尔法值小于或等于阈值而执行致使不从纹理缓冲器检索用于第二像素的一或多个纹理值的动作,且响应于确定目的地阿尔法值不小于或等于阈值而执行致使从纹理缓冲器检索用于第二像素的一或多个纹理值的动作。所述阈值可为例如指示位于目的地像素后面的像素在其处或之下将不可见且/或不需要显示的用于目的地像素的阈值不透明等级的值。在一些实例中,阈值可指示其中目的地像素完全不透明的不透明等级,例如值零。阈值可由在CPU 6上执行的软件和/或由GPU 12上的硬件或着色器组件配置。
[0041]在一些实施方案中,目的地阿尔法值aD可在零到一的范围内,包含零和一(即,
1),其中值零指示完全不透明的像素(即,大体上不具有透明度的像素-100%不透明,0%透明),且值一指示完全透明的目的地像素(即,大体上不具有不透明度的像素-100%透明,0%不透明)。在此些实例中,随着目的地阿尔法值从零增加到一,不透明度等级从目的地阿尔法值零处的大体上完全不透明度减小到目的地阿尔法值一处的大体上无不透明度。在额外实施方案中,目的地阿尔法值零可指示完全透明的像素,且目的地阿尔法值一可指示完全不透明的像素。目的地阿尔法值的其它实例和范围是可能的,且在本发明的范围内。
[0042]在一些实例中,目的地阿尔法值可对应于由图形管线中的常规阿尔法混合单元所产生的目的地阿尔法值。在进一步实例中,目的地阿尔法值可对应于由根据从前到后阿尔法混合功能而进行混合的阿尔法混合单元所产生的目的地阿尔法值。在额外实例中,目的地阿尔法值可对应于存储在帧缓冲器和/或频段缓冲器中的目的地阿尔法值,如本发明中进一步详细描述。在进一步实例中,目的地阿尔法值可为上述实例中的任一者的组合。
[0043]在额外实例中,GPU的像素处理管线可在像素样本等级下执行处理。在此些实例中,每一像素可与多个像素样本相关联,且每一像素样本可与单个像素相关联。另外,每一像素样本可具有相应的目的地阿尔法值。在此些实例中,为了确定是否应从缓冲器检索用于第二像素的一或多个纹理值,GPU 12可确定与像素相关联的所有样本的目的地阿尔法值是否小于或等于阈值。如果与像素相关联的所有样本的目的地阿尔法值小于或等于阈值,那么GPU 12可致使不为像素检索纹理值。否则,如果与像素相关联的样本中的至少一者的目的地阿尔法值不小于或等于阈值,那么GPU 12可致使为像素检索纹理值。
[0044]在一些实例中,致使不从缓冲器检索第二像素的一或多个纹理值的动作可为在第二像素到达像素处理管线的纹理映射级之前从像素处理管线丢弃第二像素的动作。在此些实例中,GPU 12可经配置以基于目的地阿尔法值确定是否从像素处理管线丢弃第二像素,且响应于基于目的地阿尔法值确定丢弃第二像素,在第二像素到达像素处理管线的纹理映射级之前,从像素处理管线丢弃第二像素。在此些实例中,GPU 12还可经配置以响应于基于目的地阿尔法值确定不丢弃第二像素而将第二像素传递到一组一或多个处理级,包含纹理映射级。
[0045]在进一步实例中,致使不从缓冲器检索第二像素的一或多个纹理值的动作可为致使不为第二像素执行纹理映射的动作。举例来说,所述动作可为断言致使不为第二像素检索纹理值的控制信号的动作。所述控制信号可为例如致使像素处理管线内的另一处理级丢弃所述像素的控制信号。作为另一实例,控制信号可针对像素处理管线内的特定像素启用或停用纹理映射级。在更多实例中,致使不从缓冲器检索第二像素的一或多个纹理值的动作可为将第二像素的纹理映射停用属性设定为致使纹理映射为像素而停用的值。
[0046]用以实施本发明的选择性纹理值检索技术的目的地阿尔法测试模块可以各种方式实施。举例来说,可将目的地阿尔法测试模块实施为专用固定功能硬件块、在着色器单元上执行的着色器程序、经配置以执行目的地阿尔法测试的可配置模板测试块,和/或经配置以执行目的地阿尔法测试的可配置z/模板测试块。本发明中稍后将更详细地描述这些各种配置。
[0047]在一些例子中,GPU 12可集成到计算装置2的母板中。在其它例子中,GPU 12可存在于安装在计算装置2的母板中的端口中的图形卡上,或可以其它方式并入到经配置以与计算装置2互操作的外围装置内。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA),数字信号处理器(DSP),或其它等效集成或离散逻辑电路。
[0048]GPU 12可直接耦合到GPU高速缓冲存储器14。因此,GPU 12可在不使用总线20的情况下,从GPU高速缓冲存储器14读取数据和将数据写入到GPU高速缓冲存储器14。换句话说,GPU 12可使用本地存储而不是芯片外存储器来本地处理数据。这通过消除GPU 12经由总线20读取数据和写入数据的需要来允许GPU 12以较高效的方式操作,总线20可能经历较重的总线业务。然而,在一些例子中,GPU 12可不包含单独存储器,而是经由总线20利用系统存储器10。GPU高速缓冲存储器14可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
[0049]CPU 6和/或GPU 12可将经渲染的图像数据存储在系统存储器10内所分配的帧缓冲器中。显示接口 16可从帧缓冲器检索数据,且配置显示器18以显示由经渲染的图像数据表示的图像。在一些实例中,显示接口 16可包含数/模转换器(DAC),其经配置以将从帧缓冲器检索到的数字值转换为可由显示器18消耗的模拟信号。在其它实例中,显示接口 16可将数字值直接传递到显示器18以供处理。显示器18可包含监视器、电视机、投影装置、液晶显示器(LCD)、等离子体显示面板、发光二极管(LED)阵列、阴极射线管(CRT)显示器、电子报纸、表面传导电子发射显示器(SED)、激光电视机显示器、纳米晶体显示器或另一类型的显示单元。显示器18可集成在计算装置2内。举例来说,显示器18可为移动电话的屏幕。或者,显示器18可为经由有线或无线通信链路耦合到计算机装置2的独立装置。举例来说,显示器18可为经由缆线或无线链路连接到个人计算机的计算机监视器或平板显不器。
[0050]图2是更详细地说明图1的CPU 6,GPU 12和系统存储器10的框图。CPU 6包含至少一个软件应用程序24、图形API 26以及GPU驱动器28,其中的每一者可为在CPU6上执行的一或多个软件应用程序或服务。GPU 12包含图形处理管线30,其包含一起操作以执行图形处理命令的多个图形处理级。如图2中所示,图形处理管线30包含命令引擎32、几何处理级34、光栅化级36,以及像素处理管线38。图形处理管线30中的组件中的每一者可实施为固定功能组件、可编程组件(即,作为在可编程着色器单元上执行的着色器程序的一部分),或作为固定功能和可编程组件的组合。系统存储器10包含可存储经渲染图像数据的帧缓冲器40,以及可存储多个纹理值的纹理缓冲器42。
[0051]根据本发明的实例实施例,软件应用程序24可为控制一或多个应用视窗在GUI中的位置和外观的视窗管理器应用程序。然而,在其它实例中,软件应用程序24可为利用GPU12的功能性的任何应用程序。举例来说,软件应用程序24可为GUI应用程序、操作系统、便携式映射应用程序、用于工程设计或艺术应用的计算机辅助的设计程序、视频游戏应用程序,或利用2D或3D图形的另一类型的软件应用程序。
[0052]软件应用程序24可包含一或多个绘制指令,其指令GPU 12渲染图形用户接口(GUI)和/或图形场景。举例来说,绘制指令可包含界定将由GPU 12渲染的一组一或多个图形基元的指令。在一些实例中,所述绘制指令可共同界定GUI中所使用的多个视窗化表面中的全部或部分。在额外实例中,绘制指令可共同界定图形场景的全部或部分,其包含由应用程序界定的模型空间或世界空间内的一或多个图形对象。
[0053]软件应用程序24可经由图形API 26调用GPU驱动器28,以向GPU 12发出一或多个命令,以用于将一或多个图形基元渲染到可显示图形图像中。举例来说,软件应用程序24可经由图形API 26调用GPU驱动器28,以将基元定义提供给GPU 12。在一些例子中,基元定义可以绘制基元(例如,三角形、矩形、三角扇、三角条等)的列表的形式提供给GPU
12。基元定义可包含顶点说明,其指定与待渲染的基元相关联的一或多个顶点。顶点说明可包含每一顶点的位置坐标,且在一些例子中,包含与顶点相关联的其它属性,例如色彩坐标、法向向量和纹理坐标。基元定义还可包含基元类型信息(例如,三角形、矩形、三角扇、三角条等)、比例缩放信息、旋转信息等。基于软件应用程序24向GPU驱动器28发出的指令,GPU驱动器28可用公式表示指定GPU 12执行以便渲染基元的一或多个操作的一或多个命令。当GPU 12从CPU 6接收到命令时,图形处理管线30解码所述命令,且配置图形处理管线30内的一或多个处理元件,以执行所述命令中所指定的操作。在执行指定操作之后,图形处理管线30将经渲染的数据输出到与显示装置相关联的帧缓冲器40。
[0054]在其中软件应用程序24包含视窗管理器的实例中,软件应用程序24可经配置以致使GPU 12渲染与用于个别用户应用程序的开放CTI视窗相关联的一或多个表面。应用表面中的每一者可对应于为用户应用程序执行的开放视窗,且包含用于所述视窗的色彩数据的当前状态,所述色彩数据在本文中可称为表面色彩数据。为了使视窗管理器渲染应用表面,软件应用程序24可向GPU驱动器28和/或存储器控制器8发出一或多个指令,其致使表面色彩数据的全部或部分放置到GPU 12的一或多个纹理缓冲器(例如,纹理缓冲器42)中。另外,软件应用程序24可修改色彩数据和/或应用额外纹理,以实现特定视窗的特定视觉效果,例如阴影、边界、透明度、调光等。在设置纹理缓冲器之后,软件应用程序24可发出一或多个指令,其致使GPU 12渲染对应于表面的一或多个基元,且将一或多个纹理应用于所述基元中的一些或全部。可将表面色彩数据存储在系统存储器10中或用于CPU 6的高速缓冲存储器中。在一些实例中,纹理缓冲器可位于系统存储器10中。因此,在一些实例中,表面色彩数据和一或多个纹理缓冲器可为同一存储器自系统的一部分,但在其它实例中,表面色彩数据和一或多个纹理缓冲器可位于不同存储器子系统上。
[0055]根据本发明的实例实施例,软件应用程序24可发出一或多个命令,其致使GPU 12内的阿尔法混合块使用一组一或多个从前到后阿尔法混合功能来执行阿尔法混合。从前到后阿尔法混合功能可指代阿尔法混合功能,其经配置以混合以从前到后方式处理的像素(即,较靠近观看者的像素在较远离观看者的像素之前被处理),且不同于GPU中通常使用的从后到前阿尔法混合功能。一组实例从前到后阿尔法混合功能可包含以下功能:
[0056]Cdst[n] = (Adst[n-1])x(Asrc[n]xCsrc[η])+Cdst [η-1] (I)
[0057]Adst [η] = (1-Asrc [η]) χ (Adst [η-1]) (2)
[0058]其中ρ[0]、ρ[1]...ρ[η_1]为η个先前处理的源像素,ρ[η]为当前处理的源像素(即,当前源像素),Cdst [η]为响应于处理当前源像素而产生的目的地色彩值,Adst [η]为响应于处理当前像素值而产生的目的地阿尔法值,Cdst[n-Ι]为响应于处理先前处理的源像素(即,P [n-Ι])而产生的目的地色彩值,Adst [n-Ι]为响应于处理先前处理的源像素(即,P [n-Ι])而产生的目的地阿尔法值,Csrc[n]为对应于当前源像素的源色彩值,且Asrc[n]为对应于当前源像素的源阿尔法值。在等式(I)和(2)中,对于任何值i,Adst[i]=0可指示完全不透明的目的地像素,且Adst[i] = I可指示完全透明的目的地像素。可使Adst [-1]和Cdst [-1]初始化,以占用默认值(例如,分别为值I和O)。在一些实例中,Asrc [n] xCsrc [η]相乘可在着色器(例如,像素着色器)中执行,而其它数学运算作为阿尔法混合模块的一部分而执行。
[0059]GPU驱动器28可进一步经配置以编译一或多个着色器程序,且将经编译的着色器程序下载到GPU 12内所包含的一或多个可编程着色器单元上。可以高级着色语言(例如开放GL着色语言(GLSL)、高级着色语言(HLSL),图形C(Cg)着色语言等)来编写着色器程序。经编译的着色器程序可包含控制GPU 12内的可编程着色器单元的操作的一或多个指令。举例来说,着色器程序可包含顶点着色器程序和/或像素着色器程序。顶点着色器程序可控制可编程顶点着色器单元或统一着色器单元的执行,且包含指定一或多个逐顶点操作的指令。像素着色器程序可包含像素着色器程序,其控制可编程顶点着色器单元或统一着色器单元的执行,且包含指定一或多个逐顶点操作的指令。根据本发明的一些实例实施例,像素着色器程序还可包含基于源像素的对应目的地阿尔法值而选择性地致使为源像素检索纹理值的指令。
[0060]图形处理管线30可经配置以经由图形驱动器28从CPU 6接收一或多个图形处理命令,且执行所述图形处理命令以产生可显示的图形图像。如上文所论述,图形处理管线30包含多个级,其一起操作以执行图形处理命令。然而,应注意,此些级无需必然地在单独硬件块中实施。举例来说,几何处理级34和像素处理管线38的部分可作为统一着色器单元的部分而实施。
[0061]命令引擎32可接收图形处理命令,且配置图形处理管线30内的其余处理级,以执行用于进行图形处理命令的各种操作。图形处理命令可包含(例如)绘制命令和图形状态命令。绘制命令可包含顶点指定命令,其为一或多个顶点指定位置坐标,且在一些例子中,指定与顶点中的每一者相关联的其它属性值,例如色彩坐标、法向向量、纹理坐标和雾坐标。图形状态命令可包含基元类型命令、变换命令、照明命令等。基元类型命令可指定待渲染的基元的类型,和/或如何组合顶点以形成基元。变换命令可指定将对顶点执行的变换的类型。照明命令可指定图形场景内的不同光的类型、方向和/或放置。命令引擎32可致使几何处理级34相对于与一或多个所接收命令相关联的顶点和/或基元执行几何处理。
[0062]几何处理级34可对一或多个顶点执行逐顶点操作和/或基元设置操作,以便产生用于光栅化级36的基元数据。每一顶点可与一组属性(例如,位置坐标、色彩值、法向向量和纹理坐标)相关联。几何处理级34根据各种逐顶点操作来修改这些属性中的一或多者。举例来说,几何处理级34可对顶点位置坐标执行一或多个变换,以产生经修改的顶点位置坐标。几何处理级34可例如将模型化变换、检视变换、投影变换、模型视图变换、模型视图投影变换、视图端口变换和深度范围比例缩放变换中的一或多者应用于顶点位置坐标,以产生经修改的顶点位置坐标。在一些例子中,顶点位置坐标可为模型空间坐标,且经修改的顶点位置坐标可为屏幕空间坐标。屏幕空间坐标可在应用模型化、检视、投影和视图端口变换之后获得。在一些例子中,几何处理级34还可对顶点执行逐顶点照明操作,以产生顶点的经修改色彩坐标。几何处理级34还可执行其它操作,包含例如正常变换、正常标准化操作、视图体积剪辑、同类划分和/或隐面消除操作。
[0063]几何处理级34可产生基元数据,其包含一组一或多个经修改顶点,其界定待光栅化的基元,以及指定顶点如何组合以形成基元的数据。经修改的顶点中的每一者可包含例如与顶点相关联的经修改顶点位置坐标和经处理的顶点属性值。基元数据可共同对应于将由图形处理管线30的进一步级光栅化的基元。概念上,每一顶点可对应于基元的其中基元的两个边缘相交的隅角。几何处理级34可将基元数据提供给光栅化级36以供进一步处理。
[0064]在一些实例中,几何处理级34的全部或部分可由在一或多个着色器单元上执行的一或多个着色器程序实施。举例来说,在此些实例中,几何处理级34可由顶点着色器、几何着色器或其任何组合来实施。在其它实例中,几何处理级34可实施为固定功能硬件处理管线,或实施为固定功能硬件与在一或多个着色器单元上执行的一或多个着色器程序的组口 ο
[0065]光栅化级36经配置以从几何处理级34接收表示待光栅化的基元的基元数据,且光栅化所述基元,以产生对应于经光栅化基元的多个源像素。在一些实例中,光栅化级36可确定哪些屏幕像素位置由待光栅化的基元覆盖,且为确定为由基元覆盖的每一屏幕像素位置产生源像素。光栅化级36可通过使用所属领域的技术人员已知的技术(例如,边缘行走技术、评估边缘等式等)来确定哪些屏幕像素位置由基元覆盖。光栅化级36可将所得源像素提供给像素处理管线38以供进一步处理。
[0066]由光栅化级36产生的每一源像素可对应于屏幕像素位置,即目的地像素,且与一或多个色彩属性相关联。为特定经光栅化基元而产生的所有源像素可称为与经光栅化基元相关联。由光栅化级36确定为由基元覆盖的像素可概念上包含表示基元的顶点的像素,表示基元的边缘的像素,以及表示基元的内部的像素。
[0067]像素处理管线38经配置以接收与经光栅化基元相关联的源像素,且对所述源像素执行一或多个逐像素操作。根据本发明,像素处理管线38所执行的逐像素操作可包含目的地阿尔法测试、纹理映射操作和目的地阿尔法值产生操作。在一些实例中,目的地阿尔法值产生操作可对应于阿尔法混合操作。在一些实例中,当处理个别源像素时,像素处理管线38可在纹理映射操作之前执行目的地阿尔法测试。可由像素处理管线38执行的其它逐像素操作包含例如色彩计算、像素着色、逐像素照明、雾化处理、混合、像素所有权文本、源阿尔法测试、模板测试、深度测试、剪刀测试和/或点画操作。另外,像素处理管线38可执行一或多个像素着色器程序,以实施一或多个逐像素操作。像素处理管线38所产生的所得数据在本文中可称为目的地像素数据,且存储在帧缓冲器40中。目的地像素数据可与帧缓冲器40中的目的地像素相关联,所述目的地像素具有与曾处理的源像素相同的显示位置。目的地像素数据可包含例如色彩值、目的地阿尔法值、深度值等数据。
[0068]根据本发明,像素处理管线38可响应于处理与第一经光栅化基元相关联的第一像素而产生目的地阿尔法值,将目的地阿尔法值存储在频段缓冲器中,响应于处理与第一像素不同的第二像素而从频段缓冲器检索目的地阿尔法值,基于目的地阿尔法值来确定是否执行致使不从缓冲器检索用于第二像素的一或多个纹理值的动作,以及响应于确定执行所述动作而执行致使不从缓冲器检索用于第二像素的一或多个纹理值的动作。第二像素可与不同于第一经光栅化基元的第二经光栅化基元相关联。另外,第二像素可具有与第一像素相同的屏幕像素位置(例如,第一和第二像素可在屏幕空间中具有相同位置坐标)。目的地阿尔法值可与具有与第一和第二源像素相同的屏幕像素位置的目的地像素相关联。举例来说,用于源像素的目的地阿尔法值可为指示具有与源像素相同的屏幕位置的目的地像素的不透明度的值。可至少部分地由与所述像素位置相关联的一或多个先前处理的源像素来确定目的地像素的不透明度。通过基于其对应目的地阿尔法值选择性地检索用于源像素的纹理值,像素处理管线38可有效地减少相对于纹理值而需要发生的源读取的数目,从而减少图形处理系统所需的存储器存取带宽。
[0069]在一些实例中,对于每一源像素,像素处理管线38可执行目的地阿尔法测试,且基于所述测试的结果检索或不检索用于源像素的纹理值。目的地阿尔法测试可涉及,例如将对应于源像素的目的地阿尔法值与阈值进行比较。在此些实例中,阈值可由软件应用程序24、GPU驱动器28以及GPU 12内的一或多个组件中的一或多者配置。所述阈值可为例如指示位于目的地像素后面的像素在其处或之下将不可见且/或不需要显示的用于目的地像素的阈值不透明等级的值。
[0070]在一些实例中,像素处理管线38可通过在管线的纹理映射级之前,基于目的地阿尔法测试的结果选择性地丢弃像素处理管线38中的源像素,来实施本发明的基于目的地阿尔法值的选择性纹理值检索技术。在进一步实例中,像素处理管线38可通过基于目的地阿尔法测试的结果,选择性地为源像素启用和停用纹理映射来实施本发明的技术。举例来说,像素处理管线38可基于目的地阿尔法测试的结果来选择性地断言停用纹理映射的控制信号,或基于目的地阿尔法测试的结果选择性地设定停用纹理映射的像素属性。
[0071]帧缓冲器40为GPU 12存储目的地像素。每一目的地像素可与唯一屏幕像素位置相关联。在一些实例中,帧缓冲器40可存储每一目的地像素的色彩分量和目的地阿尔法值。举例来说,帧缓冲器40可存储每一像素的红、绿、蓝、阿尔法(RGBA)分量,其中“RGB”分量对应于色彩值,且“A”分量对应于目的地阿尔法值。在一些实例中,存储在帧缓冲器40中的目的地像素的子集(例如,少于所有)可存储在具有相对于GPU 12具有比系统存储器10(例如,芯片上频段缓冲器)高的可用带宽的存储器中。
[0072]纹理缓冲器42存储一或多个纹理值,以供GPU 12检索。在一些实例中,纹理值可对应于应用表面中所界定的色彩值。GPU 12可存取系统存储器10,以从纹理缓冲器42检索纹理值。在一些实例中,纹理缓冲器42中的内容的子集可高速缓存在可由GPU 12存取的纹理高速缓冲存储器(例如,GPU高速缓冲存储器14)中。
[0073]尽管在图2的实例图形处理系统中将系统存储器10说明为含有帧缓冲器40和纹理缓冲器42,但在其它实例中,帧缓冲器40和纹理缓冲器42中的一者或两者可在与CPU6和GPU 12中的一者或两者相同或不同的芯片上的其它存储器子系统中实施。另外,帧缓冲器40和纹理缓冲器42无需实施是同一存储器子系统的部分。
[0074]在一些实例中,图形处理管线30可在像素样本粒度而不是像素粒度下处理数据。在此些实例中,光栅化级36可产生每一源像素的多个源像素样本,且像素处理管线38可对源像素样本执行逐样本操作,以产生多个目的地像素样本,其存储在帧缓冲器40中。源像素样本和目的地像素样本可包含与上文分别相对于源和目的地像素所论述的数据大体上类似的数据,只是此数据应用于像素样本,而不是整个像素。显示接口 16可将目的地像素样本数据转换成可在显示器上显示的像素数据。在一些实例中,可针对每一像素产生四个样本,且每一样本可与单个像素相关联。然而,在其它实例中,可针对每一像素产生任何数目的样本。
[0075]在额外实例中,图形处理管线30可根据频段渲染技术来渲染图形图像,所述技术可替代地在本文中称为瓦片渲染技术。当根据频段渲染技术来渲染时,图形处理管线30可接收一批基元(即,多个基元),以渲染到所得图形图像中。为了渲染所述批基元,可将所得图形图像细分成多个较小部分(例如,像素的瓦片或频段),且图形处理管线30可作为单独渲染遍次来渲染图形图像的每一部分。作为图形图像的特定部分的单个渲染遍次的部分,图形处理管线30可相对于图形图像的目的地像素(例如,目的地像素的特定瓦片)的特定子集渲染所述批基元的全部或子集。特定渲染遍次的目的地像素的特定子集在本文中称为用于所述渲染遍次的目的地像素范围。在相对于第一目的地像素范围执行第一渲染遍次之后,图形处理管线30可相对于不同于第一目的地像素范围的第二目的地像素范围执行第二渲染遍次。图形处理管线40可递增地横越瓦片或频段,直到已渲染与每个瓦片或频段相关联的基兀为止。
[0076]在执行特定渲染遍次时,与特定渲染遍次相关联的目的地像素的子集的像素数据可存储在频段缓冲器中。在执行渲染遍次之后,图形处理管线30可将频段缓冲器的内容传送到帧缓冲器40。在一些情况下,图形处理管线30可用存储在频段缓冲器中的数据来重写帧缓冲器40中的数据的一部分。在其它情况下,图形处理管线30可将帧缓冲器40中的数据与存储在频段缓冲器中的数据组成或组合。在将频段缓冲器的内容传送到帧缓冲器40之后,图形处理管线30可将频段缓冲器初始化为默认值,且开始相对于不同目的地像素范围的后续渲染遍次。
[0077]在一些实施方案中,可在单独渲染遍次之前执行频段化遍次,以便将在一批基元中接收到的不同基元分类为适当频段。举例来说,图形处理管线30可确定每一基元所共享或重叠的瓦片(即,频段),且基于所述确定来将基元指派给一或多个瓦片特定频段。因此,当对特定频段执行渲染遍次时,图形处理管线30可相对于与所述频段相关联的特定目的地像素范围而渲染指派给所述频段的基元中的每一者。尽管本文中将图形处理管线30描述为执行频段化遍次,但在其它实例中,频段化遍次可由GPU 12中的另一组件、由CPU 6中的软件模块(例如,GPU驱动器28)或其任何组合来执行。
[0078]在额外实施方案中,可能不一定执行频段化遍次。代替地,GPU驱动器28和/或图形处理管线30可相对于所接收到的所述批基元中的所有基元执行渲染遍次中的每一者。对于每一渲染遍次,GPU驱动器28和/或图形处理管线30可使用不同剪刀设定和/或不同存储器地址偏移,使得与给定渲染遍次相关联的目的地像素在所述渲染遍次期间更新。
[0079]在一些实例中,图形处理管线30可经由第一通信接口存取频段缓冲器,经由第二通信接口存取纹理缓冲器42,且经由第三通信接口存取帧缓冲器40。在此些实例中,第一通信接口可在一些实例中具有比第二通信接口和/或第三通信接口高的带宽。在一些情况下,第二通信接口可为与第三通信接口相同的通信接口,例如当帧缓冲器40和纹理缓冲器42两者均在系统存储器10中实施时。在一些实例中,第二通信接口和第三通信接口可对应于图1中的总线20和/或22。当频段缓冲器为芯片上频段缓冲器时,第一通信接口可为在GPU 12内部的通信接口。
[0080]如本文所使用,带宽可指代通信接口能够在两个组件(例如,存储器组件和GPU12)之间传送数据的速率。在一些实例中,带宽的单位可给出为每单位时间的位数,例如兆位每秒(Gb/s)。当将具有多个位的总线带宽的总线用作通信接口的部分时,在一些实例中,带宽可等于总线的宽度乘以沿单个位线传送数据的速率的乘积。举例来说,如果总线为16个位宽,且总线的每一位线能够以2Gb/s的速率传送数据,那么总线的带宽可等于32Gb/s。如果多个总线形成两个组件之间的通信接口,那么通信接口的带宽可为多个总线中的每一者的带宽的函数,例如个别总线中的每一者的最小带宽。
[0081]为了实现用以存取频段缓冲器的通信接口的较高带宽,在一些实例中,频段缓冲器可在与GPU 12相同的微芯片上实施。此频段缓冲器可称为芯片上频段缓冲器。当在与GPU 12相同的芯片上实施频段缓冲器时,GPU 12不一定需要经由系统和存储器总线(例如,图1中的总线20、22)来存取频段缓冲器,而是可经由在与GPU 12相同的芯片上实施的内部通信接口(例如,总线)来存取频段缓冲器。因为此接口为芯片上的,所以其可能够以比系统和存储器总线高的带宽来操作。尽管上文所述的技术是实现超过用以存取帧缓冲器40和/或纹理缓冲器42的通信接口的带宽的频段缓冲器的通信接口的一种方式,但其它技术是可能的,且在本发明的范围内。
[0082]在一些实例中,频段缓冲器的容量可受某些类型的计算装置(例如,移动装置)上可用的面积限制。此外,当在与GPU 12相同的芯片上实施频段缓冲器时,可用于在同一芯片上实施频段缓冲器的面积的量可归因于在芯片上实施的其它功能性而受限。在一些实例中,频段缓冲器可具有低于帧缓冲器40和/或纹理缓冲器42中的一或多者的位密度的位密度,从而进一步限制频段缓冲器的容量。因为这些和/或其它因素,在一些情况下,频段缓冲器的容量可小于帧缓冲器40和纹理缓冲器42中的一者或两者的大小。因此,在此些实例中,频段缓冲器的容量可小于存储与图形图像相关联的全部多个目的地像素的像素数据所需的最小容量。存储器组件的容量可指代能够存储在存储器组件中的数据的最大量(例如,最大位数目)。帧缓冲器40和纹理缓冲器42的大小可指代存储在分别分配给帧缓冲器40和纹理缓冲器42的存储器范围中的数据的量(例如,位数目)。位密度可指代可存储在特定量的面积中的位的数目。
[0083]如上文所论述,当根据频段渲染技术进行渲染时,图形处理管线30可作为单独渲染遍次来渲染图形图像的每一部分。举例来说,作为图形图像的特定部分的单个渲染遍次的部分,图形处理管线30可相对于特定目的地像素范围(例如,图形图像的目的地像素的特定子集)渲染所述批基元的全部或子集。频段缓冲器的容量可经配置以大于或等于目的地像素范围的大小。因此,在单个渲染遍次期间,与渲染遍次的目的地像素范围相关联的所有目的地像素数据(如目的地阿尔法值和目的地色彩值)可在频段缓冲器中可用,而不一定需要存取帧缓冲器40。因此,在单个渲染遍次期间,图形处理管线30可能够经由相对较高的带宽通信接口从频段缓冲器读取目的地阿尔法值,而不必经由相对较低带宽的通信接口从帧缓冲器40读取此数据。
[0084]尽管不执行频段渲染的一些图形系统可能够通过使用基于硬件的芯片上高速缓冲存储器来高速缓存帧缓冲器的部分,但此些高速缓冲存储器并不保证给定像素的目的地阿尔法值在需要时将可用。这是因为多个目的地像素可映射到基于硬件的高速缓冲存储器中的同一地址。如果在此情况下不使用频段渲染,那么基于硬件的高速缓冲存储器的当前状态可能不一定包含与当前处理的基元相关联的目的地像素值,而是包含与在图形图像的其它区域中的先前所处理的基元相关联的目的地像素值。
[0085]与其中多个目的地像素映射到同一高速缓存地址的基于硬件的高速缓冲存储器形成对比,在一些实例中,针对给定渲染遍次而存储在频段缓冲器中的目的地像素可为可唯一寻址的。换句话说,对于给定渲染遍次,可在频段缓冲器中的可寻址存储隙与用于所述渲染遍次的目的地像素之间界定一对一映射。因此,当根据频段渲染技术进行渲染时,在一些实例中,给定频段化遍次的所有目的地阿尔法值可经由相对较低带宽通信接口从频段缓冲器可用。此外,不同于基于硬件的高速缓存系统,由于频段缓冲器中的可唯一寻址的数据,高速缓存未中不会发生,从而减轻高速缓存未中的情况下借助于带宽上昂贵的帧缓冲器存取的需要。
[0086]本发明的基于目的地阿尔法值的选择性纹理值检索技术可在频段渲染的情境中特定有用,因为当目的地阿尔法测试模块需要时,用于特定频段的目的地阿尔法值可能已经加载到频段缓冲器中。这可减轻从帧缓冲器40存取此些值的需要,所述帧缓冲器可位于具有较低可用带宽的存储器(例如,系统存储器10)中。因此,在频段化上下文中,与通过根据本发明的技术减少对纹理缓冲器的源读取的数目所实现的带宽节省相比,检索目的地阿尔法值可需要的开销带宽可相对最小。
[0087]在进一步实例中,GPU驱动器28可选择性地启用和停用本发明的基于目的地阿尔法值的选择性纹理值检索技术,其由像素处理管线38实施。在一些实例中,软件应用程序24可向GPU驱动器28发出命令,其指令GPU驱动器28根据本发明的技术启用GPU 12的基于目的地阿尔法值的选择性纹理值检索模式。在额外实例中,GPU驱动器28可检测其中使用本发明的基于目的地阿尔法值的选择性纹理值检索技术将不干扰所得图像的质量的情形,例如GPU驱动器28可检测从前到后渲染方案何时已由软件应用程序24实施。响应于此检测,GPU驱动器28可根据本发明的技术,实现GPU 12的基于目的地阿尔法值的选择性纹理值检索模式。
[0088]如本文所使用,源像素可指代已由光栅化级36产生且尚未存储到帧缓冲器40或对应的频段缓冲器的像素数据。已写入到帧缓冲器40或对应频段缓冲器的像素数据可称为目的地像素。目的地像素可包含从与不同基元相关联的多个源像素组合的像素数据。因此,像素处理管线38对源像素进行操作,且响应于处理所述源像素而更新帧缓冲器40或对应频段缓冲器中的目的地像素数据。应注意,不是所有源像素均有必要分等级以成为目的地像素。举例来说,被先前处理的像素挡住的任何后续处理的源像素可能不一定成为目的地像素。相反,Z测试和/或目的地阿尔法测试可丢弃此些被挡住的像素。在一些情况下,术语“片段”可由所属领域的技术人员用来指代“源像素”,且术语“像素”可由所属领域的技术人员用来“目的地像素”。本发明中所描述的像素中的任一者为源像素还是目的地像素将明确地识别,或应能够从描述像素的上下文确定。
[0089]每当对应于特定屏幕位置的源像素已完成处理时,就可递增地更新特定像素位置的目的地阿尔法值。经更新的目的地阿尔法值可为同一像素位置的先前目的地阿尔法值的函数。因此,目的地阿尔法值可表示“复合”阿尔法值,其基于对应于到给定时间点已完成处理的目的地像素的所有源像素指示给定时间点处目的地像素的不透明度。
[0090]图3是说明可用以实施本发明的基于目的地阿尔法值的选择性纹理值检索技术的实例像素处理管线50的框图。像素处理管线50可经配置以基于对应于源像素的目的地阿尔法值,在纹理映射级之前选择性地丢弃源像素。像素处理管线50包含目的地阿尔法测试模块52、纹理映射模块54、目的地阿尔法确定模块56、纹理缓冲器58和目的地阿尔法缓冲器60。目的地阿尔法测试模块52、纹理映射模块54和目的地阿尔法确定模块56可作为一或多个固定功能处理级、一或多个可编程级或其任何组合在一或多个处理器上实施。纹理缓冲器58和目的地阿尔法缓冲器60可各自实施为一或多个存储器存储单元。
[0091]目的地阿尔法测试模块52经配置以从前一处理级接收源像素,对接收到的像素执行目的地阿尔法测试,且基于目的地阿尔法测试的结果选择性地丢弃源像素。举例来说,目的地阿尔法测试模块52可基于对应于源像素的目的地阿尔法值确定是丢弃源像素,还是将源像素继续传递到一组一或多个后续处理级,以供进一步处理。以此方式,目的地阿尔法测试模块52可有效地确定对应于接收到的源像素的目的地像素是否已经归因于对应于目的地像素的一或多个先前处理的源像素而不透明。
[0092]在一些实例中,所述前一处理级可为光栅化级36。在进一步实例中,所述前一处理级可为前一像素处理管线级,例如像素所有权测试块、剪刀测试块、源数据测试块、像素着色器级,或在图形处理器中找到的任何其它像素处理级。所述组一或多个后续处理级可包含纹理映射模块54。在一些实例中,目的地阿尔法测试模块52可通过将源像素传递到目的地阿尔法测试模块52与纹理映射模块54之间的一或多个介入处理级上,来将源像素传递到纹理映射模块54上。在额外实例中,目的地阿尔法测试模块52可将源像素直接传递到纹理映射模块54。传递到所述组一或多个后续处理级上的像素在本文中可称为所传递像素。
[0093]根据本发明,目的地阿尔法测试模块52可经配置以确定是否执行致使不从纹理缓冲器58检索用于源像素的一或多个纹理值的动作,且响应于确定执行所述动作而执行致使不从纹理缓冲器58检索用于源像素的一或多个纹理值的动作。举例来说,当接收到源像素时,目的地阿尔法测试模块52可从对应于源像素的目的地阿尔法缓冲器60检索目的地阿尔法值,例如目的地阿尔法测试模块52可使用结合源像素包含的位置坐标来确定源像素的屏幕像素位置,且检索与同一屏幕像素位置相关联的目的地阿尔法值。基于检索到的目的地阿尔法值,目的地阿尔法测试模块52可确定是否执行致使不从纹理缓冲器58检索用于源像素的一或多个纹理值的动作,且如果确定是,那么执行所述动作。
[0094]在图3中所示的实例像素处理管线中,目的地阿尔法测试模块52所执行的致使不从纹理缓冲器58检索用于源像素的一或多个纹理值的动作包含在纹理映射模块54所表示的纹理映射级之前,从像素处理管线50丢弃所述源像素。然而,在其它实例实施例中,目的地阿尔法测试模块52可执行其它动作,以致使不从纹理缓冲器58检索用于源像素的一或多个纹理值。举例来说,在一些实例中,目的地阿尔法测试模块52可断言控制信号,其致使像素处理管线50内的另一处理级丢弃所述像素。在额外实例中,目的地阿尔法测试模块52可断言控制信号,其针对像素处理管线50内的特定像素而启用或停用纹理映射模块54。在进一步实例中,目的地阿尔法测试模块52可将源像素的纹理映射停用属性设定为致使为源像素停用纹理映射的值,且将所述像素传递到像素处理管线50中的一或多个后续处理级上。在此些实例中,纹理映射模块54可经配置以针对具有设定纹理映射停用属性的像素停用纹理映射。
[0095]在一些实例中,目的地阿尔法测试模块52可通过将检索到的目的地阿尔法值与阈值进行比较来确定是否执行致使不从纹理缓冲器58检索用于源像素的一或多个纹理值的动作。基于比较的结果,目的地阿尔法测试模块52可确定是否执行致使不从纹理缓冲器58检索用于源像素的一或多个纹理值的动作。举例来说,目的地阿尔法测试模块52可确定目的地阿尔法值是否小于或等于阈值。响应于确定目的地阿尔法值小于或等于阈值,目的地阿尔法测试模块52可执行致使不从纹理缓冲器58检索用于源像素的一或多个纹理值的动作,例如在纹理映射级54之前丢弃源像素。另一方面,响应于确定目的地阿尔法值不小于或等于阈值,目的地阿尔法测试模块52可执行致使从纹理缓冲器58检索用于第二像素的一或多个纹理值的动作。所述阈值可为例如指示位于目的地像素后面的像素在其处或之下将不可见且/或不需要显示的用于目的地像素的阈值不透明等级的值。
[0096]在一些实例中,阈值可为硬连线到目的地阿尔法模块52中的固定值。在进一步实例中,阈值可由图形处理器内的其它组件配置,且/或可由图形驱动器或用户应用程序编程。
[0097]在一些实施方案中,目的地阿尔法值aD可在零到一的范围内,包含零和一(即,
I),其中值零指示完全不透明的目的地像素,值一指示完全透明的像素,且零与一之间的值表示透明像素的各种不透明度。在此些实例中,随着目的地阿尔法值从零增加到一,不透明度等级从目的地阿尔法值零处的大体上完全不透明度减小到目的地阿尔法值一处的大体上无不透明度。
[0098]在一些实例中,阈值可指示完全不透明的目的地像素,例如值零。通过将阈值设定为零,目的地阿尔法测试块可丢弃对应于已经完全不透明的目的地像素的源像素。当以从前到后方式绘制表面时,后续为目的地像素处理的任何源像素将不为目的地像素的总体外观作贡献,因为任何此些源像素均位于已经为目的地像素处理的源像素后面。丢弃这些源像素可释放图形处理系统中的存储器存取带宽,因为不需要检索不为总体图像作贡献的纹理值。
[0099]可以各种方式实施目的地阿尔法测试模块52。举例来说,可将目的地阿尔法测试模块52实施为专用固定功能硬件块、在着色器单元上执行的着色器程序、经配置以执行目的地阿尔法测试的可配置模板测试块,和/或经配置以执行目的地阿尔法测试的可配置z/模板测试块。本发明中稍后将更详细地描述这些各种配置。
[0100]纹理映射模块54经配置以接收源像素,例如所传递的源像素,且对源像素执行纹理映射操作,以产生经纹理映射的像素。对于每一源像素,纹理映射模块54可基于包含在接收到的源像素中的一或多个纹理坐标而从纹理缓冲器58检索一或多个纹理值。纹理坐标可指定和/或确定从纹理缓冲器58检索哪些纹理值。在检索到纹理坐标之后,纹理映射模块54可根据纹理映射函数,基于一或多个检索到的纹理值修改源像素(例如,RGB分量)的色彩坐标,以产生具有经修改色彩坐标的所得经纹理映射的像素。纹理映射函数可将经纹理映射的色彩值指定为从纹理缓冲器58检索到的纹理值和源像素的位置坐标的函数。纹理映射功能可为用户指定的功能。各种纹理映射功能是此项技术中已知的,且本发明中将不进一步详细描述。在一些实例中,可将纹理映射模块54实施为在着色器单元、固定功能硬件处理级或其任何组合上执行的着色器程序。
[0101]纹理映射模块54可将经纹理映射的像素传递到一或多个后续处理级上,以供进一步处理。尽管将目的地阿尔法确定模块56说明为图3中的纹理映射模块54的后续处理级,但纹理映射模块54与目的地阿尔法确定模块56之间包含任何数目的介入处理级。类似地,尽管将目的地阿尔法测试模块52说明为图3中的纹理映射模块54的先前处理级,但目的地阿尔法测试模块52与纹理映射模块54之间包含任何数目的介入处理级。
[0102]目的地阿尔法确定模块56经配置以接收源像素,且产生具有与源像素相同的屏幕像素位置(即,在屏幕空间中的位置坐标)的目的地像素的目的地阿尔法值。在一些实例中,目的地阿尔法确定模块56可从目的地阿尔法缓冲器60检索屏幕像素位置的先前目的地阿尔法值,且产生针对所述屏幕像素位置的后续目的地阿尔法值,作为先前目的地阿尔法值和源像素的一或多个色彩分量和/或阿尔法分量的函数。举例来说,目的地阿尔法确定模块56可产生屏幕像素位置的后续目的地阿尔法值,作为源像素的先前目的地阿尔法值(即,从目的地阿尔法缓冲器60检索到的“A”分量)和源阿尔法值(即,“A”分量)的函数。
[0103]在一些实例中,目的地阿尔法确定模块56可为阿尔法混合模块,且目的地阿尔法确定模块56可响应于基于阿尔法混合函数处理接收到的源像素而产生目的地阿尔法值。用于更新目的地阿尔法值的特定函数通常可由图形处理器配置。在一些情况下,阿尔法混合函数可为从前到后阿尔法混合函数。一组实例从前到后阿尔法混合功能可包含以下功倉泛:
[0104]Cdst[n] = (Adst[n-1])x(Asrc[n]xCsrc[η])+Cdst [η-1] (3)
[0105]Adst [η] = (1-Asrc [η]) χ (Adst [η-1]) (4)
[0106]其中ρ[0]、ρ[1]...ρ[η_1]为η个先前处理的源像素,ρ[η]为当前处理的源像素(即,当前源像素),Cdst [η]为响应于处理当前源像素而产生的目的地色彩值,Adst [η]为响应于处理当前像素值而产生的目的地阿尔法值,Cdst[n-Ι]为响应于处理先前处理的源像素(即,P [n-Ι])而产生的目的地色彩值,Adst [n-Ι]为响应于处理先前处理的源像素(即,P [n-Ι])而产生的目的地阿尔法值,Csrc[n]为对应于当前源像素的源色彩值,且Asrc[n]为对应于当前源像素的源阿尔法值。在等式(I)和(2)中,对于任何值i,Adst[i]=O可指示完全不透明的目的地像素,且Adst[i] = I可指示完全透明的目的地像素。可使Adst [-1]和Cdst [-1]初始化,以占用默认值(例如,分别为值I和O)。在一些实例中,Asrc [n] xCsrc [η]相乘可在着色器(例如,像素着色器)中执行,而其它数学运算作为目的地阿尔法确定模块56的一部分而执行。
[0107]纹理缓冲器58经配置以存储纹理值,以供纹理映射模块54检索。在一些实例中,纹理值可对应于应用表面中所界定的色彩值。在一些实例中,纹理缓冲器58可在系统存储器10中实施,或在其它实例中,在另一存储器(未图)中实施。在一些实施方案中,纹理缓冲器58的全部或部分可存储在高速缓冲存储器中。纹理缓冲器58通信地耦合到纹理映射模块54。
[0108]目的地阿尔法缓冲器60经配置以存储由目的地阿尔法确定模块56产生的目的地阿尔法值,且将所存储的目的地阿尔法值提供给目的地阿尔法测试模块52和目的地阿尔法确定模块56,以供进一步处理。目的地阿尔法缓冲器60可包含多个目的地阿尔法值,其中所述目的地阿尔法值中的每一者对应于在屏幕空间中的特定像素位置。
[0109]在一些实例中,目的地阿尔法缓冲器60可为帧缓冲器(例如,图2中的帧缓冲器40),其包含形成图形图像的目的地像素的目的地阿尔法值和/或色彩值。举例来说,帧缓冲器可存储多个目的地像素的红、绿、蓝和阿尔法(RGBA)分量。特定目的地像素的RGBA分量的“A”分量可对应于所述像素的目的地阿尔法值。在一些情况下,可将帧缓冲器细分成色彩子缓冲器和目的地阿尔法子缓冲器,且色彩数据(例如,RGB)可存储在色彩子缓冲器中,且目的地阿尔法值(例如,“A”分量)可存储在目的地阿尔法子缓冲器中。
[0110]在进一步实例中,目的地阿尔法缓冲器60可为包含图形图像的目的地像素的子集的目的地阿尔法值和/或色彩值的频段缓冲器。频段缓冲器可存储与上文相对于帧缓冲器所描述类似的用于目的地像素的子集的数据。在一些实例中,目的地阿尔法测试模块52可经由具有比用以存取帧缓冲器的通信接口高的带宽的通信接口来存取频段缓冲器。
[0111]目的地阿尔法测试模块52、纹理映射模块54和目的地阿尔法确定模块56所接收到的每一源像素对应于在屏幕空间中的特定像素位置。举例来说,每一源像素可包含指示对应于像素的像素位置的位置坐标。因此,每一源像素映射到目的地阿尔法缓冲器60中的一对应目的地像素和目的地阿尔法值。
[0112]在一些实例中,目的地阿尔法缓冲器60可具有比纹理缓冲器58的可用读取带宽高的可用读取带宽。举例来说,纹理缓冲器58可为通过一或多个总线(例如,图1中的总线20和/或22)耦合到GPU 12的芯片外存储器,且目的地阿尔法缓冲器60可为不一定经由一或多个总线耦合到GPU 12的芯片上高速缓冲存储器。通过在纹理映射模块54之前丢弃源像素,可减少需要从纹理缓冲器58执行的源读取的数目,从而减少图形处理管线50所需的总存储器存取带宽。
[0113]在一些实例中,像素处理管线50可在样本等级下执行处理,与像素等级形成对t匕。在此些实例中,每一像素可与多个样本相关联,且每一样本可与单个像素相关联。另外,每一样本可与其自己在目的地阿尔法缓冲器60中的目的地阿尔法值相关联。为了确定是否执行致使不从纹理缓冲器58检索源像素的一或多个纹理值的动作,目的地阿尔法测试模块52可将与源像素的每一样本相关联的目的地阿尔法值与阈值进行比较,且确定与源像素相关联的所有样本的目的地阿尔法值是否小于或等于阈值。如果与像素相关联的所有样本的目的地阿尔法值小于或等于阈值,那么目的地阿尔法测试模块52可丢弃与所述源像素相关联的所有样本。否则,如果与源像素相关联的样本中的至少一者的目的地阿尔法值不小于或等于阈值,那么目的地阿尔法测试模块52可将与所述源像素相关联的所有样本传递到所述组后续处理级上,以供进一步处理。
[0114]多个源像素可与同一屏幕像素位置相关联,因为可为单个图形图像渲染多个重叠表面和/或基元。如本文所使用,如果两个表面具有映射到在屏幕空间中的同一像素位置的至少一个像素,那么一个表面可与另一表面重叠。每当对应于特定屏幕位置的源像素由目的地阿尔法确定模块56处理时,就可递增地更新特定屏幕像素位置的目的地阿尔法值。经更新的目的地阿尔法值可取决于同一像素位置的先前目的地阿尔法值。因此,存储在目的地阿尔法缓冲器60中的目的地阿尔法值表示“复合”阿尔法值,其基于直到给定时间点目的地阿尔法确定模块56已为所述目的地像素处理的所有源像素,指示目的地像素在所述给定时间点处的不透明度。
[0115]应注意,在一些实例中,当目的地阿尔法测试模块52针对接收到源像素检索到目的地阿尔法值时,可存在仍正由像素处理管线50处理且尚未到达目的地阿尔法确定模块56的其它源像素。由此,由目的地阿尔法测试模块52针对特定源像素而检索的目的地阿尔法值可不反映在当前源像素之前已开始在像素处理管线50中处理的每个源像素的贡献。换句话说,由目的地阿尔法测试模块52检索的目的地阿尔法值可为“陈旧”或“旧”目的地值。然而,即使检索到所谓的“陈旧”目的地阿尔法值,如果此目的地阿尔法值指示目的地像素已达到阈值不透明等级,那么目的地阿尔法测试模块52可仍安全地丢弃源像素,因为一旦目的地阿尔法值达到阈值不透明等级,目的地阿尔法值就不会随后在渲染同一帧时变得较透明。因此,本发明的技术在减少系统带宽方面仍有效,即使尚未检索到最新目的地阿尔法值也是如此。
[0116]应进一步注意,本发明的目的地阿尔法测试技术不同于通常在图形处理器中找到的源阿尔法测试,且不同于通常在图形处理器中找到的阿尔法混合功能。源阿尔法测试可基于结合正处理的每一源像素而包含的源阿尔法值而丢弃像素。不同于目的地阿尔法值,其为知道给定时间点针对给定像素位置而处理的所有源像素的复合阿尔法值,源阿尔法值为每一源像素专有且不是复合阿尔法值的阿尔法值。此外,虽然目的地阿尔法测试模块52所使用的目的地阿尔法值是从目的地阿尔法缓冲器60 (例如,帧缓冲器或频段缓冲器)检索,但源阿尔法测试所使用的源阿尔法值通常包含在接收到的源像素本身内。因此,常规源阿尔法测试中所使用的源阿尔法值通常是直接从先前处理级接收的,而不是从帧缓冲器或频段缓冲器检索的。
[0117]尽管现有技术源阿尔法测试块和现有技术阿尔法混合块不同于本发明中所描述的目的地阿尔法测试模块,但源阿尔法测试块和阿尔法混合块中的一者或两者可结合本发明的目的地阿尔法测试模块而使用。在使用从前到后渲染次序的情况下,阿尔法混合块可经配置以使用从前到后阿尔法混合等式而不是从后到前阿尔法混合等式,其在根据绘制工具的算法进行渲染时使用。
[0118]图4是说明可用以实施图3的像素处理管线50的实例像素处理管线62的框图。像素处理管线62包含目的地阿尔法测试模块52、纹理映射模块54、目的地阿尔法确定模块56、纹理缓冲器58、频段缓冲器64和帧缓冲器66。如图4中所示,像素处理管线62的架构类似于图3中所示的像素处理管线50的架构,除了目的地阿尔法缓冲器60已被频段缓冲器64和帧缓冲器66代替。图3和4中类似编号的组件具有相同或类似的功能性和构造。因此,为了简明且为了避免冗余,将不进一步详细描述这些共有组件的操作和构造。
[0119]频段缓冲器64可相对于帧缓冲器66中的目的地像素的子集来实施图3中的目的地阿尔法缓冲器60的功能性。帧缓冲器66可对应于图2中所说明且相对于图2而描述的帧缓冲器40。帧缓冲器66可将目的地像素中的每一者的色彩分量和目的地阿尔法值存储在屏幕空间中。举例来说,帧缓冲器66可存储目的地像素中的每一者的RGBA分量,且RGBA分量的阿尔法(“A”)分量可对应于目的地阿尔法测试模块52所使用的目的地阿尔法值。帧缓冲器66可驻存在系统存储器10中。在一些情况下,可将帧缓冲器66细分成色彩子缓冲器和目的地阿尔法子缓冲器,且色彩数据(例如,RGB)可存储在色彩子缓冲器中,且目的地阿尔法值(例如,“A”分量)可存储在目的地阿尔法子缓冲器中。
[0120]频段缓冲器64可将所述像素的子集的色彩分量和目的地阿尔法值存储在帧缓冲器66中。举例来说,频段缓冲器64可将目的地像素的RGBA分量存储在指定大小的像素瓦片,例如16x16目的地像素瓦片内。在一些实例中,频段缓冲器64可为芯片上存储器。换句话说,频段缓冲器64可驻存在与GPU 12的像素处理管线62相同的微芯片上。在此些实例中,帧缓冲器40可为芯片外存储器,例如帧缓冲器40可驻存在与GPU 12和频段缓冲器64所驻存在的微芯片不同的第二微芯片上。
[0121]在一些实例中,频段缓冲器64的初始化以及数据从频段缓冲器64到帧缓冲器66中的写入可与基元的频段或瓦片的处理同步。举例来说,当即将处理新的基元频段时,像素处理管线62可致使频段缓冲器64将为先前处理的基元频段而存储在频段缓冲器64中的目的地像素数据写入到帧缓冲器66中,且将频段缓冲器中的数据值初始化为默认值。
[0122]在一些实例中,目的地阿尔法测试模块52可经由第一通信接口从频段高速缓冲存储器64检索目的地阿尔法值,纹理映射模块54可经由第二通信接口从纹理缓冲器58检索纹理值,且像素处理管线62可经由第三通信接口存取帧缓冲器66。在此些实例中,第一通信接口可在一些实例中具有比第二通信接口和/或第三通信接口高的带宽。在一些情况下,第二通信接口可为与第三通信接口相同的通信接口,例如当帧缓冲器40和纹理缓冲器42两者均在系统存储器10中实施时。在一些实例中,第二通信接口和第三通信接口可对应于图1中的总线20和/或22。当频段缓冲器64为芯片上频段缓冲器时,第一通信接口可为在GPU 12内部的通信接口。
[0123]在额外实例中,频段缓冲器64的容量可小于帧缓冲器66的容量,后者可经配置以存储与图形图像相关联的全部多个目的地像素。因此,在此些实例中,频段缓冲器64的容量可小于存储与图形图像相关联的全部多个目的地像素的像素数据所需的最小容量。
[0124]本发明的基于目的地阿尔法值的选择性纹理值检索技术可在图4中所示的频段化架构的情境中特定有用,因为当目的地阿尔法测试模块52需要时,用于特定频段的目的地阿尔法值可能已经加载到频段缓冲器64中。这可减轻从帧缓冲器66存取此些值的需要,所述帧缓冲器可位于具有较低可用带宽的可经由通信接口存取的存储器(例如,系统存储器10)中。因此,通过在频段化情境中实施本发明的技术,例如如图4中所示,与通过减少对纹理缓冲器58的源读取的数目所实现的带宽节省相比,检索目的地阿尔法值可需要的开销带宽可相对最小。
[0125]图5是说明可用以实施本发明的技术的实例目的地阿尔法测试模块68的框图。在一些实例中,目的地阿尔法测试模块68可对应于图3和4中所说明的目的地阿尔法测试模块52。目的地阿尔法测试模块68经配置以接收一或多个源像素,对接收到的像素执行目的地阿尔法测试,且基于目的地阿尔法测试的结果选择性地丢弃个别像素。目的地阿尔法测试模块68包含目的地阿尔法检索模块70、比较模块72和阈值寄存器74。
[0126]目的地阿尔法检索模块70可经配置以接收包含位置坐标数据的源像素,基于位置坐标数据确定源像素的位置坐标,基于源像素的位置坐标从目的地阿尔法缓冲器60检索目的地阿尔法值,且将检索到的目的地阿尔法值提供给比较模块72以供比较。检索到的目的地阿尔法值可具有与源像素相同的位置坐标。
[0127]比较模块72可经配置以从目的地阿尔法检索模块70接收目的地阿尔法值,且从阈值寄存器74接收阈值,并将目的地阿尔法值与阈值进行比较。基于所述比较,比较模块72可将源像素传递到一或多个处理级上或丢弃所述像素,即不将源像素传递到任何后续处理级上。在一些实例中,比较模块72可通过确定目的地阿尔法值是否小于或等于阈值来将目的地阿尔法值与阈值进行比较。如果目的地阿尔法值小于或等于阈值,那么在一些实例中,比较模块72可丢弃源像素。相反,如果目的地阿尔法值不小于或等于阈值,那么在一些实例中,比较模块72可将像素传递到一或多个后续处理级上,即不丢弃源像素。在其它实例中,可使用其它阈值比较功能。以此方式,目的地阿尔法测试模块68可基于对应于源像素的目的地阿尔法值而选择性地丢弃源像素。
[0128]阈值寄存器74可存储指示此处或之下可丢弃源像素的阈值不透明等级的阈值。举例来说,当目的地阿尔法测试模块68处理具有特定屏幕像素位置的源像素时,阈值不透明等级可指示此处或之下源像素将不可见的对应目的地像素的不透明等级,使得不需要显示源像素。如图5中所示,阈值寄存器74经配置以接收配置信息,其可包含指示特定阈值的信息以存储在阈值寄存器74中。阈值寄存器74可例如从在主机CPU上执行的用户软件应用程序,在主机CPU上执行的GPU驱动器、驻存在GPU上的硬件组件和/或在GPU上执行的着色器接收配置信息。
[0129]图6是说明可用以实施本发明的技术的另一实例目的地阿尔法测试模块76的框图。在一些实例中,目的地阿尔法测试模块76可代替图3和4中所说明的目的地阿尔法测试模块52。目的地阿尔法测试模块76经配置以接收一或多个源像素,对源像素执行目的地阿尔法测试,且响应于比较而选择性地激活控制信号。目的地阿尔法测试模块68包含目的地阿尔法检索模块70、比较模块78和阈值寄存器74。如图6中所示,目的地阿尔法测试模块76的架构类似于图5中所示的目的地阿尔法测试模块68的架构,除了比较模块72已被比较模块78代替,且所有源像素均传递到后续处理级上。图5和6中类似编号的组件具有相同或类似的功能性和构造。因此,为了简明且为了避免冗余,将不进一步详细描述这些共有组件的操作和构造。
[0130]比较模块78可执行与上文相对于图5中的比较模块72而描述的那些操作类似的比较操作。然而,代替于响应于比较操作选择性地丢弃源像素,比较模块78可选择性地激活和去活控制信号。可将控制信号供应到像素处理管线中的一或多个后续处理级,以便选择性地启用和停用对应源像素的纹理值的检索。举例来说,不是在目的地阿尔法测试模块76处丢弃源像素,而是另一处理级可基于控制信号丢弃源像素。作为另一实例,纹理映射模块可接收控制信号,且基于所述控制信号而选择性地启用或停用对源像素的纹理值检索。
[0131]图6中的目的地阿尔法测试模块76说明除图5中所说明的配置之外或代替于图5中所说明的配置的可用以选择性地控制像素处理管线中的纹理值的检索的另一实例目的地阿尔法测试模块配置。预期其它目的地阿尔法测试模块配置,且在本发明的范围内。举例来说,另一实例目的地阿尔法测试模块配置可修改指示是否应为源像素检索纹理值的像素属性,且纹理映射模块可基于所述像素属性来选择性地检索源像素的纹理值。
[0132]在一些实例中,根据本发明的技术而设计的像素处理管线可包含执行模板测试的处理单元。处理单元可例如为模板测试块,和/或组合式z/模板测试块。在此些实例中,在一些实例中,GPU可通过配置执行模板测试以接收目的地阿尔法值代替模板值的处理单元来实施本发明中所描述的目的地阿尔法测试功能性。接着,可使用处理单元来执行目的地阿尔法测试,且根据本发明的技术,根据目的地阿尔法值选择性地致使为源像素检索纹理值。相对于图7到10进一步详细描述这些技术。
[0133]图7是说明使用可配置模板测试块来执行目的地阿尔法测试且实施本发明的选择性纹理值检索技术的实例像素处理管线80的框图。像素处理管线80包含目的地阿尔法测试模块82、模板缓冲器84和目的地阿尔法缓冲器60。目的地阿尔法测试模块82包含可配置的模板测试块86。模板缓冲器84可经配置以存储用于像素处理管线80的模板值。在一些实例中,模板缓冲器84可驻存在芯片外系统存储器中,例如图1中所示的系统存储器10中。在进一步实例中,模板缓冲器84可为类似于相对于图9所述的z/模板缓冲器的z/模板缓冲器,且可将与目的地像素相关联的z值和模板值存储在帧缓冲器中。目的地阿尔法缓冲器60可为帧缓冲器或频段缓冲器。当目的地阿尔法缓冲器60为频段缓冲器时,在一些实例中,目的地阿尔法缓冲器60可驻存在与包含像素处理管线80的GPU相同的微芯片上。
[0134]目的地阿尔法测试模块82可经配置以从GPU中的前一处理级接收源像素,检索对应于所述源像素的目的地阿尔法值,将所述目的地阿尔法值与阈值进行比较,且基于比较的结果选择性地丢弃源像素。如图7中所示,将目的地阿尔法测试模块82实施为可配置模板测试块86。可配置模板测试块86可为可配置以在模板测试状态下且在目的地阿尔法测试状态下操作。当经配置以在模板测试状态下操作时,模板测试块86可从前一处理级接收源像素,从模板缓冲器84检索对应于接收到的源像素的模板值,将检索到的模板值与阈值进行比较,且基于比较的结果选择性地丢弃源像素。当经配置以在目的地阿尔法测试状态下操作时,可配置模板测试块86可执行基本上与以模板测试状态配置时相同的操作,除了不是从模板缓冲器84检索对应的模板值,模板测试块86可从目的地阿尔法缓冲器60检索对应的目的地阿尔法值。因此,模板测试块86可基于目的地阿尔法值确定是否执行致使不从缓冲器检索用于源像素的一或多个纹理值的动作,且响应于确定执行所述动作,根据本发明的技术执行所述动作。
[0135]模板测试块86可经配置以基于模板测试块86所接收到的配置信息在配置装填之间切换。可从GPU内的另一组件、从在主机CPU上执行的GPU驱动器且/或从在主机CPU上执行的用户软件应用程序接收配置信息。
[0136]在一些实例中,模板测试块86所接收到的配置信息可指定模板测试块86应从中检索输入值(例如,模板值和/或目的地阿尔法值)的存储器地址。在此些实例中,模板测试块86可经配置以通过将指向模板缓冲器84的存储器地址提供给模板测试块86来接收模板值。另外,模板测试块86可经配置以通过将指向目的地阿尔法缓冲器60而不是模板缓冲器84的存储器地址提供给模板测试块86来接收目的地阿尔法值代替模板值。
[0137]通过根据本发明中的技术配置模板测试块以检索目的地阿尔法值代替模板值,可在图形处理管线中实施基于硬件的目的地阿尔法测试块,而不一定需要将额外硬件块添加到图形管线。此外,图形处理器可能够选择性地在两种不同渲染模式之间切换,执行基于硬件的模板测试的第一模式以及执行基于硬件的目的地阿尔法测试的第二模式。
[0138]图8是说明可用以实施图7的像素处理管线的实例模板测试块86的框图。模板测试块86包含地址寄存器88、阈值寄存器90、输入值检索模块92和比较模块94。
[0139]地址寄存器88可经配置以存储输入值检索模块92应从中检索输入值的存储器地址。用户应用程序、GPU驱动器和/或GPU组件可配置模板测试块86以通过将指向模板缓冲器84的地址空间的地址值加载到地址寄存器88中来检索模板值。类似地,用户应用程序、GPU驱动器和/或GPU组件可配置模板测试块86以通过将指向目的地阿尔法缓冲器60的地址空间的地址值加载到地址寄存器88中来检索目的地阿尔法值。
[0140]阈值寄存器90可存储阈值以供比较模块94使用。当模板测试块86经配置以执行模板测试时,阈值可指示模板测试的参考值。当模板测试块86经配置以执行目的地阿尔法测试时,阈值可指示此处或之下可丢弃源像素的阈值不透明等级。用户应用程序、GPU驱动器和/或GPU组件可配置阈值寄存器90,以通过将阈值加载到阈值寄存器90中来存储特定阈值等级。
[0141]输入值检索模块92可经配置以接收包含位置坐标数据的源像素,基于位置坐标数据确定源像素的位置坐标,基于位置坐标从存储器或高速缓冲存储器检索输入值,且输入值提供给比较模块94以供比较。检索到的输入值可与和源像素相同的位置坐标相关联。输入值检索模块92可从至少部分地由存储在地址寄存器88中的存储器地址确定的存储器位置和/或高速缓存位置检索输入值。当存储在地址寄存器88中的存储器地址指向模板缓冲器84时,输入值检索模块92可检索对应于源像素的模板值,且将模板值提供给比较模块94以供比较。类似地,当存储在地址寄存器88中的存储器地址指向目的地阿尔法缓冲器60时,输入值检索模块92可检索对应于源像素的目的地阿尔法值,且将目的地阿尔法值提供给比较模块94以供比较。
[0142]比较模块94可经配置以从输入值检索模块92接收输入值,且从阈值寄存器90接收阈值,并将输入值与阈值进行比较。基于所述比较,比较模块94可将源像素传递到一或多个处理级上或丢弃所述像素,即不将源像素传递到任何后续处理级上。在一些实例中,比较模块94可通过确定输入值是否小于或等于阈值来将输入值与阈值进行比较。如果输入值小于或等于阈值,那么在一些实例中,比较模块94可丢弃源像素。相反,如果输入值不小于或等于阈值,那么在一些实例中,比较模块94可将像素传递到一或多个后续处理级上,即不丢弃源像素。在其它实例中,可使用其它阈值比较功能。并且,输入值可对应于模板值或目的地阿尔法值,取决于输入值检索模块92从哪一存储器空间检索到数据。以此方式,模板测试块86可配置以作为模板测试块或目的地阿尔法测试块来操作。
[0143]图9是说明使用可配置z/模板测试块106根据本发明的选择性纹理值检索技术来执行目的地阿尔法测试的实例像素处理管线100的框图。像素处理管线100包含目的地阿尔法测试模块102、z/模板缓冲器104和目的地阿尔法缓冲器60。目的地阿尔法测试模块102包含组合式、可配置z/模板测试块106。z/模板缓冲器104可经配置以存储用于像素处理管线100的模板值和z值。在一些实例中,z/模板缓冲器104可驻存在芯片外系统存储器中,例如图1中所示的系统存储器10中。目的地阿尔法缓冲器60可为帧缓冲器或频段缓冲器。当目的地阿尔法缓冲器60为频段缓冲器时,在一些实例中,目的地阿尔法缓冲器60可驻存在与包含像素处理管线100的GPU相同的微芯片上。
[0144]目的地阿尔法测试模块102经配置以从GPU中的前一处理级接收源像素,检索对应于所述源像素的目的地阿尔法值,将所述目的地阿尔法值与阈值进行比较,且基于比较的结果选择性地丢弃源像素。如图9中所示,将目的地阿尔法测试模块102实施为可配置z/模板测试块106。可配置z/模板测试块106可为可配置以在模板测试状态下且在目的地阿尔法测试状态下操作。当经配置以在Z模板测试状态下操作时,Z/模板测试块106可对接收到的源像素执行模板测试和z测试中的一者或两者。以与上文相对于图7中的模板块86所描述的方式大体上类似的方式执行模板测试,除了从z/模板缓冲器104而不是模板缓冲器84检索模板值。
[0145]为了执行z测试,z/模板测试块106可从先前处理级接收源像素,从z/模板缓冲器104检索对应于接收到的源像素的z值,将检索到的z值与结合源像素包含的源z值进行比较,且基于比较的结果选择性地丢弃源像素。当经配置以在目的地阿尔法测试状态下操作时,z/模板缓冲器104可执行基本上模板测试所执行相同的操作,而不是从z/模板缓冲器104检索对应的模板值,z/模板测试块106可从目的地阿尔法缓冲器60检索对应的目的地阿尔法值。因此,z/模板测试块106可基于目的地阿尔法值确定是否执行致使不从缓冲器检索用于源像素的一或多个纹理值的动作,且响应于确定执行所述动作,根据本发明的技术执行所述动作。
[0146]z/模板测试块106可经配置以基于z/模板测试块106所接收到的配置信息在配置装填之间切换。可从GPU内的另一组件、从在主机CPU上执行的GPU驱动器且/或从在主机CPU上执行的用户软件应用程序接收配置信息。
[0147]在一些实例中,z/模板测试块106所接收到的配置信息可指定z/模板测试块106应从中检索输入值(例如,模板值和/或目的地阿尔法值)的存储器地址。在此些实例中,z/模板测试块106可经配置以通过将指向z/模板缓冲器104的存储器地址提供给z/模板测试块106来接收目的地阿尔法值。另外,z/模板测试块106可经配置以通过将指向目的地阿尔法缓冲器60而不是z/模板缓冲器104的存储器地址提供给z/模板测试块106来接收目的地阿尔法值代替模板值。
[0148]通过根据本发明中的技术配置z/模板测试块以检索目的地阿尔法值代替z/模板值,可在图形处理管线中实施基于硬件的目的地阿尔法测试块,而不一定需要将额外硬件块添加到图形管线。此外,图形处理器可能够选择性地在至少两种不同渲染模式之间切换:执行基于硬件的组合式z模板测试的第一模式和执行基于硬件的目的地阿尔法测试的第二模式。
[0149]在一些实例中,当z/模板测试块106经配置以在目的地阿尔法测试模式下操作时,可将z/模板测试块106的z测试部分置于“总是通过”模式,其致使所有像素通过z测试,使得无像素归因于z测试而被丢弃。换句话说,可有效地停用z测试。在这些实例中,当z/模板测试块106经配置以从目的地阿尔法缓冲器60接收数据时,可将z/模板测试块106置于“总是通过”模式中,z/模板测试块106可能不一定接收z值。相反,z/模板测试块106可从目的地阿尔法缓冲器60接收色彩值,例如RGB值。将z/模板测试块106置于“总是通过”模式确保了 z测试不会基于色彩值而不充分地丢弃像素。
[0150]图10是说明可用以实施图9的像素处理管线的实例z/模板测试块106的框图。z/模板测试块106包含地址寄存器108、阈值寄存器110、z测试停用寄存器112、输入值检索模块114和比较模块116。
[0151]地址寄存器108可经配置以存储输入值检索模块114应从中检索输入值的存储器地址。用户应用程序、GPU驱动器和/或GPU组件可配置输入值检索模块114以通过将指向z/模板缓冲器104的地址空间的地址值加载到地址寄存器108中来检索z/模板值(即,z值和模板值)。类似地,用户应用程序、GPU驱动器和/或GPU组件可配置输入值检索模块114以通过将指向目的地阿尔法缓冲器60的地址空间的地址值加载到地址寄存器108中来检索目的地阿尔法值。
[0152]阈值寄存器110可存储阈值以供比较模块116使用。当z/模板测试块106经配置以执行z模板测试(即,z测试和/或模板测试)时,阈值可指示模板测试的参考值。当Z/模板测试块106经配置以执行目的地阿尔法测试时,阈值可指示此处或之下可丢弃源像素的阈值不透明等级。用户应用程序、GPU驱动器和/或GPU组件可配置阈值寄存器110,以通过将阈值加载到阈值寄存器110中来存储特定阈值等级。
[0153]z测试停用寄存器112可存储指示是否应为比较模块116启用或停用z测试的值。用户应用程序、GPU驱动器和/或GPU组件可配置z测试停用寄存器112以通过将配置之加载到z测试停用寄存器112中来存储特定配置值。
[0154]输入值检索模块114可经配置以接收包含位置坐标数据的源像素,基于位置坐标数据确定源像素的位置坐标,基于位置坐标从存储器或高速缓冲存储器检索输入值,且输入值提供给比较模块116以供比较。检索到的输入值可与和源像素相同的位置坐标相关联。输入值检索模块114可从至少部分地由存储在地址寄存器108中的存储器地址确定的存储器位置和/或高速缓存位置检索输入值。当存储在地址寄存器108中的存储器地址指向z/模板缓冲器104时,输入值检索模块114可检索对应于源像素的z模板值,且将z模板值提供给比较模块116以供比较。类似地,当存储在地址寄存器108中的存储器地址指向目的地阿尔法缓冲器60时,输入值检索模块114可检索对应于源像素的目的地阿尔法值,且将目的地阿尔法值提供给比较模块116以供比较。
[0155]比较模块116可经配置以从输入值检索模块114接收包含两个不同输入值的输入数据,且对所述输入值中的每一者执行不同比较测试。作为第一比较测试的一部分,比较模块116可将从输入值检索模块114接收到的第一输入值与从阈值寄存器110接收到的阈值进行比较。作为第二比较测试的一部分,比较模块116可将从输入值检索模块114接收到的第二输入值与包含在源像素内的像素属性进行比较。基于这些比较测试中的两者的结果,比较模块116可将源像素传递到一或多个处理级上或丢弃所述像素,即不将源像素传递到任何后续处理级上。举例来说,如果源像素传递比较测量中的两者,那么比较模块116可将源像素传递到后续级上以供进一步处理。相反,如果源像素不通过所述测试中的至少一者,那么比较模块116可丢弃所述源像素。比较模块116可基于存储在z测试停用寄存器112中的配置值来将第二比较测试选择性地配置为“总是通过”模式。当第二比较测试处于“总是通过”模式时,那么将第二比较测试视为已针对所有像素通过,而不管此比较(如果其被执行)的实际结果如何。因此,第一比较测试变为决定是否将丢弃源像素。
[0156]当比较模块116经配置以在z模板测试配置中操作时,比较模块116可使用第一比较测试来执行模板测试(例如,通过以与上文相对于图8中的比较模块94所描述的方式类似的方式将从输入值检索模块114接收到的模板值与阈值进行比较),且使用第二比较测试来执行z测试(例如,通过将从输入值检索模块114接收到的z值与包含在源像素内的源z值属性进行比较)。当比较模块116经配置以在目的地阿尔法测试配置中操作时,比较模块116可使用第一比较测试来执行目的地阿尔法测试(通过以与上文相对于图8中的比较模块94所述的方式类似的方式,将从输入值检索模块114接收到的目的地阿尔法值与阈值进行比较),且比较模块116可基于存储在z测试停用寄存器112中的停用配置值来停用第二比较。以此方式,z/模板测试块106可为可配置的以作为z模板测试块或目的地阿尔法测试块来操作。
[0157]在一些图形处理器中,给定像素位置的z值和模板值可作为单个数据字存储在z/模板缓冲器104中。举例来说,所述数据字可为组成字的24个位的z值和构成其余8个位的模板值的32个位。在此些图形处理器中,RGBA分量可存储在帧缓冲器中,且通过频段缓冲器中的扩展,存储在32位字中,其中“RGB”分量构成24个位,且“A”分量构成其余8个位。在此些实例中,阿尔法值在32位RGBA数据字内的位置可映射到其中模板值通常存储在32位z值/模板数据字中的位置。换句话说,目的地阿尔法值可与数据字中的位位置对准,其中z/模板测试块106通常预期接收模板值,且RGB值可与在数据字中的位位置对准,其中z/模板测试块106通常预期接收z值。以此方式,z/模板测试块106可能够对目的地阿尔法值进行操作,而不一定需要配置z/模板缓冲器104中的下伏数据。此外,通过当在目的地阿尔法测试模式下操作时停用z测试功能性,可防止来自接收RGB值而不是z值的干扰。
[0158]图11是说明使用可编程着色器单元根据本发明的选择性纹理值检索技术来执行目的地阿尔法测试的实例像素处理管线120的框图。像素处理管线120包含可编程着色器单元122、纹理映射模块54、纹理缓冲器58和目的地阿尔法缓冲器60。在图11的实例像素处理管线120中,将纹理映射模块54实施为固定功能硬件单元,而在可编程着色器单元中实施目的地阿尔法测试模块126。
[0159]如图11中所示,像素处理管线120的架构类似于图3中所示的像素处理管线50的架构,除了目的地阿尔法测试模块52已被着色器单元122代替。其实施目的地阿尔法测试。图3和11中类似编号的组件具有相同或类似的功能性和构造。因此,为了简明且为了避免冗余,将不进一步详细描述这些共有组件的操作和构造。
[0160]着色器单元122可包含经配置以执行着色器程序124的一或多个处理元件。在其中着色器单元122包含多个处理元件的情况下,在一些实例中,每一处理元件可经配置以与其它处理元件并行地执行着色器程序124。在一些实例中,着色器单元122中的处理元件可形成并行单指令多数据(SMD)管线,其通常在调制解调器GPU中找到。
[0161]着色器程序124可包含存储在与着色器单元122相关联的指令存储器或高速缓冲存储器中的程序指令。可通过用户软件应用程序、GPU驱动器或在主机上执行的另一服务将着色器程序124编译在主机CPU(例如,图1中的CPU 6)上,且可将着色器程序124的经编译版本下载到着色器单元122上以供执行。
[0162]目的地阿尔法测试模块126可执行属于本发明中所描述的各种目的地阿尔法测试模块的功能中的任一者。举例来说,目的地阿尔法测试模块126可对源像素执行目的地阿尔法测试,且基于目的地阿尔法测试的结果,在纹理映射模块54之前选择性地丢弃个别源像素。
[0163]图12是说明使用可编程着色器单元根据本发明的选择性纹理值检索技术来执行目的地阿尔法测试和纹理映射的另一实例像素处理管线128的框图。像素处理管线128包含着色器单元122、纹理缓冲器58和目的地阿尔法缓冲器60。如图12中所示,像素处理管线128的架构类似于图11中所示的像素处理管线120的架构,只是已在可编程着色器单元上实施纹理映射模块54,而不是作为固定功能管线级的一部分。图11和12中类似编号的组件具有相同或类似的功能性和构造。因此,为了简明且为了避免冗余,将不进一步详细描述这些共有组件的操作和构造。
[0164]着色器单元122包含着色器程序130,其又包含目的地阿尔法测试模块126和纹理映射模块132。目的地阿尔法测试模块126可执行属于本发明的各种目的地阿尔法测试模块的功能中的任一者。类似地,纹理映射模块132可执行属于本发明的各种纹理映射模块的功能中的任一者。当着色器单元122接收到源像素时,着色器单元122可首先执行目的地阿尔法测试模块126以确定是否应丢弃源像素。如果目的地阿尔法测试模块126确定应丢弃源像素,那么着色器单元122丢弃所述像素,且不相对于源像素执行纹理映射模块132。另一方面,如果目的地阿尔法测试模块126确定不丢弃源像素,那么相对于源像素执行纹理映射模块132,以对源像素执行纹理映射。将所得的经纹理映射的源像素传递到一或多个后续处理级上。
[0165]图13是说明根据本发明的用于基于目的地阿尔法值来选择性地检索用于源像素的纹理值的实例技术的流程图。在一些实例中,图13中所说明的技术可在图1到12中所示的系统或组件的任一者中实施。目的地阿尔法测试模块52从频段缓冲器64检索目的地阿尔法值(140)。目的地阿尔法值可由目的地阿尔法确定模块56响应于处理与第一基元相关联的第一像素而产生。目的地阿尔法测试模块52确定是否执行致使不从纹理缓冲器检索用于第二像素的一或多个纹理值的动作(142)。第二像素可与不同于第一基元的第二基元相关联。第二像素可具有与第一像素的像素位置相同的像素位置。
[0166]响应于确定执行所述动作(144,是),目的地阿尔法测试模块52执行致使不从缓冲器检索用于第二像素的一或多个纹理值的动作(146)。举例来说,在第二像素由像素处理管线50的纹理映射级54处理之前,目的地阿尔法测试模块52丢弃所述像素。相反,响应于确定不执行所述动作(144,否),目的地阿尔法测试模块52不执行致使不从缓冲器检索用于第二像素的一或多个纹理值的动作(148)。举例来说,目的地阿尔法测试模块52可将第二像素传递到一组一或多个处理级上,其中的一者可包含纹理映射级54。
[0167]在进一步实例中,致使不从缓冲器检索第二像素的一或多个纹理值的动作可为致使不为第二像素执行纹理映射的动作。在额外实例中,致使不从缓冲器检索用于第二像素的一或多个纹理值的动作可为断言致使不为第二像素检索纹理值的控制信号的动作。举例来说,控制信号可致使像素处理管线内的另一处理级丢弃所述像素。作为另一实例,控制信号可针对像素处理管线内的特定像素启用或停用纹理映射级。在更多实例中,致使不从缓冲器检索第二像素的一或多个纹理值的动作可为将第二像素的纹理映射停用属性设定为致使纹理映射为像素而停用的值。
[0168]在额外实例中,目的地阿尔法测试模块52可经由第一通信接口从频段缓冲器64检索目的地阿尔法值,且可经由第二通信接口从纹理缓冲器58检索一或多个纹理值。在此些实例中,在一些实例中,第一通信接口可具有大于第二通信接口的带宽。
[0169]在一些实例中,频段缓冲器64可存储存储在频段缓冲器64中的目的地像素的子集的像素数据。举例来说,存储在频段缓冲器64中的目的地像素的子集可对应于与作为频段渲染技术的一部分的特定渲染遍次相关联的目的地像素范围。频段缓冲器64可经配置以接收包含指定频段缓冲器中的特定存储隙的存储器地址的读取请求,且返回存储在所述存储隙中的数据。所述存储隙可对应于与当前渲染遍次相关联的特定目的地像素。在一些实例中,在特定渲染遍次期间,用于频段缓冲器64的每一存储器地址对应于特定渲染遍次的目的地像素范围内的唯一目的地像素。
[0170]在一些实例中,待渲染的图形图像可包含多个目的地像素,且图形处理器可经配置以在多个渲染遍次中渲染图形图像,所述渲染遍次中的每一者与目的地像素的相应子集相关联。在此些实例中,对于每一渲染遍次,频段缓冲器可存储与相应渲染遍次相关联的目的地像素的子集的像素数据。在额外实例中,频段缓冲器的容量可小于存储与图形图像相关联的全部多个目的地像素的像素数据所需的最小容量。在进一步实例中,与每一渲染遍次相关联的像素的个别子集可为像素的预定子集。
[0171]图14是说明可用以实施图13中所示的技术的用于执行目的地阿尔法测试的实例技术的流程图。在一些实例中,图14中所示的技术可用以实施图13中的处理框142。目的地阿尔法测试模块52确定与接收到的源像素相关联的像素位置(150)。目的地阿尔法测试模块52从目的地阿尔法缓冲器60检索与像素位置相关联的目的地阿尔法值(152)。目的地阿尔法测试模块52将目的地阿尔法值与阈值进行比较(154)。目的地阿尔法测试模块52基于所述比较的结果确定是否执行致使不从缓冲器检索用于第二像素的一或多个纹理值的动作(156)。
[0172]图15是说明可用以实施图14中所示的技术的用于将目的地阿尔法值与阈值进行比较的实例技术的流程图。在一些实例中,图14中所示的技术可用以实施图14中的处理框156。目的地阿尔法测试模块52确定目的地阿尔法值是否小于或等于阈值(158)。如果目的地阿尔法值小于或等于阈值(160,是),那么目的地阿尔法测试模块52确定执行致使不从缓冲器检索用于第二像素的一或多个纹理值的动作(162)。举例来说,在像素处理管线的纹理映射级之前,目的地阿尔法测试模块52可丢弃源像素。相反,如果目的地阿尔法值不小于或等于阈值(160,否),那么确定不执行致使不从缓冲器检索用于第二像素的一或多个纹理值的动作(164)。举例来说,目的地阿尔法测试模块52可将像素传递到一或多个后续处理级上,其中的一者可包含纹理映射级。
[0173]图16是说明根据本发明的用于自动启用基于目的地阿尔法值的选择性纹理值检索渲染技术的实例技术的流程图。图16中的技术可在GPU驱动器(例如,图2中所示的GPU驱动器28)中实施。GPU驱动器28可检测已启用从前到后渲染模式(166)。举例来说,GPU驱动器28可检测到软件应用程序24已配置GPU 12中的阿尔法混合模块,以使用从前到后阿尔法混合等式执行阿尔法混合。响应于所述检测,GPU驱动器28可自动为GPU 12启用基于目的地阿尔法的选择性纹理值检索渲染模式(168)。举例来说,基于目的地阿尔法的选择性纹理值检索渲染模式可根据图13中所示的技术渲染基元。
[0174]如上文已经论述,本发明的目的地阿尔法测试技术可在其中可重叠的多个表面组成单个表面的“频段化”环境中特别有用。在频段化环境中,用于合成的限制因素趋向于归因于存储在芯片外“系统存储器”中所存储的纹理的读取和写入。同时,频段缓冲器的读取和写入在带宽方面基本上是“自由的”。为了组合一组表面,可以“从前到后”次序处理所述表面,且可维持目的地阿尔法值。一旦像素变为不透明(例如,因为透明度的总和阻挡所有进一步光发射或因为不透明像素经渲染),在一些实例中,目的地阿尔法值将变为等于“O”,这可触发目的地阿尔法测试模块丢弃针对屏幕位置而处理的任何后续源像素。
[0175]尽管可使用z缓冲技术,通过丢弃同一像素位置中在其它源像素后面的源像素来减少合成带宽,但当像素具有逐像素源阿尔法值时,此些技术不会恰当地渲染表面,这本质上允许重叠像素半透明。然而,当所有表面均具有逐像素源阿尔法值时,本发明的基于目的地阿尔法值的选择性纹理值检索技术可减少组成带宽,从而提供较稳健的带宽减少机制。
[0176]在一些实例中,在其中此些技术特别有用的情况下(例如,当合成视窗表面时),可选择性地启用本发明的目的地阿尔法测试技术。在进一步实例中,目的地阿尔法测试技术可由图形驱动器且/或由图形处理器启用,而合成器不一定知晓此步骤正在发生。举例来说,驱动器和/或图形处理器可检测到用户应用程序正试图以从前到后方式合成表面,且响应于此检测而自动启用本发明的目的地阿尔法测试技术。举例来说,驱动器和/或图形处理器可检测到阿尔法混合模式已设定为“从前到后”混合功能,且若干表面绘制命令已由软件调用,且自动启用本发明的目的地阿尔法测试技术。
[0177]本发明的目的地阿尔法测试技术可提供由于用于减少纹理值检索带宽的其它非基于目的地阿尔法值的技术的一或多个优点。举例来说,一种技术是细化且仅渲染在最上不透明表面“上方”且包含最上不透明表面的表面。然而,此技术在所有表面均透明或具有逐像素阿尔法时失效。用于减小带宽的另一技术包含将“Z”指派给每一表面,且使用Z值来避免渲染不透明表面下面的表面。并且,这在逐像素阿尔法环境中失效。用于减小带宽的又一技术包含在一个遍次中,用逐表面逐像素阿尔法测试来对所有表面进行基于着色器的渲染。这有用,但需要应用程序中的显著改变。一旦表面的数目变大或表面的形状不同于矩形,就也花费较多着色器马力且失去动力。
[0178]可至少部分地在硬件、软件、固件或其任何组合中实施本发明中所描述的技术。举例来说,所描述的技术的各个方面可在一或多个处理器内实施,包含一或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA),或任何其它等效集成或离散逻辑电路,以及此些组件的任何组合。术语“处理器”或“处理电路”通常可指代单独或与其它逻辑电路组合的前述逻辑电路中的任一者,或任何其它等效电路,例如执行处理的离散硬件。
[0179]此硬件、软件和固件可在同一装置内或单独装置内实施,以支持本发明中所描述的各种操作和功能。此外,所描述的单元、模块或组件中的任一者可一起实施或单独地实施为离散但可共同操作的逻辑装置。将不同特征描绘为模块或单元意在突出不同功能方面,且未必意味着必须通过单独的硬件及/或软件组件来实现这些模块或单元。实情为,与一或多个模块或单元相关联的功能性可由单独的硬件、固件或软件组件来执行,或集成于共用或单独的硬件或软件组件内。
[0180]本发明中所描述的技术还可存储、包含或编码在计算机可读媒体中,例如存储指令的计算机可读存储媒体中。举例来说,在一或多个处理器执行指令时,嵌入或编码于计算机可读媒体中的指令可致使一或多个处理器执行本文所述的技术。计算机可读存储媒体可包含:随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器、硬盘、CD-ROM、软盘、盒式磁带、磁性媒体、光学媒体或其它有形的计算机可读存储媒体。
[0181]计算机可读媒体可包含计算机可读存储媒体,其对应于有形存储媒体,例如上文所列的那些。计算机可读媒体还可包括通信媒体,其包含促进计算机程序从一处到另一处的传送的任何媒体,例如根据通信协议。以此方式,短语“计算机可读媒体”通常可对应于
(I)非暂时性的有形计算机可读存储媒体,以及(2)例如暂时性信号或载波的非有形计算机可读通信媒体。
[0182]已描述了各种方面和实例。然而,可在不脱离所附权利要求书的范围的情况下,对本发明的结构或技术进行修改。
【权利要求】
1.一种方法,其包括: 用图形处理器从频段缓冲器检索目的地阿尔法值,所述目的地阿尔法值是响应于处理与第一基元相关联的第一像素而产生; 用所述图形处理器且基于所述目的地阿尔法值来确定是否执行致使不从纹理缓冲器检索用于第二像素的一或多个纹理值的动作,所述第二像素与不同于所述第一基元的第二基兀相关联;以及 响应于确定执行所述动作,用所述图形处理器执行所述致使不从所述纹理缓冲器检索用于所述第二像素的所述一或多个纹理值的动作。
2.根据权利要求1所述的方法, 其中确定是否执行所述动作包括基于所述目的地阿尔法值,确定在所述第二像素到达像素处理管线的纹理映射级之前是否将所述第二像素从所述像素处理管线丢弃,且 其中执行所述动作包括响应于基于所述目的地阿尔法值确定丢弃所述第二像素,在所述第二像素到达所述像素处理管线的纹理映射级之前,将所述第二像素从所述像素处理管线丢弃。
3.根据权利要求2所述的方法,其进一步包括: 响应于基于所述目的地阿尔法值确定不丢弃所述第二像素,将所述第二像素传递到包含纹理映射级的一组一或多个处理级上。
4.根据权利要求1所述的方法,其中所述动作为第一动作,所述方法进一步包括: 响应于基于所述目的地阿尔法值确定不执行所述第一动作,执行致使从所述纹理缓冲器检索用于所述第二像素的所述一或多个纹理值的第二动作。
5.根据权利要求1所述的方法,其中确定是否执行所述动作包括: 将所述目的地阿尔法值与阈值进行比较;以及 基于通过将所述目的地阿尔法值与所述阈值进行比较所产生的结果确定是否执行所述动作。
6.根据权利要求5所述的方法,其中将所述目的地阿尔法值与所述阈值进行比较包括确定所述目的地阿尔法值是否小于或等于所述阈值。
7.根据权利要求6所述的方法, 其中执行所述动作包括响应于确定所述目的地阿尔法值小于或等于所述阈值,执行致使不从所述纹理缓冲器检索用于所述第二像素的一或多个纹理值的动作,且 其中所述方法进一步包括响应于确定所述目的地阿尔法值不小于或等于所述阈值,执行致使从所述纹理缓冲器检索用于所述第二像素的一或多个纹理值的动作。
8.根据权利要求5所述的方法,其中所述阈值为可配置阈值。
9.根据权利要求1所述的方法,其中所述图形处理器和所述频段缓冲器驻存在第一微芯片上,且其中所述纹理缓冲器驻存在不同于所述第一微芯片的第二微芯片上。
10.根据权利要求1所述的方法, 其中从所述频段缓冲器检索所述目的地阿尔法值包括经由第一通信接口从所述频段缓冲器检索所述目的地阿尔法值,且 其中所述图形处理器经配置以经由不同于所述第一通信接口的第二通信接口从所述纹理缓冲器检索所述一或多个纹理值。
11.根据权利要求10所述的方法,其中所述第一通信接口具有大于所述第二通信接口的带宽的带宽。
12.根据权利要求1所述的方法,其中所述频段缓冲器存储包含在帧缓冲器中的数据的子集。
13.根据权利要求1所述的方法,其中图形图像包括多个目的地像素,其中所述图形处理器经配置以在多个渲染遍次中渲染所述图形图像,所述渲染遍次中的每一者与所述目的地像素的相应子集相关联,其中所述频段缓冲器的容量小于存储与所述图形图像相关联的全部所述多个目的地像素的像素数据所需的最小容量,且其中,对于每一渲染遍次,所述频段缓冲器存储与所述相应渲染遍次相关联的目的地像素的子集的像素数据。
14.根据权利要求1所述的方法,其中确定是否执行所述动作包括: 基于所述目的地阿尔法值且用模板测试块和z/模板测试块中的一者确定是否执行不从所述缓冲器检索用于所述第二像素的所述一或多个纹理值的所述动作。
15.根据权利要求1所述的方法,其中确定是否执行所述动作包括: 基于所述目的地阿尔法值且用在着色器单元上执行的着色器程序来确定是否执行不从所述缓冲器检索用于所述第二像素的所述一或多个纹理值的所述动作。
16.根据权利要求1所述的方法,其中所述第二像素为源像素,且其中确定是否执行所述动作包括: 基于所述目的地阿尔法值确定对应于所述源像素的目的地像素是否归因于对应于所述目的地像素的一或多个先前经处理源像素而不透明。
17.根据权利要求1所述的方法,其中所述第二像素为与像素位置相关联的源像素,且其中所述源像素的所述目的地阿尔法值为指示与所述像素位置相关联的目的地像素的不透明度的值,所述目的地像素的所述不透明度至少部分地由与所述像素位置相关联的一或多个先前经处理源像素确定。
18.一种图形处理装置,其包括: 目的地阿尔法测试模块,其经配置以从频段缓冲器检索目的地阿尔法值,所述目的地阿尔法值是响应于处理与第一基元相关联的第一像素而产生,所述目的地阿尔法测试模块进一步经配置以基于所述目的地阿尔法值,确定是否执行致使不从纹理缓冲器检索用于第二像素的一或多个纹理值的动作,且响应于确定执行所述动作,执行致使不从所述纹理缓冲器检索用于所述第二像素的所述一或多个纹理值的所述动作,所述第二像素与不同于所述第一基元的第二基元相关联。
19.根据权利要求18所述的装置,其中所述目的地阿尔法测试模块进一步经配置以基于所述目的地阿尔法值确定是否在所述第二像素到达像素处理管线的纹理映射级之前将所述第二像素从所述像素处理管线丢弃,且响应于基于所述目的地阿尔法值确定丢弃所述第二像素,在所述第二像素到达所述像素处理管线的纹理映射级之前,将所述第二像素从所述像素处理管线丢弃。
20.根据权利要求19所述的装置,其中所述目的地阿尔法测试模块进一步经配置以响应于基于所述目的地阿尔法值确定不丢弃所述第二像素而将所述第二像素传递到包含纹理映射级的一组一或多个处理级上。
21.根据权利要求18所述的装置,其中所述动作为第一动作,且其中所述目的地阿尔法测试模块进一步经配置以响应于基于所述目的地阿尔法值确定不执行所述第一动作而执行致使从所述纹理缓冲器检索用于所述第二像素的所述一或多个纹理值的第二动作。
22.根据权利要求18所述的装置,其中所述目的地阿尔法测试模块进一步经配置以将所述目的地阿尔法值与阈值进行比较,且基于通过将所述目的地阿尔法值与所述阈值进行比较而产生的结果来确定是否执行所述动作。
23.根据权利要求22所述的装置,其中所述目的地阿尔法测试模块进一步经配置以确定所述目的地阿尔法值是否小于或等于所述阈值。
24.根据权利要求23所述的装置,其中所述目的地阿尔法测试模块进一步经配置以响应于确定所述目的地阿尔法值小于或等于所述阈值,执行致使不从所述纹理缓冲器检索用于所述第二像素的所述一或多个纹理值的动作,且响应于确定所述目的地阿尔法值不小于或等于所述阈值,执行致使从所述纹理缓冲器检索用于所述第二像素的所述一或多个纹理值的动作。
25.根据权利要求22所述的装置,其中所述阈值为可配置阈值。
26.根据权利要求18所述的装置,其中所述图形处理装置和所述频段缓冲器驻存在第一微芯片上,且其中所述纹理缓冲器驻存在不同于所述第一微芯片的第二微芯片上。
27.根据权利要求18所述的装置, 其中所述目的地阿尔法测试模块进一步经配置以经由第一通信接口从所述频段缓冲器检索所述目的地阿尔法值,且 其中所述图形处理装置经配置以经由不同于所述第一通信接口的第二通信接口从所述纹理缓冲器检索所述一或多个纹理值。
28.根据权利要求27所述的装置,其中所述第一通信接口具有大于所述第二通信接口的带宽的带宽。
29.根据权利要求18所述的装置,其中所述频段缓冲器存储包含在帧缓冲器中的数据的子集。
30.根据权利要求18所述的装置,其中图形图像包括多个目的地像素,其中所述图形处理装置经配置以在多个渲染遍次中渲染所述图形图像,所述渲染遍次中的每一者与所述目的地像素的相应子集相关联,其中所述频段缓冲器的容量小于存储与所述图形图像相关联的全部所述多个目的地像素的像素数据所需的最小容量,且其中,对于每一渲染遍次,所述频段缓冲器存储与所述相应渲染遍次相关联的目的地像素的子集的像素数据。
31.根据权利要求18所述的装置,其中所述目的地阿尔法测试模块包括: 模板测试块和z/模板测试块中的一者,其经配置以基于所述目的地阿尔法值确定是否执行不从所述纹理缓冲器检索用于所述第二像素的所述一或多个纹理值的所述动作。
32.根据权利要求18所述的装置,其中所述目的地阿尔法测试模块包括: 着色器单元,其经配置以执行着色器程序,所述着色器程序基于所述目的地阿尔法值确定是否执行不从所述纹理缓冲器检索用于所述第二像素的所述一或多个纹理值的所述动作。
33.根据权利要求18所述的装置,其中所述第二像素为源像素,且其中所述目的地阿尔法测试模块进一步经配置以基于所述目的地阿尔法值确定对应于所述源像素的目的地像素是否归因于对应于所述目的地像素的一或多个先前经处理源像素而不透明。
34.根据权利要求18所述的装置,其中所述第二像素为与像素位置相关联的源像素,且其中所述源像素的所述目的地阿尔法值为指示与所述像素位置相关联的目的地像素的不透明度的值,所述目的地像素的所述不透明度至少部分地由与所述像素位置相关联的一或多个先前经处理源像素确定。
35.一种设备,其包括: 用于从频段缓冲器检索目的地阿尔法值的装置,所述目的地阿尔法值是响应于处理与第一基元相关联的第一像素而产生; 用于基于所述目的地阿尔法值来确定是否执行致使不从纹理缓冲器检索用于第二像素的一或多个纹理值的动作的装置,所述第二像素与不同于所述第一基元的第二基元相关联;以及 用于响应于确定执行所述动作执行所述致使不从所述纹理缓冲器检索用于所述第二像素的所述一或多个纹理值的动作的装置。
36.根据权利要求35所述的设备, 其中所述用于确定是否执行所述动作的装置包括用于基于所述目的地阿尔法值确定在所述第二像素到达像素处理管线的纹理映射级之前是否将所述第二像素从所述像素处理管线丢弃的装置,且 其中所述用于执行所述动作的装置包括用于响应于基于所述目的地阿尔法值确定丢弃所述第二像素而在所述第二像素到达所述像素处理管线的纹理映射级之前将所述第二像素从所述像素处理管线丢弃的装置。
37.根据权利要求36所述的设备,其进一步包括: 用于响应于基于所述目的地阿尔法值确定不丢弃所述第二像素将所述第二像素传递到包含纹理映射级的一组一或多个处理级上的装置。
38.根据权利要求35所述的设备,其中所述第二像素为与像素位置相关联的源像素,且其中所述源像素的所述目的地阿尔法值为指示与所述像素位置相关联的目的地像素的不透明度的值,所述目的地像素的所述不透明度至少部分地由与所述像素位置相关联的一或多个先前经处理源像素确定。
39.根据权利要求35所述的设备, 其中所述用于从所述频段缓冲器检索所述目的地阿尔法值的装置包括用于经由第一通信接口从所述频段缓冲器检索所述目的地阿尔法值的装置,且 其中所述设备进一步包括用于经由不同于所述第一通信接口的第二通信接口从所述纹理缓冲器检索所述一或多个纹理值的装置。
40.根据权利要求39所述的设备,其中所述第一通信接口具有大于所述第二通信接口的带宽的带宽。
41.一种计算机可读媒体,其包括致使一或多个处理器进行以下操作的指令: 从频段缓冲器检索目的地阿尔法值,所述目的地阿尔法值是响应于处理与第一基元相关联的第一像素而产生; 基于所述目的地阿尔法值来确定是否执行致使不从纹理缓冲器检索用于第二像素的一或多个纹理值的动作,所述第二像素与不同于所述第一基元的第二基元相关联;以及 响应于确定执行所述动作执行所述致使不从所述纹理缓冲器检索用于所述第二像素的所述一或多个纹理值的动作。
42.根据权利要求41所述的计算机可读媒体, 其中所述致使所述一或多个处理器确定是否执行所述动作的指令包括致使所述一或多个处理器基于所述目的地阿尔法值确定在所述第二像素到达像素处理管线的纹理映射级之前是否将所述第二像素从所述像素处理管线丢弃的指令,且 其中所述致使所述一或多个处理器执行所述动作的指令包括致使所述一或多个处理器响应于基于所述目的地阿尔法值确定丢弃所述第二像素而在所述第二像素到达所述像素处理管线的纹理映射级之前将所述第二像素从所述像素处理管线丢弃的指令。
43.根据权利要求42所述的计算机可读媒体,其进一步包括致使所述一或多个处理器进行以下操作的指令: 响应于基于所述目的地阿尔法值确定不丢弃所述第二像素,将所述第二像素传递到包含纹理映射级的一组一或多个处理级上。
44.根据权利要求41所述的计算机可读媒体,其中所述第二像素为与像素位置相关联的源像素,且其中所述源像素的所述目的地阿尔法值为指示与所述像素位置相关联的目的地像素的不透明度的值,所述目的地像素的所述不透明度至少部分地由与所述像素位置相关联的一或多个先前经处理源像素确定。
45.根据权利要求41所述的计算机可读媒体, 其中所述致使所述一或多个处理器从所述频段缓冲器检索所述目的地阿尔法值的指令包括致使所述一或多个处理器经由第一通信接口从所述频段缓冲器检索所述目的地阿尔法值的指令,且 其中所述一或多个处理器经配置以经由不同于所述第一通信接口的第二通信接口从所述纹理缓冲器检索所述一或多个纹理值。
46.根据权利要求45所述的计算机可读媒体,其中所述第一通信接口具有大于所述第二通信接口的带宽的带宽。
【文档编号】G06T15/40GK104137152SQ201380011369
【公开日】2014年11月5日 申请日期:2013年2月8日 优先权日:2012年3月1日
【发明者】安德鲁·格鲁贝尔 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1