CN105210111A - 基于每仓可见性信息以及添加的线内操作的渲染命令的条件性执行 - Google Patents
基于每仓可见性信息以及添加的线内操作的渲染命令的条件性执行 Download PDFInfo
- Publication number
- CN105210111A CN105210111A CN201480026737.9A CN201480026737A CN105210111A CN 105210111 A CN105210111 A CN 105210111A CN 201480026737 A CN201480026737 A CN 201480026737A CN 105210111 A CN105210111 A CN 105210111A
- Authority
- CN
- China
- Prior art keywords
- stored
- impact damper
- storehouse
- instruction
- indirect impact
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
GPU可基于可见性流确定是否执行存储在间接缓冲器中的指令。所述指令包含用于渲染与多个仓中的仓相关联的基元的指令,且包含一或多个次级操作。所述可见性流指示与所述仓相关联的所述基元中的一或多者是否将在最后渲染的场景中可见。所述GPU可响应于确定不执行存储在所述间接缓冲器中的所述指令而执行存储在阴影间接缓冲器中的一或多个次级操作。所述GPU可响应于确定执行存储在所述间接缓冲器中的所述指令而执行所述指令用于渲染与所述多个仓中的所述仓相关联的所述基元,以及执行存储在所述间接缓冲器中的所述一或多个次级操作。
Description
本申请案主张2013年5月31日申请的第61/829,564号美国临时申请案的权益,所述临时申请案的全部内容以引用的方式并入本文中。
技术领域
本发明涉及用于图形处理的技术,且更明确地说涉及用于渲染图形处理中的基元的技术。
背景技术
用于显示的视觉内容(例如用于图形用户接口和视频游戏的内容)可由图形处理单元(GPU)产生。GPU可将二维(2D)或三维(3D)图形对象转换为可在显示装置上显示的2D像素表示。将关于3D对象的信息转换为可显示的2D像素表示被称为像素渲染,且可需要相当大的存储器和处理功率。
发明内容
大体来说,本发明描述用于基于每仓可见性信息的针对基于仓的渲染的渲染指令的条件性执行的技术。通过在仓中的基元是可见的情况下且在一些实例中仅在该情况下执行仓的渲染指令,图形处理单元(GPU)可改进其渲染包括基元的图形对象和场景的性能。GPU可基于指示仓中是否有任何基元是可见的仓的可见性流而确定所述仓中的基元是否在经渲染图形对象或场景中可见。
在一个方面中,本发明针对一种用于渲染场景的方法。所述方法包含基于可见性流确定是否执行存储在间接缓冲器中的指令,其中存储在间接缓冲器中的所述指令包含用于渲染与多个仓中的仓相关联的基元的指令,且进一步包含一或多个次级操作,且其中所述可见性流指示所述仓是否与将在最后渲染的场景中可见的至少一个基元相关联。所述方法进一步包含响应于基于可见性流确定不执行存储在间接缓冲器中的指令而执行存储在阴影间接缓冲器中的一或多个操作,其中存储在阴影间接缓冲器中的所述一或多个操作包含所述一或多个次级操作。所述方法进一步包含响应于基于可见性流确定要执行存储在间接缓冲器中的指令而执行存储在间接缓冲器中的所述指令,用于渲染与所述多个仓中的所述仓相关联的基元,以及执行存储在间接缓冲器中的所述一或多个次级操作。
在另一方面中,本发明针对一种经配置用于图形处理的装置。所述装置包含图形处理单元(GPU),其经配置以:基于可见性流确定是否执行存储在间接缓冲器中的指令,其中存储在间接缓冲器中的所述指令包含用于渲染与多个仓中的仓相关联的基元的指令且进一步包含一或多个次级操作,且其中所述可见性流指示所述仓是否与将在最后渲染的场景中可见的至少一个基元相关联;响应于基于可见性流确定不执行存储在间接缓冲器中的指令而执行存储在阴影间接缓冲器中的一或多个操作,其中存储在阴影间接缓冲器中的所述一或多个操作包含所述一或多个次级操作;以及响应于基于可见性流确定要执行存储在间接缓冲器中的指令而执行存储在所述间接缓冲器中的指令,用于渲染与所述多个仓中的所述仓相关联的基元,以及执行存储在所述间接缓冲器中的所述一或多个次级操作。
在另一方面中,本发明针对一种计算机可读存储媒体,其上存储有指令,所述指令在执行时致使一或多个处理器执行操作。所述操作包含基于可见性流确定是否执行存储在间接缓冲器中的指令,其中存储在间接缓冲器中的所述指令包含用于渲染与多个仓中的仓相关联的基元的指令,且进一步包含一或多个次级操作,且其中所述可见性流指示所述仓是否与将在最后渲染的场景中可见的至少一个基元相关联。所述操作进一步包含响应于基于可见性流确定不执行存储在间接缓冲器中的指令而执行存储在阴影间接缓冲器中的一或多个操作,其中存储在阴影间接缓冲器中的所述一或多个操作包含所述一或多个次级操作。所述操作进一步包含响应于基于可见性流确定要执行存储在间接缓冲器中的指令而执行存储在间接缓冲器中的所述指令,用于渲染与所述多个仓中的所述仓相关联的基元,以及执行存储在间接缓冲器中的所述一或多个次级操作。
在另一方面中,本发明针对一种装置。所述装置包含用于基于可见性流确定是否执行存储在间接缓冲器中的指令的装置,其中存储在间接缓冲器中的所述指令包含用于渲染与多个仓中的仓相关联的基元的指令且进一步包含一或多个次级操作,且其中所述可见性流指示所述仓是否与将在最后渲染的场景中可见的至少一个基元相关联。所述装置进一步包含响应于基于可见性流确定不执行存储在间接缓冲器中的指令,用于执行存储在阴影间接缓冲器中的一或多个操作的装置,其中存储在阴影间接缓冲器中的所述一或多个操作包含所述一或多个次级操作。所述装置进一步包含响应于基于可见性流确定要执行存储在间接缓冲器中的指令,用于执行存储在间接缓冲器中的所述指令用于渲染与所述多个仓中的所述仓相关联的基元以及执行存储在间接缓冲器中的所述一或多个次级操作的装置。
附图说明
图1为说明根据本发明的一些方面用于渲染三维场景的处理器、图形处理单元和系统存储器的框图。
图2是说明根据本发明的一些方面基于瓦片的渲染架构中的场景的瓦片的概念图。
图3为展示根据本发明的方面的在仓之间划分的基元的概念图。
图4为说明根据本发明的一些方面用于使用基于瓦片的GPU渲染图形场景的过程的流程图。
图5为说明根据本发明的一些方面用于装仓和渲染的命令缓冲器的概念图。
图6为说明可经配置以实施本发明的一或多个方面的装置的实例的框图。
具体实施方式
图形处理单元(GPU)常常用于渲染三维场景。因为三维(3D)场景的此渲染可极其存储器带宽集中,所以专门的图形存储器(GMEM)位于GPU的图形处理核心附近使得其具有极其高的存储器带宽。场景可由GPU的图形处理核心渲染到GMEM,且所述场景可从GMEM拆分到存储器(例如,帧缓冲器)使得所述场景可随后在显示装置处显示。然而,因为GMEM的大小可归因于物理区域约束而为有限的,所以GMEM可不具有足够的存储器容量来含有整个三维场景。实际上,三维场景可需要拆分成瓦片,使得构成所述场景的每一瓦片可配合到GMEM中。举例来说,如果GMEM能够存储512kB的数据,那么场景可划分成瓦片使得每一瓦片中包含的像素数据小于或等于512kB。以此方式,可通过将场景划分为可渲染到GMEM中的瓦片且将场景的每一瓦片个别地渲染到GMEM中,将来自GMEM的经渲染瓦片存储到帧缓冲器,以及针对场景的每一瓦片重复所述渲染和存储,来渲染所述场景。因此,所述场景可使用多个渲染遍次逐瓦片渲染以渲染场景的每一瓦片。
场景可由基元(例如三角形)组成,且构成所述场景的瓦片中的每一者可包含基元中的一或多者。构成场景的瓦片可各自与存储每一相应瓦片中包含的基元的存储器中的仓相关联。将场景的瓦片渲染到GMEM中可包含执行命令以将相关联仓中的基元渲染到GMEM中。GPU的装仓遍次可将构成场景的基元分类到适当仓中。GPU的装仓遍次还可针对每一仓创建可见性流,其指示所述仓中是否有任何基元将在最终渲染的场景中可见。
用以渲染仓中的基元的命令加载在间接缓冲器中,且GPU执行存储在间接缓冲器中的命令以渲染所述仓中包含的基元。如果仓的可见性流指示所述仓不含任何可见基元(即,仓中的所有基元将在最终渲染的场景中不可见),那么在GPU通过跳过执行与仓相关联的间接缓冲器中的指令而不渲染所述仓中的基元的情况下可改进性能。
然而,除存储命令流以渲染特定仓中的基元之外,许多现代图形应用或合成系统还使用间接缓冲器来存储次级命令。这些次级命令可为与渲染特定仓的基元不相关的命令。举例来说,次级命令可包含线内操作(例如,清除多个区域的快速清除、将图像块从场景的一个部分传递到另一部分的线内/可形成瓦片的位块传输,和其它位块传递)和其它状态更新。虽然线内操作和其它状态更新可依据设计不贡献于可见性流,但其可贡献于场景的所产生的渲染。因此,如果因为仓的可见性流指示不存在与所述仓相关联的可见基元因此GPU并不执行间接缓冲器中的与仓相关联的那些指令,那么也不执行间接缓冲器中的次级命令,借此导致最终场景的讹误。
为确保即使GPU基于仓的可见性流确定所述仓并不包含将在最终渲染的场景中可见的任何基元所述GPU也执行间接缓冲器中包含的次级命令,GPU(和/或图形驱动器)可分配存储器(例如,系统存储器)中的阴影间接缓冲器,将来自仓的间接缓冲器的次级命令存储到所述阴影间接缓冲器,且GPU可执行存储在阴影间接缓冲器中的次级命令。当针对给定仓无基元可见时,GPU可条件性地不执行存储在原始渲染间接缓冲器中的用以渲染基元的命令(例如,绘制命令),且可改为执行阴影间接缓冲器中的次级命令(例如,线内操作和状态更新)。以此方式,GPU可仍执行一起存储在与特定仓的命令流相同的间接缓冲器中的次级命令,即使所述仓中无基元将在最终渲染的场景中可见。
阴影间接缓冲器为仓的对应间接缓冲器的子集,因为其在一些实例中可仅包含对应间接缓冲器的次级命令。在一些实例中,GPU可分配存储器中的阴影间接缓冲器,且包含一或多个次级命令(用于渲染基元的指令除外)的每一仓可将所述一或多个次级命令存储在阴影间接缓冲器中。阴影间接缓冲器可由GPU在与用用于渲染仓的基元的指令填充间接缓冲器相同的时间用所述仓的次级命令填充。在其它实例中,如果GPU基于可见性流确定对应仓并不包含将在最后渲染的场景中可见的任何基元,那么阴影间接缓冲器可存储仓的次级命令。
存储线内操作和用于渲染相同仓中的基元的命令两者的GPU的任何基于瓦片的渲染可基于与对应仓相关联的可见性流条件性地执行阴影间接缓冲器中的指令而非对应间接缓冲器中的指令。通过跳过并不包含用于渲染任何可见基元的命令的间接缓冲器的解析和执行同时仍执行阴影间接缓冲器中的线内操作,GPU的渲染性能可得以改进而不影响最终渲染的场景。
图1为说明根据本发明的一些方面用于渲染三维场景的处理器、图形处理单元和系统存储器的框图。处理器102可执行软件应用112、操作系统114和图形驱动器116。系统存储器118可包含间接缓冲器和阴影间接缓冲器,其存储用于渲染基元的命令流以及待由GPU120执行的次级命令。GPU120可包含图形存储器122。图形存储器122可为上文描述的GMEM。在一些实例中,图形存储器122可与GPU120在“芯片上”。在一些情况下,图1中展示的所有硬件元件可在(例如)芯片上系统(SoC)设计中的芯片上。
在图1的实例中,处理器102、系统存储器118和GPU120可为装置的一部分。装置的实例包含(但不限于)视频装置、媒体播放器、机顶盒、无线手持机(例如移动电话和所谓的智能电话)、个人数字助理(PDA)、台式计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置等等。
处理器102可为中央处理单元(CPU)。GPU120可为处理单元,其经配置以执行例如产生和输出图形数据以供在显示器上呈现等图形相关功能,以及执行采用由GPU120提供的大规模处理并行性的非图形相关功能。举例来说,GPU120可执行图形应用和非图形应用两者。因为GPU120可除图形处理能力之外还提供通用处理能力,所以GPU120可被称为通用GPU(GP-GPU)。
处理器102和GPU120的实例包含(但不限于)数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路。在一些实例中,GPU120可为微处理器,其经设计用于例如提供用于处理图形以及用于执行非图形相关应用的大规模并行处理等特定用途。此外,尽管处理器102和GPU120说明为单独组件,但本发明的各方面不限于此。举例来说,处理器102和GPU120可驻留在共同集成电路(IC)中。
在CPU102上执行的软件应用112可包含一或多个图形渲染指令,其指示CPU102致使将图形数据渲染到显示器(未图示)。在一些实例中,图形渲染指令可包含软件指令,其可符合图形应用编程接口(API),例如开放式图形库API、开放式图形库嵌入系统(OpenGLES)API、Direct3DAPI、X3DAPI、RenderManAPI、WebGLAPI,或任何其它公共或专有标准图形API。为了处理图形渲染指令,CPU102可将一或多个图形渲染命令发布到GPU120(例如,经由图形驱动器116)以致使GPU120执行对图形数据的一些或全部渲染。在一些实例中,待渲染的图形数据可包含例如点、线、三角形、四边形、三角形带等图形基元的列表。
GPU120可经配置以执行图形操作以将一或多个图形基元渲染到显示器。因此,当在CPU102上执行的软件应用中的一者需要图形处理时,CPU102可将图形命令和图形数据提供到GPU120用于渲染到显示器。所述图形数据可包含(例如)绘制命令、状态信息、基元信息、纹理信息等。在一些情况下,GPU120可内置有高度并行结构,所述高度并行结构提供复合图形相关操作的比CPU102更有效的处理。举例来说,GPU120可包含经配置而以并行方式对多个顶点或像素操作的多个处理元件。在一些情况下,GPU120的高度并行性质允许GPU120比使用CPU102直接将场景绘制到显示器更快速地将图形图像(例如,GUI和二维(2D)及/或三维(3D)图形场景)绘制到显示器上。
GPU120可直接耦合到图形存储器122。换句话说,GPU120可使用本地存储装置代替芯片外存储器而在本地处理数据。此允许GPU120通过消除GPU120经由总线读取和写入数据的需要而以更有效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU120可不包含单独存储器,而是利用系统存储器118。图形存储器122可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)和一或多个寄存器。
CPU102和/或GPU120可将经渲染图像数据存储在帧缓冲器124中。帧缓冲器124可为独立存储器或可分配在系统存储器118内。显示处理器(未图示)可从帧缓冲器124检索经渲染图像数据且在显示器上显示所述经渲染图像数据。
系统存储器118为装置的系统存储器且驻留在处理器102和GPU120外部,即相对于处理器102在芯片外,且相对于GPU120在芯片外。系统存储器118可存储由处理器102和GPU120执行的应用。此外,系统存储器118可存储所执行应用对其进行操作的数据,以及由应用产生的数据。然而,并非所有此数据在每一实例中都需要存储在系统存储器118中。在一些情况下,数据可本地存储在处理器102或GPU120上。举例来说,所述数据中的一些或全部可本地存储在芯片上GPU存储器(例如,图形存储器122)内。
系统存储器118可存储可由CPU102存取以用于执行的程序模块和/或指令,及/或由在CPU102上执行的程序使用的数据。举例来说,系统存储器118可存储窗口管理器应用,其由CPU102使用以在显示器上呈现图形用户接口(GUI)。此外,系统存储器118可存储用户应用和与所述应用相关联的应用表面数据。系统存储器118可充当用于GPU120的装置存储器,且可存储待由GPU120操作的数据以及由GPU120所执行的操作产生的数据。举例来说,系统存储器118可存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器或其类似者的任何组合。
系统存储器118可为计算机可读存储媒体的实例。举例来说,系统存储器118可存储指令,其致使处理器102和GPU120执行在本发明中归于每一者的功能。系统存储器118可被认为是包括指令的计算机可读存储媒体,所述指令致使一或多个处理器(例如,处理器102或GPU120)执行各种功能。
系统存储器118的实例包含(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),或可用以携载或存储呈指令或数据结构的形式的所要程序代码且可由计算机或处理器存取的任何其它媒体。作为一个实例,系统存储器118可从所述装置移除,且移动到另一装置。作为另一实例,大体类似于系统存储器118的存储装置可插入到所述装置中。
根据本发明的技术,CPU102可将一或多个图形渲染命令发布到GPU120以渲染由基元组成的图形场景。GPU120可执行装仓遍次以将构成图形场景的基元分类到多个仓中使得基元的每一仓在渲染时可完全配合到图形存储器122中。GPU120在执行装仓遍次时还可针对所述多个仓中的每一仓创建可见性流。与仓相关联的可见性流可指示所述仓是否与将在最后渲染的场景中可见的至少一个基元相关联。
所述多个仓中的每一仓可与用于渲染相关联仓中的基元的指令相关联。对于所述多个仓中的每一者,相关联指令可依次逐仓存储在存储器118中的间接缓冲器中。存储到间接缓冲器中的仓的相关联指令可包含所述相关联指令以及次级指令。次级指令可为与仓中的基元的渲染不相关的指令。然而,所述次级指令可在一些情况下为图像相关操作。次级指令可包含线内操作,例如从场景的多个区域清除像素的快速清除、将图像块(例如,像素的群组)从场景的一个部分传递到另一部分的线内/可形成瓦片的位块传输,和其它位块传递;以及其它状态更新。如果间接缓冲器包含针对仓的一或多个次级指令,那么针对所述仓的相同一或多个次级指令可存储在存储器118中的阴影间接缓冲器中。在一些实例中,次级指令与所述仓相关联,因为次级指令在与所述仓相关联的瓦片内操作。举例来说,相关联瓦片可包含除基元外的像素,且由快速清除次级操作清除的场景的区域中的一者可包含所述相关联瓦片的至少一部分。在另一实例中,可形成瓦片的位块传输次级操作可将图像块从相关联瓦片传递或传递到所述相关联瓦片。
GPU120可通过逐仓渲染构成图形场景的基元而渲染所述图形场景。GPU120可针对每一仓基于所述仓的可见性流确定是否执行存储在间接缓冲器中的仓的指令或是否执行存储在阴影间接缓冲器中的仓的指令。存储在间接缓冲器中的指令可包含用于渲染与所述多个仓中的所述仓相关联的基元的指令。存储在间接缓冲器中的指令可进一步包含一或多个次级操作。如上文所论述,次级操作可为与仓的基元的渲染不相关的操作。响应于基于可见性流确定不执行存储在间接缓冲器中的指令,GPU120可执行存储在阴影间接缓冲器中的仓的指令,其中存储在阴影间接缓冲器中的指令包含所述一或多个次级指令。或者,响应于基于可见性流确定要执行存储在间接缓冲器中的指令,GPU120可执行存储在间接缓冲器中的仓的指令用于渲染与所述多个仓中的仓相关联的基元以及还执行存储在间接缓冲器中的所述一或多个次级操作。
图2为说明根据本发明的一些方面用于使用基于瓦片的GPU渲染图形场景的过程的流程图。如图2中所展示,渲染图形场景的GPU120可执行装仓遍次以确定场景的每一仓中包含的基元(202)。仓可表示来自场景的所述多个瓦片的瓦片,且仓中包含的基元还可包含在由所述仓表示的瓦片中。除使用装仓遍次以确定每一仓中包含的基元外,GPU120还可使用装仓遍次以产生可见性流,所述可见性流指示仓中的特定基元是否实际上在最终渲染的场景中可见。举例来说,一些基元可在场景中的另一基元后方,且在一些情形中(例如,当前方的基元为不透明时或当不使用掺合时)将不可见。更确切地说,在以下情况下特定仓中的基元可在最终渲染的场景中不可见:如果基元经背面剔除、如果基元并不命中仓区域,或如果基元通过例如低分辨率Z检查等深度测试而被遮挡。执行装仓遍次可包含执行致使GPU120执行图形管线的简化版本的命令,但具有额外步骤:基于确定基元是否在最终渲染的场景中可见的深度测试(Z测试)针对仓中的每一基元更新可见性流。
装仓遍次的目标为识别与当前仓相交的基元。由此,可仅需要确定基元的顶点的位置以识别基元是否与特定仓相交。装仓遍次可通过使用仅包含影响顶点的位置的指令的GPU120的图形管线中的简化的顶点着色器来操作。举例来说,颜色指令、纹理坐标和并不影响基元顶点的位置的其它指令可从用于所述装仓遍次的简化的顶点着色器移除。装仓遍次还使用粗略光栅化而非精细光栅化,以确定每一基元的近似深度。粗略光栅化以与精细光栅化相比较低的精确度(例如,使用较低位数)计算深度值。仅必需近似深度值来确定基元是否在仓中可见。在一些实例中,像素着色器不在装仓遍次中使用。
在一些实例中,所产生的可见性流可包含针对仓中的每一基元的位,其指示所述基元是否在最终渲染的场景中可见,使得所述可见性流可为指示经渲染仓中的特定基元是否可见的位串(例如,1指示基元为可见,0指示基元不可见)。如果对应于仓中的基元的位为开,那么其可指示对应基元在最终渲染的场景中可见。相比而言,如果对应于仓中的基元的位为关,那么其可指示对应基元在最终渲染的场景中不可见。在一些实例中,GPU120可压缩可见性流,从而产生场景的渲染期间的较少存储器消耗和较快跳过不可见基元。
GPU120通过执行每一仓的命令流以将所述仓中的每一者中的基元渲染到图形存储器上而渲染图形场景。GPU120可进一步存储用于渲染间接缓冲器中的仓的基元的命令流(204)。存储到间接缓冲器中的命令流可包含用于绘制特定仓的基元的一系列状态命令和绘制命令。状态命令可影响由GPU120执行的图形处理管线的行为。举例来说,状态命令可改变颜色、多边形模式(例如,点而非立体或线)、掺合(开/关)、深度测试(开/关)、纹理化(开/关)、剔除、裁剪和其它逻辑操作。
存储到间接缓冲器中的命令流还可包含由许多现代图形应用或合成系统(例如微软桌面窗口管理器(MicrosoftDesktopWindowManager))支持的次级命令。这些次级命令可与特定仓的基元的渲染不相关。举例来说,次级命令可包含线内操作(例如,清除多个区域的快速清除、将图像块从场景的一个部分传递到另一部分的线内/可形成瓦片的位块传输,和其它位块传递)和其它状态更新。虽然线内操作和其它状态更新可依据设计不贡献于可见性流,但其可贡献于场景的所产生的渲染。
如果仓的可见性流指示所述仓不含任何可见基元(即,仓中的所有基元将在最终渲染的场景中不可见),那么在GPU120通过跳过执行与仓相关联的间接缓冲器中的指令而不渲染所述仓中的基元的情况下可改进性能。然而,如上文所论述,除存储用以渲染特定仓中的基元的命令流外,间接缓冲器还可包含次级命令(例如线内操作)和状态更新。虽然线内操作和状态更新可依据设计不贡献于可见性流,但其可贡献于场景的所产生的渲染。因此,如果因为仓的可见性流指示不存在与所述仓相关联的可见基元因此GPU120并不执行间接缓冲器中的与仓相关联的那些指令,那么也不执行间接缓冲器中的次级命令,借此导致最终场景的讹误。
为确保即使GPU120基于仓的可见性流确定所述仓并不包含将在最终渲染的场景中可见的任何基元时GPU120也执行间接缓冲器中包含的次级命令,GPU120(和/或图形驱动器116)可将来自间接缓冲器的仓的状态更新和次级命令存储到存储器(例如,系统存储器118)中分配的阴影间接缓冲器(206)。如果对于给定仓无基元可见,那么GPU120可条件性地确定不执行较复杂的原始渲染间接缓冲器,而是可仅执行阴影线内渲染间接缓冲器(如果阴影间接缓冲器中存在针对所述给定仓的次级命令)。以此方式,GPU120可仍执行一起存储在与特定仓的命令流相同的间接缓冲器中的次级命令,即使所述仓中无基元将在最终渲染的场景中可见。在一些实例中,GPU120可响应于基于仓的可见性流确定所述仓是否包含将在最后渲染的场景中可见的基元而将来自间接缓冲器的状态更新和次级命令存储到阴影间接缓冲器。
阴影间接缓冲器包含存储在对应间接缓冲器中的所述仓的命令和操作的子集。在一些实例中,阴影间接缓冲器仅包含对应间接缓冲器的次级命令。在一些实例中,所述一或多个次级命令是除用于渲染基元的指令以外的命令。GPU120可在与GPU120用用于渲染基元的仓的指令填充对应间接缓冲器相同的时间用仓的次级命令填充阴影间接缓冲器。在其它实例中,如果GPU120基于可见性流确定对应仓并不包含将在最后渲染的场景中可见的任何基元,那么GPU120可用仓的次级命令填充阴影间接缓冲器。
将次级命令加载到阴影间接缓冲器和阴影间接缓冲器中的指令代替对应间接缓冲器中的指令的条件性执行可由任何基于瓦片的渲染GPU(例如GPU120)实施,所述基于瓦片的渲染GPU执行线内操作连同用于渲染仓中的基元的命令。举例来说,图形驱动器116可包含conditional_ib2_X_else_Y包,其中X为针对间接缓冲器的渲染遍次,且Y为含有线内指令的阴影间接缓冲器。在一些实例中,此条件性包可实施在硬件(例如GPU120的硬件)中。通过在间接缓冲器并不包含用于渲染任何可见基元的命令的情况下跳过解析和执行所述间接缓冲器同时仍执行阴影间接缓冲器中的线内操作,GPU120的渲染性能可得以改进。
GPU120可基于仓的可见性流确定是否执行间接缓冲器中包含的指令,包含基于仓的可见性流确定所述仓是否包含将在最后渲染的场景中可见的一或多个基元(208)。如上文所论述,每一仓可与可见性流相关联,且可见性流可包含针对在最终渲染的场景中可见的仓中的每一基元接通(例如,设定成1)的位。如果仓的可见性流包含接通的一或多个位,那么GPU120可确定所述仓包含将在最后渲染的场景中可见的一或多个基元。相比而言,如果仓的可见性流并不包含接通的任何位,那么GPU120可确定所述仓并不包含将在最后渲染的场景中可见的一或多个基元。
响应于基于可见性流确定要执行间接缓冲器中的指令,包含响应于基于可见性流确定所述仓确实包含将在最后渲染的场景中可见的一或多个基元,GPU120可执行存储在间接缓冲器中的指令(210)。GPU120可执行用于绘制仓的基元的指令以及仓中包含的所述一或多个次级操作。
响应于基于可见性流确定不执行间接缓冲器中的指令,包含响应于基于可见性流确定所述仓并不包含将在最后渲染的场景中可见的一或多个基元,GPU120可实际上执行存储在阴影间接缓冲器中的指令(212)。GPU120可执行阴影间接缓冲器中包含的所述一或多个次级操作。
GPU120可确定其是否已完成渲染场景(214)。如果GPU120确定存在其仍待渲染的场景的额外瓦片,那么GPU120可向前移动且通过将与场景的下一瓦片相关联的仓的命令流存储到间接缓冲器中而渲染场景的下一瓦片,且可将仓的次级命令存储到阴影间接缓冲器中(204)。
图3为说明根据本发明的一些方面用于基于瓦片的渲染架构中的装仓和渲染的命令缓冲器的概念图。如图3中所展示,层级1间接缓冲器(IB1)302可包含用于引导GPU120执行针对GPU120的图形存储器管线的各种步骤的一系列执行命令。存储在IB1302中的所述命令的系列包含一系列指针,其指向一或多个层级2间接缓冲器(IB2)且引导GPU120执行存储在由IB1302中的所述系列的指针指向的IB2中的命令。以此方式,建立用于执行针对GPU120的图形存储器管线的两个或两个以上层级结构。GPU120可循序通过IB1302中的每一执行命令,其中IB1302中的每一执行指向存储在IB2中的特定命令堆栈。在一些实例中,本文中所描述的IB2可包含上文所论述的间接缓冲器和阴影间接缓冲器。在一些实例中,IB1302和IB2可存储在系统存储器118中。在其它实例中,IB1302和IB2可存储在GPU120上的存储器中。
IB1302中的前同步码指令304可指向前同步码IB2306,其包含用于建立GPU120的静止状态的指令且设定GPU120的初始渲染状态。GPU120的静止状态包含不会基于特定应用改变的设定。另一方面,渲染状态包含可基于特定应用(例如,OpenGL应用与DirectX应用)改变的GPU设定。举例来说,所述指令可确立GPU120将执行针对待渲染的3D对象的基元的装仓遍次。在前同步码IB2306中的命令完成之后,控制返回到IB1302以执行下一执行命令。
IB1302中的下一执行命令可为装仓遍次指令308。IB1302中的装仓遍次指令308可指向装仓IB2310,其包含用于执行装仓遍次的指令,如上文相对于图2所描述。
IB1302还可包含用于GPU120执行渲染遍次以渲染3D对象的基元的指令。IB1302中的加载仓指令312可指向加载IB2314,其包含用于将特定仓的数据加载到图形存储器中的指令。条件性渲染仓指令316可指向包含用于绘制具有加载到图形存储器中的数据的特定仓的基元的一系列状态命令和绘制命令的渲染IB2318,以及包含线内操作和状态更新的阴影渲染IB2320。如果仓的可见性流指示仓中存在一或多个可见基元,那么GPU120可执行渲染IB2318中的指令。如渲染IB2318中所展示,状态命令可以每三角形(或每基元)为基础而发布。也就是说,命令“状态TriA”可影响GPU120绘制三角形A时的行为,而“状态TriB1”和“状态TriB2”命令可影响GPU120绘制三角形B时的行为。“状态TriB1”和“状态TriB2”命令仅指示可针对每一三角形执行多个状态命令。另一方面,如果仓的可见性流指示所述仓不包含可见三角形,那么GPU120可执行存储在阴影渲染IB2中的状态更新和线内操作。
存储仓指令322可指向存储IB2324,其包含用以将经渲染仓从GMEM存储到存储器(例如帧缓冲器)中的命令。可针对与组成场景的瓦片326相关联的剩余仓中的每一者重复渲染遍次。
图4是说明基于瓦片的渲染架构中的场景的瓦片的概念图。如图4中所展示,例如图1中展示的处理器102等CPU可经由例如图1中展示的图形驱动器116等图形驱动器将图形渲染命令发送到例如图1中展示的GPU120等GPU,以渲染3D图形对象406。对象206可由例如基元408等基元组成。在图4中展示的实例中,基元可为包含三个顶点的三角形。在其它实例中,基元可为点、线等等。GPU可将含有图形对象406的场景402划分为瓦片,例如瓦片404。GPU可至少部分地基于图形存储器的大小确定场景402的每一瓦片(例如瓦片404)的大小。举例来说,场景402的每一瓦片可经设定大小使得瓦片中包含的场景402的部分可全部在例如图1中展示的图形存储器122等图形存储器中渲染。场景402的每一瓦片可被视为在所述瓦片中包含三角形的仓。在一个实例中,仓的宽度和高度可由32个像素对准。因为场景402划分成瓦片的5x5栅格,所以存在图4中展示的场景402的总共25个瓦片。
GPU120可通过执行用于渲染三角形的命令而渲染三角形。因此,GPU120可通过执行用于渲染构成图形对象406的三角形中的每一者的命令而渲染图形对象406。GPU120可将场景的三角形分类到仓中,使得每一仓可包含命令流(命令的集合)以渲染所述仓中包含的三角形。因为存在场景402的总共25个瓦片,所以可存在场景402的25个对应仓。GPU120可将每一仓的命令流存储在存储器(例如图1中展示的系统存储器118)中的间接缓冲器中。GPU120通过执行每一仓的命令流以将仓中的每一者中的三角形渲染到图形存储器122上而渲染图形对象406。在GPU120将仓中包含的场景402的部分渲染到图形存储器122上之后,场景402的所述经渲染部分从图形存储器122加载到存储器(例如图1中展示的帧缓冲器124)。GPU120可重复以下过程:执行命令流、将仓的三角形渲染到图形存储器122上,以及将场景402的所述经渲染部分从图形存储器122加载到每一仓的帧缓冲器124以渲染整个场景402。
图5为展示根据本发明的方面的在仓之间划分的基元的概念图。如图5中所展示,各自含有像素的4×4栅格的仓502、504、506和508经渲染/光栅化以含有多个像素510。一或多个图形基元可在每一仓中可见。举例来说,三角形A(TriA)的部分在仓502和仓506两者中可见。三角形B(TriB)的部分在仓502、仓504、仓506和仓508中的每一者中可见。三角形C(TriC)仅在仓504中可见。在渲染遍次期间,GPU120可将场景分割为仓且可将三角形指派到所述仓。如果三角形在一个以上仓中可见,那么GPU120可将三角形指派到其中三角形为可见的仓中的仅一者,使得三角形不随着渲染仓502、504、506和508中的每一者而被渲染多次。
GPU120还可通过执行装仓遍次确定仓中的哪些三角形在最终渲染的场景中实际上可见。举例来说,一些三角形可在一或多个其它三角形后方且将在最终渲染的场景中不可见。以此方式,不必渲染针对所述仓的不可见的三角形。
GPU120可通过针对每一仓识别与所述仓相交的基元而确定哪些三角形与每一仓相交,包含确定基元的顶点的位置。GPU120可通过使用仅包含影响顶点的位置的指令的其图形管线中的简化顶点着色器而确定顶点的位置。举例来说,颜色指令、纹理坐标和并不影响基元顶点的位置的其它指令可从简化的顶点着色器移除。GPU120还可使用粗略光栅化而非精细光栅化以确定每一基元的近似深度。粗略光栅化以与精细光栅化相比较低的精确度(例如,使用较低位数)计算深度值。可仅必需近似深度值来确定基元是否在仓中可见。
除使用装仓遍次以确定每一仓中包含的基元外,GPU120还可使用装仓遍次以产生可见性流,所述可见性流指示仓中的特定基元是否实际上在最终渲染的场景中可见。举例来说,一些基元可在场景中的另一基元后方,且在一些情形中(例如,当前方的基元为不透明时或当不使用掺合时)将不可见。更确切地说,在以下情况下特定仓中的基元可在最终渲染的场景中不可见:如果基元经背面剔除、如果基元并不命中仓区域,或如果基元通过例如低分辨率Z检查等深度测试而被遮挡。执行装仓遍次可包含执行致使GPU120执行图形管线的简化版本的命令,但具有额外步骤:基于深度测试(Z测试)和确定基元是否在最终渲染的场景中可见的任何额外测试针对仓中的每一基元更新可见性流。
当执行特定渲染遍次时,与所述特定渲染遍次相关联的仓的像素数据可存储在图形存储器(例如图1中展示的图形存储器122(有时称为仓缓冲器))中。在执行渲染遍次之后,GPU120可将图形存储器122的内容传递到帧缓冲器124。在一些情况下,GPU120可用存储在图形存储器122中的数据重写帧缓冲器124中的数据的一部分。在其它情况下,GPU120可将帧缓冲器124中的数据与存储在图形存储器122中的数据合成或组合。在将图形存储器122的内容传递到帧缓冲器124之后,GPU120可将图形存储器122初始化为默认值且开始相对于不同仓的后续渲染遍次。
图6为说明可经配置以实施本发明的一或多个方面的装置的实例的框图。举例来说,图6说明装置602。装置602的实例包含(但不限于)视频装置、媒体播放器、机顶盒、无线手持机(例如移动电话和所谓的智能电话)、个人数字助理(PDA)、台式计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置等等。
在图6的实例中,装置602可包含处理器102、系统存储器118和GPU120。出于简洁的目的,不相对于图6进一步描述处理器102、系统存储器118和GPU120,因为先前已经相对于图1描述了这些组件。装置602还可包含显示处理器624、收发器模块626、用户接口628和显示器630。收发器模块626和显示处理器624两者可为与处理器102和/或GPU120相同的集成电路(IC)的一部分,两者可在包含处理器102和/或GPU120的IC外部,或可形成于在包含处理器102和/或GPU120的所述IC外部的IC中。
出于清晰性的目的,装置602可包含图6中未图示的额外模块或单元。举例来说,装置602可包含扬声器和麦克风(其均未在图6中展示)以在装置602为移动无线电话或扬声器(其中装置602为媒体播放器)的实例中实现电话通信。装置602还可包含摄像机。此外,装置602中展示的各种模块和单元在装置602的每一实例中可并非必需的。举例来说,在其中装置602为台式计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口628和显示器630可在装置602外部。
用户接口628的实例包含(但不限于)跟踪球、鼠标、键盘和其它类型的输入装置。用户接口628还可为触摸屏且可作为显示器630的一部分并入。收发器模块626可包含用以允许装置602与另一装置或网络之间的无线或有线通信的电路。收发器模块626可包含调制器、解调器、放大器和用于有线或无线通信的其它此类电路。
在一些实例中,GPU120可将完全形成的图像存储在系统存储器118中。显示处理器624可从系统存储器118检索图像,且输出致使显示器630的像素照明以显示所述图像的值。显示器630可为显示由GPU120产生的图像内容的装置602的显示器。显示器630可为液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子体显示器或另一类型的显示装置。
在一或多个实例中,所描述功能可以用硬件、软件、固件或其任何组合来实施。如果在软件中实施,那么可将所述功能作为一或多个指令或代码而存储在计算机可读媒体上或经由计算机可读媒体发射。计算机可读媒体可包含计算机数据存储媒体或通信媒体,通信媒体包含促进将计算机程序从一处传递到另一处的任何媒体。数据存储媒体可以是可由由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用的媒体。借助于实例而非限制,此些计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置。如本文所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。上述各项的组合也应包含在计算机可读媒体的范围内。
代码可以由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)、或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文所描述的功能性可以提供于经配置用于编码和解码的专用硬件和/或软件模块内,或者并入于组合编解码器中。而且,可将所述技术完全实施于一或多个电路或逻辑元件中。
本发明的技术可在广泛多种装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。而是,如上文所描述,各种单元可结合合适的软件和/或固件组合在编解码器硬件单元中,或者由互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已经描述各种实例。这些和其它实例在所附权利要求书的范围内。
Claims (28)
1.一种用于渲染场景的方法,所述方法包括:
基于可见性流确定是否执行存储在间接缓冲器中的指令,其中存储在所述间接缓冲器中的所述指令包含用于渲染与多个仓中的仓相关联的基元的指令,且进一步包含一或多个次级操作,且其中所述可见性流指示所述仓是否与将在最后渲染的场景中可见的至少一个基元相关联;
响应于基于所述可见性流确定不执行存储在所述间接缓冲器中的所述指令,执行存储在阴影间接缓冲器中的一或多个操作,其中存储在所述阴影间接缓冲器中的所述一或多个操作包含所述一或多个次级操作;以及
响应于基于所述可见性流确定要执行存储在所述间接缓冲器中的所述指令,执行存储在所述间接缓冲器中的所述指令用于渲染与所述多个仓中的所述仓相关联的所述基元,以及执行存储在所述间接缓冲器中的所述一或多个次级操作。
2.根据权利要求1所述的方法,其中执行存储在所述阴影间接缓冲器中的所述一或多个操作包括仅执行存储在所述阴影间接缓冲器中的所述一或多个次级操作而不执行用于渲染所述基元的所述指令。
3.根据权利要求1所述的方法,其进一步包括:
响应于基于所述可见性流确定不执行存储在所述间接缓冲器中的所述指令,将所述一或多个次级操作存储在所述阴影间接缓冲器中。
4.根据权利要求1所述的方法,其中确定是否执行存储在间接缓冲器中的指令包括:
如果所述可见性流指示所述仓与将在所述最后渲染的场景中可见的至少一个基元相关联,那么确定执行存储在所述间接缓冲器中的所述指令。
5.根据权利要求1所述的方法,其中确定是否执行存储在间接缓冲器中的指令包括:
如果所述可见性流指示所述仓不与将在所述最后渲染的场景中可见的至少一个基元相关联,那么确定不执行存储在所述间接缓冲器中的所述指令。
6.根据权利要求1所述的方法,其中所述基元包括三角形。
7.根据权利要求1所述的方法,其中所述仓表示所述场景的多个瓦片中的瓦片,且其中与所述仓相关联的所述基元包含在所述场景的所述瓦片中。
8.一种经配置用于图形处理的装置,其包括:
图形处理单元GPU,其经配置以:
基于可见性流确定是否执行存储在间接缓冲器中的指令,其中存储在所述间接缓冲器中的所述指令包含用于渲染与多个仓中的仓相关联的基元的指令且进一步包含一或多个次级操作,且其中所述可见性流指示所述仓是否与将在最后渲染的场景中可见的至少一个基元相关联;
响应于基于所述可见性流确定不执行存储在所述间接缓冲器中的所述指令,执行存储在阴影间接缓冲器中的一或多个操作,其中存储在所述阴影间接缓冲器中的所述一或多个操作包含所述一或多个次级操作;以及
响应于基于所述可见性流确定要执行存储在所述间接缓冲器中的所述指令,执行存储在所述间接缓冲器中的所述指令,用于渲染与所述多个仓中的所述仓相关联的所述基元,以及执行存储在所述间接缓冲器中的所述一或多个次级操作。
9.根据权利要求8所述的装置,其中执行存储在所述阴影间接缓冲器中的所述一或多个操作包括仅执行存储在所述阴影间接缓冲器中的所述一或多个次级操作而不执行用于渲染所述基元的所述指令。
10.根据权利要求8所述的装置,其中所述GPU进一步经配置以:
响应于基于所述可见性流确定不执行存储在所述间接缓冲器中的所述指令,将所述一或多个次级操作存储在所述阴影间接缓冲器中。
11.根据权利要求8所述的装置,其中确定是否执行存储在间接缓冲器中的指令包括:
如果所述可见性流指示所述仓与将在所述最后渲染的场景中可见的至少一个基元相关联,那么确定执行存储在所述间接缓冲器中的所述指令。
12.根据权利要求8所述的装置,其中确定是否执行存储在间接缓冲器中的指令包括:
如果所述可见性流指示所述仓不与将在所述最后渲染的场景中可见的至少一个基元相关联,那么确定不执行存储在所述间接缓冲器中的所述指令。
13.根据权利要求8所述的装置,其中所述基元包括三角形。
14.根据权利要求8所述的装置,其中所述仓表示场景的多个瓦片中的瓦片,且其中与所述仓相关联的所述基元包含在所述场景的所述瓦片中。
15.一种具有存储于其上的指令的计算机可读存储媒体,所述指令在执行时致使一或多个处理器执行包括以下各项的操作:
基于可见性流确定是否执行存储在间接缓冲器中的指令,其中存储在所述间接缓冲器中的所述指令包含用于渲染与多个仓中的仓相关联的基元的指令,且进一步包含一或多个次级操作,且其中所述可见性流指示所述仓是否与将在最后渲染的场景中可见的至少一个基元相关联;
响应于基于所述可见性流确定不执行存储在所述间接缓冲器中的所述指令,执行存储在阴影间接缓冲器中的一或多个操作,其中存储在所述阴影间接缓冲器中的所述一或多个操作包含所述一或多个次级操作;以及
响应于基于所述可见性流确定要执行存储在所述间接缓冲器中的所述指令,执行存储在所述间接缓冲器中的所述指令用于渲染与所述多个仓中的所述仓相关联的所述基元,以及执行存储在所述间接缓冲器中的所述一或多个次级操作。
16.根据权利要求15所述的计算机可读存储媒体,其中执行存储在所述阴影间接缓冲器中的所述一或多个操作包括仅执行存储在所述阴影间接缓冲器中的所述一或多个次级操作而不执行用于渲染所述基元的所述指令。
17.根据权利要求15所述的计算机可读存储媒体,其中所述操作进一步包括:
响应于基于所述可见性流确定不执行存储在所述间接缓冲器中的所述指令,将所述一或多个次级操作存储在所述阴影间接缓冲器中。
18.根据权利要求15所述的计算机可读存储媒体,其中确定是否执行存储在间接缓冲器中的指令包括:
如果所述可见性流指示所述仓与将在所述最后渲染的场景中可见的至少一个基元相关联,那么确定执行存储在所述间接缓冲器中的所述指令。
19.根据权利要求15所述的计算机可读存储媒体,其中确定是否执行存储在间接缓冲器中的指令包括:
如果所述可见性流指示所述仓不与将在所述最后渲染的场景中可见的至少一个基元相关联,那么确定不执行存储在所述间接缓冲器中的所述指令。
20.根据权利要求15所述的计算机可读存储媒体,其中所述基元包括三角形。
21.根据权利要求15所述的计算机可读存储媒体,其中所述仓表示场景的多个瓦片中的瓦片,且其中与所述仓相关联的所述基元包含在所述场景的所述瓦片中。
22.一种装置,其包括:
用于基于可见性流确定是否执行存储在间接缓冲器中的指令的装置,其中存储在所述间接缓冲器中的所述指令包含用于渲染与多个仓中的仓相关联的基元的指令且进一步包含一或多个次级操作,且其中所述可见性流指示所述仓是否与将在最后渲染的场景中可见的至少一个基元相关联;
响应于基于所述可见性流确定不执行存储在所述间接缓冲器中的所述指令,用于执行存储在阴影间接缓冲器中的一或多个操作的装置,其中存储在所述阴影间接缓冲器中的所述一或多个操作包含所述一或多个次级操作;以及
响应于基于所述可见性流确定要执行存储在所述间接缓冲器中的所述指令,用于执行存储在所述间接缓冲器中的所述指令用于渲染与所述多个仓中的所述仓相关联的所述基元以及执行存储在所述间接缓冲器中的所述一或多个次级操作的装置。
23.根据权利要求22所述的装置,其中用于执行存储在所述阴影间接缓冲器中的所述一或多个操作的装置包括用于仅执行存储在所述阴影间接缓冲器中的所述一或多个次级操作的装置和用于不执行用于渲染所述基元的所述指令的装置。
24.根据权利要求22所述的装置,其进一步包括:
响应于基于所述可见性流确定不执行存储在所述间接缓冲器中的所述指令,用于将所述一或多个次级操作存储在所述阴影间接缓冲器中的装置。
25.根据权利要求22所述的装置,其中所述用于确定是否执行存储在间接缓冲器中的指令的装置包括:
用于在所述可见性流指示所述仓与将在所述最后渲染的场景中可见的至少一个基元相关联的情况下确定执行存储在所述间接缓冲器中的所述指令的装置。
26.根据权利要求22所述的装置,其中所述用于确定是否执行存储在间接缓冲器中的指令的装置包括:
用于在所述可见性流指示所述仓不与将在所述最后渲染的场景中可见的至少一个基元相关联的情况下确定不执行存储在所述间接缓冲器中的所述指令的装置。
27.根据权利要求22所述的装置,其中所述基元包括三角形。
28.根据权利要求22所述的装置,其中所述仓表示场景的多个瓦片中的瓦片,且其中与所述仓相关联的所述基元包含在所述场景的所述瓦片中。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361829564P | 2013-05-31 | 2013-05-31 | |
US61/829,564 | 2013-05-31 | ||
US14/059,076 | 2013-10-21 | ||
US14/059,076 US9286649B2 (en) | 2013-05-31 | 2013-10-21 | Conditional execution of rendering commands based on per bin visibility information with added inline operations |
PCT/US2014/037851 WO2014193645A2 (en) | 2013-05-31 | 2014-05-13 | Conditional execution of rendering commands based on per bin visibility information with added inline operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105210111A true CN105210111A (zh) | 2015-12-30 |
CN105210111B CN105210111B (zh) | 2018-08-31 |
Family
ID=51984587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480026737.9A Active CN105210111B (zh) | 2013-05-31 | 2014-05-13 | 基于每仓可见性信息以及添加的线内操作的渲染命令的条件性执行 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9286649B2 (zh) |
EP (1) | EP3005305B1 (zh) |
JP (1) | JP6042584B2 (zh) |
KR (1) | KR101709037B1 (zh) |
CN (1) | CN105210111B (zh) |
WO (1) | WO2014193645A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108701366A (zh) * | 2016-02-25 | 2018-10-23 | 高通股份有限公司 | 用于图形处理中的阴影光线的树遍历的开始节点确定 |
CN110892383A (zh) * | 2017-07-28 | 2020-03-17 | 高通股份有限公司 | 增量常量负载的延迟批处理 |
CN112116520A (zh) * | 2019-06-19 | 2020-12-22 | 畅想科技有限公司 | 图形处理系统的光栅化阶段中的基元片段处理 |
WO2022104635A1 (en) * | 2020-11-18 | 2022-05-27 | Qualcomm Incorporated | Methods and apparatus for selection of rendering modes |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9842424B2 (en) * | 2014-02-10 | 2017-12-12 | Pixar | Volume rendering using adaptive buckets |
GB2526598B (en) * | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
US9773340B2 (en) * | 2015-06-12 | 2017-09-26 | Qualcomm Incorporated | Rendering using ray tracing to generate a visibility stream |
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
US10043233B1 (en) * | 2017-07-20 | 2018-08-07 | Adobe Systems Incorporated | Digital media environment for processing vector objects of vector artwork |
US10672176B2 (en) * | 2017-08-31 | 2020-06-02 | Intel Corporation | Apparatus and method for processing commands in tile-based renderers |
US10672182B2 (en) * | 2018-04-19 | 2020-06-02 | Microsoft Technology Licensing, Llc | Compact visibility state for GPUs compatible with hardware instancing |
US10269167B1 (en) * | 2018-05-21 | 2019-04-23 | Apple Inc. | Indirect command buffers for graphics processing |
US11080928B2 (en) * | 2019-04-01 | 2021-08-03 | Qualcomm Incorporated | Methods and apparatus for visibility stream management |
CN109993823B (zh) * | 2019-04-11 | 2022-11-25 | 腾讯科技(深圳)有限公司 | 阴影渲染方法、装置、终端及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101563712A (zh) * | 2006-12-22 | 2009-10-21 | 高通股份有限公司 | 快速像素渲染处理 |
US20130135329A1 (en) * | 2011-11-30 | 2013-05-30 | Qualcomm Incorporated | Switching between direct rendering and binning in graphics processing |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6417861B1 (en) | 1999-02-17 | 2002-07-09 | Sun Microsystems, Inc. | Graphics system with programmable sample positions |
US6525726B1 (en) * | 1999-11-02 | 2003-02-25 | Intel Corporation | Method and apparatus for adaptive hierarchical visibility in a tiled three-dimensional graphics architecture |
US20020060685A1 (en) | 2000-04-28 | 2002-05-23 | Malcolm Handley | Method, system, and computer program product for managing terrain rendering information |
US7030877B1 (en) | 2002-03-04 | 2006-04-18 | Advanced Micro Devices, Inc. | Computer graphics processing system, computer memory, and method of use with computer graphics processing system utilizing hierarchical image depth buffer |
US7388581B1 (en) | 2003-08-28 | 2008-06-17 | Nvidia Corporation | Asynchronous conditional graphics rendering |
GB0426170D0 (en) * | 2004-11-29 | 2004-12-29 | Falanx Microsystems As | Processing of computer graphics |
KR100793990B1 (ko) * | 2006-09-18 | 2008-01-16 | 삼성전자주식회사 | 타일 기반 3차원 렌더링에서의 조기 z 테스트 방법 및시스템 |
US8448067B2 (en) * | 2006-12-07 | 2013-05-21 | Sony Computer Entertainment America, LLC | Graphics command management tool and methods for analyzing performance for command changes before application modification |
US8179394B1 (en) | 2007-12-13 | 2012-05-15 | Nvidia Corporation | Cull streams for fine-grained rendering predication |
GB0810311D0 (en) * | 2008-06-05 | 2008-07-09 | Advanced Risc Mach Ltd | Graphics processing systems |
GB2461900B (en) * | 2008-07-16 | 2012-11-07 | Advanced Risc Mach Ltd | Monitoring graphics processing |
US8982136B2 (en) * | 2011-05-16 | 2015-03-17 | Qualcomm Incorporated | Rendering mode selection in graphics processing units |
US10089774B2 (en) * | 2011-11-16 | 2018-10-02 | Qualcomm Incorporated | Tessellation in tile-based rendering |
-
2013
- 2013-10-21 US US14/059,076 patent/US9286649B2/en active Active
-
2014
- 2014-05-13 EP EP14735700.8A patent/EP3005305B1/en active Active
- 2014-05-13 CN CN201480026737.9A patent/CN105210111B/zh active Active
- 2014-05-13 JP JP2016516680A patent/JP6042584B2/ja not_active Expired - Fee Related
- 2014-05-13 WO PCT/US2014/037851 patent/WO2014193645A2/en active Application Filing
- 2014-05-13 KR KR1020157034936A patent/KR101709037B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101563712A (zh) * | 2006-12-22 | 2009-10-21 | 高通股份有限公司 | 快速像素渲染处理 |
US20130135329A1 (en) * | 2011-11-30 | 2013-05-30 | Qualcomm Incorporated | Switching between direct rendering and binning in graphics processing |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108701366A (zh) * | 2016-02-25 | 2018-10-23 | 高通股份有限公司 | 用于图形处理中的阴影光线的树遍历的开始节点确定 |
CN108701366B (zh) * | 2016-02-25 | 2020-03-17 | 高通股份有限公司 | 用于图形处理中的阴影光线的树遍历的开始节点确定的方法、设备及可读存储媒体 |
CN110892383A (zh) * | 2017-07-28 | 2020-03-17 | 高通股份有限公司 | 增量常量负载的延迟批处理 |
CN112116520A (zh) * | 2019-06-19 | 2020-12-22 | 畅想科技有限公司 | 图形处理系统的光栅化阶段中的基元片段处理 |
US11880933B2 (en) | 2019-06-19 | 2024-01-23 | Imagination Technologies Limited | Primitive fragment processing in the rasterization phase of a graphics processing system |
WO2022104635A1 (en) * | 2020-11-18 | 2022-05-27 | Qualcomm Incorporated | Methods and apparatus for selection of rendering modes |
WO2022104583A1 (en) * | 2020-11-18 | 2022-05-27 | Qualcomm Incorporated | Methods and apparatus for selection of rendering modes |
Also Published As
Publication number | Publication date |
---|---|
WO2014193645A3 (en) | 2015-05-14 |
US20140354661A1 (en) | 2014-12-04 |
WO2014193645A2 (en) | 2014-12-04 |
US9286649B2 (en) | 2016-03-15 |
KR101709037B1 (ko) | 2017-02-21 |
EP3005305B1 (en) | 2019-03-06 |
KR20160014646A (ko) | 2016-02-11 |
EP3005305A2 (en) | 2016-04-13 |
JP6042584B2 (ja) | 2016-12-14 |
CN105210111B (zh) | 2018-08-31 |
JP2016523401A (ja) | 2016-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105210111A (zh) | 基于每仓可见性信息以及添加的线内操作的渲染命令的条件性执行 | |
US10049426B2 (en) | Draw call visibility stream | |
US9836810B2 (en) | Optimized multi-pass rendering on tiled base architectures | |
US9697640B2 (en) | Start node determination for tree traversal in ray tracing applications | |
CN106233326B (zh) | 图形处理中基于显现目标的灵活显现 | |
EP3308359B1 (en) | Rendering using ray tracing to generate a visibility stream | |
KR101615840B1 (ko) | 그래픽 프로세싱에서 직접 렌더링과 비닝 사이의 스위칭 | |
US9818221B2 (en) | Start node determination for tree traversal for shadow rays in graphics processing | |
KR101633243B1 (ko) | 가시성 정보를 사용한 그래픽 데이터의 렌더링 | |
WO2016028482A1 (en) | Render target command reordering in graphics processing | |
KR102140387B1 (ko) | 대역폭-압축된 그래픽스 데이터의 저장 | |
KR101711775B1 (ko) | 그래픽스 프로세싱을 위한 그래픽스 메모리 로드 마스크 | |
US9852539B2 (en) | Single pass surface splatting | |
KR20170038525A (ko) | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치의 동작 방법 |
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 |