使用过度绘制跟踪器在图形处理中在直接呈现与分格之间的切换的制作方法

文档序号:6497427阅读:217来源:国知局
使用过度绘制跟踪器在图形处理中在直接呈现与分格之间的切换的制作方法
【专利摘要】本发明提供了用于确定呈现模式(例如,分格呈现模式及直接呈现模式)的技术及结构,以及用于在所述呈现模式之间切换的技术及结构。呈现模式可通过分析呈现特性来确定。呈现模式还可通过跟踪分格中的过度绘制来确定。所述呈现模式可通过修补使用图形存储器地址的命令以使用系统存储器地址而从分格呈现模式切换到直接呈现模式。修补可由CPU或由可由GPU执行的第二写入命令缓冲器处理。
【专利说明】使用过度绘制跟踪器在图形处理中在直接呈现与分格之间的切换
[0001]本申请案主张2011年11月30日申请的第61/565,397号美国临时申请案的权利,其全文特此以引用的方式并入。
【技术领域】
[0002]本发明涉及用于图形处理的技术,且更特定来说,涉及用于在图形处理中在直接呈现与分格之间切换的技术。
【背景技术】
[0003]用于显示的视觉内容(例如,用于图形用户接口和视频游戏的内容)可由图形处理单元(GPU)产生。GPU可将二维或三维(3D)物体转换成可显示的二维(2D)像素表示。将关于3D物体的信息转换成可显示的位图被称为像素呈现(pixel rendering),且需要相当大的存储和处理能力。过去,3D图形能力仅可在功能强大的工作站实现。然而,现在,3D图形加速器一般供给个人计算机(PC)以及嵌入式装置(例如,智能手机、平板计算机、便携式媒体播放器、便携式视频游戏控制台和其类似物)。通常,与常规PC相比,嵌入式装置具有较小计算能力和存储器容量。因而,3D图形呈现技术的增加复杂性在嵌入式系统上实施此些技术时带来困难。

【发明内容】

[0004]一般来说,本发明描述用于在图形处理中在直接呈现与分格之间切换的技术,及用于确定呈现模式的技术。
[0005]在本发明的一个实例中,一种图形处理方法包括:产生用于呈现帧的呈现命令,其中所述呈现命令是用于分格呈现模式;跟踪使用图形存储器地址的所述呈现命令;基于呈现特性确定用于所述帧的多个呈现模式中的一者,其中所述多个呈现模式包含所述分格呈现模式及直接呈现模式;及在所述确定的呈现模式为直接呈现模式的状况下更改使用图形存储器地址的所述呈现命令以使用系统存储器地址。
[0006]在本发明的另一实例中,一种图形处理方法包括:对场景的基元执行分格操作,其中将所述基元划分成分格;计算表示所述场景的区中的基元的过度绘制量的过度绘制数目;及基于计算的计分确定呈现模式。
[0007]在本发明的另一实例中,一种图形处理方法包括:将用于执行图形操作的操作命令存储于第一缓冲器中;及将写入命令存储于第二缓冲器中,其中所述写入命令在执行时更改所述第一缓冲器中的所述操作命令以产生更改的操作命令。
[0008]本发明的技术还根据设备及存储用于致使处理器执行技术的指令的计算机可读存储媒体来描述。一或多个实例的细节陈述于附图及以下描述中。其它特征、目标及优势将从描述及附图和从权利要求书中显而易见。【专利附图】

