CN104919494A - 使用可见性信息显现图形数据 - Google Patents
使用可见性信息显现图形数据 Download PDFInfo
- Publication number
- CN104919494A CN104919494A CN201380070557.6A CN201380070557A CN104919494A CN 104919494 A CN104919494 A CN 104919494A CN 201380070557 A CN201380070557 A CN 201380070557A CN 104919494 A CN104919494 A CN 104919494A
- Authority
- CN
- China
- Prior art keywords
- lattice
- configuration
- primitive
- revision
- gpu
- 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
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- 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
在一些实例中,本发明的方面涉及一种用于显现图像的方法。举例来说,所述方法包含产生指示所述图像的可见基元的可见性信息。所述方法还包含使用分格配置显现所述图像,其中所述分格配置是基于所述可见性信息。
Description
技术领域
本发明涉及显现计算机图形。
背景技术
提供用于在电子显示器上视觉呈现的内容的装置通常包含图形处理单元(GPU)。GPU将表示内容的像素显现在显示器上。GPU产生显示器上的每一像素的一或多个像素值且对显示器上的每一像素的像素值执行图形处理以显现每一像素以用于呈现。
发明内容
本发明的技术通常涉及显现图形数据。举例来说,本发明的技术包含利用可见性信息来优化显现。根据一些方面,可使用与所显现的基元相关联的可见性信息动态地确定执行显现的方式(例如,直接显现或基于平铺块的显现)。举例来说,基于平铺块的显现可用以显现包含经遮蔽基元的图像区域以跳过不可见基元的显现。另外,直接显现可用以显现具有很少或没有经遮蔽基元的图像区域。
在实例中,本发明的方面涉及一种用于显现图像的方法,所述方法包含产生指示图像的可见基元的可见性信息及使用分格配置来显现图像,其中分格配置是基于可见性信息。
在另一个实例中,本发明的方面涉及一种用于显现图像的设备,所述设备包含经配置以产生指示图像的可见基元的可见性信息及使用分格配置显现图像的一或多个处理器,其中分格配置是基于可见性信息。
在另一个实例中,本发明的方面涉及一种用于显现图像的设备,所述设备包含用于产生指示图像的可见基元的可见性信息的装置及用于使用分格配置显现图像的装置,其中分格配置是基于可见性信息。
在另一个实例中,本发明的方面涉及一种其上存储有指令的非暂时性计算机可读存储媒体,所述指令在执行时致使一或多个处理器产生指示图像的可见基元的可见性信息,及使用分格配置显现图像,其中分格配置是基于可见性信息。
在另一个实例中,本发明的方面涉及一种用于显现图像的方法,所述方法包含接收指示图像的可见基元的可见性信息,及基于可见性信息确定包括将多个基元分配给一或多个分格的分格配置。
在另一个实例中,本发明的方面涉及一种用于显现图像的设备,所述设备包含经配置以接收指示图像的可见基元的可见性信息及基于可见性信息确定包括将多个基元分配给一或多个分格的分格配置的一或多个处理器。
在另一个实例中,本发明的方面涉及一种用于显现图像的设备,所述设备包含用于接收指示图像的可见基元的可见性信息的装置,及用于基于可见性信息确定包括将多个基元分配给一或多个分格的分格配置的装置。
在另一个实例中,本发明的方面涉及一种其上存储有指令的非暂时性计算机可读存储媒体,所述指令在执行时致使一或多个处理器接收指示图像的可见基元的可见性信息,及基于可见性信息确定包括将多个基元分配给一或多个分格的分格配置。
在附图和下文描述中阐述本发明的一或多个实例的细节。其它特征、目标和优势将从所述描述和图式以及从权利要求书而显而易见。
附图说明
图1为说明可经配置以实施本发明的方面的计算装置的框图。
图2为说明可经配置以实施本发明的方面的另一计算装置的框图。
图3为说明图像的图。
图4为说明图3的图像的另一图。
图5为说明图3的图像的另一图。
图6为说明根据本发明的方面的用于显现图形的实例过程的流程图。
图7为说明根据本发明的方面的用于显现图形的另一实例过程的流程图。
图8为说明根据本发明的方面的用于显现图形的另一实例过程的流程图。
具体实施方式
传统图形处理单元(GPU)架构在显现图形数据帧(其可被称为图像)时可能需要将相对大的数据量从系统存储器读取及写入到系统存储器。移动架构可能缺乏处理整个数据帧所需要的带宽容量。因此,已开发出基于平铺块的架构,其将图像分裂成多个平铺块。设定平铺块的大小以使得可使用少量(例如,256kB)高带宽芯片上图形存储器来处理所述平铺块。也就是说,每一平铺块的大小可取决于可用芯片上图形存储器的量。接着在个别地处理每一平铺块之后重建图像。
基于平铺块的显现可关于数个处理遍次进行描述。举例来说,在执行基于平铺块的显现时,GPU可执行分格遍次及显现遍次。关于分格遍次,GPU可处理整个帧,且将光栅化基元(例如三角形)分类成被称作分格的平铺块大小的区域。也就是说,GPU处理整个图像的命令流,且将图像的光栅化基元指派给分格。
在一些实例中,GPU在分格遍次期间产生一或多个可见性流。可见性流指示在最终图像中可见的基元及在最终图像中不可见的基元。举例来说,如果基元由一或多个其它基元遮蔽以使得在经着色的完成图像中无法看到基元,那么基元可为不可见的。
可产生整个图像的可见性流,或可在逐分格的基础上产生可见性流(例如,对于每一分格一个可见性流)。一般来说,可见性流可包含一系列1及0,其中每一“1”或“0”与特定基元相关联。每一“1”指示基元在最终图像中可见。每一“0”指示基元在最终图像中不可见。可见性流可控制显现遍次(下文描述)。举例来说,可见性流可用以在显现期间跳过不可见基元的序列。因此,仅显现及着色实际上造成分格(即,在最终图像中可见)的基元,从而减少着色操作。
每一显现遍次可包含清除/未解析级、显现级及解析级。在清除/未解析级期间,GPU可为待显现的新平铺块初始化芯片上存储器。举例来说,GPU可将芯片上存储器初始化为某一值(清除),或将值从外部存储器读取到芯片上存储器(未解析)。在显现级期间,GPU可处理平铺块,且将经处理平铺块存储到芯片上存储器。也就是说,GPU可实施图形处理管线以确定像素值,且将像素值写入到芯片上存储器。在解析级期间,GPU可将平铺块的完成像素值从芯片上存储器传递到外部存储器。在完成图像的所有平铺块之后,图像准备好输出(例如,显示)。
虽然在可见性流的情况下基于平铺块的显现可允许处理较少基元(通过跳过不可见基元),但存在与逐分格地显现图像相关联的计算成本。每一分格可被称为数据信息块。在基于平铺块的显现的情况下,如上文所描述,每一信息块被加载到本地芯片上GPU存储器(加载)、经显现(显现)及被存储到系统存储器(存储)。
相对比地,GPU可执行不使用可见性信息的直接显现。在执行直接显现时,GPU对每个及每一基元着色且将其直接写入到系统存储器,而不管基元是否可见。也就是说,可将不可见基元写入到系统存储器,相比其它基元信息的区别仅仅是较晚被覆盖。因此,直接显现不需要在显现之前将整个信息块加载到芯片上存储器及在显现之后将其从芯片上存储器传递到系统存储器。
因此,确定可见性信息及执行基于平铺块的显现(在本文中也被称作基于分格的显现)的过程在图像的至少一部分具有相对大量的过度绘制的情境中通常是最有益的。过度绘制是指在另一基元之上绘制一个基元,以使得经过度绘制基元的至少一部分不可见。在存在极少过度绘制的情况中,与基于平铺块的显现相关联的在本地存储器与系统存储器之间的额外数据传递可引入时延。
然而,用于GPU的驱动程序(通常由例如中央处理单元(CPU)等另一处理单元执行)通常可负责确定分格的配置。另外,一旦产生,GPU通常无法更改可见性流,且被锁定为根据可见性流显现图像。也就是说,GPU必须加载每一信息块,显现信息块,且将信息块存储到存储器。因此,GPU通常可不在基于平铺块的显现与基于所显现的图像的直接显现之间进行选择。也就是说,例如,GPU通常不能够动态地选择用于具有相对大量的过度绘制的区域的基于平铺块的显现及用于具有相对少量的过度绘制的区域的直接显现。而是,如上所指出,GPU通常被锁定为对整个图像执行基于平铺块的显现或直接显现。
本发明的技术通常涉及利用可见性信息来优化显现。举例来说,根据本发明的方面,可基于可见性信息动态地确定执行显现的方式(例如直接显现或基于平铺块的显现)。在一些情况下,可见性信息可包含描述哪些基元可见的数据以及描述图像的复杂度的数据。举例来说,可见性信息可包含可见性流以及与可见性流相关联的启发式数据。启发式数据可包含例如分格中的基元的数目、分格中的可见基元的数目、分格中的不可见基元的数目、基元的大小及其类似者。在一些情况下,可基于指示分格的总复杂度、分格的过度绘制的量及其类似者的可见性信息将得分指派给分格。
基于此可见性信息,可确定是直接显现分格还是使用可见性流显现分格(基于平铺块的显现)。也就是说,例如,假定确定图像的初始分格配置,且最初将所有分格设定为使用基于平铺块的显现进行显现。在此实例中,最初设定为基于平铺块的显现的具有相对少量的过度绘制的分格可切换为直接显现。另外或替代地,可确定及实施新分格配置。举例来说,对于基于平铺块的显现将基元分配给分格的方式可基于可见性信息来更改。
因此,根据本发明的方面,在可见性流的情况下基于平铺块的显现可用以显现可受益于可见性信息的图像的部分(例如,具有众多基元及/或大量过度绘制的相对复杂区域)。另外,直接显现可用以显现其中基于平铺块的显现将导致与将数据从本地芯片上存储器传递到系统存储器相关联的时延的图像的部分。实施此些技术可增加显现图像的效率。
如下文更详细地描述,可由GPU、GPU驱动程序(例如,如由中央处理单元(CPU)执行)或其组合确定分格配置。也就是说,在一个实例中,GPU驱动程序可产生初始分格配置。GPU可处理初始分格配置,且基于初始分格配置产生可见性信息。GPU可将可见性信息发送到GPU驱动程序,所述GPU驱动程序可基于可见性信息产生经修订分格配置。在另一个实例中,GPU可基于可见性信息确定经修订分格配置,而非将可见性信息发送到GPU驱动程序。在再一实例中,GPU驱动程序及GPU可共享基于可见性信息确定经修订分格配置的职责。
图1为说明可实施本发明的用于显现图形数据的技术的计算装置30的框图。计算装置30的实例包含(但不限于)无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子图书阅读器、固定或移动媒体播放器,及其类似者。
在图1的实例中,计算装置30包含具有CPU存储器34的中央处理单元(CPU)32、具有GPU存储器38及一或多个着色单元40的图形处理单元(GPU)36、显示单元42、存储所显现数据45(“ren.数据”)的显示器缓冲器单元44、用户接口单元46及数据存储单元48。另外,存储单元48可存储具有编译程序54的GPU驱动程序50、GPU程序52和本地编译的GPU程序56。
CPU 32的实例包含(但不限于)数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路。尽管CPU 32及GPU 36在图1的实例中经说明为单独单元,但在一些实例中,CPU 32及GPU 36可集成为单个单元。CPU 32可执行一或多个应用程序。应用程序的实例可包含网络浏览器、电子邮件应用程序、电子数据表、视频游戏、音频及/或视频俘获、重放或编辑应用程序,或起始经由显示单元42呈现的图像数据的产生的其它应用程序。
在图1中所示的实例中,CPU 32包含CPU存储器34。CPU存储器34可表示用于执行机器或目标代码的芯片上存储装置或存储器。CPU存储器34可各自包括能够存储固定数目个数字位的硬件存储器寄存器。CPU 32可能够比从可例如经由系统总线存取的存储单元48读取值或将值写入到所述存储单元更快速地从本地CPU存储器34读取值或将值写入到所述本地CPU存储器。
GPU 36表示用于执行图形操作的一或多个专用处理器。也就是说,例如,GPU 36可为具有固定功能的专用硬件单元及用于显现图形及执行GPU应用程序的可编程组件。GPU 36还可包含DSP、通用微处理器、ASIC、FPGA或其它等效集成或离散逻辑电路。
GPU 36还包含GPU存储器38,所述GPU存储器可表示用于执行机器或目标代码的芯片上存储装置或存储器。GPU存储器38可各自包括能够存储固定数目个数字位的硬件存储器寄存器。GPU 36可能够比从可例如经由系统总线存取的存储单元48读取值或将值写入到所述存储单元更快速地从本地GPU存储器38读取值或将值写入到所述本地GPU存储器。
显示单元42表示能够显示视频数据、图像、文本或任何其它类型的数据以供观察者消费的单元。显示单元42可包含液晶显示器(LCD)、发光二极管(LED)显示器、有机LED(OLED)、有源矩阵OLED(AMOLED)显示器或其类似者。
显示器缓冲器单元44表示专用于存储数据以供呈现显示单元42的例如计算机产生的图形、静态图像、视频帧或其类似者等图像(所显现数据45)的存储器或存储装置。显示器缓冲器单元44可表示包含多个存储位置的二维缓冲器。显示器缓冲器单元44内的存储位置的数目可实质上类似于待显示在显示单元42上的像素的数目。举例来说,如果显示单元42经配置以包含640x480个像素,那么显示器缓冲器单元44可包含存储像素颜色及强度信息(例如,红色、绿色及蓝色像素值或其它色值)的640x480个存储位置。
显示器缓冲器单元44可存储由GPU 36处理的像素中的每一者的最终像素值。显示单元42可从显示器缓冲器单元44检索最终像素值,且基于存储在显示器缓冲器单元44中的像素值显示最终图像。
用户接口单元46表示用户可用来交互或以其它方式介接以与计算装置30的其它单元(例如,CPU 32)通信的单元。用户接口单元46的实例包含(但不限于)轨迹球、鼠标、键盘及其它类型的输入装置。用户接口单元46也可为或包含触摸屏,且触摸屏可经并入为显示单元42的一部分。
存储单元48可包括一或多个计算机可读存储媒体。存储单元48的实例包含(但不限于):随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器,或可用以存储呈指令或数据结构形式的所要程序代码且可通过计算机或处理器存取的任何其它媒体。
在一些实例实施方案中,存储单元48可包含致使CPU 32和/或GPU 36执行本发明中归于CPU 32和GPU 36的功能的指令。在一些实例中,存储单元48可被视为非暂时性存储媒体。术语“非暂时性”可指示存储媒体未体现于载波或传播信号中。然而,术语“非暂时性”应被解释为意味着存储单元48为不可移动的。作为一个实例,可将存储单元48从计算装置30中去除,且将其移动到另一装置。作为另一实例,可将实质上类似于存储单元48的存储单元插入到计算装置30中。在某些实例中,非暂时性存储媒体可存储可随时间而改变(例如,在RAM中)的数据。
存储单元48存储GPU驱动程序50和编译程序54、GPU程序52及本地编译GPU程序56。GPU驱动程序50表示提供接口以供存取GPU 36的计算机程序或可执行代码。CPU 32执行GPU驱动程序50或其部分以与GPU 36介接且,出于此原因,在图1的实例中将GPU驱动程序50展示为经标记为CPU 32内的“GPU驱动程序50”的短划线框。由CPU 32执行的程序或其它可执行代码(包含GPU程序52)可存取GPU驱动程序50。
GPU程序52可包含以高级(HL)编程语言撰写(例如,使用应用程序编程接口(API))的代码。API的实例包含开放计算语言(“OpenCL”)、开放图形库(“OpenGL”)和DirectX,如由Microsoft公司开发的。一般来说,API包含由相关联硬件执行的一组预定的标准化的命令。API命令允许用户发指令给GPU的硬件组件以执行命令而无需用户了解所述硬件组件的详情。
GPU程序52可调用或以其它方式包含通过GPU驱动程序50提供的一或多个功能。CPU 32通常执行嵌入GPU程序52的程序,且在遇到GPU程序52后,即刻将GPU程序52传递到GPU驱动程序50。在此上下文中,CPU 32执行GPU驱动程序50以处理GPU程序52。也就是说,例如,GPU驱动程序50可通过将GPU程序52编译成可通过GPU 36执行的目标或机器代码来处理GPU程序52。在图1的实例中将此目标代码展示为本地编译的GPU程序56。
在一些实例中,编译程序54可在执行其中嵌有GPU程序52的程序期间实时地或接近实时地操作以编译GPU程序52。举例来说,编译程序54通常表示将根据HL编程语言定义的HL指令还原为低级(LL)编程语言的LL指令的单元。在编译之后,这些LL指令能够通过特定类型的处理器或其它类型的硬件来执行,其它类型的硬件例如FPGA、ASIC及其类似者(包含(例如)CPU 32和GPU 36)。
在图1的实例中,当执行包含GPU程序52的HL代码时,编译程序54可从CPU 32接收GPU程序52。编译程序54可编译GPU程序52以产生符合LL编程语言的本地编译的GPU程序56。编译程序54接着输出包含LL指令的本地编译的GPU程序56。
GPU 36通常接收经本地编译的GPU程序56(如由GPU 36内的标记为“经本地编译的GPU程序56”的短划线框所示),于是在一些情况下,GPU 36显现一或多个图像,且将所显现的图像输出到显示器缓冲器单元44。举例来说,GPU 36可产生待显示在显示单元42处的数个基元。基元可包含以下各者中的一或多者:线(包含曲线、样条线等)、点、圆、椭圆、多边形(其中通常多边形被定义为一或多个基元的集合)或任何其它二维(2D)基元。术语“基元”还可指三维(3D)基元,例如立方体、圆柱体、球体、锥体、角锥、环面或其类似者。一般来说,术语“基元”是指能够通过GPU 36显现以用于经由显示单元42显示为图像(或在视频数据的上下文中为帧)的任何基本几何形状或元素。
GPU 36可通过应用一或多个模型变换(其也可在状态数据中指定)将基元及基元的其它属性(例如,其定义颜色、纹理、照明、相机配置或其它方面)变换到所谓的“世界空间”中。一旦进行了变换,GPU 36便可对有源相机应用视图变换(再次地,其还可在定义相机的状态数据中加以指定)以将基元和光的坐标变换到相机或视觉空间中。GPU36还可执行顶点着色以鉴于任何作用中光显现基元的外观。GPU 36可在上述模型、世界空间或视点空间中的一或多者中执行顶点着色(但其通常在世界空间中执行)。
一旦基元经着色,GPU 36便可执行投影以将图像投影到具有极点的单位立方体中,作为一个实例,在(-1,-1,-1)和(1,1,1)处。此单位立方体通常被称作正规化可视空间。在将模型从视觉空间变换到正规化可视空间之后,GPU 36可执行截割以去除至少部分地不会驻留在可视空间内的任何基元。换句话说,GPU 36可去除不在相机的帧内的任何基元。GPU 36可接着将基元的坐标从可视空间映射到屏幕空间,从而有效地将基元的3D坐标缩减到屏幕的2D坐标。
在给出定义基元的经变换及经投影的顶点和其相关联的着色数据的情况下,GPU 36可接着将基元光栅化。在光栅化期间,GPU 36可应用与基元相关联的任何纹理(其中纹理可包含状态数据)。GPU 36还可在光栅化期间执行Z-缓冲器算法(还被称作深度测试),以确定基元和/或物体中的任一者是否被任何其它物体遮挡。Z-缓冲算法根据基元的深度将基元排序,使得GPU 36知道将每一基元绘制到屏幕的次序。在分格(例如,用于基于平铺块的显现)时,可不在光栅化期间执行着色。然而,在显现基元时,GPU 36可计算且设定由基元覆盖的屏幕的像素的颜色。GPU 36接着将所显现的像素输出到显示器缓冲器单元44。
显示器缓冲器单元44可临时存储经显现的图像的经显现的像素,直到显现整个图像为止。在此上下文中,显示器缓冲器单元44可被视为图像帧缓冲器。显示器缓冲器单元44可传输经显现的图像以显示在显示单元42上。虽然分开展示及描述,但在一些情况下,显示器缓冲器单元44可形成存储单元48的部分。
在一些实例中,GPU 36可实施基于平铺块的显现以显现图像。举例来说,GPU 36可实施基于平铺块的架构,所述基于平铺块的架构通过将图像分裂成被称作平铺块的多个部分来显现图像。平铺块的大小可基于GPU存储器38的大小来设定。举例来说,GPU36可将平铺块显现到GPU存储器38。在完成平铺块后,即刻,GPU 36可将平铺块从GPU存储器38传递到存储单元48及/或显示器缓冲器单元44(作为所显现数据45)。在GPU 36以此方式显现与帧相关联的所有平铺块之后,显示器缓冲器单元44可将完成图像输出到显示单元42。使用多个平铺块显现图像可减小GPU存储器38与存储单元48之间的数据传送的量及/或频率。
在执行基于平铺块的显现时,GPU驱动程序50最初可确定用于显现图像的分格配置。举例来说,GPU驱动程序50可基于GPU存储器38的大小确定分格大小。另外,GPU驱动程序50可应用预定分格布局。举例来说,GPU驱动程序50可在图像的左上角中设定初始分格。GPU驱动程序50可在图像上从左到右及从上到下添加分格,直到已将整个图像划分成分格为止。
GPU驱动程序50还使用GPU程序52产生命令流。举例来说,命令流可含有用于显现来自GPU程序52的图像的指令。GPU驱动程序50可将指令添加到命令流,所述命令流由GPU 36按其在流中出现的次序执行。命令流可定义构成来自GPU程序52的图像的基元。
在已由GPU驱动程序50设定初始分格配置及命令流之后,GPU 36可执行分格遍次及显现遍次。对于分格遍次,GPU 36可处理整个帧,且将经光栅化基元分类成初始分格配置的分格(由GPU驱动程序50设定)。GPU 36还可在分格遍次期间产生可见性流,所述分格遍次可根据分格来分离。举例来说,可向每一分格指派图像的可见性流的对应部分。
GPU驱动程序50可存取可见性流,且产生用于显现每一分格的命令流。因此,可根据初始分格配置来设定命令流。也就是说,可产生及排序命令流以使得GPU 36按初始分格配置的次序显现图像的平铺块。
在显现平铺块时,GPU 36可执行清除/未解析级、显现级及解析级。在清除/未解析级期间,GPU 36为待显现的新平铺块初始化GPU存储器38。在显现级期间,GPU 36可显现平铺块,且将所显现的平铺块存储到GPU存储器38。也就是说,GPU 36可确定平铺块的每一像素的像素值,且将像素值写入到GPU存储器38。在解析级期间,GPU 36可将平铺块的完成像素值从GPU存储器38传递到显示器缓冲器单元44(或存储单元48)。
虽然在可见性流的情况下基于平铺块的显现可允许处理较少基元(通过跳过不可见的基元),但存在与将数据加载及存储到GPU存储器38及将整个平铺块从GPU存储器38传递到显示器缓冲器单元44相关联的计算成本。举例来说,与基于平铺块的显现相对比,GPU 36可通过在显现之后将像素值存储到显示器缓冲器单元44(或存储单元48)来直接显现数据,而非将像素值存储到GPU存储器38。在直接显现的情况下,GPU驱动程序50不使用可见性流来识别及跳过在最终图像中不可见的基元。而是,命令流包含用以显现所有基元的指令,而不管基元是否可见。因此,存储单元48及/或显示器缓冲器单元44中的不可见基元可能最终由与一或多个其它基元相关联的像素值覆盖。
确定可见性信息及执行基于平铺块的显现(在本文中也被称作基于分格的显现)的过程在图像的至少一部分具有相对大量的过度绘制的情境中通常是最有益的。过度绘制是指在另一基元之上绘制一个基元,以使得经过度绘制基元的至少一部分不可见。在存在极少过度绘制的情况中,与基于平铺块的显现相关联的在本地存储器与系统存储器之间的额外数据传递可引入时延。
然而,如上所指出,GPU驱动程序50确定分格的初始配置。另外,GPU 36将可见基元分类成分格以基于分格的初始配置创建可见性流。因此,一旦基于分格的初始配置产生可见性流,GPU驱动程序50便无法更改用于显现基元的命令流。也就是说,例如,GPU驱动程序50通常不能够产生用于直接显现不具有大量过度绘制的区域的命令流,同时还产生具有相对大量的过度绘制的区域的基于平铺块的显现命令流。而是,GPU驱动程序50及GPU 36通常被锁定为对整个图像执行基于平铺块的显现或直接显现。
本发明的技术通常涉及利用可见性信息来优化显现。举例来说,根据本发明的方面,GPU 36及GPU驱动程序50可基于与图像相关联的可见性信息动态地确定如何显现特定图像。以此方式,GPU 36及GPU驱动程序50可执行图像的一些区域中的直接显现(在不使用可见性流且不将数据直接存储到显示器缓冲器单元44的情况下),同时执行相同图像的其它区域中的基于平铺块的显现(使用可见性流且将数据存储到GPU存储器38)。
因此,根据本发明的方面,GPU 36可使用基于平铺块的显现来显现可受益于可见性信息的图像的部分(例如,具有众多基元及/或大量过度绘制的相对复杂区域)。另外,GPU 36可使用直接显现以显现其中基于平铺块的显现将导致与将数据从本地芯片上存储器传递到系统存储器相关联的时延的图像的部分。实施此些技术可增加显现图像的效率。
应理解,仅仅作为实例而提供计算装置30,且可以不同方式来布置执行本发明的技术的其它计算装置30。举例来说,虽然将显示器缓冲器单元44与存储单元48分离来展示及描述,但在其它实例中,显示单元缓冲器44和存储单元48可并入到相同组件中。
此外,应理解,计算装置30可包含图1中为了清晰起见而未展示的额外模块或单元。举例来说,计算装置30可包含用于发射及接收数据的收发器单元,且可包含允许计算装置30与另一装置或网络之间的无线或有线通信的电路。计算装置30还可包含扬声器和麦克风(所述两者在图1中均未展示),以在其中计算装置30为移动无线电话(例如,智能电话)的实例中实现电话通信,或可包含其中计算装置30为媒体播放器或平板计算机的扬声器及/或麦克风。在一些情况下,在其中计算装置30为桌上型计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口单元46和显示单元42可在计算装置30的外部。
图2为更详细地说明计算装置30的部分的框图。在图2的实例中,GPU 36包含GPU存储器38、命令处理器60、一或多个着色器处理器64、光栅化器68及可见性单元72。另外,CPU 32包含CPU存储器34、GPU驱动程序50、编译程序54及命令流重新配置单元76。应理解图2的某些单元可为高度集成的,但为概念性目的而单独予以说明。此外,一些单元可为概念性目的关于单个单元来描述,但可包含一或多个功能单元。
图2经提供为可利用本发明的用于显现图形数据的技术的GPU的仅一个实例。在其它实例中,用于显现图形数据的技术可由具有其它组件的多种其它GPU进行。举例来说,GPU 36还可包含与分析及显现图像相关的多种其它组件及单元,例如输入总成单元、纹理单元、调度单元、算术逻辑单元(ALU)或其它固定功能或可编程GPU组件。
GPU 36的组件可以与存取例如存储单元48(图1)等外部存储器相比相对较低的时延存取GPU存储器38。举例来说,GPU存储器38可为在GPU 36的芯片上且与GPU组件相对紧密近接的芯片上存储器,且可与GPU 36内的专用存储器总线相关联。为了存取存储于存储单元48中的数据,相对比地,GPU 36可必须与计算装置30的其它组件(例如CPU 32)共享存储器总线,此情形可导致更多受限制的可用带宽。
为了利用高带宽、低时延GPU存储器38,如上文所描述,GPU 36可使用基于平铺块的显现架构显现图形。GPU 36可将图像(其也可被称作场景)分裂成较小部分(例如,平铺块)。GPU存储器38可在GPU 36显现平铺块时存储与平铺块相关联的数据。在显现平铺块之后,GPU 36可解析所显现的像素数据或经由存储器总线将所显现的像素数据从GPU存储器38复制到存储单元48。
命令处理器60可负责从GPU驱动程序50读取命令流。举例来说,如上文关于图1所描述,GPU驱动程序50可发布由GPU 36执行的指令,所述指令可被称为命令流。命令处理器60可读取及/或解码命令流的指令。在一些实例中,命令处理器60可从含有命令流的指令的缓冲器进行读取。命令处理器60还可在GPU 36处起始指令的执行。举例来说,命令处理器60可将指令馈送到线程调度程序,所述线程调度程序调度将由着色器处理器64执行的指令。
着色器处理器64可负责执行指令。举例来说,着色器处理器64可为负责顶点、几何形状及像素着色操作的可编程着色单元。举例来说,着色器处理器64中的一或多者可负责确定构成场景的基元(例如,三角形)的顶点位置以产生场景的三角形网格。另外,着色器处理器64中的一或多者可负责产生来自三角形网格的基元以及像素填充及着色操作。
着色器处理器64可相同地经配置或可个别地经配置以执行特定任务。举例来说,着色器处理器64中的一者可经指明为负责分格操作的“分格着色器”,同时剩余着色器处理器64可负责执行上文所描述的顶点、几何形状或像素着色操作。
光栅化器68可接收顶点信息,且可产生场景的基元的表示。在一些实例中,光栅化器68将预定义规则应用于所接收的顶点信息以确定哪些基元在最终场景中是可见的。光栅化器68可剔除或移除场景的任何不可见基元。举例来说,光栅化器68可执行z缓冲以识别由其它基元覆盖的基元,且因此在最终场景中不可见。
可见性单元72可包含固定功能硬件组件及/或可编程处理单元的任何组合。可见性单元72可从光栅化器68接收经光栅化数据,且产生一或多个可见性流。为了产生可见性流,可见性单元72可将如由光栅化器68确定的可见基元中的每一者分配给分格。每一分格可表示完成场景的平铺块。
在一些实例中,可见性单元72可产生用于分格中的每一者的单独可见性流。举例来说,可见性单元72可通过设定旗标以指示特定分格的哪些基元可见及特定的哪些基元不可见而产生用于特定分格的可见性流。根据一些方面,可见性单元72可设定旗标值“1”以指示基元在最终场景中可见,且设定旗标值“0”以指示基元在最终场景中不可见。
因此,可见性单元72可产生包括指示分格中的每一者的可见基元的旗标的多个可见性流。在一些实例中,可见性单元72可压缩可见性流。举例来说,可见性单元72可应用压缩方案以减小大串“0”旗标,且减小恢复可见性流所需要的存储器量。
根据本发明的方面,可见性单元72还可产生用于场景的每一分格的启发式数据。一般来说,启发式数据描述分格的特性。举例来说,可见性单元72可在逐可见性流的基础上产生以描述分格的可见性特性。在一些实例中,启发式数据可包含描述分格中的基元的数目的数据、分格中的可见基元的数目、分格中的不可见或经遮蔽基元的数目、分格中的基元的大小及其类似者。
在一些情况下,根据本发明的方面,可见性单元72可基于可见性流及/或启发式数据将得分指派给每一分格。举例来说,可见性单元72可将指示每一分格的总复杂度、每一分格的过度绘制的量及其类似者的得分指派给每一分格。在实例中,出于说明的目的,可见性单元72可根据每一分格的过度绘制的量排列每一分格数值等级,其中0等级指示在分格中不存在重叠基元,且10等级指示存在众多重叠基元。
在一些实例中,一或多个可见性流、启发式数据及可见性得分通常皆可被称作可见性信息。也就是说,可见性信息可包含可见性流、启发式数据及可见性得分的任何子集。
根据本发明的方面,可见性单元72可准备将可见性信息发送到GPU驱动程序50。举例来说,在一些情况下,可见性单元72可将启发式数据及/或可见性得分附加到可见性流的末尾。在其它实例中,可见性单元72可与可见性流单独地提供启发式数据及/或可见性得分。
在任何状况下,在图2中所示的实例中,可见性信息可由命令流重新配置单元76接收。虽然出于解释的目的与GPU驱动程序50分开展示,但应理解命令流重新配置单元76可与GPU驱动程序50集成,以使得GPU驱动程序50进行在本发明中归于命令流重新配置单元76的技术。
命令流重新配置单元76可从可见性单元72接收可见性信息。如下文更详细地描述,命令流重新配置单元76可基于可见性信息重新配置命令流。举例来说,命令流重新配置单元76可将原先设定为基于平铺块的显现的一些分格指明为直接显现。在另一个实例中,命令流重新配置单元76可改变分格配置以形成新的分格。也就是说,命令流重新配置单元76可合并一或多个(或部分一或多个)可见性流以创建新的分格。
在实例中,出于说明的目的,GPU驱动程序50可根据在CPU 32处执行的程序产生定义用于显现的图像的命令流。命令流可指示初始分格配置。举例来说,GPU驱动程序50可基于GPU存储器38的大小确定分格大小。另外,GPU驱动程序50可使用预定分格布置(分格的相对位置)将图像分裂成适当数目的分格。
命令流可由GPU 36的命令处理器60接收。GPU 36可执行分格遍次(如上文关于图1所描述),且产生用于图像的基元的一或多个可见性流。也就是说,例如,可见性单元72可产生指示图像的哪些基元在初始分格配置中可见的一或多个可见性流。
另外,根据本发明的方面,可见性单元72可产生用于可见性流的启发式数据及/或可见性得分。举例来说,如上文所描述,可见性单元72可确定分格中的每一者中的基元的数目、分格中的每一者中的可见基元的数目、分格中的每一者中的不可见基元的数目、基元的大小及其类似者,且可见性单元72可基于可见性信息将可见性得分指派给分格。
在一些实例中,可见性单元72可将启发式数据及/或得分附加到可见性流的末尾。在其它实例中,可见性单元72可与可见性流分开提供启发式数据及/或得分。在任何状况下,可见性单元72可在CPU 32处将可见性信息(例如,可见性流、启发式数据及/或得分)发送到命令流重新配置单元76。
根据本发明的方面,命令流重新配置单元76可接收可见性流以及描述可见性流的额外数据(例如,可被称为经解码可见性信息的启发式数据及/或可见性得分)。命令流重新配置单元76可使用所接收的数据基于可见性信息重新配置命令流。也就是说,命令流重新配置单元76基于可见性信息确定用于显现图像的命令流。
在一些实例中,命令流重新配置单元76可从基于平铺块的显现遍次中除去一或多个分格。也就是说,命令流重新配置单元76可将来自初始分格配置的一或多个分格指明为直接显现,而非基于平铺块的显现。在另一个实例中,命令流重新配置单元76可确定修订将基元分配给用于显现的一或多个分格。也就是说,命令流重新配置单元76可基于可见性信息动态地产生用于基于平铺块的显现遍次的新的经修改分格配置。
在一些实例中,命令流重新配置单元76可合并所产生的可见性流中的一或多者以创建新分格布置。也就是说,命令流重新配置单元76可通过更改一或多个分格的边界以包含基元的替代集合来更改分格配置。在此类实例中,可能不再均匀分配分格;而是,分格可基于图像的复杂度来布置。举例来说,分格可用以包含具有过度绘制的图像的相对复杂区域,同时可直接显现图像的其它部分。
根据一些实例,命令流重新配置单元76可使用启发式数据合并可见性流直到获得预定复杂度量度为止。举例来说,命令流重新配置单元76可基于受限制区生长算法合并分格初始配置的部分(使用可见性流)。以此方式,命令流重新配置单元76可将图像的最复杂区域(其可最大地受益于基于平铺块的显现)分组在一起。另外,命令流重新配置单元76可根据图像内的关注区混合及匹配直接及基于平铺块的显现。此方法允许GPU36针对每一遍次实现良好平衡显现加载,同时消除空批次。
上文已将某些技术描述为由计算装置30的特定组件执行。然而,应理解仅出于解释的目的而提供此些实例。因此,归于计算系统30的一个组件的技术可由一或多个其它组件执行。举例来说,虽然可见性单元72经描述为从可见性流产生启发式数据及可见性得分,但在一些情况下,此些功能可由CPU 32(例如由命令流重新配置单元76或GPU驱动程序50)进行。
在另一个实例中,虽然是关于单独单元进行描述,但应理解命令流重新配置单元76可与CPU 32及/或GPU 36的其它组件高度集成。举例来说,命令流重新配置单元76可与GPU驱动程序50集成,以使得CPU 32(经由GPU驱动程序50)负责基于可见性信息重新配置命令流。在此实例中,CPU 32可负责产生初始命令流以及经重新配置命令流。经重新配置命令流可从与初始命令流相关联的基于平铺块的显现遍次除去一或多个分格,或可包含新分格布置,所述新分格布置包含用于直接显现的新的不同分格及/或经指定区域。
在其它实例中,命令流重新配置模块76可与GPU 36集成,以使得GPU负责基于可见性信息重新配置命令流。在此类实例中,可见性信息可完全由GPU 36产生及利用。也就是说,虽然CPU 32(经由GPU驱动程序50)可负责产生初始命令流,但GPU 36可负责重新配置初始命令流。如上所指出,重新配置命令流可从与初始命令流相关联的基于平铺块的显现遍次除去一或多个分格,或可包含新分格布置,所述新分格布置包含用于直接显现的新的不同分格及/或经指定区域。
图3为说明具有用于显现的物体94(在图3的实例中展示为树)的图像90的图。在一些实例中,图像90可由计算装置30显现,如上文关于图1及2所示及描述。
举例来说,GPU驱动程序50可产生用于由GPU 36显现的命令流定义图像90。命令流可包含用于显现物体94的基元的指令以及含有分格0-分格3的初始分格配置。在一些实例中,如上所指出,GPU驱动程序50可基于GPU存储器38的大小确定分格0-3的大小。举例来说,GPU驱动程序50可设定分格0-3的大小以使得与分格中的每一者相关联的数据可存储于GPU存储器38处。另外,GPU驱动程序50可使用预定分格布置将图像90分裂成分格0-3。也就是说,在实例图3中,GPU驱动程序50可在图像90上从左到右及从上到下布置分格。因此,GPU 36可从左到右及从上到下显现图像,最初显现分格0,后跟着分格1、分格2及分格3。GPU驱动程序50可经预配置以确定初始分格配置。
如上所指出,存在直接显现与基于平铺块的显现之间的取舍。在可见性信息的情况下基于平铺块的显现可允许跳过一些经遮蔽基元,从而减小着色器处理器64的负载。然而,存在与将数据的整个分格加载到本地GPU存储器38(加载)及将完成平铺块从本地GPU存储器38传递到存储单元48(解析)相关联的成本。相对比地,直接显现通过着色所有基元及将所有基元直接写入到存储单元48而消除这些加载及解析成本。然而,可将一些基元写入到存储单元48,所述基元只会被一或多个其它基元覆盖,从而导致由着色器处理器64进行不必要的着色。
因此,确定可见性信息及执行基于平铺块的显现的过程通常在其中图像的至少一部分具有相对大量的过度绘制的情境中是最有益的。也就是说,跳过不可见基元及减小着色加载的能力可比与展现相对大量的过度绘制的图像的区域中的基于平铺块的显现的加载及解析级相关联的时延更重要。相反,在存在少量过度绘制的情况中,将数据直接存储到存储单元48(直接显现)的能力可比与基于平铺块的显现的加载及解析级相关联的时延更重要。
如图3中所展示,大部分物体94朝向图像90的左侧定位。另外,物体94的仅某些部分经受过度绘制。举例来说,分格0中的物体94的仅顶部部分(例如,树的顶部)经受过度绘制。图像90的剩余部分未经受大量过度绘制。
通过实施基于的平铺块显现以用于显现分格0-3(在可见性流的情况下),GPU 36可显现与直接显现将需要的基元相比较少的基元。也就是说,在具有过度绘制的分格0的区域中,GPU 36可使用可见性流来跳过与物体94的经遮蔽部分相关联的基元。然而,与分格1-3相关联的物体94的部分具有极少或不具有过度绘制。
一般来说,GPU驱动程序50无法更改由GPU 36产生的可见性流,且根据初始分格配置被锁定为产生命令流以显现图像90。也就是说,尽管分格1-3具有极少或不具有过度绘制,但GPU驱动程序50在运行中可不从基于平铺块的显现切换到直接显现。此外,GPU驱动程序50可不改变分格的布置。
本发明的技术通常涉及利用可见性信息以优化显现。举例来说,如下文关于图4及5所描述,显现图像90的方式可基于可见性信息动态地确定。
图4为说明图3的图像的另一框图。图4的实例通常说明用于显现图像90的经修订分格配置。举例来说,图4中所示的经修订分格配置指示是否直接显现来自图3中所示的初始分格配置的一或多个分格。
根据本发明的方面,GPU 36可在执行初始分格遍次时产生除了可见性流之外的启发式数据。启发式数据可包含例如分格中的每一者中的基元的数目、分格中的每一者中的可见基元的数目、分格中的每一者中的不可见基元的数目、基元的大小及其类似者。在一些实例中,GPU 36还可基于启发式数据及/或可见性流产生可见性得分。可见性得分可指示分格的复杂度、分格的过度绘制的相对量及其类似者。
GPU 36可将可见性信息(例如,可见性流、启发式数据及/或可见性得分)发送到GPU驱动程序50。根据本发明的方面,GPU驱动程序50可基于可见性信息修正分格配置。举例来说,GPU驱动程序50可动态地确定经修订分格配置以优化显现,而非被锁定为初始分格配置(图3)。
在图4的实例中,经修订分格配置包含直接显现来自图3中所示的初始分格配置的分格。举例来说,GPU驱动程序50可基于可见性信息确定原始分格0-3(图3)的特性。也就是说,GPU驱动程序50可确定具有很少显现基元的原始分格配置的分格1、分格2及分格3,且不包含大量过度绘制。
GPU驱动程序50可修正分格配置以使用直接显现来显现原始分格配置的分格1、分格2及分格3。举例来说,GPU驱动程序50可产生用于使用基于平铺块的显现显现分格0(其包含具有过度绘制的物体94)及使用直接显现来显现分格1-3(其具有很少基元及极少过度绘制)的指令。因此,GPU驱动程序50从基于平铺块的显现遍次除去分格1-3,且替代地发布用于GPU 36的指令以使用直接显现来显现此些分格。
以此方式,GPU驱动程序50优化图像90的显现遍次。举例来说,基于平铺块的显现用以显现图像90的部分,其中经遮蔽基元跳过的益处比与加载及解析级相关联的成本更重要。另外,直接显现用以显现图像90的部分,其中加载及解析级引入不必要的时延。
图5为说明图3的图像的另一框图。图5的实例通常说明用于显现图像90的另一经修订分格配置。举例来说,图5中所示的经修订分格配置包含修订将基元94分配给新分格0。
如上文关于图4所提到,根据本发明的方面,GPU驱动程序50可基于所接收的可见性信息修订分格配置。举例来说,GPU驱动程序50可动态地确定经修订分格配置以优化显现,而非被锁定为初始分格配置(图3)。
GPU驱动程序50最初可基于可见性信息确定原始分格0-3(图3)的特性。也就是说,GPU驱动程序50可确定具有很少显现基元的原始分格配置的分格1、分格2及分格3,且不包含大量过度绘制。GPU驱动程序50接着可产生具有分格的替代布置的新分格配置。
在图5的实例中,GPU驱动程序50可确定包含物体94的新分格0。举例来说,GPU驱动程序50可合并用于原始分格0-3(图3)的可见性流的部分以产生用于新分格0的可见性流。以此方式,GPU驱动程序50可更改原始分格0-3的边界以包含物体94。
因此,GPU驱动程序50可定位新分格0以包含图像90的最复杂区域,同时将图像90的其它部分指明为直接显现(“直接”)。在一些实例中,GPU驱动程序50可使用可见性信息来合并可见性流直到获得预定复杂度量度为止。举例来说,GPU驱动程序50可基于受限制区生长算法合并分格的初始配置的部分。如果无法获得复杂度量度,那么GPU驱动程序50可将分格的剩余部分指明为直接显现。
在图5的实例中,GPU驱动程序50可实施开始使物体94周围的区生长的区生长算法。GPU驱动程序50可继续生长区直到已达成预定分格大小为止,从而创建新分格0。GPU驱动程序50接着可开始另一区生长算法。因为图像90的剩余部分并不复杂(例如,具有相对较少的基元,所述基元具有相对少的过度绘制),GPU驱动程序50可将图像90的剩余部分指明为直接显现(不具有分格及/或可见性信息)。
以此方式,GPU驱动程序50优化图像90的显现遍次。举例来说,基于平铺块的显现用以显现图像90的部分,其中经遮蔽基元跳过的益处比与加载及解析级相关联的成本更重要。另外,直接显现用以显现图像90的部分,其中加载及解析级引入不必要的时延。
根据一些实例,GPU驱动程序50可利用用于一个以上图像(帧)的特定分格布置。举例来说,关于图5,在优化用于图像90的显现遍次后,GPU驱动程序50即刻可将与图像90相关联的经优化分格配置应用图像的序列中的一或多个其它图像。也就是说,在辨识图像的部分可能在图像的序列中并未显著改变(例如,背景物体)时,GPU驱动程序50可利用用于图像90的优化分格配置作为用于一或多个后续图像的初始分格配置。以此方式,GPU驱动程序50可仅对图像的序列中的图像的子集执行关于图4及5所描述的优化。
虽然图3到5中所示的实例是关于计算装置30而描述的,但应理解所述技术可由具有多种其它组件的多种其它计算装置执行。
图6为说明实例分格过程的流程图。虽然图6中所示的过程经描述为由CPU 32及/或GPU 36(图1及2)进行,但所述技术可由多种其它处理单元实施。
在图6的实例中,由CPU 32执行的GPU驱动程序50最初产生具有用于显现图形数据的初始分格配置的初始命令流(120)。举例来说,GPU驱动程序50可经配置以基于GPU 36的配置(例如GPU存储器38的大小)确定分格大小。GPU驱动程序50还可经配置以使用所确定的分格大小的分格来应用预定分格布置。
GPU 36接着可确定用于初始分格配置的可见性流(122)。举例来说,GPU 36可处理命令流以产生所显现的图像的基元。GPU 36还可将基元分配给初始分格配置的分格。GPU 36可产生可见性流以指示哪些基元在每一分格中是可见的。
根据本发明的方面,GPU 36还可产生用于初始分格配置的分格的启发式数据(124)。启发式数据可包含例如分格中的每一者中的基元的数目、分格中的每一者中的可见基元的数目、分格中的每一者中的不可见基元的数目、基元的大小及其类似者。在一些实例中,GPU 36可使用可见性流及/或启发式数据将可见性得分指派给每一分格。可见性得分可指示分格的复杂度、分格的过度绘制的量及其类似者。
GPU驱动程序50可接收可见性流及启发式数据,且可分析可见性信息(126)。举例来说,GPU驱动程序50可确定图像的复杂度、具有过度绘制的图像的识别区域及其类似者。GPU驱动程序50还可使用可见性信息以基于可见性流及/或启发式数据产生用于显现数据的第二命令流(初始命令流的不同形式)(128)。举例来说,GPU驱动程序50可将来自初始分格配置的分格中的一或多者指明为直接显现。在另一个实例中,GPU驱动程序50可产生不同于初始分格配置的新分格配置,所述新分格配置包含一或多个新分格。
GPU 36可接收第二命令流,且基于第二命令流显现图像(130)。也就是说,GPU 36可使用第二命令流确定图像的像素的像素值,且可输出图像以供呈现。
应理解图6中所示的步骤是仅作为一个实例而提供的。也就是说,图6中所示的步骤不一定是按所示的次序执行,且可执行较少、额外或替代步骤。此外,虽然某些功能是归于GPU驱动程序50及GPU 36,但此些功能可由不同组件执行。举例来说,根据替代方面,GPU驱动程序50可负责从原始可见性流产生启发式数据,而非如上文所描述的GPU 36。
另外,图6是关于初始分格配置及经修订分格配置而描述的。本发明的技术并不限于此方式。举例来说,GPU 36可产生用于整个图像的可见性信息,而不用考虑初始分格配置。在此实例中,GPU驱动程序50可产生用于基于用于整个图像的可见性信息显现数据的最优命令流。
图7为说明根据本发明的方面的用于显现图形的实例过程的流程图。虽然图7中所示的过程经描述为由GPU 36(图1及2)进行,但所述技术可由多种其它处理单元实施。
在图7的实例中,例如GPU 36等GPU接收具有用于显现图形数据的图像的初始分格配置的命令流(150)。命令流可包含描述图像的指令。GPU 36可产生用于初始分格配置的一或多个可见性流(152)。举例来说,GPU 36可使用命令流产生用于图像的基元。GPU 36可识别图像中的可见基元,且使用一系列旗标指示命令流中的可见基元。可见性流可在逐分格的基础上或针对整个图像产生。
GPU 36还可解码所产生的可见性流(154)。举例来说,GPU 36可产生描述分格的数据。也就是说,GPU 36可指示每一分格中的基元的数目、每一分格中的可见基元的数目、每一分格中的不可见基元的数目、基元的大小及其类似者。在一些情况下,GPU 36还可得分指派给分格。得分可指示每一分格的总复杂度、用于每一分格的过度绘制的量及其类似者。GPU 36可将此经解码可见性数据与可见性流一起提供(例如,附加到可见性流的末尾)或可单独地提供经解码可见性数据。
GPU 36可确定是否使用初始分格配置显现图像,或是否在显现期间使用经修订分格配置(156)。举例来说,GPU 36可接收用于显现具有不同于初始分格配置的分格配置的图像的命令流。不同分格配置可基于可见性流及/或描述分格的数据(经解码可见性流)。可基于来自发布用于显现图像的命令流的驱动程序(例如GPU驱动程序50)的指令进行确定。
如果使用经修订分格配置(步骤156的“是”分支),那么GPU 36可基于可见性流及经解码可见性流数据接收经修订分格配置(158)。GPU 36接着可使用经修订分格配置显现图像(160)。如果不使用经修订分格配置(步骤156的“否”分支),那么GPU可使用初始分格配置显现图像(160)。
应理解图7中所示的步骤仅作为一个实例而提供。也就是说,图7中所示的步骤不一定是按所示的次序执行的,且可执行较少、额外或替代步骤。
图8为说明根据本发明的方面的用于显现图形的另一实例过程的流程图。虽然图8中所示的过程经描述为由CPU 32进行(经由GPU驱动程序50)(图1及2),但所述技术可由多种其它处理单元实施。
在图8的实例中,GPU驱动程序(例如GPU驱动程序50)可接收与由GPU(例如GPU36)显现的图像的分格相关联的可见性信息(180)。可见性信息可包含例如一或多个可见性流以及经解码可见性数据。举例来说,GPU驱动程序50可接收指示每一分格中的基元的数目的数据、指示每一分格中的可见基元的数目的数据、指示每一分格中的不可见基元的数目的数据、指示基元的大小的数据及其类似者。在一些情况下,GPU驱动程序50还可接收用于每一分格的得分。得分可指示每一分格的总复杂度、用于每一分格的过度绘制的量及其类似者。
GPU驱动程序50可分析可见性信息(182)。在一些实例中,GPU驱动程序50可合并可见性流直到获得预定复杂度量度为止。举例来说,GPU驱动程序50可基于受限制区生长算法合并可见性流的部分。在其它实例中,GPU驱动程序50可将所接收的可见性得分与阈值进行比较。
GPU驱动程序50还可基于分析确定将基元分配给分格(184)。举例来说,GPU驱动程序50可指明具有相对大量的过度绘制的图像的区域用于基于平铺块的显现。在此实例中,GPU驱动程序50可产生包含指定区域的一或多个分格。另外,GPU驱动程序50可产生用于分格的一或多个可见性流。这些分格可由GPU 36使用以执行用于指定区域的基于平铺块的显现。GPU驱动程序50还可指明具有相对少量的过度绘制的区域用于直接显现。在这些区域中,GPU驱动程序50可不产生可见性流,因为此信息并不需要用于直接显现。
在一些情况下,GPU驱动程序50可产生初始分格配置,之后产生所接收的可见性信息(从步骤180)。在此实例中,GPU驱动程序50可确定是否实施初始分格配置,或是否基于分析修正分格配置。
举例来说,GPU驱动程序50可基于上文的分析指明初始分格配置的一或多个分格用于直接显现。也就是说,GPU驱动程序50可基于上文所描述的复杂度量度或可见性得分将分格指明为直接显现或基于平铺块的显现。在实例中,出于说明的目的,如果可见性得分高于预定阈值(例如,指示高复杂度及/或大量过度绘制),那么GPU驱动程序50可将分格指明为基于平铺块的显现。相对比地,如果可见性得分低于阈值(例如,指示较少基元及/或极少过度绘制),那么GPU驱动程序50可将分格指明为直接显现。
在另一个实例中,GPU驱动程序50可为了新分格配置而舍弃初始分格配置。在此实例中,GPU驱动程序50可基于分析产生一或多个新分格。另外,GPU驱动程序50可产生用于分格的一或多个可见性流,如上所指出。
在确定将基元分配给分格之后,GPU驱动程序50可根据所确定的分格配置产生具有用于显现图像的指令的命令流(186)。命令流可由GPU 36执行以显现图像。
应理解图8中所示的步骤仅作为一个实例而提供。也就是说,图8中所示的步骤不一定是按所示的次序执行的,且可执行较少、额外或替代步骤。
还应理解,取决于实例,本文中所描述的方法中的任一者的某些动作或事件可以用不同顺序执行、可以添加、合并或全部省略(例如,实践所述方法并不需要所有所描述动作或事件)。此外,在某些实施例中,可同时(例如,通过多线程处理、中断处理或多个处理器)而非顺序地执行动作或事件。
在一或多个实例中,所描述的功能可用硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么功能可作为一或多个指令或代码存储在包括非暂时性计算机可读媒体的制造物品上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可以是可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码及/或数据结构的任何可用的媒体。以实例说明而非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器,或可用以携载或存储呈指令或数据结构形式且可由计算机存取的所要程序代码的任何其它媒体。本文中使用的磁盘和光盘包含压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软磁盘和蓝光光盘,其中磁盘通常是以磁性方式再现数据,而光盘是用激光以光学方式再现数据。上文各者的组合也应包含在计算机可读媒体的范围内。
代码可由一或多个处理器执行,所述一或多个处理器例如一或多个DSP、通用微处理器、ASIC、FPGA,或其它等效集成或离散逻辑电路。另外,在一些方面中,可在专用硬件和/或软件模块内提供本文中所描述的功能性。并且,可将所述技术完全实施于一或多个电路或逻辑元件中。
本发明的技术可在广泛多种装置或设备中实施,包括无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示技术的装置的功能方面,但未必需要通过不同硬件单元来实现。确切地说,如上文所描述,各种单元可结合合适的软件和/或固件组合在一个编解码器硬件单元中,或由互操作硬件单元的集合来提供,所述硬件单元包括如上文所描述的一或多个处理器。
已描述各种实例。这些和其它实例在所附权利要求书的范围内。
Claims (58)
1.一种用于显现图像的方法,所述方法包括:
产生指示所述图像的可见基元的可见性信息;及
使用分格配置显现所述图像,其中所述分格配置是基于所述可见性信息。
2.根据权利要求1所述的方法,
其中所述可见性信息与初始分格配置相关联,所述初始分格配置指示所述可见基元到一或多个预定分格的初始基于平铺块的分配,
其中所述分格配置包括来自所述初始分格配置的经修订分格配置,且
其中使用所述分格配置显现所述图像包括使用所述经修订分格配置显现所述图像。
3.根据权利要求2所述的方法,
其中所述经修订分格配置包括所述可见基元到一或多个不同分格的经修订基于平铺块的分配,且
其中使用所述分格配置显现所述图像包括使用直接显现及所述经修订分格配置的组合显现所述图像。
4.根据权利要求2所述的方法,其中所述经修订分格配置包括是否直接显现来自所述初始分格配置的一或多个分格的指示。
5.根据权利要求2所述的方法,其中所述经修订分格配置包括具有所述可见基元到一或多个新分格的经修订分配的所述一或多个新分格的指示。
6.根据权利要求1所述的方法,其中产生可见性信息包括产生指示所述可见基元的可见性流,及产生与所述图像的基元相关联的启发式数据。
7.根据权利要求6所述的方法,其中产生所述启发式数据包括产生指示与所述基元相关联的过度绘制的量的数据。
8.根据权利要求6所述的方法,其中产生所述启发式数据包括产生指示所述图像的预定区域中的基元的数目的数据。
9.根据权利要求6所述的方法,其中产生所述启发式数据包括产生指示所述图像的预定区域中的基元的大小的数据。
10.根据权利要求1所述的方法,其进一步包括基于所述可见性信息产生所述分格配置。
11.一种用于显现图像的设备,所述设备包括一或多个处理器,所述处理器经配置以:
产生指示所述图像的可见基元的可见性信息;及
使用分格配置显现所述图像,其中所述分格配置是基于所述可见性信息。
12.根据权利要求11所述的设备,
其中所述可见性信息与初始分格配置相关联,所述初始分格配置指示所述可见基元到一或多个预定分格的初始基于平铺块的分配,
其中所述分格配置包括来自所述初始分格配置的经修订分格配置,且
其中为了使用所述分格配置显现所述图像,所述一或多个处理器经配置以使用所述经修订分格配置显现所述图像。
13.根据权利要求12所述的设备,
其中所述经修订分格配置包括所述可见基元到一或多个不同分格的经修订基于平铺块的分配,且
其中为了使用所述分格配置显现所述图像,所述一或多个处理器经配置以使用直接显现及所述经修订分格配置的组合显现所述图像。
14.根据权利要求12所述的设备,其中所述经修订分格配置包括是否直接显现来自所述初始分格配置的一或多个分格的指示。
15.根据权利要求12所述的设备,其中所述经修订分格配置包括具有所述可见基元到所述一或多个新分格的经修订分配的一或多个新分格的指示。
16.根据权利要求11所述的设备,其中为了产生可见性信息,所述一或多个处理器经配置以产生指示所述可见基元的可见性流,且产生与所述图像的基元相关联的启发式数据。
17.根据权利要求16所述的设备,其中为了产生所述启发式数据,所述一或多个处理器经配置以产生指示与所述基元相关联的过度绘制的量的数据。
18.根据权利要求16所述的设备,其中为了产生所述启发式数据,所述一或多个处理器经配置以产生指示所述图像的预定区域中的基元的数目的数据。
19.根据权利要求16所述的设备,其中为了产生所述启发式数据,所述一或多个处理器经配置以产生指示所述图像的预定区域中的基元的大小的数据。
20.根据权利要求11所述的设备,其中所述一或多个处理器经进一步配置以基于所述可见性信息产生所述分格配置。
21.一种用于显现图像的设备,所述设备包括:
用于产生指示所述图像的可见基元的可见性信息的装置;及
用于使用分格配置显现所述图像的装置,其中所述分格配置是基于所述可见性信息。
22.根据权利要求21所述的设备,
其中所述可见性信息与初始分格配置相关联,所述初始分格配置指示所述可见基元到一或多个预定分格的初始基于平铺块的分配,
其中所述分格配置包括来自所述初始分格配置的经修订分格配置,且
其中用于使用所述分格配置显现所述图像的所述装置包括用于使用所述经修订分格配置显现所述图像的装置。
23.根据权利要求22所述的设备,
其中所述经修订分格配置包括所述可见基元到一或多个不同分格的经修订基于平铺块的分配,且
其中用于使用所述分格配置显现所述图像的所述装置包括用于使用直接显现及所述经修订分格配置的组合显现所述图像的装置。
24.根据权利要求21所述的设备,其中用于产生可见性信息的所述装置包括用于产生指示所述可见基元的可见性流的装置,及用于产生与所述图像的基元相关联的启发式数据的装置。
25.根据权利要求21所述的设备,其进一步包括用于基于所述可见性信息产生所述分格配置的装置。
26.一种上面存储有指令的非暂时性计算机可读存储媒体,所述指令在执行时致使一或多个处理器:
产生指示所述图像的可见基元的可见性信息;及
使用分格配置显现所述图像,其中所述分格配置是基于所述可见性信息。
27.根据权利要求26所述的非暂时性计算机可读存储媒体,
其中所述可见性信息与初始分格配置相关联,所述初始分格配置指示所述可见基元到一或多个预定分格的初始基于平铺块的分配,
其中所述分格配置包括来自所述初始分格配置的经修订分格配置,且
其中为了使用所述分格配置显现所述图像,所述指令致使所述一或多个处理器使用所述经修订分格配置显现所述图像。
28.根据权利要求27所述的非暂时性计算机可读存储媒体,
其中所述经修订分格配置包括所述可见基元到一或多个不同分格的经修订基于平铺块的分配,且
其中为了使用所述分格配置显现所述图像,所述指令致使所述一或多个处理器使用直接显现及所述经修订分格配置的组合显现所述图像。
29.根据权利要求26所述的非暂时性计算机可读存储媒体,其中为了产生可见性信息,所述指令致使所述一或多个处理器产生指示所述可见基元的可见性流,及产生与所述图像的基元相关联的启发式数据。
30.根据权利要求26所述的非暂时性计算机可读存储媒体,其进一步包括致使所述一或多个处理器基于所述可见性信息产生所述分格配置的指令。
31.一种用于显现图像的方法,所述方法包括:
接收指示所述图像的可见基元的可见性信息;及
基于所述可见性信息确定包括多个基元到一或多个分格的分配的分格配置。
32.根据权利要求31所述的方法,其中接收所述可见性信息包括接收可见性流及接收与所述多个基元相关联的启发式数据。
33.根据权利要求32所述的方法,其中所述启发式数据包括指示与所述多个基元相关联的过度绘制的量的数据。
34.根据权利要求32所述的方法,其中所述启发式数据包括指示所述图像的预定区域中的基元的数目的数据。
35.根据权利要求32所述的方法,其中所述启发式数据包括指示所述图像的预定区域中的基元的大小的数据。
36.根据权利要求31所述的方法,其中所述可见性信息包括多个可见性流,且确定所述分格配置包括合并所述可见性流中的至少两者。
37.根据权利要求31所述的方法,其进一步包括:
基于预定分格布置及与显现所述图像的GPU相关联的存储器量确定包括所述多个基元到用于基于平铺块的显现的一或多个初始分格的初始分配的初始分格配置。
38.根据权利要求37所述的方法,
其中确定所述分格配置包括确定来自所述初始分格配置的经修订分格配置,且
其中确定所述经修订分格配置包括将用于基于平铺块的显现的所述初始分格中的一或多者指明为直接显现。
39.根据权利要求37所述的方法,
其中确定所述分格配置包括确定来自所述初始分格配置的经修订分格配置,且
其中所述经修订分格配置包括所述可见基元到一或多个不同分格的经修订基于平铺块的分配。
40.一种用于显现图像的设备,所述设备包括一或多个处理器,所述处理器经配置以:
接收指示所述图像的可见基元的可见性信息;及
基于所述可见性信息确定包括多个基元到一或多个分格的分配的分格配置。
41.根据权利要求40所述的设备,其中为了接收所述可见性信息,所述一或多个处理器经配置以接收可见性流及接收与所述多个基元相关联的启发式数据。
42.根据权利要求41所述的设备,其中所述启发式数据包括指示与所述多个基元相关联的过度绘制的量的数据。
43.根据权利要求41所述的设备,其中所述启发式数据包括指示所述图像的预定区域中的基元的数目的数据。
44.根据权利要求41所述的设备,其中所述启发式数据包括指示所述图像的预定区域中的基元的大小的数据。
45.根据权利要求40所述的设备,其中所述可见性信息包括多个可见性流,且为了确定所述分格配置,所述一或多个处理器经配置以合并所述可见性流中的至少两者。
46.根据权利要求40所述的设备,其中所述一或多个处理器经进一步配置以:
基于预定分格布置及与显现所述图像的GPU相关联的存储器量确定包括所述多个基元到用于基于平铺块的显现的一或多个初始分格的初始分配的初始分格配置。
47.根据权利要求46所述的设备,
其中为了确定所述分格配置,所述一或多个处理器经配置以确定来自所述初始分格配置的经修订分格配置,且
其中确定所述经修订分格配置包括将用于基于平铺块的显现的所述初始分格中的一或多者指明为直接显现。
48.根据权利要求46所述的设备,
其中为了确定所述分格配置,所述一或多个处理器经配置以确定来自所述初始分格配置的经修订分格配置,且
其中所述经修订分格配置包括所述可见基元到一或多个不同分格的经修订基于平铺块的分配。
49.一种用于显现图像的设备,所述设备包括:
用于接收指示所述图像的可见基元的可见性信息的装置;及
用于基于所述可见性信息确定包括多个基元到一或多个分格的分配的分格配置的装置。
50.根据权利要求49所述的设备,其中所述可见性信息包括多个可见性流,且用于确定所述分格配置的所述装置包括用于合并所述可见性流中的至少两者的装置。
51.根据权利要求49所述的设备,其进一步包括:
用于基于预定分格布置及与显现所述图像的GPU相关联的存储器量确定包括所述多个基元到用于基于平铺块的显现的一或多个初始分格的初始分配的初始分格配置的装置。
52.根据权利要求51所述的设备,
其中用于确定所述分格配置的所述装置包括用于确定来自所述初始分格配置的经修订分格配置的装置,且
其中用于确定所述经修订分格配置的所述装置包括用于将用于基于平铺块的显现的所述初始分格中的一或多者指明为直接显现的装置。
53.根据权利要求51所述的设备,
其中用于确定所述分格配置的所述装置包括用于确定来自所述初始分格配置的经修订分格配置的装置,且
其中所述经修订分格配置包括所述可见基元到一或多个不同分格的经修订基于平铺块的分配。
54.一种上面存储有指令的非暂时性计算机可读存储媒体,所述指令在执行时致使一或多个处理器:
接收指示所述图像的可见基元的可见性信息;及
基于所述可见性信息确定包括多个基元到一或多个分格的分配的分格配置。
55.根据权利要求54所述的非暂时性计算机可读存储媒体,其中所述可见性信息包括多个可见性流,且为了确定所述分格配置,所述指令致使所述一或多个处理器合并所述可见性流中的至少两者。
56.根据权利要求54所述的非暂时性计算机可读存储媒体,其进一步包括指令,所述指令致使所述一或多个处理器:
基于预定分格布置及与显现所述图像的GPU相关联的存储器量确定包括所述多个基元到用于基于平铺块的显现的一或多个初始分格的初始分配的初始分格配置。
57.根据权利要求56所述的非暂时性计算机可读存储媒体,
其中为了确定所述分格配置,所述指令致使所述一或多个处理器确定来自所述初始分格配置的经修订分格配置,且
其中为了确定所述经修订分格配置,所述指令致使所述一或多个处理器将用于基于平铺块的显现的所述初始分格中的一或多者指明为直接显现。
58.根据权利要求56所述的非暂时性计算机可读存储媒体,
其中为了确定所述分格配置,所述指令致使所述一或多个处理器确定来自所述初始分格配置的经修订分格配置,且
其中所述经修订分格配置包括所述可见基元到一或多个不同分格的经修订基于平铺块的分配。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/744,111 US9087410B2 (en) | 2013-01-17 | 2013-01-17 | Rendering graphics data using visibility information |
US13/744,111 | 2013-01-17 | ||
PCT/US2013/077278 WO2014113189A1 (en) | 2013-01-17 | 2013-12-20 | Rendering graphics data using visibility information |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104919494A true CN104919494A (zh) | 2015-09-16 |
CN104919494B CN104919494B (zh) | 2019-04-02 |
Family
ID=50033769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380070557.6A Active CN104919494B (zh) | 2013-01-17 | 2013-12-20 | 使用可见性信息显现图形数据 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9087410B2 (zh) |
EP (1) | EP2946364B1 (zh) |
JP (1) | JP5960368B2 (zh) |
KR (1) | KR101633243B1 (zh) |
CN (1) | CN104919494B (zh) |
WO (1) | WO2014113189A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108780582A (zh) * | 2016-03-10 | 2018-11-09 | 高通股份有限公司 | 可见性信息修改 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9600926B2 (en) * | 2014-12-15 | 2017-03-21 | Intel Corporation | Apparatus and method decoupling visibility bins and render tile dimensions for tiled rendering |
US9489710B2 (en) * | 2015-02-10 | 2016-11-08 | Qualcomm Incorporated | Hybrid rendering in graphics processing |
KR102341267B1 (ko) * | 2015-05-04 | 2021-12-20 | 삼성전자주식회사 | 양안 시차 영상에 대한 렌더링 방법 및 장치 |
US9922449B2 (en) * | 2015-06-01 | 2018-03-20 | Intel Corporation | Apparatus and method for dynamic polygon or primitive sorting for improved culling |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
GB2546810B (en) | 2016-02-01 | 2019-10-16 | Imagination Tech Ltd | Sparse rendering |
KR102637736B1 (ko) * | 2017-01-04 | 2024-02-19 | 삼성전자주식회사 | 그래픽스 처리 방법 및 시스템 |
GB2561807B (en) | 2017-01-12 | 2019-09-25 | Imagination Tech Ltd | Computing systems and methods for processing graphics data using cost indications for sets of tiles of a rendering space |
US10997771B2 (en) * | 2018-08-29 | 2021-05-04 | Intel Corporation | Position-based rendering apparatus and method for multi-die/GPU graphics processing |
US11080928B2 (en) * | 2019-04-01 | 2021-08-03 | Qualcomm Incorporated | Methods and apparatus for visibility stream management |
US11373267B2 (en) * | 2019-11-04 | 2022-06-28 | Qualcomm Incorporated | Methods and apparatus for reducing the transfer of rendering information |
US11321806B2 (en) * | 2020-07-22 | 2022-05-03 | Samsung Electronics Co., Ltd. | Enhanced early coverage discard using opportunistic bypassing and dynamic queue resizing |
CN116615757A (zh) * | 2020-11-18 | 2023-08-18 | 高通股份有限公司 | 用于选择渲染模式的方法和装置 |
EP4272174A1 (en) * | 2020-12-30 | 2023-11-08 | Advanced Micro Devices, Inc. | Systems and methods for distributed rendering using two-level binning |
US20240064411A1 (en) * | 2022-05-30 | 2024-02-22 | Arm Limited | Method, apparatus and program for processing an image |
CN115775295A (zh) * | 2023-01-10 | 2023-03-10 | 摩尔线程智能科技(北京)有限责任公司 | 用于基于图块的延迟渲染的装置和方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101601307A (zh) * | 2006-11-09 | 2009-12-09 | 微软公司 | 用于有效地编码和解码电子信息的系统和方法 |
CN101796842A (zh) * | 2007-06-28 | 2010-08-04 | 高通股份有限公司 | 用以最小化存储及总线带宽需求的有效图像压缩方案 |
WO2011135316A2 (en) * | 2010-04-30 | 2011-11-03 | Imagination Technologies Limited | Tessellation of patches of surfaces in a tile based rendering system |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ITMI20070038A1 (it) * | 2007-01-12 | 2008-07-13 | St Microelectronics Srl | Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle. |
US7843463B1 (en) * | 2007-06-01 | 2010-11-30 | Nvidia Corporation | System and method for bump mapping setup |
GB2461821B (en) | 2007-09-12 | 2010-06-30 | Imagination Tech Ltd | Methods and systems for generating 3-dimensional computer images |
GB0900700D0 (en) | 2009-01-15 | 2009-03-04 | Advanced Risc Mach Ltd | Methods of and apparatus for processing graphics |
US8810592B2 (en) | 2009-10-09 | 2014-08-19 | Nvidia Corporation | Vertex attribute buffer for inline immediate attributes and constants |
US8587581B2 (en) | 2009-10-15 | 2013-11-19 | Nvidia Corporation | Order-preserving distributed rasterizer |
US8497876B2 (en) | 2009-11-02 | 2013-07-30 | Pacific Data Images Llc | Infinite complexity deep-framebuffer rendering |
KR101782044B1 (ko) * | 2011-02-22 | 2017-09-26 | 삼성전자주식회사 | 그래픽 프로세서 및 조기 가시성 테스트 방법 |
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 |
US9117302B2 (en) * | 2011-11-30 | 2015-08-25 | Qualcomm Incorporated | Switching between direct rendering and binning in graphics processing using an overdraw tracker |
US10242481B2 (en) * | 2012-03-15 | 2019-03-26 | Qualcomm Incorporated | Visibility-based state updates in graphical processing units |
US9280956B2 (en) * | 2012-11-29 | 2016-03-08 | Qualcomm Incorporated | Graphics memory load mask for graphics processing |
-
2013
- 2013-01-17 US US13/744,111 patent/US9087410B2/en active Active
- 2013-12-20 CN CN201380070557.6A patent/CN104919494B/zh active Active
- 2013-12-20 JP JP2015553741A patent/JP5960368B2/ja not_active Expired - Fee Related
- 2013-12-20 WO PCT/US2013/077278 patent/WO2014113189A1/en active Application Filing
- 2013-12-20 KR KR1020157021903A patent/KR101633243B1/ko active IP Right Grant
- 2013-12-20 EP EP13826910.5A patent/EP2946364B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101601307A (zh) * | 2006-11-09 | 2009-12-09 | 微软公司 | 用于有效地编码和解码电子信息的系统和方法 |
CN101796842A (zh) * | 2007-06-28 | 2010-08-04 | 高通股份有限公司 | 用以最小化存储及总线带宽需求的有效图像压缩方案 |
WO2011135316A2 (en) * | 2010-04-30 | 2011-11-03 | Imagination Technologies Limited | Tessellation of patches of surfaces in a tile based rendering system |
Non-Patent Citations (2)
Title |
---|
ANSHEL SAG: "Qualcomm Snapdragon S4 Benchmarking Day", 《BRIGHT SIDE OF NEWS》 * |
IOSIF ANTOCHI等: "《Memory Bandwidth Requirements of Tile-Based Rendering》", 《COMPUTER SYSTEMS: ARCHITECTURES, MODELING, AND SIMULATION, THIRD AND FORTH INTERNATIONAL WORKSHOPS, SAMOS 2003 AND SAMOS 2004, PROCEEDINGS》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108780582A (zh) * | 2016-03-10 | 2018-11-09 | 高通股份有限公司 | 可见性信息修改 |
CN108780582B (zh) * | 2016-03-10 | 2019-07-05 | 高通股份有限公司 | 可见性信息修改 |
Also Published As
Publication number | Publication date |
---|---|
JP2016509718A (ja) | 2016-03-31 |
KR20150106947A (ko) | 2015-09-22 |
EP2946364B1 (en) | 2021-10-20 |
JP5960368B2 (ja) | 2016-08-02 |
US20140198119A1 (en) | 2014-07-17 |
KR101633243B1 (ko) | 2016-06-23 |
EP2946364A1 (en) | 2015-11-25 |
WO2014113189A1 (en) | 2014-07-24 |
CN104919494B (zh) | 2019-04-02 |
US9087410B2 (en) | 2015-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104919494A (zh) | 使用可见性信息显现图形数据 | |
CN106575228B (zh) | 图形处理中的渲染目标命令重新排序 | |
US11769294B2 (en) | Patched shading in graphics processing | |
US10049426B2 (en) | Draw call visibility stream | |
KR102327144B1 (ko) | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법 | |
CN106233338B (zh) | 用于光线跟踪应用中的树遍历的开始节点确定 | |
CN106233326B (zh) | 图形处理中基于显现目标的灵活显现 | |
US20150379663A1 (en) | Rendering graphics to overlapping bins | |
KR102381945B1 (ko) | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법 | |
KR101609079B1 (ko) | 그래픽 프로세싱 유닛에서의 명령 선별 | |
KR102454893B1 (ko) | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치의 동작 방법 | |
CN105210111A (zh) | 基于每仓可见性信息以及添加的线内操作的渲染命令的条件性执行 | |
CN104823220A (zh) | 用于图形处理的图形存储器加载掩模 | |
CN108027955A (zh) | 经带宽压缩的图形数据的存储技术 | |
US20180101929A1 (en) | Graphics processing devices and graphics processing methods | |
US9727943B1 (en) | Remote rendering control objects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |