CN105144244B - 用于基于瓦片的渲染器的查询处理的方法、设备和计算机可读存储媒体 - Google Patents
用于基于瓦片的渲染器的查询处理的方法、设备和计算机可读存储媒体 Download PDFInfo
- Publication number
- CN105144244B CN105144244B CN201480023170.XA CN201480023170A CN105144244B CN 105144244 B CN105144244 B CN 105144244B CN 201480023170 A CN201480023170 A CN 201480023170A CN 105144244 B CN105144244 B CN 105144244B
- Authority
- CN
- China
- Prior art keywords
- tile
- rendering
- inquiry
- memory
- primitive
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
Abstract
本发明揭示用于执行图形处理系统中的查询的系统、方法和设备。这些系统、方法和设备可经配置以:在所述查询开始时读取运行计数器以确定开始值,其中所述运行计数器对离散图形实体计数;在所述查询结束时读取所述运行计数器以确定结束值;且从所述结束值减去所述开始值以确定结果。
Description
本申请案主张2013年4月29日申请的第61/817,154号美国临时申请案的权益,所述临时申请案的全部内容以引用的方式并入本文中。
技术领域
本发明涉及图形处理系统,且更明确地说涉及用于基于瓦片的渲染器的查询处理。
背景技术
计算装置常常利用图形处理单元(GPU)以加速渲染用于显示的图形数据。此类计算装置可包含(例如)计算机工作站、移动电话(例如所谓的智能电话)、嵌入系统、个人计算机、平板计算机和视频游戏控制台。渲染通常指代将可包含一或多个3D图形对象的三维(3D)图形场景转换为二维(2D)光栅化图像数据的过程。图形场景可渲染为一或多个帧的序列,其中每一帧描绘在时间上特定例项处的图形场景。
GPU可包含3D渲染管线以提供用于3D图形场景的渲染的至少部分硬件加速。场景中的3D图形对象可由图形应用细分为一或多个3D图形基元(例如,点、线、三角形、补丁等),且GPU可将场景的3D图形基元转换为待渲染的帧中的每一者的2D光栅化图像数据。因此,在GPU渲染的特定上下文中,渲染可指代将对应于图形场景中的3D对象的3D图形基元转换为2D光栅化图像数据的过程。
为渲染特定帧的3D图形基元,在主机中央处理单元(CPU)上执行的图形应用可将对应于待渲染的基元的几何形状数据放置到GPU可存取存储器中,将一或多个GPU状态设置命令放置到命令流中,且将一或多个绘制调用放置到命令流中,所述绘制调用致使 GPU基于几何形状数据渲染基元。GPU可以命令被放置于命令流中的次序处理命令流中包含的命令,借此渲染场景。
利用基于瓦片的渲染,查询结果由GPU以每瓦片为基础输出且稍后由CPU累计。查询结果可包含(例如)来自遮挡查询、时戳查询、管线状态查询(管线统计)等的结果。遮挡查询为图形处理中的确定待渲染的对象是否被图形场景(或瓦片)中的其它对象遮挡的查询。因此,来自此查询的查询结果为提供待渲染的对象是否被图形场景(或瓦片)中的其它对象遮挡的指示的数据。
在一些实例中,时戳为识别何时发生特定事件的字符的序列或经编码信息。时戳可提供(例如)事件发生的日期和时间。时戳可准确到一秒的小分数。时戳查询可用于例如通过比较从此查询的开始到停止的时戳来检查图形场景中的特定事件的定时。因此,来自此查询的查询结果可为从此查询的开始到停止的时戳的差。
管线状态查询或管线统计查询可用于检查图形管线的各种统计和状态信息。因此,来自此查询的查询结果可为关于图形管线的各种统计和状态信息的数据。
存储此中间每瓦片结果所需要的存储器的量随着瓦片的数目增加而线性地增加。此外,当请求查询结果时,CPU或其它处理器可需要累计n个存储器位置中的结果以得到最终值,其中“n”为用于渲染场景的瓦片的数目。瓦片的数目的增加还增加CPU进行所述累计所花费的时间量。执行此些查询的更加存储器和时间有效的方式可为有利的。
发明内容
一方面,本申请提供了一种执行图形处理系统中的查询的方法,所述方法包括:发布多个基于瓦片的渲染查询作为至图形处理单元GPU的命令的一部分来描绘帧的所有瓦片,其中所述多个基于瓦片的渲染查询包含第一基于瓦片的渲染查询和第二基于瓦片的渲染查询,其中所述第一基于瓦片的渲染查询与多个基元相关联,且其中所述第二基于瓦片的渲染查询与所述第一基于瓦片的渲染查询所关联的多个基元的基元子集相关联;针对所述多个基于瓦片的渲染查询分配多个累计最终结果存储器位置,其中所述多个累计最终结果存储器位置包括分配给所述第一基于瓦片的渲染查询的第一累计最终结果存储器位置以及分配给所述第二基于瓦片的渲染查询的第二累计最终结果存储器位置,且针对所述第一基于瓦片的渲染查询:在所述第一基于瓦片的渲染查询开始时读取运行计数器以确定第一开始值,其中所述运行计数器对离散图形实体计数;在所述第一基于瓦片的渲染查询结束时读取所述运行计数器以确定第一结束值;从所述第一结束值减去所述第一开始值以确定结果,该结果指示与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体的数量;以及将所述结果与存储在分配到所述第一基于瓦片的渲染查询的所述第一累计最终结果存储器位置中的累计器值相加;以及针对所述第二基于瓦片的渲染查询:在所述第二基于瓦片的渲染查询开始时读取运行计数器以确定第二开始值,其中针对所述第一基于瓦片的渲染查询也对所述运行计数器进行读取;在所述第二基于瓦片的渲染查询结束时读取所述运行计数器以确定第二结束值;从所述第二结束值减去所述第二开始值以确定第二结果,该第二结果指示与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体的数量;以及将所述第二结果与存储在分配到所述第二基于瓦片的渲染查询的所述第二累计最终结果存储器位置中的累计器值相加;其中所述第二开始值和第二结束值的确定嵌套在所述第一开始值和第一结束值的确定之中。
另一方面,本申请提供了一种用于执行图形处理系统中的查询的设备,所述设备包括:存储器,其经配置以存储图形数据;以及图形处理单元GPU,其与所述存储器通信,所述GPU经配置以:接收多个基于瓦片的渲染查询作为用于描绘帧的所有瓦片的命令的一部分,其中所述多个基于瓦片的渲染查询包含第一基于瓦片的渲染查询和第二基于瓦片的渲染查询,其中所述第一基于瓦片的渲染查询与多个基元相关联,且其中所述第二基于瓦片的渲染查询与所述第一基于瓦片的渲染查询所关联的多个基元的基元子集相关联;针对所述多个基于瓦片的渲染查询分配多个累计最终结果存储器位置,其中所述多个累计最终结果存储器位置包括分配给所述第一基于瓦片的渲染查询的第一累计最终结果存储器位置以及分配给所述第二基于瓦片的渲染查询的第二累计最终结果存储器位置;以及针对所述第一基于瓦片的渲染查询:在所述第一基于瓦片的渲染查询开始时读取运行计数器以确定第一开始值,其中所述运行计数器对离散图形实体计数;在所述第一基于瓦片的渲染查询结束时读取所述运行计数器以确定第一结束值;从所述第一结束值减去所述第一开始值以确定结果,该结果指示与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体的数量;以及将所述结果与存储在分配到所述第一基于瓦片的渲染查询的所述第一累计最终结果存储器位置中的累计器值相加;以及针对所述第二基于瓦片的渲染查询:在所述第二基于瓦片的渲染查询开始时读取运行计数器以确定第二开始值,其中针对所述第一基于瓦片的渲染查询也对所述运行计数器进行读取;在所述第二基于瓦片的渲染查询结束时读取所述运行计数器以确定第二结束值;从所述第二结束值减去所述第二开始值以确定第二结果,该第二结果指示与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体的数量;以及将所述第二结果与存储在分配到所述第二基于瓦片的渲染查询的所述第二累计最终结果存储器位置中的累计器值相加;其中所述第二开始值和第二结束值的确定嵌套在所述第一开始值和第一结束值的确定之中。
另一方面,本申请提供了一种用于执行图形处理系统中的查询的设备,所述设备包括:用于发布多个基于瓦片的渲染查询作为至图形处理单元GPU的命令的一部分来描绘帧的所有瓦片的装置,其中所述多个基于瓦片的渲染查询包含第一基于瓦片的渲染查询查询和第二基于瓦片的渲染查询,其中所述第一基于瓦片的渲染查询与多个基元相关联,且其中所述第二基于瓦片的渲染查询与所述第一基于瓦片的渲染查询所关联的多个基元的基元子集相关联;用于针对所述多个基于瓦片的渲染查询分配多个累计最终结果存储器位置的装置,其中所述多个累计最终结果存储器位置包括分配给所述第一基于瓦片的渲染查询的第一累计最终结果存储器位置以及分配给所述第二基于瓦片的渲染查询的第二累计最终结果存储器位置;以及针对所述第一基于瓦片的渲染查询:用于在所述第一基于瓦片的渲染查询开始时读取运行计数器以确定第一开始值的装置,其中所述运行计数器对离散图形实体计数;用于在所述第一基于瓦片的渲染查询结束时读取所述运行计数器以确定第一结束值的装置;用于从所述第一结束值减去所述第一开始值以确定结果的装置,该结果指示与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体的数量;以及用于将所述结果与存储在分配到所述第一基于瓦片的渲染查询的所述第一累计最终结果存储器位置中的累计器值相加的装置;以及针对所述第二基于瓦片的渲染查询:用于在所述第二基于瓦片的渲染查询开始时读取运行计数器以确定第二开始值的装置,其中针对所述第一基于瓦片的渲染查询也对所述运行计数器进行读取;用于在所述第二基于瓦片的渲染查询结束时读取所述运行计数器以确定第二结束值的装置;用于从所述第二结束值减去所述第二开始值以确定第二结果的装置,该第二结果指示与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体的数量;以及用于将所述第二结果与存储在分配到所述第二基于瓦片的渲染查询的所述第二累计最终结果存储器位置中的累计器值相加的装置;其中所述第二开始值和第二结束值的确定嵌套在所述第一开始值和第一结束值的确定之中。
另一方面,本申请提供了一种其上存储有指令的计算机可读存储媒体,所述指令在执行时致使装置的一或多个处理器:发布多个基于瓦片的渲染查询作为命令的一部分来描绘帧的所有瓦片,其中所述多个基于瓦片的渲染查询包含第一基于瓦片的渲染查询和第二基于瓦片的渲染查询,其中所述第一基于瓦片的渲染查询与多个基元相关联,且其中所述第二基于瓦片的渲染查询与所述第一基于瓦片的渲染查询所关联的多个基元的基元子集相关联;针对所述多个基于瓦片的渲染查询分配多个累计最终结果存储器位置,其中所述多个累计最终结果存储器位置包括分配给所述第一基于瓦片的渲染查询的第一累计最终结果存储器位置以及分配给所述第二基于瓦片的渲染查询的第二累计最终结果存储器位置;以及针对所述第一基于瓦片的渲染查询:在所述第一基于瓦片的渲染开始时读取运行计数器以确定第一开始值,其中所述运行计数器对离散图形实体计数;在所述第一基于瓦片的渲染查询结束时读取所述运行计数器以确定第一结束值;从所述第一结束值减去所述第一开始值以确定结果,该结果指示与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体的数量;以及将所述结果与存储在分配到所述第一基于瓦片的渲染查询的所述第一累计最终结果存储器位置中的累计器值相加;以及针对所述第二基于瓦片的渲染查询:在所述第二基于瓦片的渲染查询开始时读取运行计数器以确定第二开始值,其中针对所述第一基于瓦片的渲染查询也对所述运行计数器进行读取;在所述第二基于瓦片的渲染查询结束时读取所述运行计数器以确定第二结束值;从所述第二结束值减去所述第二开始值以确定第二结果,该第二结果指示与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体的数量;以及将所述第二结果与存储在分配到所述第二基于瓦片的渲染查询的所述第二累计最终结果存储器位置中的累计器值相加;其中所述第二开始值和第二结束值的确定嵌套在所述第一开始值和第一结束值的确定之中。
附图说明
图1为说明可用于实施本发明的技术的实例计算装置的框图。
图2为说明图1中更详细地展示的计算装置的CPU、GPU和存储器的框图。
图3为说明基于瓦片的渲染的概念图。
图4为说明实例遮挡查询的概念图。
图5为说明实例存储器映像的概念图。
图6为说明根据本发明的实例存储器映像的概念图。
图7为说明根据本发明的技术的实例遮挡查询的概念图。
图8为说明实施本发明的一或多个方面的实例方法的流程图。
具体实施方式
本发明涉及图形处理系统,且更明确地说涉及用于基于瓦片的渲染器的查询处理。基于瓦片的渲染为借以将待渲染的帧或其它区划分成瓦片(例如,矩形或正方形区)的处理技术,且每一瓦片单独地渲染。基于瓦片的渲染可用于采用场景中的局部空间相干性以促进稍后在图形管线中有限硬件渲染资源(例如,快速图形存储器)的使用,或两者。通常,在基于瓦片的渲染中,系统、设备或装置(例如计算机图形装置)可将帧划分为(例如)规则的栅格。栅格形成瓦片,瓦片是帧或其它区的部分。每一瓦片可使用与另一瓦片相同的渲染命令流来渲染。
在一些实例中,基于装仓(binning)或瓦片(tile)的渲染可提供一种在称为“瓦片”或“仓”的较小部分中渲染3D场景的方式。如上文所论述,基于瓦片的渲染可用于采用场景中的局部空间相干性,以促进稍后在图形管线中有限硬件渲染资源的使用,或两者。通常,在基于瓦片的渲染中,系统、设备或装置(例如计算机图形装置)可将帧划分为(例如)规则的栅格。栅格形成瓦片,瓦片是帧或其它区的部分。在一实例中,每一瓦片或仓可使用相同渲染命令流来渲染。
出于说明的目的,将论述遮挡查询,但将理解,本发明的这些技术也可应用于其它类型的查询。如上文所论述,在一些实例中,遮挡查询为图形处理中的确定待渲染的对象是否被图形场景(或瓦片)中的其它对象遮挡的查询。经设计以查询来自(例如)GPU的不同类型的信息的若干类型的查询是可能的。实例包含遮挡查询、时戳查询、管线状态查询(管线统计)等。在一些实例中,时戳为识别何时发生特定事件的字符的序列或经编码信息。时戳可提供(例如)事件发生的日期和时间。时戳可准确到一秒的小分数。时戳查询可用于例如通过比较从此查询的开始到停止的时戳来检查图形场景中的特定事件的定时。管线状态查询或管线统计查询可用于检查图形管线的各种统计和状态信息。本发明的技术还可应用于时戳查询、管线状态查询(管线统计)和其它类型的查询。
如上文所论述,图形处理系统可使用遮挡查询以确定(例如)待渲染的对象是否被图形场景(或瓦片)中的其它对象遮挡。换句话说,图形处理系统可使用遮挡查询以确定待渲染的对象是否被图形场景(或瓦片)中的其它对象阻挡使得其无法被检视,或待渲染的对象是否未被图形场景(或瓦片)中的其它对象阻挡使得其可被检视。在一些实例中,对象可被阻挡、部分阻挡或可见。图形处理器可使用此信息使渲染更有效。举例来说,通过不渲染被遮挡(即,被阻挡使得其无法被看见)的对象,可节省处理资源,从而使瓦片的渲染更有效。可渲染未被遮挡的对象。在一些实例中,可渲染被部分遮挡的对象。在其它实例中,可不渲染被部分遮挡的对象。被部分遮挡的对象可部分渲染或分裂为越来越小的对象且再测试。然而,将理解,在某一点处,使用处理资源仅仅渲染对象或对象的可见部分通常将比耗费较多处理资源执行进一步遮挡查询更为有利。被遮挡对象的渲染可取决于(例如)对象的多少被遮挡。
可通过界定表示输出(例如待显示或渲染的帧)的一组基元(多边形,例如三角形)来执行图形处理。渲染输出的每一基元通常界定和表示为一组顶点,其中每一顶点具有与其相关联的一组顶点数据值。
输出的基元可随后光栅化以产生多个离散图形实体,所述多个离散图形实体可进一步经处理以产生经渲染输出。这些离散图形实体可为像素。然而,离散图形实体可不始终确切对应于渲染输出中的单一像素。此归因于(例如)向下缩放。
遮挡查询通常对给定对象或可见的对象的离散图形实体(例如,像素、样本等)的数目计数,且使用所述计数以确定由所述离散图形实体形成的一或多个对象是否可见、所述一或多个对象的部分是否可见,或两者。各种机制允许确定多少图形实体(例如像素或样本)经光栅化。
典型的遮挡查询序列可包含(1)开始遮挡查询,(2)绘制一或多个对象,(3)结束遮挡查询,和(4)获得多少样本经渲染的结果。存储例如遮挡查询等查询中的中间每瓦片结果所需要的存储器的量可随瓦片的数目增加而线性地增加。瓦片的数目增加还增加例如当请求最终查询结果时CPU进行累计所花费的时间量。在一个实例中,一种执行此些查询的较存储器有效方式可在查询开始时读取运行计数器以确定开始值,其中运行计数器对经渲染的样本计数;在查询结束时读取运行计数器以确定结束值;且从所述结束值减去所述开始值以确定结果,并再使用相同开始计数器和结束计数器存储器位置以每仓/ 瓦片方式执行此操作。本文论述关于针对基于瓦片的渲染器的遮挡查询处理的实例。然而,将理解,在其它实例中,可使用这些技术处理例如时戳查询、管线状态查询(管线统计)和其它类型的查询等其它类型的查询。
图1是说明可用以实施本发明的查询处理技术的实例计算装置2的框图。计算装置2可包括个人计算机、台式计算机、膝上型计算机、计算机工作站、视频游戏平台或控制台、无线通信装置(例如,移动电话、蜂窝式电话、卫星电话和/或移动电话手持机)、陆线电话、因特网电话、手持式装置(例如,便携式视频游戏装置或个人数字助理(PDA))、个人音乐播放器、视频播放器、显示装置、电视机、电视机顶盒、服务器、中间网络装置、主机计算机,或处理和/或显示图形数据的任何其它类型的装置。
在一些实例中,例如当计算装置2包括(例如)个人计算机、台式计算机、膝上型计算机、计算机工作站、视频游戏平台或控制台时,计算装置可例如在处理视频数据以供在视频显示器上显示时针对基于瓦片的渲染器执行查询处理。
如果计算装置2为无线通信装置或其它类似装置,那么其可对例如话音通信数据、视频数据、文本消息、数据文件和可作为数据的位流发射或接收的其它形式的数据等一或多个数据位流进行译码。位流可为位的时间系列或序列。类似地,字节流可为一系列字节,例如各自8位。如本文所使用,位流可包含字节流。举例来说,字节流可视为位流的特殊情况。(字节流为位流,其中数据位分组为单元,称为字节。)
计算装置2可例如当接收视频数据的位流且处理此位流以供(例如)在视频显示器上渲染时针对基于瓦片的渲染器执行查询处理。
如图1的实例中所说明,计算装置2包含用户接口4、中央处理单元(CPU)6、存储器控制器8、存储器10、图形处理单元(GPU)12、显示接口14、显示器16和总线18。用户接口4、CPU 6、存储器控制器8、GPU 12和显示接口14可使用总线18彼此通信。应注意,图1中展示的不同组件之间的总线和通信接口的特定配置仅是示范性的,且具有相同或不同组件的计算装置和/或其它图形处理系统的其它配置可用于实施本发明的技术。
在一些实例中,计算装置2中的例如CPU 6、GPU 12或其它处理电路等处理器可在计算装置2上执行查询,作为图形处理的一部分。举例来说,处理器可在查询开始时读取运行计数器以确定开始值。运行计数器可对例如像素、样本、多边形等离散图形实体计数。处理器可在查询结束时读取运行计数器以确定结束值。处理器还可从结束值减去开始值以确定结果。
CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2以致使CPU 6执行一或多个软件应用。在CPU 6上执行的软件应用可包含(例如)图形应用、文字处理器应用、电子邮件应用、电子数据表应用、媒体播放器应用、视频游戏应用、图形用户接口应用、操作系统或任何其它类型的程序。用户可经由一或多个输入装置(未图示)(例如,键盘、鼠标、麦克风、触摸垫或经由用户接口4耦合到计算装置2的另一输入装置)将输入提供到计算装置2。
在CPU 6上执行的软件应用可包含一或多个图形渲染指令,其指示GPU 12将图形数据渲染到帧缓冲器以供在显示器16上显示。在一些实例中,图形渲染指令可符合图形应用编程接口(API),例如开放图形库API、开放图形库嵌入系统(OpenGL ES)API、Direct3D API、X3D API、RenderMan API、WebGL API或任何其它公共或专有标准图形API。为了处理图形渲染指令,CPU 6可将一或多个图形渲染命令发布到GPU 12以致使GPU 12执行图形数据的渲染的一些或全部。在一些实例中,待渲染的图形数据可包含例如点、线、三角形、四边形、三角形条带等图形基元的列表。
在一些实例中,CPU 6可执行软件,致使其读取可在查询开始时对离散图形实体计数的运行计数器以确定开始值。CPU 6可在查询结束时读取运行计数器以确定结束值,且从结束值减去开始值以确定结果。在一些实例中,离散图形实体可为像素。在一些其它实例中,离散图形实体可为多边形。
存储器控制器8促进数据进出存储器10的传递。举例来说,存储器控制器8可接收存储器读取和写入命令,且服务相对于存储器10的此些命令以便为计算装置2中的组件提供存储器服务。存储器控制器8以通信方式耦合到存储器10。虽然存储器控制器 8在图1的实例计算装置2中被说明为与CPU 6和存储器10两者分开的处理模块,但在其它实例中,存储器控制器8的功能性中的一些或全部可实施于CPU 6和存储器10 中的一或两者上。
存储器10可存储可由CPU 6存取以用于执行的程序模块和/或指令和/或由在CPU6 上执行的程序使用的数据。举例来说,存储器10可存储与在CPU 6上执行的应用相关联的程序代码和图形数据。存储器10可另外存储由计算装置2的其它组件使用和/或产生的信息。举例来说,存储器10可充当用于GPU 12的装置存储器且可存储将在GPU 12 上操作的数据以及由GPU 12执行的操作而产生的数据。举例来说,存储器10可存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器、渲染目标或其类似者的任何组合。另外,存储器10可存储命令流以供GPU 12处理。存储器10可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态 RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
GPU 12可经配置以执行由CPU 6发布到GPU 12的命令。由GPU 12执行的命令可包含图形命令、绘制调用命令、GPU 12状态编程命令、时戳请求、储器传递命令、通用计算命令、核心执行命令等。
在一些实例中,GPU 12可经配置以执行图形操作以将一或多个图形基元渲染到显示器16。在此些实例中,当在CPU 6上执行的软件应用中的一者需要图形处理时,CPU 6可将图形数据提供到GPU 12以供渲染到显示器16且将一或多个图形命令发布到GPU 12。图形命令可包含例如绘制调用命令、GPU 12状态编程命令、存储器传递命令、传图命令等。图形数据可包含顶点缓冲器、纹理数据、表面数据等。在一些实例中,CPU 6可通过将命令和图形数据写入到存储器10而将所述命令和图形数据提供到GPU 12,存储器10可由GPU 12存取。
在一些实例中,GPU 12而非CPU 6可执行软件,致使其读取可在查询开始时对离散图形实体计数的运行计数器以确定开始值。GPU 12可在查询结束时读取运行计数器以确定结束值,且从结束值减去开始值以确定结果。在另一实例中,查询结果可由GPU 12以每瓦片的方式输出且稍后由CPU 6累计。
在其它实例中,GPU 12可经配置以针对在CPU 6上执行的应用执行通用计算。在此等实例中,当在CPU 6上执行的软件应用中的一者决定将计算任务卸载到GPU 12时, CPU 6可将通用计算数据提供到GPU 12,且将一或多个通用计算命令发布到GPU 12。通用计算命令可包含例如核心执行命令、存储器传递命令等。在一些实例中,CPU 6可通过将命令和图形数据写入到可由GPU 12存取的存储器10而将命令和通用计算数据提供到GPU 12。
在一些情况下,GPU 12可内置有比CPU 6提供对向量运算更有效的处理的高度并行的结构。举例来说,GPU 12可包含多个处理元件,其经配置以用并行方式对多个顶点、控制点、像素和/或其它数据操作。GPU 12的高度并行性质可在一些情况下允许GPU 12与使用CPU 6渲染图像相比更快地将图形图像(例如,GUI和二维(2D)和/或三维(3D) 图形场景)渲染到显示器16上。另外,GPU 12的高度并行性质可允许GPU 12比CPU 6 更快速地处理用于通用计算应用的特定类型的向量和矩阵运算。
在一些情况下,可将GPU 12集成到计算装置2的母板中。在其它情况下,GPU 12 可存在于图形卡上,所述图形卡安装在计算装置2的母板中的端口中或可以其它方式并入在经配置以与计算装置2互操作的外围装置内。在其它情况下,GPU 12可位于与CPU 6相同的微芯片上,从而形成芯片上系统(SoC)。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。
在一些实例中,GPU 12可包含GPU高速缓冲存储器,其可针对存储器10的全部或一部分提供高速缓存服务。在此些实例中,GPU 12可使用高速缓冲存储器来使用本地存储装置代替芯片外存储器而本地处理数据。此通过减少在每一读取和写入命令期间对于GPU 12经由总线18存取存储器10(其可体验沉重总线业务)的需要而允许GPU 12 以更有效方式操作。然而,在一些实例中,GPU 12可不包含单独的高速缓冲存储器,而是经由总线18利用存储器10。GPU高速缓冲存储器可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态 RAM(DRAM)等。
CPU 6、GPU 12或两者可将光栅化图像数据存储在存储器10内所分配的帧缓冲器中。显示接口14可从帧缓冲器检索数据且配置显示器16以显示由光栅化图像数据表示的图像。在一些实例中,显示接口14可包含经配置以将从帧缓冲器检索的数字值转换为可由显示器16消费的模拟信号的数/模转换器(DAC)。在其它实例中,显示接口14可将数字值直接传递到显示器16以进行处理。
显示器16可包含监视器、电视机、投影装置、液晶显示器(LCD)、等离子体显示器面板、发光二极管(LED)阵列、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视机显示器、纳米晶体显示器或另一类型的显示单元。显示器16可集成于计算装置2内。举例来说,显示器16可为移动电话手持机或平板计算机的屏幕。或者,显示器16可为经由有线或无线通信链路而耦合到计算机装置2的独立装置。举例来说,显示器16可为经由电缆或无线链路而连接到个人计算机的计算机监视器或平板显示器。
总线18可使用总线结构和总线协议的任何组合来实施,包含第一、第二和第三代总线结构和协议、共享总线结构和协议、点对点总线结构和协议、单向总线结构和协议以及双向总线结构和协议。可用以实施总线18的不同总线结构和协议的实例包含例如超传输总线、InfiniBand总线、高级图形端口总线、外围组件互连(PCI)总线、PCI高速总线、高级微控制器总线架构(AMBA)、高级高性能总线(AHB)、AMBA高级外围总线 (APB),和AMBA高级eXentisible接口(AXI)总线。也可使用其它类型的总线结构和协议。
本发明中描述的技术可在一些实例中实施在图1中说明的计算装置2中的组件中的任一者中,所述组件包含例如CPU 6、GPU 12和系统存储器10。在一些实例中,本发明的遮挡查询技术可使用GPU 12和存储器10实施。在一些实例中,本发明的技术可完全实施在GPU12中。在一些实例中,本发明中描述的技术可使用这些组件的组合实施以在查询开始时读取运行计数器以确定开始值并在查询结束时读取运行计数器以确定结束值。这些组件中的一或多者可用于从结束值减去开始值以确定结果。
图2是进一步详细说明图1中的计算装置2的CPU 6、GPU 12和存储器10的框图。本发明中描述的技术可在一些实例中实施在图2中说明的组件的任一者中。如图2中所展示,CPU 6以通信方式耦合到GPU 12和存储器10,且GPU 12以通信方式耦合到CPU 6和存储器10。在一些实例中,GPU 12可与CPU 6一起集成到母板上。在额外实例中, GPU 12可实施在安装在包含CPU 6的母板的端口中的图形卡上。在其它实例中,GPU 12 可并入在经配置以与CPU 6交互操作的外围装置内。在额外实例中,GPU 12可位于与 CPU 6相同的微芯片上,从而形成芯片上系统(SoC)。
CPU 6可包含一或多个处理器(例如,微处理器),其经配置以执行软件应用24、图形API 26、GPU驱动器28和操作系统30中的任一者。在一些实例中,CPU 6可经配置以执行指令,所述指令致使CPU 6的所述一或多个处理器执行本发明中描述的技术中的任一者的全部或部分。
GPU 12包含命令引擎32、一或多个处理单元34和基于瓦片的渲染缓冲器36。所述一或多个处理单元34可经配置以形成3D图形渲染管线。在一些实例中,处理单元 34中的一或多者可实施芯片上启用棋盘形布置的图形渲染管线。命令引擎32和处理单元34可包含专门硬件单元、固件、软件和处理器的任何组合,其经配置以执行归于此些组件的功能。在一些实例中,GPU 12可经配置以执行指令,所述指令致使GPU 12的一或多个处理器执行本发明中描述的技术中的任一者的全部或部分。
存储器10可存储一或多个命令38、基元数据40和时戳数据42。在一些实例中,存储器10还可存储指令,所述指令在执行时致使一或多个处理器执行本发明中描述的技术中的任一者的全部或部分。
图2还说明可对离散图形实体计数的实例计数器44。例如GPU 12或CPU 6等处理器可执行软件,致使其在查询开始时读取计数器44以确定开始值且在查询结束时读取计数器44以确定结束值,并从结束值减去开始值以确定结果。在各种实例中,GPU 12 或CPU 6可使用存储器10存储从计数器44读取的值。在其它实例中,可使用GPU 12 或CPU 6内的寄存器或其它存储器(未图示)。举例来说,计数器44可包含存储器或其它存储装置。
在图2的所说明的实例中,计数器44连接到总线18且可借此由(例如)CPU 6和GPU12存取。在其它实例中,计数器44可为存储器10的一部分或实施在CPU 6或GPU 12 中。通常,所有查询类型的查询计数器由硬件维持。因此,通常必需指示GPU 12将计数器值写入到存储器,其后CPU 6可存取所述计数器值。在一些实例中,不使用软件查询计数器。在此些实例中,所有查询类型的计数器值可维持在硬件中,且硬件命令可用于致使那些计数器值写入到存储器。然而,其它实例可使用不同计数器配置,例如软件计数器或硬件与软件组合计数器。
将理解,其它处理资源(未图示)可能用于通过在查询开始时读取计数器44以确定开始值且在查询结束时读取计数器44以确定结束值并从结束值减去开始值以确定结果来实施本发明的技术。
在关于本文中所描述的技术可能如何使用图2的系统实施的一个特定实例中,GPU12可执行软件,致使其在查询开始时读取计数器44以确定开始值。此开始值可存储到存储器10。GPU 12可随后在查询结束时读取计数器44以确定结束值。此结束值可从存储在存储器中的开始值减去以确定结果。结束值可在其被读取之后存储在GPU 12内的寄存器中或存储器10中。开始值可从存储器10读取且随后从存储在寄存器中的结束值减去。
在一些实例中,查询计数器可由GPU维持。由GPU执行的指令可将此些计数器值写入到存储器10,其中这些计数器值可随后由CPU 6存取。在关于本文中所描述的技术可能如何使用图2的系统实施的另一特定实例中,CPU 6可执行软件,致使其在查询开始时读取计数器44以确定开始值。此开始值可存储到存储器10。CPU 6可随后在查询结束时读取计数器44以确定结束值。此结束值可从存储在存储器中的开始值减去以确定结果。结束值可在其被读取之后存储在CPU 6内的寄存器中或存储器10中,然而通常将使用CPU 6中的寄存器。开始值可从存储器10读取且随后从存储在寄存器中的结束值减去。
在图2中说明的实例中,处理器(例如,CPU 6或GPU 12)、存储器10和计数器44 各自为附接到总线18的单独逻辑块。在其它实例(未图示)中,处理器、存储器和计数器的功能中的一或多者可使用单一功能块执行。举例来说,处理器可能指示可附接到总线 18的单一功能块在查询开始时读取计数器以确定开始值,将开始值存储到单一功能块内的存储器,在查询结束时读取计数器44以确定结束值,且从结束值减去开始值以确定结果。结束值可因而是传回到处理器的唯一内容。在其它实例中,处理器可向功能块指示查询的开始和结束,且所述功能块可传回结果。
图2中说明的设备可根据本文中所描述的系统和方法执行各种查询。举例来说,如相对于图7和图5-6的存储器映像更详细说明,图2的设备可执行两个查询:查询ABC 和查询BC,一个嵌套于另一个中。在此查询中,初始地三个存储器位置可针对查询ABC 复位到0。
软件应用24可为图形应用,其使用GPU 12将一或多个3D图形场景和/或3D图形对象渲染到待在显示器上显示的图像中。软件应用24可包含致使GPU 12光栅化和渲染一组3D图形基元的指令。软件应用24可经由图形API 26将所述指令发布到GPU驱动器28。图形API26可为将从软件应用24接收的指令转译为可由GPU驱动器28消费的格式的运行时服务。
GPU驱动器28经由图形API 26从软件应用24接收指令,且控制GPU 12的操作以服务所述指令。举例来说,GPU驱动器28可调配一或多个命令38,将所述命令38放置到存储器10中,且指示GPU 12执行命令38。在一些实例中,GPU驱动器28可将命令38放置到存储器10中,且经由操作系统30(例如经由一或多个系统调用)与GPU 12 通信。
操作系统30可提供软件应用24、图形API 26和GPU驱动器28可在上面执行的软件平台。操作系统30可管理CPU 6、存储器10和GPU 12之间传送和传递数据的硬件细节。
命令38可包含一或多个状态命令、一或多个绘制调用命令和/或一或多个时戳请求。状态命令可指示GPU 12改变GPU 12中的状态变量中的一或多者,例如基元类型。绘制调用命令可指示GPU 12渲染由存储于存储器10中的一或多个顶点的群组(例如,在顶点缓冲器中界定)界定的几何形状。由一或多个顶点的群组界定的几何形状可在一些实例中对应于待渲染的多个基元(例如,基元数据40)。大体来说,绘制调用命令可调用 GPU 12以渲染存储在存储器10的经界定区段(例如,缓冲器)中的所有顶点。换句话说,一旦GPU 12接收到绘制调用命令,控制便传递到GPU 12用于渲染由存储器10的经界定区段(例如,缓冲器)中的顶点表示的几何形状和基元。
处理单元34可包含一或多个处理单元,其中的每一者可为可编程处理单元或固定功能处理单元。可编程处理单元可包含(例如)经配置以执行从CPU 6下载到GPU 12上的一或多个着色器程序的可编程着色器单元。在一些实例中,着色器程序可为以高级着色语言(例如,OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形的C(Cg)着色语言等)编写的程序的经编译版本。
可编程着色器单元可在一些实例中包含经配置以并行操作的多个处理单元,例如单指令多数据(SIMD)管线。可编程着色器单元可具有存储着色器程序指令的程序存储器和执行状态寄存器,例如指示程序存储器中正执行的当前指令或待提取的下一指令的程序计数器寄存器。处理单元34中的可编程着色器单元可包含(例如)顶点着色器单元、像素着色器单元、几何形状着色器单元、壳着色器单元、域着色器单元、计算着色器单元和 /或统一着色器单元。
固定功能处理单元可包含经硬连线以执行某些功能的硬件。虽然固定功能硬件可经由(例如)一或多个控制信号而配置以执行不同功能,但所述固定功能硬件通常并不包含能够接收用户编译程序的程序存储器。在一些实例中,处理单元34中的固定功能处理单元可包含(例如)执行光栅操作的处理单元,所述光栅操作例如深度测试、剪刀测试、α掺合等。
基于瓦片的渲染缓冲器36可经配置以存储渲染目标(例如,瓦片或仓)的子区的光栅化数据。基于瓦片的渲染缓冲器36可充当渲染遍次的执行期间实际渲染目标的特定子区的临时渲染目标。基于瓦片的渲染缓冲器36可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)等。在一些实例中,基于瓦片的渲染缓冲器36可为芯片上缓冲器。芯片上缓冲器可指代形成于、定位于和/或安置于与上面形成、定位和/或安置GPU 12的微芯片、集成电路和/ 或裸片相同的微芯片、集成电路和/或裸片上的缓冲器。
在一些实例中,处理单元34可经由第一通信接口存取基于瓦片的渲染缓冲器36,且经由不同于第一通信接口的第二通信接口存取渲染目标(例如,存储在存储器10中的帧缓冲器)。在此些实例中,第一通信接口可在一些实例中具有比第二通信接口高的带宽。第二通信接口可在一些实例中对应于图1中的总线18和图1中的存储器控制器8与存储器10之间的连接。当基于瓦片的渲染缓冲器为芯片上基于瓦片的渲染缓冲器时,第一通信接口可为在GPU 12内部的通信接口。
如本文所使用,带宽可指代通信接口能够在两个组件(例如,存储器组件与GPU12) 之间传递数据的速率。带宽的单位可在一些实例中给定为若干位/时间单位,例如千兆位 /秒(Gb/s)。当具有多个位的总线宽度的总线用作通信接口的一部分时,所述带宽可在一些实例中等于总线的宽度乘以数据沿着单一位线传递的速率的乘积。举例来说,如果总线为16位宽,且总线的每一位线能够以2Gb/s的速率传递数据,那么总线的带宽可等于32Gb/s。如果多个总线形成两个组件之间的通信接口,那么通信接口的带宽可为多个总线中的每一者的带宽的函数,例如个别总线中的每一者的最小带宽。
当基于瓦片的渲染缓冲器36实施在与GPU 12相同的芯片上时,GPU 12未必需要经由系统和存储器总线(例如,图1中的总线18和图1中的存储器控制器8与存储器10 之间的连接)存取基于瓦片的渲染缓冲器36,而是可经由在与GPU 12相同的芯片上实施的内部通信接口(例如,总线)存取基于瓦片的渲染缓冲器36。因为此接口在芯片上,所以其可能够以比系统和存储器总线高的带宽操作。尽管上文所描述的技术为实现超出用于存取存储器10的通信接口的带宽的用于基于瓦片的渲染缓冲器36的通信接口的一种方式,但其它技术是可能的且在本发明的范围内。
基于瓦片的渲染缓冲器36的容量可在一些实例中受特定类型的计算装置(例如,移动装置)上可用的存储器限制。渲染缓冲器36可为快速图形存储器。此外,当基于瓦片的渲染缓冲器36实施在与GPU 12相同的芯片上时,相同芯片上可用于实施基于瓦片的渲染缓冲器36的区域的量可归因于所述芯片上实施的另一功能性而受到限制。在一些实例中,基于瓦片的渲染缓冲器36可具有低于渲染目标的位密度的位密度,这进一步限制基于瓦片的渲染缓冲器36的容量。由于这些和/或其它因素,基于瓦片的渲染缓冲器36的容量可在一些情况下小于渲染目标的大小。因此,基于瓦片的渲染缓冲器36的容量可在此些实例中小于存储与图形图像相关联的多个目的地像素的全部的像素数据所需的最小容量。存储器组件的容量可指代能够存储于存储器组件中的最大数据量(例如,最大位数目)。渲染目标的大小可指代存储于分配到渲染目标的存储器范围中的数据量(例如,位数)。位密度可指代可存储在特定量区域中的位数。
如上文所论述,当执行基于瓦片的渲染时,GPU 12可在渲染遍次的单独迭代期间渲染渲染目标的每一子区。举例来说,作为针对渲染目标的特定子区(例如,图形图像的目的地像素的特定子集)的单一渲染遍次迭代的一部分,GPU 12可相对于渲染目标的特定子区渲染基元的全部或子集。如上文论述,渲染缓冲器36可为快速图形存储器。基于瓦片的渲染缓冲器36的容量可经配置以大于或等于渲染目标的子区的大小。因此,渲染目标可为快速图形存储器的大小(或更小)。因此,在单一渲染遍次迭代期间,与渲染目标的子区中的相应一者相关联的目的地像素数据可在基于瓦片的渲染缓冲器36中可用,而不一定需要存取存储器10中的帧缓冲器。因此,在单一渲染遍次迭代期间, GPU 12可能够经由相对高带宽通信接口从基于瓦片的渲染缓冲器36读取目的地像素数据,而不必经由相对低带宽通信接口从存储器10读取此些数据。
尽管并不执行基于瓦片的渲染的一些图形系统可能够通过使用基于硬件的芯片上高速缓冲存储器而高速缓存帧缓冲器的一部分,但此些高速缓冲存储器并不保证给定像素的目的地像素值在需要时将可用。这是因为多个目的地像素可映射到基于硬件的高速缓冲存储器中的相同地址。如果在此情况下并未使用基于瓦片的渲染,那么基于硬件的高速缓冲存储器的当前状态可不必包含与当前处理的基元相关联的目的地像素值,而是包含与图形图像的其它区域中的先前经处理基元相关联的目的地像素值。
与其中多个目的地像素映射到相同高速缓冲存储器位置的基于硬件的高速缓冲存储器相比,用于给定渲染遍次迭代的存储在基于瓦片的渲染缓冲器36中的目的地像素可在一些实例中唯一地可寻址。换句话说,对于给定渲染遍次迭代,可在用于所述渲染遍次迭代的基于瓦片的渲染缓冲器36中的可寻址存储槽与目的地像素之间界定一对一映射。因此,当执行基于瓦片的渲染时,用于给定基于瓦片的渲染遍次的所有目的地α值可在一些实例中经由相对低带宽通信接口从基于瓦片的渲染缓冲器36获得。此外,不同于基于硬件的高速缓冲存储器系统,由于基于瓦片的渲染缓冲器36中唯一可寻址的数据的缘故,不会发生高速缓冲存储器未中,借此缓解在高速缓冲存储器未中的事件中求助于带宽昂贵的帧缓冲器存取的需要。
目的地像素可指代针对特定像素位置的存储在渲染目标(例如,帧缓冲器或对应的基于瓦片的渲染缓冲器)中的像素数据。相比而言,源像素可指代已由处理单元34中的光栅化处理单元产生但尚未存储到渲染目标和/或与渲染目标合并的像素数据。目的地像素可包含来自与不同基元相关联的多个源像素的复合像素数据。
为执行基于瓦片的渲染,软件应用24可在一些实例中将几何学上界定待渲染的一组一或多个3D图形基元的基元数据40放置到存储器10中,且经由图形API 26将一或多个绘制调用命令发布到GPU驱动器28。绘制调用命令可致使由基元数据40界定的基元由GPU 12光栅化和渲染到渲染目标(例如,存储在存储器10中的帧缓冲器)中。
在一些实例中,在发布绘制调用命令之前,软件应用24可配置GPU 12以渲染特定类型的基元。举例来说,软件应用24可将指定在绘制调用期间待渲染的特定类型的基元的状态命令发布到GPU 12。在额外实例中,在发布绘制调用命令之前,软件应用24 可配置GPU12以使用一或多个棋盘形布置技术来渲染基元。举例来说,软件应用24可致使实施棋盘形布置技术的一或多个着色器程序在绘制调用指令期间在GPU 12的一或多个着色器单元(例如,壳着色器单元和/或域着色器单元)上执行。
基元数据40可包含指示待渲染的一或多个基元的数据。在一些情况下,基元数据40可几何学上界定待渲染的基元。几何学上界定基元可指代由一组顶点(或控制点)和对应顶点属性界定基元。在一些实例中,基元数据40可呈多个顶点、顶点列表和/或顶点缓冲器的形式。在其它实例中,基元数据40可采取顶点缓冲器与索引缓冲器组合的形式。在此些实例中,顶点缓冲器可界定顶点,且索引缓冲器可指定哪些顶点用于界定所述基元中的每一者。
基元数据40中包含的顶点中的每一者可包含一或多个属性,例如位置坐标、正常坐标、纹理坐标等。所述顶点可概念上对应于几何基元(例如,点、线、三角形等)的顶点和/或对应于较高阶基元(例如,较高阶表面,例如贝塞尔表面)的控制点。在某些情况下,所述顶点中的每一者可分组到一或多个顶点的群组中,这些顶点群组中的每一者可对应于单一基元。
几何学上界定的基元的形状可在一些实例中由不必包含在基元数据40中的额外数据界定。额外数据可包含来自一组一或多个预定基元类型、一或多个数学函数和/或一或多个棋盘形布置技术的指定基元类型中的一或多者。
在一些实例中,指定基元类型可作为渲染状态变量存储在GPU 12中且可由软件应用24配置。指定基元类型可在一些情况下界定所得经渲染基元(例如,点、线、三角形等)的形状和/或基元数据40中包含的顶点的连接性(例如,三角形条带、三角形扇等)。在一些实例中,不同基元类型可对应于由处理单元34实施的图形管线能够处理的一组基元拓扑。在其它实例中,不同基元类型可对应于由图形API 26界定且可供软件应用 24使用的所述组基元拓扑。
所述一或多个数学函数和/或所述一或多个棋盘形布置技术可在经配置以在GPU12 的一或多个着色器单元(例如,壳着色器单元和/或域着色器单元)上执行的一或多个着色器程序中指定。数学函数可用于界定具有曲线和/或曲面表面的基元。所述一或多个棋盘形布置技术可用于由近似输入基元的形状和/或曲率的多个经棋盘形布置基元来界定基元。
响应于接收来自软件应用24的绘制调用命令,GPU驱动器28可致使GPU 12基于待渲染的所述多个基元(例如,基元数据40)执行基于瓦片的渲染。举例来说,GPU驱动器28可致使GPU 12执行装仓遍次和包含多个渲染遍次迭代的渲染遍次。在装仓遍次期间,GPU 12可确定基元中的每一者将图像数据(例如,像素数据)贡献到渲染目标的多个子区(例如,仓或瓦片)中的哪一者,且产生指示基元中的每一者将图像数据(例如,像素数据)贡献到渲染目标的所述多个子区中的哪一者的装仓数据(例如,来自仓或瓦片的数据)。一旦已产生装仓数据,GPU 12就可基于所述装仓数据和基元数据40执行包含所述多个渲染遍次迭代的渲染遍次以产生基元的复合光栅化版本。
在一些实例中,为了执行装仓遍次,GPU 12中的光栅化器可经配置以对待光栅化的基元执行低分辨率z缓冲和/或后面剔除。在此些实例中,可基于在z缓冲和/或后面剔除之后可见的基元产生装仓数据。
在一些情况下,经渲染基元可存储为多个像素。像素中的每一者可与渲染目标的一或多个空间位置相关联,且可包含指示相应像素的颜色的一或多个属性。在一些情况下,所述像素中的每一者可进一步包含指示像素的透明度的一或多个属性。在一些实例中,像素数据可包含每一像素的红、绿、蓝和α(RGBA)属性,其中“RGB”分量对应于色彩值且“A”分量对应于α值。
本发明中描述的技术可在图2中展示的组件中的任一者中实施,所述组件包含例如软件应用24、图形API 26、GPU驱动器28、命令引擎32和处理单元34。举例来说, GPU驱动器28、命令引擎32和/或处理单元34可经配置以。
在其它实例中,GPU 12而非CPU 6可执行软件,致使其读取可在查询开始时对离散图形实体计数的运行计数器以确定开始值。GPU 12可在查询结束时读取运行计数器以确定结束值,且从结束值减去开始值以确定结果。
在一些实例中,开始值可存储在例如存储器10中的第一存储器位置中。结束值可存储在例如存储器10中的第二存储器位置中。所述结果可存储在例如存储器10中的第三存储器位置中。
在另一实例中,开始值可存储在例如存储器10中的第一存储器位置中。结束值可存储在例如存储器10中的第二存储器位置中。所述结果可重写第一或第二存储器位置中的一者。
一些实例可进一步包含嵌套第二查询。嵌套可通过以下操作进行:在第二查询开始时读取运行计数器以确定第二开始值,在第二查询结束时读取运行计数器以确定第二结束值,以及从第二结束值减去第二开始值以确定结果。
图3为说明基于瓦片的渲染的概念图。如上文所论述,基于装仓或瓦片的渲染可提供一种在称为“瓦片”或“仓”的较小部分中渲染3D场景的方式。如上文所论述,基于瓦片的渲染可用于采用场景中的局部空间相干性,以促进稍后在图形管线中有限硬件渲染资源的使用,或两者。通常,在基于瓦片的渲染中,系统、设备或装置(例如计算机图形装置)可将帧划分为(例如)规则的栅格。栅格形成瓦片,瓦片是帧或其它区的部分。在一实例中,每一瓦片或仓可使用相同渲染命令流来渲染。
在图3的基于瓦片的渲染实例中,用于绘制多边形(例如,三角形、Tri A、Tri B和Tri C)的渲染命令可执行四次,例如针对每一瓦片一次。在使用例如遮挡查询计数器等硬件计数器的一实例中,可仅在不使用嵌套的情况下针对每一瓦片执行用以复位、开始和停止遮挡查询计数器的硬件命令。在一些实例中,如果使用软件计数器,那么软件命令可执行这些操作。在一些实例中,根据本发明的技术,可允许嵌套的遮挡查询,因此 (例如)可不允许每一瓦片中计数器的硬件复位,因为此可通过在计数一或多个其它查询当中复位计数器而影响嵌套的一或多个查询。举例来说,假定开始第一查询且用于所述查询的计数器在查询开始时复位。此外,假定第二查询在第一查询结束之前开始。第二查询称为嵌套查询,因为其在仍执行第一查询时开始。如果单一计数器用于两个查询且计数器在第二查询开始时复位,那么在第一查询结束时从计数器读取的值将很可能不正确。举例来说,所读取的值可通常太小。
在一些实例中,实施这些技术的系统、方法和装置可需要存储每一瓦片的开始和结束计数器值。这些值可存储在存储器、寄存器、或某一其它存储装置中。举例来说,开始值可存储在存储器10、寄存器或某一其它存储器或存储位置中。结束值也可存储在存储器10、寄存器或某一其它存储器或存储位置中。在另一实例中,开始值可存储在例如存储器10中的第一存储器位置中。结束值可存储在例如存储器10中的第二存储器位置中。所述结果可存储在例如存储器10中的第三存储器位置中。在另一实例中,开始值可存储在例如存储器10中的第一存储器位置中。结束值可存储在例如存储器10中的第二存储器位置中。所述结果可重写第一或第二存储器位置中的一者。在又一实例中,开始值可存储在例如存储器10中的第一存储器位置中。结束值可存储在寄存器中。结果可存储在第一存储器位置中。
在一些实例中,基于瓦片的渲染可涉及将渲染目标细分为多个子区(例如,仓或瓦片),以及执行包含针对渲染目标的所述子区中的每一者的单独渲染遍次迭代的渲染遍次。为减少需要在渲染遍次期间处理的基元的数目,装仓遍次可在一些实例中在渲染遍次之前执行。装仓遍次可用于产生指示待渲染的基元中的每一者将像素数据贡献到渲染目标的多个子区中的哪一者的装仓数据。可在渲染遍次迭代期间使用装仓数据以选择性地渲染贡献于在特定渲染遍次迭代期间活跃的子区的基元,借此减少需要在渲染遍次期间处理的基元的数目。
渲染可指代将对应于图形场景中的3D对象的3D图形基元转换为2D光栅化图像数据的过程。渲染通常相对于渲染目标(例如,帧缓冲器)发生,渲染目标通常随着场景中的图形基元中的每一者经渲染而更新。因此,不仅渲染目标存储图形场景的最终2D光栅化图像数据,而且渲染目标还可存储渲染图形场景时的中间数据。存储在渲染目标中的2D光栅化图像数据可包含多个像素,其中所述像素中的每一者包含颜色数据、透明度数据和/或深度数据。随着每一新基元渲染到渲染目标中,新基元的2D光栅化图像数据与已经存储在渲染目标中的用于先前经渲染基元的现有中间数据合并。
为合并渲染目标中的数据,通常需要在将新数据写入到渲染目标之前从渲染目标读取中间数据。因此,渲染可涉及相对于含有渲染目标的存储器执行大量读取和写入操作,借此导致高存储器带宽使用。由于高存储器带宽使用,需要针对渲染目标使用专门的高带宽芯片上存储器。然而,在例如移动应用等区域有限应用中,可能不存在足够可用区域来实施能够同时保存渲染目标中的像素中的每一者的所有数据的高带宽芯片上存储器。
基于瓦片的渲染可通过将渲染目标细分为多个子区(例如,瓦片或仓)且针对子区中的每一者执行包含单独渲染遍次迭代的渲染遍次而解决上文提及的问题。子区中的每一者可对应于渲染目标中的像素的子集(例如,像素的16×16瓦片)。在渲染遍次迭代中的每一者期间,可渲染与对应子区相关联的所有图像数据,其可包含渲染将像素数据贡献到子区的基元中的每一者。足够大而能够存储渲染目标的单一子区的数据的高带宽芯片上存储器可用作渲染遍次迭代中的每一者的局部渲染目标,且在渲染遍次迭代已完成之后,所述渲染遍次迭代的局部渲染目标的内容可传递到存储在低带宽芯片外系统存储器中的总体渲染目标。通过以每瓦片为基础执行单独渲染遍次迭代,基于瓦片的渲染方案可能够允许使用高带宽芯片上存储器合并即使在并不允许大芯片上存储器的区域有限应用中的光栅化图像数据。
一种用于执行基于瓦片的渲染的方法是针对渲染目标的子区中的每一者执行渲染遍次迭代,且在渲染遍次迭代中的每一者期间,渲染场景中的所有基元,同时使用不同剪刀设定将输出限于当前正渲染的特定子区。然而,此方法可能低效,因为在渲染遍次迭代中的每一者中渲染基元中的每一者而不管所述基元是否实际上在经渲染子区中可见。
为了改进基于瓦片的渲染的效率,可在一些实例中在执行渲染遍次之前执行装仓遍次。装仓遍次可用于确定基元的装仓数据。对于待渲染的基元中的每一者,装仓数据可指示基元中的每一者相对于渲染目标的子区中的哪一者贡献像素数据。
图4为说明实例遮挡查询400的概念图。在图4的所说明的实例中,查询结果可由GPU 12以每瓦片的方式输出且稍后由CPU 6累计。存储此中间每瓦片结果所需要的存储器的量随瓦片的数目增加而线性地增加,且其还增加CPU 6进行所述累计所花费的时间量。图4说明4个仓或瓦片402、404、406、408。如图4中所说明,用于查询结果A 的存储器位置410和用于查询结果BC的存储器位置412可复位,即计数器值可清除414。计数器可针对查询A开始416且随后当查询A 418完成时停止。来自计数器的结果可写入到用于查询A的存储器位置410。类似地,计数器(在一些实例中相同计数器)可针对查询BC开始422且随后在查询BC完成时停止424。来自计数器的结果可写入到用于查询BC的存储器位置412。在此实例中,存储例如遮挡查询等查询中的中间每瓦片结果所需要的存储器的量可随瓦片的数目增加而线性地增加。瓦片的数目的增加还增加CPU 进行所述累计所花费的时间量。在一些实例中,一种执行此些查询的较存储器和时间有效方式可在查询开始时读取运行计数器以确定开始值,其中运行计数器对离散图形实体计数;在查询结束时读取运行计数器以确定结束值;且从结束值减去开始值以确定结果。
图5和6说明针对实例查询ABC和BC的存储器映射500、600。图5为说明实例存储器映像500的概念图。在图5的所说明的实例中,查询结果可由GPU 12以每瓦片的方式输出且稍后由CPU 6累计。如图5中所说明,存储器映像500可包含用于每一瓦片402、404、406、408和每一查询(例如,查询ABC和查询BC)的多个存储器位置。举例来说,在图5的所说明的实例中,查询ABC包含每一瓦片的开始和结束值,且查询 BC包含每一瓦片的开始和结束值。因此,用于每一查询的存储器映像中的存储器的量随瓦片的数目增加而线性地增加,且其还增加当应用请求最终结果时CPU 6进行累计所花费的时间量。举例来说,对于每一查询,CPU6可需要从对应仓/瓦片停止值减去每一仓/瓦片开始值且针对这些结果中的每一者执行累计。
在查询开始时,用于查询ABC的三个存储器位置和用于查询BC的三个存储器位置可复位到0。查询ABC的查询计数器开始值(值SABC)可写入到查询ABC存储器的查询计数器开始值部分。在一些实例中,此可借助硬件命令。
在一个实例中,查询BC可为嵌套查询。查询BC的查询计数器开始值(值SBC)可写入到查询BC存储器的查询计数器开始值。查询ABC的查询结束值(值EABC)可写入到查询ABC存储器的查询计数器结束值。可执行累计,且结果可写入到查询ABC存储器的累计最终结果存储器位置。类似地,硬件命令可将查询BC的查询计数器结束值(值 EBC)写入到查询BC存储器的查询计数器结束值存储器位置。可执行累计,且结果可写入到QueryBC存储器的累计最终结果存储器位置。
图6为说明根据本发明的实例存储器映像600的概念图。如所说明,仅三个存储器位置用于每一查询。对于每一查询,可存储开始值。举例来说,在特定查询开始时,运行计数器的值可写入到用于所述查询的对应开始存储器位置。在查询结束时,运行计数器值可写入到用于所述查询的对应结束存储器位置。还可计算差且将其写入到对应存储器位置以存储所述查询的最终结果。其它实例可能针对每一查询使用仅一个或两个存储器位置。举例来说,最终结果值可能针对对应开始和停止存储器位置中的一或两者重写存储器位置以提供可能仅使用两个存储器位置的系统。或者,如果例如从运行计数器的读取和存储器位置与运行计数器之间的差可在单一时钟周期中执行,那么单一存储器位置可能存储开始且随后被差重写的值使得单一存储器位置可用于每一查询。在其它实例中,临时存储器位置或寄存器可能用于存储(例如)结束值使得可执行用以确定差值的数学运算而不针对每一停止值使用专门存储器位置。在一实例中,所述差还可由GPU 12 计算且在对应存储器位置中累计。
如上文所描述,本文中所描述的系统和方法可执行各种查询,例如遮挡查询、时戳查询、管线状态查询(管线统计)等。举例来说,这些系统和方法可执行两个查询:查询 ABC和查询BC,一个嵌套在另一个中。将理解,三个或三个以上嵌套查询也是可能的。
在两个查询的实例中,可以一个嵌套在另一个中的方式执行。在所述实例中,针对查询ABC,三个存储器位置可复位到0。举例来说,如图6中所说明,针对查询ABC,用于遮挡查询计数器开始值、遮挡查询计数器结束值和累计最终结果的QueryABC结果存储器中的存储器位置可复位到0。针对查询BC,三个存储器位置也可复位到0。举例来说,如图6中所说明,针对查询BC,用于遮挡查询计数器开始值、遮挡查询计数器结束值和累计最终结果的QueryBC结果存储器中的存储器位置可复位到0。当对于三角形ABC的查询开始时,查询ABC的计数器开始值(值SABC)可写入到查询ABC的查询计数器开始值部分。此可借助使用硬件命令写入到存储器。举例来说,如图6中所说明,开始值可写入到QueryABC结果存储器位置遮挡查询计数器开始值。
在一个实例中,查询BC可为嵌套查询。查询BC的查询计数器开始值(值SBC)可写入到查询BC存储器的查询计数器开始值,即QueryBC结果存储器的查询计数器开始值。在一个实例中,QueryABC可在查询BC之前结束。因此,查询ABC的查询结束值 (值EABC)可写入到QueryABC结果存储器的遮挡查询计数器结束值。可例如由处理器 (例如CPU 6或GPU 12)执行累计,且结果可写入到QueryABC存储器的累计最终结果存储器位置。类似地,当查询BC完成时,硬件命令可将查询BC的查询计数器结束值(值EBC)写入到QueryBC结果存储器的查询计数器结束值存储器位置。可例如由处理器(例如CPU 6或GPU 12)执行累计,且结果可写入到QueryBC结果存储器的累计最终结果存储器位置。
图7为说明根据本发明的技术的实例遮挡查询的概念图。在图7的所说明的实例中,绘制所有“瓦片”的命令框700包含四个仓或瓦片。图7的实例中说明ABC和BC的查询。初始地,在702处,针对查询ABC,三个存储器位置复位到0。在704处,针对查询BC,三个存储器位置也复位到0。查询ABC的查询计数器开始值(值SABC)写入到查询ABC存储器的查询计数器开始值部分。此可在708处使用硬件命令706写入。将理解,在一些实例中,硬件命令706可由软件或硬件与软件的某一组合代替。
在图7的所说明的实例中,查询BC为嵌套查询。硬件命令706在710处将查询BC 的查询计数器开始值(值SBC)写入到查询BC存储器的查询计数器开始值。硬件命令706 在712处将查询ABC的查询结束值(值EABC)写入到查询ABC存储器的查询计数器结束值。累计可使用例如硬件命令执行且在714处写入到查询ABC存储器的累计最终结果存储器位置。类似地,硬件命令706在716处将查询BC的查询计数器结束值(值EBC) 写入到查询BC存储器的查询计数器结束值存储器位置。可执行累计且在718处将其写入到QueryBC存储器的累计最终结果存储器位置。
如上文所描述,其它实例可能针对每一查询仅使用一个或两个存储器位置。举例来说,在两个存储器位置实施方案中,初始地针对查询ABC,两个存储器位置复位到0 而非三个,且针对查询BC,两个存储器位置也复位到0。查询ABC的查询计数器开始值(值SABC)写入到查询ABC存储器的查询计数器开始值部分。此可借助硬件命令。
对于查询BC,硬件命令(或在一些实例中软件)将查询BC的查询计数器开始值(值SBC)写入到查询BC存储器的查询计数器开始值,且将查询ABC的查询结束值(值 EABC)写入到查询ABC存储器的查询计数器结束值。可执行累计且将其写入到查询 ABC的开始或停止存储器位置中的一或两者。类似地,硬件命令将查询BC的查询计数器结束值(值EBC)写入到查询BC存储器的查询计数器结束值。可执行累计且将其写入到查询BC的开始或停止存储器位置中的一或两者。另一实例可通过将开始计数器值保存到存储器而使用两个存储器位置。在此实例中,结束计数器值并未存储在存储器中而是直接从开始计数器值存储器位置减去。累计结果(减法的结果)可随后存储到存储器。
类似地,在一些实例中,单一存储器位置或单一专门存储器位置可能用于每一查询。举例来说,临时存储器或寄存器可能用于存储计数器结束值,且结果可写入到与对应计数器开始值相同的存储器位置。在其它实例中,计数器的读取和从存储器中的值的差运算可允许使用单一存储器位置。此可通过在单一操作中存储计数器开始值且随后稍后读取停止计数器值,执行开始和停止计数器值的差运算以及用结果重写开始计数器值而进行。将理解,使用查询的各种专门存储器位置与临时存储器位置组合来(例如)计算各种结果的其它配置也是可能的。
在一些实例中,临时寄存器可保持计数器开始值,且结束计数器值可能也不被存储到存储器。开始计数器寄存器值可直接从结束计数器值减去,且因而仅最终累计结果存储于存储器位置中。
在一个实例中,一些系统、方法和装置可包含开始存储器位置,但不将结束计数器值存储到存储器。可直接减去结束值。举例来说,存储在开始存储器位置中的开始计数器值可从结束计数器值减去且保存到第二存储器位置。因此,此实例可使用两个存储器位置。
另一实例可使用一个存储器位置。此实例可不存储开始计数器值。而是,可实际上使用寄存器。结束计数器值也可能不被存储,而是可从结束值减去寄存器中的开始值而不将结束值保存到存储器。累计结果可随后存储到存储器。
在本发明的一个实例中,一种系统、方法或设备可执行查询且使用每查询仅三个存储器位置获得累计结果,而不管组成3D场景的瓦片的数目如何。此外,每瓦片结果的累计可由GPU 12在其处理每一瓦片时进行。在最后一个瓦片由GPU 12处理之后,最终累计结果可已经可用。
在另一实例中,一种系统、方法或设备可使用每查询仅两个或更少存储器位置获得查询结果,而不管包括3D场景的瓦片的数目如何。类似于以上实例,每瓦片结果的累计可由GPU 12在其处理每一瓦片时进行。再次,在最后一个瓦片由GPU 12处理之后,最终累计结果可已经可用。
在一些实例中,用于绘制图3的Tri A、Tri B和Tri C的渲染命令将执行四次-针对每一瓦片执行一次。可针对每一瓦片执行用以复位、开始和停止遮挡查询计数器的硬件命令和用以写出计数器值的命令。
在一些实例中,可允许嵌套遮挡查询。因此,可能不可能在每一瓦片中复位例如硬件或软件计数器等计数器。实例可需要存储每瓦片的开始和结束计数器值。
在一实例中,查询处理可较存储器有效。一些实例可维持每查询仅三个、两个乃至一个存储器位置,这取决于实施本发明的技术的(例如)处理器的数学处理能力。
举例来说,一些系统、方法或设备可执行图形处理系统中的遮挡查询。此可包含在遮挡查询开始时读取运行计数器以确定开始值。此开始值可存储在第一存储器位置中。在一实例中,运行计数器对离散图形实体计数。本发明的实例系统、方法或设备可在遮挡查询结束时读取运行计数器以确定结束值。此结束值可存储在第二存储器位置中。另外,这些系统、方法或设备可从结束值减去开始值以确定结果。此值可存储在第三存储器位置中。在另一实例中,开始值可存储在第一存储器位置中。另外,结束值可存储在第二存储器位置中,且通过从结束值减去开始值而确定的值(即,结果)可存储在第一和第二存储器位置中的一或多者中,因此仅需要两个存储器位置。在又一实例中,如果可在一个步骤中读取和处理计数值,那么开始值可存储在第一存储器位置中。可在单一步骤中读取结束计数值和处理所述两个值,结果可能存储在第一存储器位置中,因此仅需要一个存储器位置。
在一些实例中,结果累计可由GPU 12(代替CPU 6)在处理每一瓦片时执行。在渲染所有瓦片之后,最终查询结果在例如“累计最终结果”存储器位置中可用。
执行图形处理系统中的遮挡查询的实例方法可包含在遮挡查询开始时读取运行计数器以确定开始值。运行计数器可对离散图形实体计数。所述方法可包含在遮挡查询结束时读取运行计数器以确定结束值,以及从结束值减去开始值以确定结果。离散图形实体可为像素或多边形。
在一实例中,开始值存储在第一存储器位置中,结束值存储在第二存储器位置中,且结果存储在第三存储器位置中。在另一实例中,开始值存储在第一存储器位置中,结束值存储在第二存储器位置中,且结果重写第一或第二存储器位置中的一者。
在一实例中,可通过以下操作执行嵌套第二遮挡查询:(1)在第二遮挡查询开始时读取运行计数器以确定第二开始值,(2)在第二遮挡查询结束时读取运行计数器以确定第二结束值,以及(3)从第二结束值减去第二开始值以确定结果。
这些实例方法中的一或多者可组合。另外,各种装置、系统和设备可实施这些方法。
图8为说明实施本发明的一或多个方面的实例方法的流程图。例如GPU 12、CPU 6或其它处理逻辑等处理器可执行软件,致使其在查询开始时读取计数器44以确定开始值(800)。计数器44(图2)可为对离散图形实体计数的运行计数器。计数器44可连接到总线18且可借此由处理器存取。在其它实例中,计数器44可为存储器10的一部分。
如上文所论述,在各种实例中,处理器(例如,GPU 12或CPU 6)可使用存储器10 存储从计数器44读取的值,例如开始值。举例来说,开始值可存储在存储器10、寄存器或某一其它存储器或存储位置中。在一个实例中,当查询开始时,可读取所述查询的计数器开始值。此值可随后写入到查询存储器的查询计数器开始值部分。举例来说,如图6中所说明,开始值可写入到QueryABC结果存储器位置遮挡查询计数器开始值。
所述软件还可致使所述处理器在查询结束时读取计数器44以确定结束值(802)。另外,结束值也可存储在存储器10、寄存器或某一其它存储器或存储位置中。举例来说,查询ABC的查询结束值(值EABC)可写入到图6的QueryABC结果存储器的遮挡查询计数器结束值。可例如由处理器(例如CPU 6或GPU 12)执行累计,且结果可写入到 QueryABC存储器的累计最终结果存储器位置。类似地,当查询BC完成时,硬件命令可将查询BC的查询计数器结束值(值EBC)写入到QueryBC结果存储器的查询计数器结束值存储器位置。可例如由处理器(例如CPU 6或GPU 12)执行累计,且结果可写入到 QueryBC结果存储器的累计最终结果存储器位置。
计数器44可已在开始值与结束值之间增加自从查询开始已经处理的离散图形实体的数目。这两个值之间的差指示查询期间已发生的计数的数目。因此,所述软件还可致使所述处理器从结束值减去开始值以确定结果(804)。举例来说,开始值可从存储器10 读取且随后从结束值减去,其可能存储在寄存器中。结束值可存储在存储器10、寄存器或某一其它存储器或存储位置中。
在一些实例中,开始值可存储在例如存储器10中的第一存储器位置中。所述结果可存储在例如存储器10中的第三存储器位置中。在另一实例中,开始值可存储在例如存储器10中的第一存储器位置中。结束值可存储在例如存储器10中的第二存储器位置中。所述结果可重写第一或第二存储器位置中的一者。
一些实例可进一步包含嵌套第二查询。嵌套可通过以下操作进行:在第二查询开始时读取运行计数器以确定第二开始值,在第二查询结束时读取运行计数器以确定第二结束值,以及从第二结束值减去第二开始值以确定结果。
本发明中所描述的技术可至少部分实施于硬件、软件、固件或其任何组合中。举例来说,所描述技术的各种方面可实施于一或多个处理器内,包含一或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA),或任何其它等效集成或离散逻辑电路,以及此等组件的任何组合。术语“处理器”或“处理电路”可大体上指前述逻辑电路中的任一者(单独或结合其它逻辑电路)或例如执行处理的离散硬件等任何其它等效电路。
此硬件、软件和固件可实施于相同装置内或单独装置内以支持本发明中所描述的各种操作和功能。另外,所描述单元、模块或组件中的任一者可一起或单独作为离散但可互操作逻辑装置而实施。将不同特征描述为模块或单元意图强调不同功能方面且未必暗示此等模块或单元必须由单独硬件或软件组件实现。实际上,与一或多个模块或单元相关联的功能性可由单独硬件、固件和/或软件组件执行,或集成到共同或单独硬件或软件组件内。
本发明中所描述的技术也可存储、体现或编码于计算机可读媒体(例如,存储指令的计算机可读存储媒体)中。嵌入或编码于计算机可读媒体中的指令可致使一或多个处理器执行本文中所描述的技术(例如,当由一或多个处理器执行指令时)。计算机可读存储媒体可包含随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储(PROM)、可擦除可编程只读存储器(EPROM)、电子可擦除可编程只读存储器(EEPROM)、快闪存储器、硬盘、CD-ROM、软盘、卡盒、磁性媒体、光学媒体或其它有形计算机可读存储媒体。
计算机可读媒体可包含计算机可读存储媒体,其对应于例如上文所列的有形存储媒体等有形存储媒体。计算机可读媒体还可包括通信媒体,其包含促进计算机程序从一个地点到另一地点的传送(例如,根据通信协议)的任何媒体。以此方式,短语“计算机可读媒体”大体上可对应于(1)非暂时性有形计算机可读存储媒体,和(2)例如暂时性信号或载波等非有形计算机可读通信媒体。
已描述各种方面和实例。然而,可在不脱离所附权利要求书的范围的情况下对本发明的结构或技术作出修改。
Claims (23)
1.一种执行图形处理系统中的查询的方法,所述方法包括:
发布多个基于瓦片的渲染查询作为至图形处理单元GPU的命令的一部分来描绘帧的所有瓦片,其中所述多个基于瓦片的渲染查询包含第一基于瓦片的渲染查询和第二基于瓦片的渲染查询,其中所述第一基于瓦片的渲染查询与多个基元相关联,且其中所述第二基于瓦片的渲染查询与所述第一基于瓦片的渲染查询所关联的多个基元的基元子集相关联;
针对所述多个基于瓦片的渲染查询分配多个累计最终结果存储器位置,其中所述多个累计最终结果存储器位置包括分配给所述第一基于瓦片的渲染查询的第一累计最终结果存储器位置以及分配给所述第二基于瓦片的渲染查询的第二累计最终结果存储器位置,且
针对所述第一基于瓦片的渲染查询:
在所述第一基于瓦片的渲染查询开始时读取运行计数器以确定第一开始值,其中所述运行计数器对离散图形实体计数;
在所述第一基于瓦片的渲染查询结束时读取所述运行计数器以确定第一结束值;
从所述第一结束值减去所述第一开始值以确定结果,该结果指示与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体的数量;以及
将所述结果与存储在分配到所述第一基于瓦片的渲染查询的所述第一累计最终结果存储器位置中的累计器值相加;以及
针对所述第二基于瓦片的渲染查询:
在所述第二基于瓦片的渲染查询开始时读取运行计数器以确定第二开始值,其中针对所述第一基于瓦片的渲染查询也对所述运行计数器进行读取;
在所述第二基于瓦片的渲染查询结束时读取所述运行计数器以确定第二结束值;
从所述第二结束值减去所述第二开始值以确定第二结果,该第二结果指示与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体的数量;以及
将所述第二结果与存储在分配到所述第二基于瓦片的渲染查询的所述第二累计最终结果存储器位置中的累计器值相加;
其中所述第二开始值和第二结束值的确定嵌套在所述第一开始值和第一结束值的确定之中。
2.根据权利要求1所述的方法,其中与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体包括所述多个基元的像素,及其中与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体包括所述基元子集的像素。
3.根据权利要求1所述的方法,其中与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体包括所述多个基元,及其中与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体包括所述基元子集。
4.根据权利要求1所述的方法,其中所述第一开始值存储与所述第一累计最终结果存储器位置相分离的在第一存储器位置中,且其中所述第一结束值存储在与所述第一累计最终结果存储器位置相分离的第二存储器位置中。
5.根据权利要求1所述的方法,其中所述第一开始值存储在分配到所述第一基于瓦片的渲染查询的第一存储器位置中,其中所述第一结束值存储在分配到所述第一基于瓦片的渲染查询的第二存储器位置中,且其中所述累计器值重写到所述第一存储器位置或所述第二存储器位置中的一者。
6.根据权利要求1所述的方法,其进一步包括执行作为嵌套在所述第一基于瓦片的渲染查询之内的嵌套查询的所述第二基于瓦片的渲染查询。
7.根据权利要求1所述的方法,其中所述第一基于瓦片的渲染查询包括遮挡查询。
8.一种用于执行图形处理系统中的查询的设备,所述设备包括:
存储器,其经配置以存储图形数据;以及
图形处理单元GPU,其与所述存储器通信,所述GPU经配置以:
接收多个基于瓦片的渲染查询作为用于描绘帧的所有瓦片的命令的一部分,其中所述多个基于瓦片的渲染查询包含第一基于瓦片的渲染查询和第二基于瓦片的渲染查询,其中所述第一基于瓦片的渲染查询与多个基元相关联,且其中所述第二基于瓦片的渲染查询与所述第一基于瓦片的渲染查询所关联的多个基元的基元子集相关联;
针对所述多个基于瓦片的渲染查询分配多个累计最终结果存储器位置,其中所述多个累计最终结果存储器位置包括分配给所述第一基于瓦片的渲染查询的第一累计最终结果存储器位置以及分配给所述第二基于瓦片的渲染查询的第二累计最终结果存储器位置;以及
针对所述第一基于瓦片的渲染查询:
在所述第一基于瓦片的渲染查询开始时读取运行计数器以确定第一开始值,其中所述运行计数器对离散图形实体计数;
在所述第一基于瓦片的渲染查询结束时读取所述运行计数器以确定第一结束值;
从所述第一结束值减去所述第一开始值以确定结果,该结果指示与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体的数量;以及
将所述结果与存储在分配到所述第一基于瓦片的渲染查询的所述第一累计最终结果存储器位置中的累计器值相加;以及
针对所述第二基于瓦片的渲染查询:
在所述第二基于瓦片的渲染查询开始时读取运行计数器以确定第二开始值,其中针对所述第一基于瓦片的渲染查询也对所述运行计数器进行读取;
在所述第二基于瓦片的渲染查询结束时读取所述运行计数器以确定第二结束值;
从所述第二结束值减去所述第二开始值以确定第二结果,该第二结果指示与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体的数量;以及
将所述第二结果与存储在分配到所述第二基于瓦片的渲染查询的所述第二累计最终结果存储器位置中的累计器值相加;
其中所述第二开始值和第二结束值的确定嵌套在所述第一开始值和第一结束值的确定之中。
9.根据权利要求8所述的设备,其中与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体包括所述多个基元的像素,及,其中与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体包括所述基元子集的像素。
10.根据权利要求8所述的设备,其中与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体包括所述多个基元,及,其中与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体包括所述基元子集。
11.根据权利要求8所述的设备,其中所述GPU进一步经配置以执行作为嵌套在所述第一基于瓦片的渲染查询之内的嵌套查询的所述第二基于瓦片的渲染查询。
12.根据权利要求8所述的设备,其中所述第一基于瓦片的渲染查询包括遮挡查询。
13.一种用于执行图形处理系统中的查询的设备,所述设备包括:
用于发布多个基于瓦片的渲染查询作为至图形处理单元GPU的命令的一部分来描绘帧的所有瓦片的装置,其中所述多个基于瓦片的渲染查询包含第一基于瓦片的渲染查询查询和第二基于瓦片的渲染查询,其中所述第一基于瓦片的渲染查询与多个基元相关联,且其中所述第二基于瓦片的渲染查询与所述第一基于瓦片的渲染查询所关联的多个基元的基元子集相关联;
用于针对所述多个基于瓦片的渲染查询分配多个累计最终结果存储器位置的装置,其中所述多个累计最终结果存储器位置包括分配给所述第一基于瓦片的渲染查询的第一累计最终结果存储器位置以及分配给所述第二基于瓦片的渲染查询的第二累计最终结果存储器位置;以及
针对所述第一基于瓦片的渲染查询:
用于在所述第一基于瓦片的渲染查询开始时读取运行计数器以确定第一开始值的装置,其中所述运行计数器对离散图形实体计数;
用于在所述第一基于瓦片的渲染查询结束时读取所述运行计数器以确定第一结束值的装置;
用于从所述第一结束值减去所述第一开始值以确定结果的装置,该结果指示与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体的数量;以及
用于将所述结果与存储在分配到所述第一基于瓦片的渲染查询的所述第一累计最终结果存储器位置中的累计器值相加的装置;以及
针对所述第二基于瓦片的渲染查询:
用于在所述第二基于瓦片的渲染查询开始时读取运行计数器以确定第二开始值的装置,其中针对所述第一基于瓦片的渲染查询也对所述运行计数器进行读取;
用于在所述第二基于瓦片的渲染查询结束时读取所述运行计数器以确定第二结束值的装置;
用于从所述第二结束值减去所述第二开始值以确定第二结果的装置,该第二结果指示与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体的数量;以及
用于将所述第二结果与存储在分配到所述第二基于瓦片的渲染查询的所述第二累计最终结果存储器位置中的累计器值相加的装置;
其中所述第二开始值和第二结束值的确定嵌套在所述第一开始值和第一结束值的确定之中。
14.根据权利要求13所述的设备,其中与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体包括像素,及其中与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体包括所述基元子集的像素。
15.根据权利要求13所述的设备,其中与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体包括所述多个基元,及其中与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体包括所述基元子集。
16.根据权利要求13所述的设备,其进一步包括用于将所述第一开始值存储在与所述第一累计最终结果存储器位置相分离的第一存储器位置中的装置、用于将所述第一结束值存储在与所述第一累计最终结果存储器位置相分离的第二存储器位置中的装置。
17.根据权利要求13所述的设备,其进一步包括用于将所述第一开始值存储在第一存储器位置中的装置、用于将所述第一结束值存储在第二存储器位置中的装置,以及用于将所述累计器值重写到所述第一存储器位置或所述第二存储器位置中的一者的装置。
18.一种其上存储有指令的计算机可读存储媒体,所述指令在执行时致使装置的一或多个处理器:
发布多个基于瓦片的渲染查询作为命令的一部分来描绘帧的所有瓦片,其中所述多个基于瓦片的渲染查询包含第一基于瓦片的渲染查询和第二基于瓦片的渲染查询,其中所述第一基于瓦片的渲染查询与多个基元相关联,且其中所述第二基于瓦片的渲染查询与所述第一基于瓦片的渲染查询所关联的多个基元的基元子集相关联;
针对所述多个基于瓦片的渲染查询分配多个累计最终结果存储器位置,其中所述多个累计最终结果存储器位置包括分配给所述第一基于瓦片的渲染查询的第一累计最终结果存储器位置以及分配给所述第二基于瓦片的渲染查询的第二累计最终结果存储器位置;以及
针对所述第一基于瓦片的渲染查询:
在所述第一基于瓦片的渲染开始时读取运行计数器以确定第一开始值,其中所述运行计数器对离散图形实体计数;
在所述第一基于瓦片的渲染查询结束时读取所述运行计数器以确定第一结束值;
从所述第一结束值减去所述第一开始值以确定结果,该结果指示与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体的数量;以及
将所述结果与存储在分配到所述第一基于瓦片的渲染查询的所述第一累计最终结果存储器位置中的累计器值相加;以及
针对所述第二基于瓦片的渲染查询:
在所述第二基于瓦片的渲染查询开始时读取运行计数器以确定第二开始值,其中针对所述第一基于瓦片的渲染查询也对所述运行计数器进行读取;
在所述第二基于瓦片的渲染查询结束时读取所述运行计数器以确定第二结束值;
从所述第二结束值减去所述第二开始值以确定第二结果,该第二结果指示与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体的数量;以及
将所述第二结果与存储在分配到所述第二基于瓦片的渲染查询的所述第二累计最终结果存储器位置中的累计器值相加;
其中所述第二开始值和第二结束值的确定嵌套在所述第一开始值和第一结束值的确定之中。
19.根据权利要求18所述的计算机可读存储媒体,其中与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体包括所述多个基元的像素,及其中与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体包括所述基元子集的像素。
20.根据权利要求18所述的计算机可读存储媒体,与所述第一基于瓦片的渲染查询相关联的所述多个基元的离散图形实体包括所述多个基元,及其中与所述第二基于瓦片的渲染查询相关联的所述基元子集的离散图形实体包括所述基元子集。
21.根据权利要求18所述的计算机可读存储媒体,其中所述指令在执行时致使所述装置的所述一或多个处理器将所述第一开始值存储在与所述第一累计最终结果存储器位置相分离的第一存储器位置中,且将所述第一结束值存储在与所述第一累计最终结果存储器位置相分离的第二存储器位置中。
22.根据权利要求18所述的计算机可读存储媒体,其中所述指令在执行时致使所述装置的所述一或多个处理器将所述第一开始值存储在分配到所述第一基于瓦片的渲染查询的第一存储器位置中,将所述第一结束值存储在分配到所述第一基于瓦片的渲染查询的第二存储器位置中,且将所述结果重写到所述第一存储器位置或所述第二存储器位置中的一者。
23.根据权利要求18所述的计算机可读存储媒体,其中所述第一基于瓦片的渲染查询包括遮挡查询。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361817154P | 2013-04-29 | 2013-04-29 | |
US61/817,154 | 2013-04-29 | ||
US14/014,118 | 2013-08-29 | ||
US14/014,118 US9589314B2 (en) | 2013-04-29 | 2013-08-29 | Query processing for tile-based renderers |
PCT/US2014/034833 WO2014179097A1 (en) | 2013-04-29 | 2014-04-21 | Query processing for tile-based renderers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105144244A CN105144244A (zh) | 2015-12-09 |
CN105144244B true CN105144244B (zh) | 2018-06-15 |
Family
ID=51788876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480023170.XA Expired - Fee Related CN105144244B (zh) | 2013-04-29 | 2014-04-21 | 用于基于瓦片的渲染器的查询处理的方法、设备和计算机可读存储媒体 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9589314B2 (zh) |
EP (1) | EP2992511A1 (zh) |
JP (1) | JP2016520909A (zh) |
KR (1) | KR20160003101A (zh) |
CN (1) | CN105144244B (zh) |
WO (1) | WO2014179097A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9569883B2 (en) * | 2013-12-12 | 2017-02-14 | Intel Corporation | Decoupled shading pipeline |
US9842428B2 (en) * | 2014-06-27 | 2017-12-12 | Samsung Electronics Co., Ltd. | Dynamically optimized deferred rendering pipeline |
US9298769B1 (en) * | 2014-09-05 | 2016-03-29 | Futurewei Technologies, Inc. | Method and apparatus to facilitate discrete-device accelertaion of queries on structured data |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
WO2017107183A1 (en) * | 2015-12-25 | 2017-06-29 | Intel Corporation | Alpha blending and display update bandwidth saving during render and display operations |
GB201713052D0 (en) * | 2017-08-15 | 2017-09-27 | Imagination Tech Ltd | Single pass rendering for head mounted displays |
CN111209116B (zh) * | 2020-01-06 | 2023-09-12 | 西安芯瞳半导体技术有限公司 | 一种分配显存空间的方法、装置及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101057261A (zh) * | 2004-11-15 | 2007-10-17 | Arm挪威股份有限公司 | 三维图形处理 |
CN102216941A (zh) * | 2008-08-19 | 2011-10-12 | 数字标记公司 | 用于内容处理的方法和系统 |
CN102484674A (zh) * | 2010-07-09 | 2012-05-30 | 索尼公司 | 图像处理装置和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636215B1 (en) | 1998-07-22 | 2003-10-21 | Nvidia Corporation | Hardware-assisted z-pyramid creation for host-based occlusion culling |
US6952206B1 (en) | 2002-08-12 | 2005-10-04 | Nvidia Corporation | Graphics application program interface system and method for accelerating graphics processing |
US7425956B1 (en) | 2005-06-21 | 2008-09-16 | Nvidia Corporation | System and method for occlusion testing with deferred rendering |
US7519797B1 (en) * | 2006-11-02 | 2009-04-14 | Nividia Corporation | Hierarchical multi-precision pipeline counters |
US8471858B2 (en) | 2009-06-02 | 2013-06-25 | Qualcomm Incorporated | Displaying a visual representation of performance metrics for rendered graphics elements |
US8902228B2 (en) * | 2011-09-19 | 2014-12-02 | Qualcomm Incorporated | Optimizing resolve performance with tiling graphics architectures |
GB201116438D0 (en) * | 2011-09-22 | 2011-11-02 | Advanced Risc Mach Ltd | Occlusion queries in graphics processing |
-
2013
- 2013-08-29 US US14/014,118 patent/US9589314B2/en not_active Expired - Fee Related
-
2014
- 2014-04-21 EP EP14725891.7A patent/EP2992511A1/en not_active Withdrawn
- 2014-04-21 KR KR1020157033589A patent/KR20160003101A/ko not_active Application Discontinuation
- 2014-04-21 WO PCT/US2014/034833 patent/WO2014179097A1/en active Application Filing
- 2014-04-21 JP JP2016510721A patent/JP2016520909A/ja not_active Ceased
- 2014-04-21 CN CN201480023170.XA patent/CN105144244B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101057261A (zh) * | 2004-11-15 | 2007-10-17 | Arm挪威股份有限公司 | 三维图形处理 |
CN102216941A (zh) * | 2008-08-19 | 2011-10-12 | 数字标记公司 | 用于内容处理的方法和系统 |
CN102484674A (zh) * | 2010-07-09 | 2012-05-30 | 索尼公司 | 图像处理装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20140320512A1 (en) | 2014-10-30 |
KR20160003101A (ko) | 2016-01-08 |
US9589314B2 (en) | 2017-03-07 |
EP2992511A1 (en) | 2016-03-09 |
JP2016520909A (ja) | 2016-07-14 |
CN105144244A (zh) | 2015-12-09 |
WO2014179097A1 (en) | 2014-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105144244B (zh) | 用于基于瓦片的渲染器的查询处理的方法、设备和计算机可读存储媒体 | |
CN105122310B (zh) | 用于基于瓦片的渲染的帧内时戳 | |
CN105659291B (zh) | 选择性合并部分覆盖图块以执行分层z剔除 | |
CN106233326B (zh) | 图形处理中基于显现目标的灵活显现 | |
US9483861B2 (en) | Tile-based rendering | |
US9177351B2 (en) | Multi-primitive graphics rendering pipeline | |
CN103810669B (zh) | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 | |
EP3489907B1 (en) | Shader program execution techniques for use in graphics processing | |
EP3108452B1 (en) | Shader pipeline with shared data channels | |
TWI514315B (zh) | 取樣階層式深度地圖的系統、方法,及電腦程式產品 | |
CN107209923A (zh) | 图形处理中的混合渲染 | |
US20170004647A1 (en) | Rendering graphics data on demand | |
KR101681056B1 (ko) | 정점 처리 방법 및 장치 | |
CN109196549A (zh) | 动态低分辨率z测试大小 | |
CN107750373A (zh) | 使用光线跟踪渲染以生成可见性流 | |
GB2525223A (en) | Graphics processing systems | |
US9305324B2 (en) | System, method, and computer program product for tiled deferred shading | |
US9269179B2 (en) | System, method, and computer program product for generating primitive specific attributes | |
CN103871019B (zh) | 用于处理路径图像以促进光栅化的方法和设备 | |
CN108027955A (zh) | 经带宽压缩的图形数据的存储技术 | |
US9721381B2 (en) | System, method, and computer program product for discarding pixel samples | |
US9905037B2 (en) | System, method, and computer program product for rejecting small primitives | |
CN108604386A (zh) | 用纹理单元中的反馈来进行多步纹理处理 | |
CN109074673A (zh) | 通过图形处理单元的纹理单元的常数乘法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180615 Termination date: 20190421 |