【附图说明】
[0009]图1为展示经配置以使用本发明的技术的实例计算装置的框图。
[0010]图2为展示经配置以使用本发明的技术的实例处理单元的框图。
[0011]图3为说明用于分格呈现模式中的帧的分格的概念图。
[0012]图4为更详细说明用于分格呈现模式中的帧的分格的概念图。
[0013]图5为说明用于使用“软件”分格的分格呈现模式的命令缓冲器的概念图。
[0014]图6为说明用于使用“硬件”分格的分格呈现模式的命令缓冲器的概念图。
[0015]图7为说明用于直接呈现模式的命令缓冲器的概念图。
[0016]图8为说明根据本发明的一个实例的呈现命令修补的概念图。
[0017]图9为说明根据本发明的一个实例的过度绘制跟踪的概念图。
[0018]图10为说明根据本发明的一个实例的四个分格中的过度绘制的概念图。
[0019]图11为说明根据本发明的一个实例的呈现模式选择的概念图。
[0020]图12为说明根据本发明的另一实例的呈现命令修补的概念图。
[0021]图13为说明根据本发明的一个实例的方法的流程图。
[0022]图14为说明根据本发明的另一实例的方法的流程图。
[0023]图15为说明根据本发明的另一实例的方法的流程图。
[0024]图16为说明根据本发明的另一实例的方法的流程图。
【具体实施方式】
[0025]本发明涉及用于图形处理的技术,且更特定来说,涉及用于在图形处理中确定呈现模式及在呈现模式之间切换的技术。
[0026]当前图形呈现系统通常利用分格呈现模式(有时被称作基于平铺块的呈现)或直接呈现模式来呈现场景。在分格呈现中,2D或3D场景的一个帧是通过将帧断裂成较小部分(例如,矩形分格或平铺块)及单独地呈现这些分格中的每一者来呈现的。分格呈现用于没有专用快速图形存储器(GMEM)是可用的应用,例如用于移动应用。平铺块的大小可经配置以表示在GMEM中可用的数据量。举例来说,如果GMEM能够存储512kB,那么平铺块的大小可经配置以使得所述平铺块中所含有的所述像素数据小于或等于512kB。
[0027]另一方面,直接呈现模式中的图形处理不将帧断裂成较小分格。替代地,立即呈现完整的帧。在一些图形处理系统(例如,移动装置上的图形处理系统)中,没有足够的GMEM来保持完整的像素数据帧。替代地,对于直接呈现模式,使用较慢的系统存储器来呈现帧。
[0028]本发明呈现了用于确定呈现模式(例如,分格呈现模式及直接呈现模式)的技术及结构,以及用于在所述呈现模式之间切换的技术及结构。
[0029]在本发明的一个实例中,一种图形处理方法包括:产生用于呈现帧的呈现命令,其中所述呈现命令是用于分格呈现模式;跟踪使用图形存储器地址的所述呈现命令;基于呈现特性确定用于所述帧的多个呈现模式中的一者,其中所述多个呈现模式包含所述分格呈现模式及直接呈现模式;及在所述确定的呈现模式为直接呈现模式的状况下更改使用图形存储器地址的所述呈现命令以使用系统存储器地址。
[0030]在本发明的另一实例中,一种图形处理方法包括:对场景的基元执行分格操作,其中将所述基元划分成分格;计算表示所述场景的区中的基元的过度绘制量的过度绘制数目;及基于计算的计分确定呈现模式。
[0031]在本发明的另一实例中,一种图形处理方法包括:将用于执行图形操作的操作命令存储于第一缓冲器中;及将写入命令存储于第二缓冲器中,其中所述写入命令更改所述第一缓冲器中的所述操作命令以产生更改的操作命令。
[0032]图1为说明可用以实施本发明的技术以用于确定呈现模式及在呈现模式之间(例如,在分格呈现模式与直接呈现模式之间)切换的实例计算装置2的框图。举例来说,计算装置2可包括个人计算机、桌上型计算机、膝上型计算机、平板计算机、计算机工作站、视频游戏平台或控制台、移动电话(例如,蜂窝式或卫星电话)、固定电话、因特网电话、例如便携式视频游戏装置或个人数字助理(PDA)等手持式装置、个人音乐播放器、视频播放器、显示装置、电视、电视机顶盒、服务器、中间网络装置、主计算机、任何移动装置或处理及/或显示图形数据的任何其它类型的装置。
[0033]如图1的实例中所说明,计算装置2可包含用户输入接口 4、中央处理单元(CPU) 6、存储器控制器8、系统存储器10、图形处理单元(GPU) 12、图形存储器14、显示接口
16、显示器18及总线20及22。应注意在一些实例中,图形存储器14可与GPU12 —起“在芯片上”。在一些状况下,图1中所示的所有硬件元件可在芯片上,例如在芯片上系统(SoC)设计中。用户输入接口 4、CPU6、存储器控制器8、GPU12及显示接口 16可使用总线20彼此通信。存储器控制器8及系统存储器10还可使用总线22彼此通信。总线20、22可为多种总线结构中的任一者,例如,第三代总线(例如,超传输总线或无限带宽总线)、第二代总线(例如,高级图形端口总线、周边组件互连(PCI)快速总线或高级可扩展接口(AXD总线)或另一类型的总线或装置互连。应注意,图1中所示的不同组件之间的总线及通信接口的特定配置仅为示范性的,且计算装置及/或具有相同或不同组件的其它图形处理系统的其它配置可用以实施本发明的技术。
[0034]CPU6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2,以致使CPU6执行一或多个软件应用程序。CPU6上执行的软件应用程序可包含例如操作系统、字处理器应用程序、电子邮件应用程序、电子数据表应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。另外,CPU6可执行用于控制GPU12的操作的GPU驱动程序7。用户可经由例如键盘、鼠标、麦克风、触摸板或经由用户输入接口 4耦合到计算装置2的另一输入装置等一或多个输入装置(未图示)将输入提供到计算装置2。
[0035]CPU6上执行的软件应用程序可包含一或多个图形呈现指令,所述图形呈现指令指示CPU6致使向显示器18呈现图形数据。在一些实例中,软件指令可遵照图形应用程序编程接口(API),例如开放图形库(OpcnGL?) AP1、开放图形库嵌入式系统(OpenGL ES)AP1、Direct3D AP1、X3D AP1、RenderMan API, WebGL API 或任何其它公用或专属标准图形 API。为了处理图形呈现指令,CPU6可将一或多个图形呈现命令发布到GPU12 (例如,经由GPU驱动程序7),以致使GPU12执行图形数据的呈现中的部分或全部。在一些实例中,待呈现的图形数据可包含图形基元列表,例如点、线、三角形、四边形、三角形带等。
[0036]存储器控制器8促使传送数据进入及离开系统存储器10。举例来说,存储器控制器8可接收存储器读取及写入命令,且为关于存储器系统10的此些命令服务,以便为计算装置2中的组件提供存储器服务。存储器控制器8经由存储器总线22通信耦合到系统存储器10。尽管存储器控制器8在图1中经说明为与CPU6及系统存储器10两者分离的处理模块,但在其它实例中,存储器控制器8的功能性中的部分或全部可实施于CPU6及系统存储器10中的一者或两者上。
[0037]系统存储器10可存储可存取以供CPU6执行的程序模块及/或指令及/或供执行于CPU6上的程序使用的数据。举例来说,系统存储器10可存储窗口管理器应用程序,其由CPU6使用以在显示器18上呈现图形用户接口(⑶I)。另外,系统存储器10可存储用户应用程序及与应用程序相关联的应用程序表面数据。系统存储器10可另外存储由计算装置2的其它组件使用及/或产生的信息。举例来说,系统存储器10可充当GPU12的装置存储器,且可存储待由GPU12操作的数据以及从GPU12所执行的操作产生的数据。举例来说,系统存储器10可存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器或其类似者的任何组合。系统存储器10可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
[0038]GPU12可经配置以执行图形操作以向显示器18呈现一或多个图形基元。因此,当执行于CPU6上的软件应用程序中的一者需要图形处理时,CPU6可将图形命令及图形数据提供到GPU12以用于呈现于显示器18。图形数据可包含例如绘制命令、状态信息、基元信息、纹理信息等。在一些情况下,GPU12可以高度并行结构来建置,所述高度并行结构提供比CPU6更有效的复杂图形相关操作的处理。举例来说,GPU12可包含多个处理元件,所述处理元件经配置以并行方式对多个顶点或像素操作。在一些情况下,与使用CPU6将场景直接绘制到显示器18相比,GPU12的高度并行性质可允许GPU12更快地将图形图像(例如,GUI及二维(2D)及/或三维(3D)图形场景)绘制到显示器18上。
[0039]在一些情况下,GPU12可集成到计算装置2的母板中。在其它情况中,GPU12可存在于安装于计算装置2的母板中的端口中的图形卡上,或可以其它方式并入于经配置以与计算装置2互操作的周边装置内。GPU12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效集成或离散逻辑电路。
[0040]GPU12可直接耦合到图形存储器14。因此,GPU12可在不使用总线20的情况下从图形存储器14读取数据及将数据写入到图形存储器14。换句话说,GPU12可使用本地存储装置而不是芯片外存储器在本地处理数据。这通过消除GPU12经由总线20 (其可经历重总线流通量)读取及写入数据的需要而允许GPU12以更有效方式操作。然而,在一些情况下,GPU12可不包含单独存储器,而是经由总线20利用系统存储器10。图形存储器14可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM (SRAM)、动态RAM (DRAM)、可擦除可编程ROM (EPROM)、电可擦除可编程ROM (EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
[0041]CPU6及/或GPU12可将所呈现的图像数据存储于帧缓冲器15中。帧缓冲器15可为独立存储器或可分配于系统存储器10内。显示接口 16可从帧缓冲器15检索数据,且配置显示器18以显示由所呈现的图像数据表示的图像。在一些实例中,显示接口 16可包含数/模转换器(DAC),其经配置以将从帧缓冲器检索的数字值转换成可由显示器18消耗的模拟信号。在其它实例中,显示接口 16可将数字值直接传递到显示器18以供处理。显示器18可包含监视器、电视、投影装置、液晶显示器(LCD)、等离子体显示面板、例如有机LED(OLED)显示器等发光二级管(LED)阵列、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或另一类型的显示单元。显示器18可集成于计算装置2内。举例来说,显示器18可为移动电话的屏幕。或者,显示器18可为经由有线或无线通信链路耦合到计算装置2的独立装置。举例来说,显示器18可为经由缆线或无线链路耦合到个人计算机的计算机监视器或平板显示器。
[0042]根据本发明的一个实例,CPU6及/或GPU驱动程序7可经配置以:产生用于呈现帧的呈现命令,其中所述呈现命令是用于分格呈现模式;跟踪使用图形存储器地址的所述呈现命令;基于呈现特性确定用于所述帧的多个呈现模式中的一者,其中所述多个呈现模式包含所述分格呈现模式及直接呈现模式;及在所述确定的呈现模式为直接呈现模式的状况下更改使用图形存储器地址的所述呈现命令以使用系统存储器地址。
[0043]根据本发明的另一实例,CPU6及/或图形驱动程序7可经配置以:对场景的基元执行分格操作,其中将所述基元划分成分格;计算表示所述场景的区中的基元的过度绘制量的过度绘制数目;及基于计算的计分确定呈现模式。
[0044]根据本发明的另一实例,CPU6及/或图形驱动程序7可经配置以:将用于执行图形操作的操作命令存储于第一缓冲器中;及将写入命令存储于第二缓冲器中,其中所述写入命令更改所述第一缓冲器中的所述操作命令以产生更改的操作命令。
[0045]图2为更详细地说明图1的CPU6、GPU12及系统存储器10的实例实施方案的框图。CPU6可包含至少一个软件应用程序24、图形API26及GPU驱动程序7,其中的每一者可为CPU6上执行的一或多个软件应用程序或服务。GPU12可包含图形处理管线30,所述图形处理管线包含一起操作以执行图形处理命令的多个图形处理级。GPU12可经配置以在多种呈现模式(包含分格呈现模式及直接呈现模式)中执行图形处理管线30。如图2中所示,图形处理管线30可包含命令引擎32、几何形状处理级34、光栅化级36及像素处理管线38。图形处理管线30中的组件中的每一者可经实施为固定功能组件、可编程组件(例如,作为执行于可编程着色器单元上的着色器程序的部分)或经实施为固定功能及可编程组件的组合。CPU6及GPU12可用的存储器可包含系统存储器10及帧缓冲器15。帧缓冲器15可为系统存储器10的部分或可与系统存储器10分离。帧缓冲器15可存储所呈现的图像数据。
[0046]软件应用程序24可为利用GPU12的功能性的任何应用程序。举例来说,软件应用程序24可为CTI应用程序、操作系统、便携式映射应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序或使用2D或3D图形的另一类型的软件应用程序。
[0047]软件应用程序24可包含指示GPU12呈现图形用户接口(⑶I)及/或图形场景的一或多个绘制指令。举例来说,绘制指令可包含界定待由GPU12呈现的一或多个图形基元的集合的指令。在一些实例中,绘制指令可共同界定用于GUI中的多个窗口表面中的全部或部分。在额外实例中,绘制指令可共同界定包含由应用程序界定的模型空间或世界空间内的一或多个图形物体的图形场景的全部或部分。
[0048]软件应用程序24可经由图形API26调用GPU驱动程序7,以将一或多个命令发布到GPU12以用于将一或多个图形基元呈现到可显示图形图像中。举例来说,软件应用程序24可经由图形API26调用GPU驱动程序7以将基元定义提供到GPU12。在一些情况下,可按绘制基元的列表(例如,三角形、矩形、三角形扇、三角形带等)的形式将基元定义提供到GPU12。基元定义可包含顶点规范,其指定与待呈现的基元相关联的一或多个顶点。顶点规范可包含用于每一顶点的位置坐标及在一些情况下与顶点相关联的其它属性,例如色彩坐标、法向量及纹理坐标。基元定义还可包含基元类型信息(例如,三角形、矩形、三角形扇、三角形带等)、缩放信息、旋转信息及其类似者。基于由软件应用程序24发布到GPU驱动程序7的指令,GPU驱动程序7可制定一或多个命令,所述命令指定GPU12执行以便呈现基元的一或多个操作。当GPU12从CPU6接收命令时,图形处理管线30对命令进行解码且配置图形处理管线30内的一或多个处理元件以执行命令中所指定的操作。在执行指定的操作之后,图形处理管线30将所呈现的数据输出到与显示装置相关联的帧缓冲器40。图形管线30可经配置以在多个不同呈现模式(包含分格呈现模式及直接呈现模式)中的一者中执行。下文将更详细论述分格呈现模式及直接呈现模式的操作。
[0049]GPU驱动程序7可经进一步配置以编译一或多个着色器程序,及将经编译的着色器程序下载到GPU12内所含有的一或多个可编程着色器单元上。可以高级着色语言(例如,OpenGL着色语言(GLSL)、高级着色语言(HLSL)、图形C (Cg)着色语言等)写入着色器程序。经编译的着色器程序可包含控制GPU12内的可编程着色器单元的操作的一或多个指令。举例来说,着色器程序可包含顶点着色器程序及/或像素着色器程序。顶点着色器程序可控制可编程顶点着色器单元或统一着色器单元的执行,且包含指定一或多个逐顶点操作的指令。像素着色器程序可包含控制可编程像素着色器单元或统一着色器单元的执行的像素着色器程序,且包含指定一或多个逐像素操作的指令。根据本发明的一些实例实施例,像素着色器程序还可包含以下指令:基于源像素的对应目的地阿尔法值而选择性地致使纹理值被检索以用于源像素。
[0050]根据本发明的技术,GPU驱动程序7还可经配置以跟踪经产生以用于在分格呈现模式中呈现的利用GMEM地址的命令。对于利用GMEM地址的每一命令,GPU驱动程序7可存储将用于直接呈现模式的对应系统存储器地址。如果呈现模式从分格呈现模式切换到直接呈现模式,那么GPU驱动程序7可修补(B卩,更改)呈现命令以用系统存储器地址替换GMEM地址。下文将更详细论述用于用系统存储器地址修补GMEM地址的额外技术。
[0051]图形处理管线30可经配置以从CPU6经由图形驱动程序28接收一或多个图形处理命令,及执行图形处理命令以产生可显示图形图像。如上文所论述,图形处理管线30包含一起操作以执行图形处理命令的多个级。然而,应注意此些级不一定实施于单独的硬件块中。举例来说,几何形状处理级34及像素处理管线38的部分可经实施为统一着色器单元的部分。再次,图形管线30可经配置以在多个不同呈现模式(包含分格呈现模式及直接呈现模式)中的一者中执行。
[0052]命令引擎32可接收图形处理命令,且配置图形处理管线30内的剩余处理级以执行用于进行图形处理命令的各种操作。举例来说,图形处理命令可包含绘制命令及图形状态命令。绘制命令可包含顶点规范命令,其指定用于一或多个顶点的位置坐标及(在一些情况下)与顶点中的每一者相关联的其它属性值,例如色彩坐标、法向量、纹理坐标及雾坐标。图形状态命令可包含基元类型命令、变换命令、照明命令等。基元类型命令可指定待呈现的基元的类型及/或如何组合顶点以形成基元。变换命令可指定在顶点上执行的变换类型。照明命令可指定图形场景内的不同光的类型、方向及/或放置。命令引擎32可致使几何形状处理级34执行关于与一或多个接收的命令相关联的顶点及/或基元的几何形状处理。
[0053]几何形状处理级34可对一或多个顶点执行逐顶点操作及/或基元设定操作以便产生用于光栅化级36的基元数据。每一顶点可与一组属性(例如,位置坐标、色彩值、法向量及纹理坐标)相关联。几何形状处理级34根据各种逐顶点操作修改这些属性中的一或多者。举例来说,几何形状处理级34可对顶点位置坐标执行一或多个变换以产生经修改的顶点位置坐标。举例来说,几何形状处理级34可对顶点位置坐标应用模型化变换、检视变换、投影变换、模型视图变换、模型视图投影变换、视口变换及深度范围缩放变换以产生经修改的顶点位置坐标。在一些情况下,顶点位置坐标可为模型空间坐标,且经修改的顶点位置坐标可为屏幕空间坐标。可在应用模型化、检视、投影及视口变换之后获得屏幕空间坐标。在一些情况下,几何形状处理级34还可对顶点执行逐顶点照明操作以产生用于顶点的经修改的色彩坐标。几何形状处理级34还可执行其它操作,包含例如正态操作、正态规格化操作、视域裁减、同质划分及/或背面剔除操作。
[0054]几何形状处理级34可产生包含定义待光栅化的基元的一组一或多个经修改的顶点的基元数据,以及指定如何组合顶点以形成基元的数据。举例来说,经修改的顶点中的每一者可包含与顶点相关联的经修改的顶点位置坐标及经处理的顶点属性值。基元数据可共同对应于待由图形处理管线30的其它级光栅化的基元。概念上,每一顶点可对应于基元的两个边缘相交的基元的角。几何形状处理级34可将基元数据提供到光栅化级36以用于进一步处理。
[0055]在一些实例中,几何形状处理级34的全部或部分可由执行于一或多个着色器单元上的一或多个着色器程序实施。举例来说,在此些实例中,几何形状处理级34可由顶点着色器、几何形状着色器或其任何组合实施。在其它实例中,几何形状处理级34可经实施为固定功能硬件处理管线或经实施为固定功能硬件及执行于一或多个着色器单元上的一或多个着色器程序的组合。
[0056]光栅化级36经配置以从几何形状处理级34接收表示待光栅化的基元的基元数据,及光栅化基元以产生对应于经光栅化的基元的多个源像素。在一些实例中,光栅化级36可确定由待光栅化的基元覆盖哪些屏幕像素位置,及产生用于经确定由基元覆盖的每一屏幕像素位置的源像素。光栅化级36可通过使用所属领域的技术人员已知的技术(例如,边缘行走技术、评估边缘等式等)确定由基元覆盖哪些屏幕像素位置。光栅化级36可将所得源像素提供到像素处理管线38以用于进一步处理。
[0057]由光栅化级36产生的源像素可对应于屏幕像素位置(例如,目的地像素)且与一或多个色彩属性相关联。经产生用于特定经光栅化的基元的所有源像素据说可与经光栅化的基元相关联。由光栅化级36确定的待由基元覆盖的像素概念上可包含表示基元的顶点的像素、表示基元的边缘的像素及表示基元的内部的像素。
[0058]像素处理管线38经配置以接收与经光栅化的基元相关联的源像素,及对源像素执行一或多个逐像素操作。可由像素处理管线38执行的逐像素操作包含例如阿尔法测试、纹理映射、色彩计算、像素着色、逐像素照明、雾处理、混合、像素所有权文本、源阿尔法测试、模板测试、深度测试、剪刀测试及/或点画操作。另外,像素处理管线38可执行一或多个像素着色器程序以执行一或多个逐像素操作。由像素处理管线38产生的所得数据在本文中可被称作目的地像素数据,且存储于帧缓冲器15中。目的地像素数据可与帧缓冲器15中的与经处理的源像素具有相同显示位置的目的地像素相关联。目的地像素数据可包含例如色彩值、目的地阿尔法值、深度值等数据。
[0059]帧缓冲器15存储用于GPU12的目的地像素。每一目的地像素可与独特屏幕像素位置相关联。在一些实例中,帧缓冲器15可存储用于每一目的地像素的色彩分量及目的地阿尔法值。举例来说,帧缓冲器15可存储用于每一像素的红绿蓝阿尔法(RGBA)分量,其中“RGB”分量对应于色彩值,且“A”分量对应于目的地阿尔法值。尽管帧缓冲器15及系统存储器10经说明为单独存储器单元,但在其它实例中,帧缓冲器15可为系统存储器10的部分。
[0060]如上文所论述,图形处理管线30可根据包含分格呈现模式及直接呈现模式的特定呈现模式呈现图形图像。当根据分格呈现模式呈现时,图形处理管线30可接收一批基元(即,一或多个基元)以呈现到所得图形图像中。为了呈现这批基元,所得图形图像可细分成多个较小部分(例如,像素平铺块或分格),且图形处理管线30可呈现图形图像的每一部分作为单独呈现通道。
[0061]图3为说明用于分格呈现模式的经划分成分格的帧的概念图。帧40可划分成多个分格,例如分格42。通常,图形硬件将含有具有足以保持至少一个数据分格的大小的快速存储器(例如,图2的图形存储器14)。作为帧的特定部分的单个呈现通道的部分,图形处理管线30可呈现关于帧的目的地像素的特定子集(例如,目的地像素的特定分格)的这批基元的全部或子集。在执行关于第一分格的第一呈现通道之后,图形处理管线30可执行关于第二分格的第二呈现通道,等等。图形处理管线30可递增地遍历分格直到已呈现与每一分格相关联的基元为止。
[0062]图4为更详细展示用于分格呈现模式中的分格的概念图。分格44、46、48及50经呈现/光栅化以含有多个像素52。一或多个图形基元可在每一分格中可见。举例来说,三角形A(Tri A)的部分在分格44及分格48两者中可见。三角形B(Tri B)的部分在分格44、分格46、分格48及分格50中的每一者中可见。三角形C(Tri C)仅在分格46中可见。在呈现通道期间,在分格呈现模式的一个实例中,场景被拆分成分格,且呈现分格中的所有三角形(这有时被称作软件分格)。在分格呈现模式的另一实例中,在呈现之前采取额外步骤以确定分格中的哪些三角形在最终呈现的场景中实际上可见(这有时被称作硬件分格)。举例来说,一些三角形可在一或多个其它三角形之后,且在最终呈现的场景中将不可见。以此方式,对于所述分格而言,不需要呈现不可见的三角形。
[0063]在执行特定呈现通道时,与所述特定呈现通道相关联的分格的像素数据可存储于图形存储器14 (有时被称作分格缓冲器)中。在执行呈现通道之后,图形处理管线30可将图形存储器14的内容传送到帧缓冲器15。在一些状况下,图形处理管线30可用存储于图形存储器14中的数据重写帧缓冲器15中的数据的部分。在其它状况下,图形处理管线30可将帧缓冲器15中的数据与存储于图形存储器14中的数据合成或组合。在将图形存储器14的内容传送到帧缓冲器15之后,图形处理管线30可将图形存储器14初始化为默认值,且开始关于不同分格的后续呈现通道。
[0064]图5为展示用于使用分格呈现模式(其使用“软件”分格)呈现场景的实例命令结构的概念图。I级间接缓冲器(IB1)60含有用于指导GPU12执行图形存储器管线30的各种步骤的一系列执行命令。IB160中的每一执行命令本质上为到含有用于呈现管线的各种方面的命令的一或多个2级间接缓冲器(IB2)中的指针。以此方式,建立用于执行图形呈现管线的两个或两个以上层级结构。GPU12可顺序地逐句通过IB160中的每一执行命令,其中IB160中的每一执行指向存储于IB2中的特定命令堆叠。IBl及IB2可为存储器(其为机载GPU12)或可为GPU12的外部存储器,例如系统存储器10。
[0065]IB160中的前置项执行命令指向含有可由GPU12执行的前置项命令的前置项IB262。举例来说,前置项IB262可包含初始化GPU12的静态状态及设定GPU12的初始呈现状态的命令。GPU的静态状态包含不会基于特定应用程序改变的设定。另一方面,呈现状态包含可基于特定应用程序(例如,OpenGL应用程序对Direct X应用程序)改变的GPU设定。在前置项IB2中的命令完成之后,控制返回到IB160以执行下一执行命令。
[0066]IB160中的下一执行命令配置所使用的呈现模式的呈现通道。再次,在图5的实例中,呈现模式为使用软件分格的分格呈现模式。接下来,IB160中的载入分格执行命令指向载入IB266中的命令。对于软件分格,将用于特定分格的数据载入到GMEM14(载入2GMEM)中。控制接着传回到IB160且呈现分格指令命令指向呈现IB2中的命令。呈现IB268由一系列状态命令及用于在载入分格中绘制三角形的绘制命令组成。每一绘制命令指示GPU12根据由命令及/或GPU硬件建立的图形处理管线30 (例如,包含几何形状处理状态34、光栅化状态36及/或像素处理管线38)绘制三角形。如呈现IB268中所示,绘制命令中的每一者指示没有可见性流用以确定特定三角形在分格中是否实际上可见。可见性流产生于使用“硬件”分格的分格呈现模式中,且将参看图6来更详细论述。呈现IB268中的状态命令影响由GPU12执行的图形处理管线的行为。举例来说,状态命令可改变色彩、多边形模式(例如,点而非实线或线)、混合(开/关)、深度测试(开/关)、纹理化(开/关)、剔除、裁剪及其它逻辑操作。如呈现IB268中所示,可在逐三角形(或逐基元)的基础上发布状态命令。即,命令“状态Tri A”可在绘制三角形A时影响GPU12的行为,而“状态Tri BI”及“状态Tri B2”命令可在绘制三角形B时影响GPU12的行为。“状态Tri BI”及“状态Tri B2”命令仅指示可针对每一三角形执行多个状态命令。
[0067]在所有命令已在呈现IB268中执行之后(例如,在已绘制所有三角形之后),控制返回到IB160。存储分格执行命令可包含到存储IB270的指针,存储IB270包含将所呈现的分格从GMEM14存储到存储器(例如,帧缓冲器15)中的命令。接着针对一或多个帧的每一分格72重复呈现通道(例如,配置呈现通道以存储分格的执行命令,如IB160中所示)。
[0068]图6为展示用于使用分格呈现模式(其使用“硬件”分格)呈现场景的实例命令结构的概念图。IB161中的执行命令类似于图6的IB160的执行命令,关于“分格”通道的命令除外。“分格”通道用以产生可见性流,其指示分格中的特定三角形在最终呈现的场景中是否实际上可见。举例来说,一些三角形可在场景中的另一三角形之后,且在一些情形下将不可见(例如,当前面的三角形不透明时或当不使用混合时)。在呈现分格72之前,IB161可包含指向分格IB274中的命令的分格通道执行命令。分格IB274包含致使GPU12执行图形管线的简化版本(例如,呈现IB269的简化版本)的命令,但添加了基于深度测试(Z测试)更新分格中的每一三角形的可见性流的步骤,所述深度测试确定三角形在最终呈现的场景中是否可见。
[0069]分格通道的目标在于识别与当前分格相交的三角形。因而,仅需要确定三角形的顶点的位置以识别三角形是否与特定分格相交。分格通道利用简化顶点着色器,其仅包含影响顶点的位置的指令。举例来说,色彩指令、纹理坐标及不影响三角形顶点的位置的其它指令可从用于分格通道的简化顶点着色器移除。分格通道还使用粗光栅化而非细光栅化来确定每一三角形的近似深度。粗光栅化以比细光栅化低的精度计算深度值(例如,使用较低数目个位)。仅近似深度值为必要的以确定三角形在分格中是否可见。像素着色器不用于分格通道中。
[0070]分格通道接着利用对粗深度值的深度测试来相对于分格中其它三角形确定三角形在分格中是否可见。基于此深度测试,更新可见性流。可见性流可为指示所呈现的分格中的特定三角形是否可见的一串位(例如,I指示三角形可见,O指示三角形不可见)。
[0071]呈现IB269中的命令类似于图5中的呈现IB68的命令,但用于可见性流。呈现IB269中的绘制命令(例如,绘制Tri A、绘制Tri B、绘制Tri C等)可使用由分格通道产生的可见性流来确定是否有必要绘制特定三角形。举例来说,对于由可见性流指示为可不见的三角形可跳过绘制。
[0072]与逐分格地呈现帧相反,如在分格呈现模式中,直接呈现在一个通道中经由图形管线呈现整个帧。直接呈现当执行于具有有限量的图形存储器的基于分格的架构中时通常利用较慢的系统存储器。
[0073]图7为展示用于使用直接呈现模式呈现场景的实例命令结构的概念图。用于直接呈现模式的命令类似于用于图5中的软件分格的命令,但替代在逐分格的基础上呈现,在一个通道中呈现整个帧。举例来说,IB180中的执行命令类似于IB160中的执行命令,但替代载入、呈现及存储分格,IB180中的执行命令指向载入、呈现及存储帧的相应IB2中的命令。更特定来说,IB180中的载入帧执行命令指向载入IB286,载入IB286包含用以将帧的数据载入到系统存储器(载入2系统存储器)的命令。IB180中的命令可包含前置项、前置项/恢复、配置呈现通道、载入帧、呈现帧及存储帧。IB180中的呈现帧执行命令指向呈现IB288,呈现IB288含有致使GPU12绘制帧中的基元的指令。如同软件分格,直接呈现模式中的呈现不利用硬件分格通道或可见性流。呈现IB288中的任何绘制命令(例如,绘制TriA、绘制Tri B、绘制Tri C)将利用系统存储器来存储所呈现的三角形。存储帧执行命令指向存储IB290,存储IB290含有用以将所呈现的帧从系统存储器存储到另一存储器(例如,帧缓冲器15)的指令(从系统存储器存储)。
[0074]IB180中的前置项执行命令指向前置项IB282,前置项IB282含有用于建立GPU12的静态状态及初始呈现状态的指令。这些命令起的作用类似于图6的前置项IB262中的命令,但设定用于直接呈现模式而非分格呈现模式的呈现状态。
[0075]根据本发明的技术,在应用程序(例如,图2的软件应用程序24)开始呈现场景之前,执行于一或多个处理器(例如,CPU6)上的图形驱动程序(例如,图形驱动程序7)基于关于所要呈现通道的试探数据确定呈现模式(例如,分格呈现与直接呈现之间的确定)。在一些技术中,可从先前呈现通道聚集关于当前呈现通道的试探数据。然而,此技术可不总是为确定呈现模式的优选方式,因为应用程序可在呈现新的场景之前切换呈现技术。因而,此技术可导致呈现效率不高,直到已累计足够的新数据以切换到恰当呈现模式为止。
[0076]另外,如果当前场景不同于先前场景,那么关于过去呈现的试探数据可不总是提供用于当前场景的最优选呈现模式。举例来说,将最优选地使用快速改变呈现模式的应用程序可导致使用此试探分析的许多错误预测。理想地,图形驱动程序可确定给定呈现目标的呈现载入,且立即作出呈现模式确定。本发明提出了用于更优选确定呈现模式的技术及用于在呈现模式之间切换的技术。
[0077]以下技术适用于使用任何图形应用程序编程接口(API)的图形处理系统,且特定来说,适用于利用分格呈现的图形API。此些API的实例包含Microsoft的DirectX9 (DX9)、DXlO及DXll,以及开源图形API,例如OpenGL及OpenGL ES。
[0078]图8为说明根据本发明的一个实例的呈现命令修补的概念图。首先,图形处理系统(例如,图1的计算装置2)最初假定特定应用程序在分格模式中更优选地呈现到当前呈现目标(例如,一或多个帧)。特定呈现模式(例如,分格或直接呈现)的选择可由图形驱动程序7来处理。当启用分格时,图形驱动程序7将给定呈现目标的所有载入、存储、呈现及块传送(BLT)命令分批直到需要将其清空为止。在此上下文中,清空意谓着将由驱动程序分批的任何呈现命令发射到硬件(例如,GPU12)。用于载入、存储、呈现及BLT的命令可存储于单独缓冲器(例如,单独IB2缓冲器)中。举例来说,呈现命令可存储于分格呈现模式IB268中。
[0079]分格呈现模式中的呈现命令使用特殊地址,其被写入到某些寄存器以使得可存取快速图形存储器(GMEM)。因为图形驱动程序7最初假定针对所有呈现启用分格,所以能选择GMEM与系统存储器的每一寄存器将使用GMEM地址。图8中的分格呈现模式IB268展示与绘制三角形(绘制Tri)相关联的一系列命令,其中命令1、4及5利用GMEM地址。
[0080]当将清空呈现时,图形驱动程序存取将要执行的所有呈现命令。根据本发明的技术,图形驱动程序7可经配置以分析呈现命令,且可考虑一或多个呈现特性(即,关于呈现通道的试探数据)。此些呈现特性可包含呈现目标的大小及类型、是否启用深度测试的指示、所使用的着色器的复杂性、所绘制基元的数目、纹理读取的数目、所读取的任何纹理的大小及/或使用中的所有表面的微平铺模式。
[0081]举例来说,基于呈现目标的大小,GPU驱动程序7可确定分格的开销(例如,对GMEM执行载入/存储循环的时间加上分格通道)是否将被分格的正效应抵消。举例来说,小呈现目标(例如,16x16)可在直接呈现模式中较快地执行,甚至在保存到系统存储器时。
[0082]作为另一实例,不利用深度测试的图形管线可不利用分格呈现模式的优点。通常,当不使用分格时,必须应用深度测试以读取现有深度值,执行测试及接着将新深度值写回到系统存储器中的缓冲器中。在分格的情况下,在GMEM中进行深度测试过程,这使其“不受约束”(即,极快,具有最小开销时间)。因而,当针对特定图形管线不启用深度测试时,分格呈现模式将不提供关于深度测试的任何存储器带宽节省。因而,当停用或不使用深度测试时,GPU驱动程序7可确定直接呈现模式为优选的。
[0083]作为另一实例,分格呈现模式在三角形之间存在深度复杂性(例如,在各种深度处的基元)及重叠时提供最大益处。当所绘制的基元的数目小时,来自分格呈现模式的益处也可为小的。因而,GPU驱动程序7可确定在将绘制小数目基元时直接呈现模式为优选的。同样,GPU驱动程序7可确定在将绘制大数目个基元时分格呈现模式为优选的。
[0084]作为另一实例,当执行纹理时,外部存储及到及自系统存储器的读取对系统存储器带宽具有负面影响。因而,当纹理化时,分格呈现模式提供对存储器的较快存取(即,用较快的GMEM执行更多存储及读取)。绘制的场景中的纹理操作的数目及频率可使来自分格呈现模式的增益为零。即,较小纹理操作可建议分格呈现模式将提供较小益处,且应替代地使用直接呈现模式。
[0085]呈现命令的分析的结果可被计算为“计分”,所述计分可考虑到上文所论述的各种特性中的一或多者,例如在加权或非加权基础上。如果此计分低于给定阈值,那么使用直接呈现模式。如果此计分高于给定阈值,那么使用分格呈现模式。因而,此技术提供当前呈现目标的及时(JIT)分析以确定当前呈现模式。不需要过去呈现通道的试探分析。然而,可替代地使用过去呈现通道的试探分析,或其可与当前呈现目标的分析组合地使用。举例来说,当前呈现模式的JIT分析可用作从过去呈现的累计统计的试探分析确定的呈现模式无效的指示符。
[0086]根据本发明的另一实例,呈现模式的确定(例如,分格呈现模式与直接呈现模式之间的确定)可使用利用“硬件”分格的图形处理系统中过度绘制跟踪器来进行。
[0087]图9为说明根据本发明的一个实例的过度绘制跟踪的概念图。相对于直接呈现模式,当存在高过度绘制量时,分格呈现模式的效率最高。过度绘制在存在重叠的若干图形基元时出现。绘制所有此些基元可效率不高,因为一些基元的部分可在最终的场景中不可见(例如,其在另一不透明基元之后)。“硬件”分格可用以减少帧的某些平铺块中的过度绘制(例如,通过产生如上文所描述的可见性流)。
[0088]在利用分格的图形架构中,通常存在2个阶段:1)分格阶段,其基于其变换的顶点位置将基元分类成屏幕对准的分格;及2)呈现阶段,其中这些分格中的每一者(即,分格中的基元)被呈现。除了分类步骤之外,一些图形处理架构还逐基元地产生可见性流及与区相关联的粗粒度深度⑵值(例如,在所谓的“硬件”分格中)。然而,应注意此“硬件”分格可不产生关于分格中的基元的分布及相关联的过度绘制的直接信息。本发明提出了在与粗粒度Z光栅化器的粒度相同的粒度处添加过度绘制跟踪器(S卩,分格IB2 94中的命令)。举例来说,命令(例如,“计算过度绘制”及“更新过度绘制跟踪器”)可添加到分格IB2 94,其指示GPU12计算每一分格的过度绘制的量,且基于计算的过度绘制的量更新过度绘制跟
[0089]此“过度绘制”可在每一区为整数值(其中区可为像素、分格的部分、分格或多个分格),其表示所述区中光栅化的基元之间的重叠,及因此使用分格呈现的益处。图形驱动程序7可存取过度绘制数目,且可使用过度绘制数目进行呈现模式确定。此技术接着可扩展到将此值合计到分格中的所有区,及进一步合计到场景中的所有分格。这允许软件应用程序及/或驱动程序(例如,图形驱动程序7)作出分格呈现是否将有益的立即确定(当与其它试探法相比较时)。另外,这些技术还可用作调试工具以显现复杂呈现情形中的活动的区。
[0090]图10说明计算四个16x16分格中的过度绘制的一个实例。在此实例中,首先针对每一像素计算“过度绘制”。过度绘制被定义为触摸像素的基元的数目,其大于I。分格95及99中的所有像素将具有重叠计分O,而例如分格101的像素96将具有重叠计分I,因为两个三角形在所述像素中。“过度绘制”数目可定义为分格的重叠计分的总和除以分格中的像素的总数目(例如,过度绘制=逐像素重叠的总和/像素的数目)。在图10中所示的实例中,分格101将具有过度绘制数目30/16,而分格95及99两者将具有过度绘制计分O。高于某一阈值的过度绘制数目可指示分格呈现模式应用于与过度绘制数目相关联的区,而低于某一阈值的过度绘制数目可指示直接呈现模式应用于与过度绘制数目相关联的区。
[0091]转而参看图8,基于计分(基于呈现命令的分析及/或过度绘制跟踪器),图形驱动程序7确定最优模式。与确定更优选呈现模式一道,图形驱动程序7还可经配置以跟踪利用GMEM地址的所有分格呈现命令(例如,图8的实例中的命令1、4及5)。图形驱动程序7可存储用于这些命令中的每一者的对应系统存储器地址(例如,在系统存储器10中),使得可更改使用GMEM地址的分格呈现命令以使用系统存储器地址。如果确定直接呈现为更优选模式,那么图形驱动程序7可修补分格呈现模式IB2 68以用系统存储器地址替换GMEM地址,因此产生直接呈现模式IB2 88。以此方式,可在不再生用于直接呈现模式IB2的整个命令结构的情况下产生用于直接呈现的呈现命令。最终,在清空时,图形驱动程序7将命令添加到IBl (例如,图7的IB180)以执行BLT IB2及呈现IB2 (在此状况下,呈现IB2更改为使用系统存储器地址),且用信号通知GPU7开始执行IBl。
[0092]在本发明的另一实例中,用于呈现的每一寄存器可实施于硬件中。图11为说明根据本发明的此实例的呈现模式选择的概念图。全局控制寄存器102可用以控制寄存器的哪一集合用于给定呈现模式(例如,分格呈现模式寄存器104或直接呈现模式寄存器106)。分格呈现模式寄存器104可处理目的地表面信息(即,分格)、用于GMEM的地址存储器及可见性流使用(用于基于硬件的分格呈现)。直接呈现模式寄存器106将包含到系统存储器的地址。全局控制寄存器102基于呈现模式的JIT分析控制以上寄存器中的哪一版本用以填充例如呈现IB2 118中的命令,如上文所描述。图形驱动程序7可控制全局控制寄存器102以选择分格呈现模式寄存器104或直接呈现模式寄存器106。此技术使用硬件寄存器,而不是用软件修补IB2,如上文所描述。全局控制寄存器102可在IBl中。
[0093]在本发明的另一实例中,提出了用于修补命令缓冲器的技术。图12为说明根据本发明的此实例的呈现命令修补的概念图。此实例的所提出的技术可用于在从分格呈现模式切换到直接呈现模式时修补命令缓冲器。然而,可在需要修补命令缓冲器的任何情形中利用以下技术。举例来说,可修补命令以支持图形存储器的虚拟化,改变较低MIP中的资源细节层次(LOD)的MIP层次,或在执行命令缓冲器之前运行正确性扫描器。修补命令缓冲器以从分格呈现模式切换到直接呈现模式所需要的CPU循环在某些情形下成本可能较高。此实例旨在减少CPU开销。
[0094]一般来说,此技术提供用于图形驱动程序7使用GPU12 (而非GPU驱动程序7)修补命令缓冲器从而最小化CPU开销的方式。在图8的实例中,如果图形驱动程序7将在分格及直接呈现之间切换,那么图形驱动程序7在将执行命令添加到IBl之前跟踪及修补所有的IB2命令。此实例提出了替代建置修补列表(例如,图8的系统存储器10中所示的修补列表),图形驱动程序7建置单独修补IB2 98,其含有更改另一 IB2中的命令(例如,任何一般操作命令)的写入命令。举例来说,写入命令的目的地可为分格呈现模式IB2 68中的位置,其在由图形驱动程序7选择直接呈现模式的状况下需要更改以使用系统存储器地址。当图形驱动程序7准备好清空命令时,其能够选择执行“修补IB2”中的命令以进入直接呈现模式,或通过修补IB2及在分格模式中继续。图形驱动程序7可通过将执行命令(修补呈现IB2)添加到IBl 80中的执行命令而使得修补IB2 98被执行。以此方式,GPU12将在执行IB2 68中的呈现命令之前执行IB2 98中的修补命令。因而,GPU12自身对呈现IB268进行修补以实现呈现模式切换,而非使CPU6进行修补。[0095]图13为说明根据本发明的一个实例的方法的流程图。图13的方法可由CPU6、GPU12及/或驻留于计算装置2上的任何其它硬件、固件、软件元件或其组合执行。CPU6可经配置以产生用于呈现帧的呈现命令,其中呈现命令用于分格呈现模式(1302)。CPU6可经进一步配置以跟踪使用图形存储器地址的呈现命令(1304)。
[0096]CPU6接着可基于呈现特性确定用于帧的多个呈现模式中的一者,其中多个呈现模式包含分格呈现模式及直接呈现模式(1306)。呈现特性包含呈现目标的大小及类型、深度测试状态、着色器的复杂性、所绘制的基元的数目、纹理读取的数目、纹理大小及微平铺模式中的至少一者。确定多个呈现模式中的一者可包含基于当前帧的呈现特性确定多个呈现模式中的一者。在另一实例中,确定多个呈现模式中的一者可包含基于当前帧及先前呈现的帧的呈现特性确定多个呈现模式中的一者。
[0097]CPU6接着可在确定的呈现模式为直接呈现模式的状况下更改使用图形存储器地址的呈现命令以使用系统存储器地址(1308)。在确定的呈现模式为分格呈现模式的状况下,CPU6将不更改呈现命令。
[0098]CPU6可经进一步配置以将执行命令存储于第一缓冲器中,及将呈现命令存储于第二缓冲器中。执行命令指向呈现命令。更改呈现命令(1308)可包含修补第二缓冲器以用系统存储器地址替换图形存储器地址。CPU6可进一步将指向第二缓冲器中的呈现命令的执行命令添加到第一缓冲器。GPU12接着可执行第一缓冲器中的执行命令。
[0099]在另一实例中,CPU6可经配置以将分格模式特定信息存储于第一寄存器中,将直接呈现模式特定信息存储于第二寄存器中,及利用全局寄存器基于确定的呈现模式在第一寄存器与第二寄存器之间选择。分格模式特定信息包含处理目的地表面信息的寄存器地址、图形存储器地址及可见性流使用中的至少一者,且其中直接呈现模式特定信息包含系统存储器地址。
[0100]图14为说明根据本发明的一个实例的方法的流程图。图14的方法可由CPU6、GPU12及/或驻留于计算装置2上的任何其它硬件、固件、软件元件或其组合执行。CPU6可经配置以对场景的基元执行分格操作,其中将基元划分成分格(1402),计算表示场景的区中的基元的过度绘制量的过度绘制数目(1404),及基于计算的过度绘制数目确定呈现模式(1406)。如果过度绘制数目大于某一阈值,那么分格呈现模式可经确定为呈现模式。如果过度绘制数目小于某一阈值,那么直接呈现模式可经确定为呈现模式。GPU12接着可根据确定的呈现模式呈现场景(1408)。
[0101]可针对分格的区、针对多个分格及/或针对整个场景计算过度绘制数目。计算分格的过度绘制数目(1404)的一个实例技术可包含:计算分格中的每一像素的重叠值;对分格中的每一像素的每一经计算的重叠值求和以产生总重叠值;及将总的重叠值除以分格中的像素的数目以产生过度绘制数目。重叠值被定义为触摸像素的基元的数目,其大于一。
[0102]图15为说明根据本发明的一个实例的方法的流程图。图15的方法可由CPU6、GPU12及/或驻留于计算装置2上的任何其它硬件、固件、软件元件或其组合执行。CPU6可经配置以将用于执行图形操作的操作命令存储于第一缓冲器中(1502),及将写入命令存储于第二缓冲器中,其中写入命令更改第一缓冲器中的操作命令以产生更改的操作命令(1504)。操作命令及写入命令可由图形处理器执行。CPU6可经进一步配置以致使第二缓冲器中的写入命令被执行(1506),及在致使第二缓冲器中的写入命令被执行之后致使第一缓冲器中的更改的操作命令被执行(1508)。在一个实例中,操作命令包含用于分格呈现模式的呈现命令,且写入命令将用于分格呈现模式的呈现命令更改为用于直接呈现模式的呈现命令。
[0103]图16为说明利用图15中所示的通用技术的实例方法的流程图。图16的方法可由CPU6、GPU12及/或驻留于计算装置2上的任何其它硬件、固件或软件元件执行。CPU6可经配置以产生用于呈现帧的操作命令,其中操作命令是用于分格呈现模式(1602),及经配置以跟踪使用图形存储器地址的操作命令(1604)。CPU6可经进一步配置以产生写入命令,其中写入命令将使用图形存储器地址的操作命令更改为使用系统存储器地址的操作命令(1606)。CPU6将操作命令存储于第一缓冲器中(1608)及将写入命令存储于第二缓冲器中(1610)。
[0104]CPU可经进一步配置以基于呈现特性确定用于帧的多个呈现模式中的一者,其中多个呈现模式包含分格呈现模式及直接呈现模式(1612)。呈现特性可包含呈现目标的大小及类型、深度测试状态、着色器的复杂性、所绘制的基元的数目、纹理读取的数目、纹理大小及微平铺模式中的至少一者。确定多个呈现模式中的一者可包含基于当前帧的呈现特性确定多个呈现模式中的一者。在另一实例中,确定多个呈现模式中的一者可包含基于当前帧及先前呈现的帧的呈现特性确定多个呈现模式中的一者。
[0105]CPU6可经进一步配置以在确定的呈现模式为直接呈现模式的状况下致使第二缓冲器中的写入命令被执行(例如,由GPU12) (1614)。
[0106]在一或多个实例中,上文所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件实施,那么功能可作为一或多个指令或代码被存储于包括非暂时性计算机可读媒体的制品上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可以是可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中所述的技术的指令、代码及/或数据结构的任何可用媒体。举例说明且并非限制,此些计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置,或其它磁性存储装置、快闪存储器,或可用于以指令或数据结构的形式进行或存储所要的程序代码且可被计算机存取的任何其它媒体。如本文中所使用,磁盘及光盘包括紧密光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软磁盘及蓝光光盘,其中磁盘通常磁性地复制数据,而光盘使用激光光学地复制数据。上文的组合也应包含在计算机可读媒体的范围内。
[0107]代码可由一或多个处理器(例如,一或多个DSP)、通用微处理器、ASIC、FPGA或其它等效集成或离散逻辑电路来执行。另外,在一些方面中,可在专用硬件及/或软件模块内提供本文中描述的功能性。而且,可将所述技术完全实施于一或多个电路或逻辑元件中。
[0108]本发明的技术可实施在各种各样的装置或设备中,包含无线手持机、集成电路(IC)或IC的集合(例如,芯片集)。本发明中描述了各种组件、模块或单元以强调经配置以执行所揭示技术的装置的功能方面,但不一定要求通过不同硬件单元来实现。而是,如上所述,各种单元可在编解码器硬件单元中组合或由互操作硬件单元(包含如上所述的一或多个处理器)的集合结合合适软件和/或固件来提供。
[0109]已描述了各种实例。这些及其它实例属于所附权利要求书的范围内。
【权利要求】
1.一种图形处理方法,其包括: 对场景的基元执行分格操作; 计算表示所述场景的区中的基元的过度绘制量的过度绘制数目;及 基于所述计算的过度绘制数目选择呈现模式。
2.根据权利要求1所述的方法,其进一步包括: 根据所述确定的呈现模式呈现所述场景。
3.根据权利要求1所述的方法,其进一步包括在所述过度绘制数目大于某一阈值的情况下选择分格呈现模式。
4.根据权利要求1所述的方法,其进一步包括在所述过度绘制数目小于某一阈值的情况下选择直接呈现模式。
5.根据权利要求1所述的方法,其进一步包括计算分格的区的所述过度绘制数目。
6.根据权利要求1所述的方法,其进一步包括计算在多个分格之上的所述过度绘制数目。
7.根据权利要求1所述的方法,其进一步包括计算所述整个场景的所述过度绘制数目。
8.根据权利要求1所述的方法,其中计算表示过度绘制量的所述过度绘制数目包括: 计算分格中的每一像素的重叠值; 对所述分格中的每一像素的每一经计算的重叠值求和以产生总重叠值;及 将所述总重叠值除以所述分格中的像素的数目以产生所述过度绘制数目。
9.根据权利要求8所述的方法,其中所述重叠值被定义为触摸像素的基元的数目,其大于一。
10.根据权利要求9所述的方法,其中所述基元为三角形。
11.一种经配置用于图形处理的设备,其包括: 用于对场景的基元执行分格操作的装置; 用于计算表示所述场景的区中的基元的过度绘制量的过度绘制数目的装置;及 用于基于所述计算的过度绘制数目选择呈现模式的装置。
12.根据权利要求11所述的设备,其进一步包括: 用于根据所述确定的呈现模式呈现所述场景的装置。
13.根据权利要求11所述的设备,其进一步包括: 用于在所述过度绘制数目大于某一阈值的情况下选择分格呈现模式的装置。
14.根据权利要求11所述的设备,其进一步包括: 用于在所述过度绘制数目小于某一阈值的情况下选择直接呈现模式的装置。
15.根据权利要求11所述的设备,其进一步包括: 用于计算分格的区的所述过度绘制数目的装置。
16.根据权利要求11所述的设备,其进一步包括: 用于计算在多个分格之上的所述过度绘制数目的装置。
17.根据权利要求11所述的设备,其进一步包括: 用于计算所述整个场景的所述过度绘制数目的装置。
18.根据权利要求11所述的设备,其中所述用于计算表示过度绘制量的所述过度绘制数目的装置包括: 用于计算分格中的每一像素的重叠值的装置; 用于对所述分格中的每一像素的每一经计算的重叠值求和以产生总重叠值的装置;及 用于将所述总重叠值除以所述分格中的像素的数目以产生所述过度绘制数目的装置。
19.根据权利要求18所述的设备,其中所述重叠值被定义为触摸像素的基元的数目,其大于一。
20.根据权利要求19所述的设备,其中所述基元为三角形。
21.—种经配置用于图形处理的设备,其包括: 图形处理器,其经配置以: 对场景的基元执行分格操作;及 计算表示所述场景的区中的基元的过度绘制量的过度绘制数目;及 处理器,其经配置以基于所述计算的过度绘制数目选择呈现模式。
22.根据权利要求21所述的设备,其中所述图形处理器经进一步配置以: 根据所述确定的呈现模式呈现所述场景。
23.根据权利要求21所述的设备,其中所述图形处理器经进一步配置以: 在所述过度绘制数目大于某一阈值的情况下选择分格呈现模式。
24.根据权利要求21所述的设备,其中所述图形处理器经进一步配置以: 在所述过度绘制数目小于某一阈值的情况下选择直接呈现模式。
25.根据权利要求21所述的设备,其中所述图形处理器经进一步配置以: 计算分格的区的所述过度绘制数目。
26.根据权利要求21所述的设备,其中所述图形处理器经进一步配置以: 计算在多个分格之上的所述过度绘制数目。
27.根据权利要求21所述的设备,其中所述图形处理器经进一步配置以: 计算所述整个场景的所述过度绘制数目。
28.根据权利要求21所述的设备,其中所述图形处理器经进一步配置以: 计算分格中的每一像素的重叠值; 对所述分格中的每一像素的每一经计算的重叠值求和以产生总重叠值;及 将所述总重叠值除以所述分格中的像素的数目以产生所述过度绘制数目。
29.根据权利要求28所述的设备,其中所述重叠值被定义为触摸像素的基元的数目,其大于一。
30.根据权利要求29所述的设备,其中所述基元为三角形。
31.根据权利要求21所述的设备,其中所述图形处理器在移动装置中。
【文档编号】G06T15/00GK103959338SQ201280058364
【公开日】2014年7月30日 申请日期:2012年11月7日 优先权日:2011年11月30日
【发明者】阿温阿什·赛塔拉迈亚, 克里斯托弗·保罗·弗拉斯卡蒂 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1