CN106233326A - 图形处理中基于显现目标的灵活显现 - Google Patents
图形处理中基于显现目标的灵活显现 Download PDFInfo
- Publication number
- CN106233326A CN106233326A CN201580020196.3A CN201580020196A CN106233326A CN 106233326 A CN106233326 A CN 106233326A CN 201580020196 A CN201580020196 A CN 201580020196A CN 106233326 A CN106233326 A CN 106233326A
- Authority
- CN
- China
- Prior art keywords
- gpu
- appearance mode
- lattice
- frame
- manifest
- 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
- 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
- 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
- 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
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2330/00—Aspects of power supply; Aspects of display protection and defect management
- G09G2330/02—Details of power systems and of start or stop of display operation
- G09G2330/021—Power management, e.g. power saving
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
一种包括图形处理单元GPU的装置包含存储器及至少一个处理器。所述至少一个处理器可经配置以:接收指示所述GPU对于待由所述GPU显现的帧的一部分可在直接显现模式或分格显现模式之间进行选择的GPU命令包;对于待由所述GPU显现的所述帧的所述部分,基于以下各者中的至少一者确定是使用所述直接显现模式还是所述分格显现模式:所述所接收命令包中的信息或所述GPU的状态;及使用所述所确定直接显现模式或所述分格显现模式显现所述帧的所述部分。
Description
本申请案主张2014年4月21日申请的第61/982,147号美国临时申请案的优先权,所述申请案的全部内容以引用的方式并入本文中。
技术领域
本发明涉及用于图形处理的技术。
背景技术
用于显示的视觉内容(例如用于图形用户接口及视频游戏的内容)可由图形处理单元(GPU)产生。GPU可将二维或三维(3D)对象转换成可显示的二维(2D)像素表示。将关于3D对象的信息转换成可显示的位图被称为像素显现,且要求相当大的存储器及处理能力。在过去,3D图形能力仅可用于强大工作站上。然而,现在3D图形加速器常见于个人计算机(PC)中以及嵌入式装置中,例如智能电话、平板计算机、便携式媒体播放器、便携式视频游戏控制台及其类似者。通常,嵌入式装置相比于常规PC具有较少计算能力及存储器容量。因而,当在嵌入式系统上实施此类技术时,复杂度增加的3D图形显现技术带来困难。
发明内容
一般来说,本发明描述使得GPU能够在图形处理中在直接显现与分格之间切换的技术,用于使得GPU能够确定显现模式的技术及用于使用GPU执行执行显现回路的技术。
在本发明的一个实例中,一种图形处理方法包括:由图形处理单元(GPU)接收指示所述GPU对于待由所述GPU显现的帧的一部分可在直接显现模式或分格显现模式之间进行选择的GPU命令包;对于待由所述GPU显现的所述帧的所述部分,由所述GPU基于以下各者中的至少一者确定是使用所述直接显现模式还是所述分格显现模式:所述所接收命令包中的信息或所述GPU的状态;及由所述GPU使用所述所确定直接显现模式或所述分格显现模式显现所述帧的所述部分。
根据本发明的技术的另一实例描述一种包括图形处理单元(GPU)的装置。所述GPU包含存储器及至少一个处理器。所述至少一个处理器可经配置以:接收指示所述GPU对于待由所述GPU显现的帧的一部分可在直接显现模式或分格显现模式之间进行选择的GPU命令包;对于待由所述GPU显现的所述帧的所述部分,基于以下各者中的至少一者确定是使用所述直接显现模式还是所述分格显现模式:所述所接收命令包中的信息或所述GPU的状态;及使用所述所确定直接显现模式或所述分格显现模式显现所述帧的所述部分。
根据本发明的技术的另一实例描述一种装置。所述装置包括:用于接收指示所述GPU对于待由GPU显现的帧的一部分可在直接显现模式或分格显现模式之间进行选择的GPU命令包的装置;用于对于待由所述GPU显现的所述帧的所述部分,基于以下各者中的至少一者确定是使用所述直接显现模式还是所述分格显现模式的装置:所述所接收命令包中的信息或所述GPU的状态;及用于使用所述所确定直接显现模式或所述分格显现模式显现所述帧的所述部分的装置。
根据本发明的技术的另一实例描述一种包含存储于其上的指令的非暂时性计算机可读存储媒体。所述指令在执行时可致使至少一个处理器以:接收指示所述GPU对于待由GPU显现的帧的一部分可在直接显现模式或分格显现模式之间进行选择的GPU命令包;对于待由所述GPU显现的所述帧的所述部分,基于以下各者中的至少一者确定是使用所述直接显现模式还是所述分格显现模式:所述所接收命令包中的信息或所述GPU的状态;及使用所述所确定直接显现模式或所述分格显现模式显现所述帧的所述部分。
附图说明
图1为说明根据本发明的技术的可用于确定是否使用特定显现模式的实例计算装置的框图。
图2为进一步详细说明图1的CPU 6、GPU 12及系统存储器10的实例实施方案的框图。
图3为说明如分格显现模式中所使用的帧格的概念图。
图4为较详细说明如分格显现模式中所使用的帧格的概念图。
图5为说明用于使用“软件”分格的分格显现模式的命令缓冲器的概念图。
图6为说明用于使用“硬件”分格的分格显现模式的命令缓冲器的概念图。
图7为说明用于直接显现模式的命令缓冲器的概念图。
图8为用于不同显现模式的命令缓冲器的概念图。
图9为说明根据本发明的技术的用于使用直接显现模式或分格显现模式显现场景的实例命令结构的概念图。
图10为说明根据本发明的一个实例的方法的流程图。
具体实施方式
本发明涉及用于图形处理的技术,且更特定来说,涉及使得GPU能够在图形处理系统中确定显现模式并在显现模式之间切换的技术。
当前图形显现系统通常利用分格显现模式(有时称为基于平铺块的显现)或直接显现模式以显现场景。在分格显现中,通过将帧断裂成较小部分(例如,矩形格或平铺块)并单独地显现这些格中的每一者来显现2D或3D场景的一个帧。在极少专用快速图形存储器(GMEM)可用的应用(例如移动应用)中以及存储器带宽受到限制的情况中,分格显现是有用的。平铺块的大小可经配置以表示GMEM中可用的数据量。举例来说,如果GMEM能够存储512kB,则可配置平铺块的大小使得所述平铺块中所含有的像素数据小于或等于512kB。
另一方面,直接显现模式中的图形处理并不将帧断裂成较小格。实际上,立即显现整个帧。在一些图形处理系统(例如,移动装置上的图形处理系统)中,并不存在足够GMEM以保存像素数据的整个帧。实际上,对于直接显现模式,例如动态随机存取存储器(DRAM)的较慢系统存储器可用于显现帧。
先前GPU命令包各自仅包含单一间接缓冲器(IB)。为了显现场景,GPU驱动程序产生多个命令包,一个命令包针对显现场景所要求的每一间接缓冲器。产生各自包括少量待显现三角形(被称作“小批次”问题)的多个命令包的CPU及存储器额外负荷可极高。作为一实例,当应用程序仅在绘制调用之间改变最小状态量时,GPU驱动程序可进行不成比例地大量工作。本发明的技术可通过在单一命令包而非许多小包中包含显现场景所需要的全部IB,及通过将显现负载中的一些从执行于CPU上的GPU驱动程序移到GPU自身来减少CPU及存储器额外负荷。
另外,基于CPU的GPU驱动程序可致使CPU及GPU必须多次循环通过显现回路来产生显现场景必需的全部命令包及显现所述场景。显现回路为GPU驱动程序执行以显现待显现帧的每一个别格的回路。本发明的技术可由于并入到命令包的额外显现信息(例如,格)及通过将显现逻辑从GPU驱动程序移到GPU来减少或消除显现回路。
本发明的技术还允许GPU可使用以确定场景的显现模式的较精细粒度级实时GPU状态信息(例如,试探项(heuristics))。而基于CPU的GPU驱动程序可从GPU请求例如GPU处理负载的GPU状态,执行于CPU上的驱动程序仅可使用轮询请求及/或来自GPU的统计累积如此操作。因此,CPU驱动程序可存取的任何GPU状态可不准确且可并非最新的。
本发明的技术涉及确定GPU状态,因此允许基于更准确且最新GPU状态更准确地确定显现模式。
另外,本发明的技术在命令包中包含显现目标信息及/或例如待显现场景的分辨率的CPU累积的试探项。因为GPU可存取显现目标信息,所以GPU自身可至少部分地基于命令包以及其它GPU状态试探项(例如GPU负载及功率消耗)确定是使用直接模式还是分格模式显现场景,而非使CPU在不考虑GPU状态的情况下确定用于GPU使用的显现模式。当待显现几何量较低时,使用直接显现模式可改进显现性能,而分格显现模式相对于直接显现可省电。因此,允许GPU在直接与间接显现之间进行选择提供GPU基于功率、性能及其它约束条件优化显现的灵活性。
一般来说,直接显现模式可比分格显现模式慢。然而,分格显现模式具有一些固有额外负荷。然而,如果直接模式显现模式负载足够轻,则使用直接显现模式可优选于分格模式。当存在少量张拉过度且因此存在较低额外负荷时,分格显现模式可优选。张拉过度对应于每帧多次显现/更新单一像素(例如,归因于重叠三角形)。
对于直接显现模式,高张拉过度可导致高带宽利用及与系统存储器的高相互作用(相对较慢)。本文中所描述的试探项可允许GPU基于例如所显现像素数目、张拉过度、时钟速度、GPU架构(作为非限制性实例)的因素确定直接显现模式比分格显现模式快的点。
在本发明的一个实例中,图形处理方法包括由GPU接收指示GPU可在直接显现模式或分格显现模式之间进行选择以用于显现待由GPU显现的帧的一部分的命令包。GPU可基于所接收命令包或GPU状态中的至少一者确定对于待由GPU显现的帧的一部分是使用直接显现模式还是分格模式显现。GPU可使用所确定直接显现模式或分格显现模式显现帧的部分。
图1为说明根据本发明的技术的可用于确定是否使用特定显现模式的实例计算装置的框图。计算装置2可包括(例如)个人计算机、桌上型计算机、膝上型计算机、平板计算机、计算机工作站、视频游戏平台或控制台、移动电话(例如,蜂窝式或卫星电话、陆线电话、智能电话)、手持式装置(例如,便携式视频游戏装置或个人数字助理(PDA)、个人音乐播放器、视频播放器)、显示装置、电视、电视机顶盒、服务器、中间网络装置、主机计算机、任何移动装置或处理及/或显示图形数据的任何其它类型的装置。
如图1的实例中所说明,计算装置2可包含用户输入接口4、中央处理单元(CPU)6、存储器控制器8、系统存储器10、图形处理单元(GPU)12、图形存储器14、显示接口16、显示器18以及总线20及22。应注意,在一些实例中,图形存储器14可与GPU 12一起“在芯片上”。在一些状况下,在(例如)系统级芯片(SoC)设计中,图1中所展示的全部硬件元件可在芯片上。用户输入接口4、CPU 6、存储器控制器8、GPU 12与显示接口16可使用总线20彼此通信。存储器控制器8与系统存储器10也可使用总线22彼此通信。总线20、22可为多种总线结构中的任一者,例如第三代总线(例如,超传输总线或无限带宽总线)、第二代总线(例如,高级图形端口总线、外围组件互连(PCI)高速总线,或高级eXentisible接口(AXI)总线)或另一类型的总线或装置互连件。应注意,图1中所展示的不同组件之间的总线及通信接口的特定配置仅是示范性的,且具有相同或不同组件的计算装置及/或其它图形处理系统的其它配置可用于实施本发明的技术。
CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2以致使CPU 6执行一或多个软件应用程序。在CPU 6上执行的软件应用程序可包含(例如)操作系统、字处理器应用程序、电子邮件应用程序、电子数据表应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。另外,CPU 6可执行用于控制GPU 12的操作的GPU驱动程序7。用户可经由一或多个输入装置(未图示)(例如,键盘、鼠标、麦克风、触摸垫或经由用户输入接口4耦合到计算装置2的另一输入装置)将输入提供到计算装置2。
在CPU 6上执行的软件应用程序可包含指示CPU 6以致使向显示器18显现图形数据的一或多个图形显现指令。在一些实例中,软件指令可符合图形应用程序编程接口(API),例如开放图形库API、开放图形库嵌入系统(OpenGL ES)API、Direct3DAPI、X3D API、RenderMan API、WebGL API或任何其它公共或专有标准图形API。在不同实例中,指令也可符合所谓的异构计算库,例如OpenCL及/或DirectCompute。为了处理图形显现指令,CPU 6可将一或多个图形显现命令发布到GPU 12(例如,通过GPU驱动程序7),以致使GPU 12执行显现图形数据中的一些或全部。在一些实例中,待显现的图形数据可包含例如点、线、三角形、四边形、三角带等的图形基元的列表。
存储器控制器8促进数据进出系统存储器10的传送。举例来说,存储器控制器8可接收存储器读取及写入命令,且服务关于存储器系统10的此类命令以便为计算装置2中的组件提供存储器服务。存储器控制器8经由存储器总线22以通信方式耦合到系统存储器10。虽然在图1中将存储器控制器8说明为与CPU 6及系统存储器10两者分开的处理模块,但在其它实例中,存储器控制器8的一些或全部功能性可实施在CPU 6及系统存储器10中的一或两者上。
系统存储器10可存储可由CPU 6存取以用于执行的程序模块及/或指令及/或由在CPU 6上执行的程序使用的数据。举例来说,系统存储器10可存储窗口管理器应用程序,其由CPU 6使用以在显示器18上呈现图形用户接口(GUI)。另外,系统存储器10可存储用户应用程序及与所述应用程序相关联的应用程序表面数据。系统存储器10可另外存储用于由计算装置2的其它组件使用及/或由其产生的信息。举例来说,系统存储器10可充当用于GPU12的装置存储器且可存储将由GPU 12操作的数据以及由GPU 12执行的操作产生的数据。举例来说,系统存储器10可存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器或类似者的任何组合。系统存储器10可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
GPU 12可经配置以执行图形操作以向显示器18显现一或多个图形基元。因此,当在CPU 6上执行的软件应用程序中的一者要求图形处理时,CPU 6可向GPU 12提供图形命令及图形数据以用于向显示器18显现。图形数据可包含(例如)绘制命令、状态信息、基元信息、纹理信息等。在一些情况下,GPU 12可内置有高度并行结构,所述高度并行结构提供比CPU 6更有效的复杂图形相关操作的处理。举例来说,GPU 12可包含经配置以并行方式对多个顶点或像素操作的多个处理元件。在一些情况下,GPU 12的高度并行本质允许GPU 12比使用CPU 6直接将场景绘制到显示器18更快速地将图形图像(例如,GUI及二维(2D)及/或三维(3D)图形场景)绘制到显示器18上。
在一些情况下,可将GPU 12集成到计算装置2的主板中。在其它情况下,GPU 12可存在于图形卡上,所述图形卡安装在计算装置2的主板中的端口中或可以其它方式并入经配置以与计算装置2交互操作的外围装置内。GPU 12可包含一或多个处理器,例如,一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。
GPU 12可直接耦合到图形存储器14。因此,GPU 12可在无需使用总线20的情况下从图形存储器14读取数据且将数据写入到图形存储器14。换句话说,GPU 12可使用本地存储装置而非芯片外存储器在本地处理数据。此允许GPU 12通过消除GPU 12经由总线20读取及写入数据的需要而以更有效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU 12可不包含单独存储器,而是经由总线20利用系统存储器10。图形存储器14可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
CPU 6及/或GPU 12可将经显现图像数据存储于帧缓冲器15中。帧缓冲器15可为独立存储器或可分配于系统存储器10内。显示接口16可从帧缓冲器15检索数据并配置显示器18以显示由经显现图像数据表示的图像。在一些实例中,显示接口16可包含经配置以将从帧缓冲器检索的数字值转换为可由显示器18消耗的模拟信号的数/模转换器(DAC)。在其它实例中,显示接口16可将数字值直接传递到显示器18以用于处理。显示器18可包含监视器、电视、投影装置、液晶显示器(LCD)、等离子显示面板、发光二极管(LED)阵列(例如有机LED(OLED)显示器)、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或另一类型的显示单元。显示器18可集成于计算装置2内。举例来说,显示器18可为移动电话的屏幕。替代地,显示器18可为经由有线或无线通信链路而耦合到计算机装置2的独立装置。举例来说,显示器18可为经由缆线或无线链路而连接到个人计算机的计算机监视器或平板显示器。
根据本发明的一个实例,CPU 6及/或GPU驱动程序7可经配置以产生指示GPU 12可在直接显现模式与分格显现模式之间进行选择的GPU命令包。在不同实例中,GPU命令包可包括具有PM4(“编程模型4”)格式的GPU命令包,如本文中将更详细地论述。
命令包可包含显现场景描述符、用于显现帧的命令(例如间接缓冲器信息)以及配置数据(例如,配置对),及关于待显现场景的信息(例如待显现场景的分辨率(例如,像素高度及宽度))。GPU 12可至少部分地基于所接收命令包中所含有的信息确定是使用直接模式显现还是分格模式显现以显现图形场景。然而,命令包可不直接指示优选显现模式。
显现目标描述符包含用于GPU 12可执行的每一显现模式的配置信息、前同步码、显现、分格及命令缓冲器指标。在一些实例中,显现目标描述符还可包含GPU 12可使用以确定用于当前场景的显现模式的信息。举例来说,显现目标描述符还可指示待用于使用分格显现模式显现的格的高度及宽度。GPU 12可检查配置信息并基于显现目标描述符的信息,确定用于当前场景的显现模式。基于所确定显现模式,GPU 12按需要执行命令缓冲器中对应于目标显现模式的指令。
就包含于命令包中的间接缓冲器信息来说,命令包可包含对以下各者的指标:一或多个间接缓冲器、色彩未解析缓冲器及深度模板未解析缓冲器。命令包还可包含最高有效位及这些间接缓冲器的长度。PM4命令的类型包含于MSB中。GPU 12可使用未解析缓冲器。GPU 12可将值从例如系统存储器10的外部存储器读取到GPU存储器。当仅场景的一部分经新数据更新时,GPU 12可执行未解析过程(例如)以保留并不横跨多于一个场景改变的像素数据。
命令包还可包含各种“透明”(还被称作“丢弃”)矩形。透明矩形可指示并不从一个帧保留到下一帧的(例如,UI的)帧缓冲器的区。GPU 12可不加载来自由透明矩形指定的区的像素或几何数据。
GPU 12还可基于GPU状态试探项确定是使用直接显现还是分格显现。GPU试探项的实例可包含:GPU处理负载、GPU功率消耗及/或GPU存储器使用率或GPU 12的任何其它状态参数。作为确定是使用直接显现还是分格的实例,当GPU功率消耗超出阈值功率消耗时,GPU12可从直接显现模式切换以节电。当功率消耗或GPU负载较低时,GPU 12可类似地从分格显现模式切换到直接显现模式。
根据本发明的技术,GPU 12可经配置以接收指示GPU可在直接显现模式或分格显现模式之间进行选择以用于显现帧的一部分的显现目标描述符;对于待由GPU显现的帧的一部分,至少部分地基于所接收命令包或GPU状态中的一者确定是使用直接显现模式还是分格模式显现;及使用所确定直接显现模式或分格显现模式显现帧的部分。
图2为进一步详细说明图1的CPU 6、GPU 12及系统存储器10的实例实施方案的框图。CPU 6可包含至少一个软件应用程序24、图形API 26及GPU驱动程序7,其中的每一者可为在CPU 6上执行的一或多个软件应用程序或服务。GPU 12可包含图形处理管线30,所述图形处理管线包含一起操作以执行图形处理命令的多个图形处理级。GPU 12可经配置以多种显现模式执行图形处理管线30,包含分格显现模式及直接显现模式。如图2中所展示,图形处理管线30可包含命令引擎32、几何处理级34、光栅化级36及像素处理管线38。图形处理管线30中的组件中的每一者可实施为固定功能组件、可编程组件(例如,作为执行于可编程着色器单元上的着色器程序的部分)或固定功能组件与可编程组件的组合。可用于CPU 6及GPU 12的存储器可包含系统存储器10及帧缓冲器15。帧缓冲器15可为系统存储器10的部分或可分离于系统存储器10。帧缓冲器15可存储经显现图像数据。
软件应用程序24可为利用GPU 12的功能性的任何应用程序。举例来说,软件应用程序24可为GUI应用程序、操作系统、便携式制图应用程序、用于工程或艺术应用程序的计算机辅助设计程序、视频游戏应用程序,或使用2D或3D图形的另一类型的软件应用程序。
软件应用程序24可包含指示GPU 12显现图形用户接口(GUI)及/或图形场景的一或多个绘制指令。举例来说,绘制指令可包含界定将由GPU 12显现的一或多个图形基元的集合的指令。在一些实例中,绘制指令可共同地界定用于GUI中的多个开窗表面的全部或部分。在额外实例中,绘制指令可共同地界定图形场景的全部或部分,所述图形场景包含在由应用程序界定的模型空间或世界空间内的一或多个图形对象。
软件应用程序24可经由图形API 26调用GPU驱动程序7以发布一或多个命令到GPU12以用于将一或多个图形基元显现为可显示图形图像。在不同实例中,命令可包括可包含命令以及相关于显现场景(即,一或多个帧)的其它信息的所谓的数据“包”。举例来说,软件应用程序24可经由图形API 26调用GPU驱动程序7以将基元定义提供给GPU 12。在一些情况下,可将呈绘制基元(例如,三角形、矩形、三角扇、三角带等)列表形式的基元定义提供给GPU 12。基元定义可包含指定与待显现基元相关联的一或多个顶点的顶点规格。顶点规格可包含每一顶点的位置坐标,且在一些情况下,包含与顶点相关联的其它属性,例如色彩坐标、法向量及纹理坐标。基元定义还可包含基元类型信息(例如,三角形、矩形、三角扇、三角带等)、缩放信息、旋转信息及类似者。基于由软件应用程序24发布到GPU驱动程序7的指令,GPU驱动程序7可制定指定供GPU 12执行的一或多个操作以便显现基元的一或多个命令。在GPU 12从CPU 6接收命令时,图形处理管线30解码命令且配置图形处理管线30内的一或多个处理元件以执行命令中指定的操作。在执行指定操作之后,图形处理管线30将经显现数据输出到与显示装置相关联的帧缓冲器15。图形管线30可经配置以在多个不同显现模式中的一者中执行,包含分格显现模式及直接显现模式。下文将更详细地论述分格显现模式及直接显现模式的操作。
GPU驱动程序7可进一步经配置以编译一或多个着色器程序,且将经编译的着色器程序下载到GPU 12内所含有的一或多个可编程着色器单元上。可以高级着色语言编写着色器程序,所述语言例如OpenGL着色语言(GLSL)、高级着色语言(HLSL)、C for Graphics(Cg)着色语言等。经编译的着色器程序可包含控制GPU 12内的可编程着色器单元的操作的一或多个指令。举例来说,着色器程序可包含顶点着色器程序及/或像素着色器程序。顶点着色器程序可控制可编程顶点着色器单元或统一着色器单元的执行,且包含指定一或多个每顶点操作的指令。像素着色器程序可包含控制可编程像素着色器单元或统一着色器单元的执行的像素着色器程序,且包含指定一或多个每像素操作的指令。
GPU驱动程序7还可发送界定当显现帧或帧的一部分时GPU 12应使用的显现模式的命令(例如,由一或多个命令、标头、显现场景描述词、缓冲器等构成的命令包)到GPU 12。举例来说,GPU驱动程序7可确定应使用直接模式显现来显现特定帧,且应使用分格模式显现来显现另一帧,GPU驱动程序7还可通过发送GPU命令包到GPU 12以在显现帧的一部分时指示GPU 12确定哪种显现模式。
本发明的技术使得GPU 12能够在直接模式显现与分格模式显现之间进行选择而无需例如执行于CPU 6上的GPU驱动程序7的另一处理单元的干预。当显现特定帧或帧的部分时,用于在直接与分格显现模式之间进行选择的先前技术可要求GPU驱动程序7及/或CPU6执行与试探项相关联的大量计算以便确定及指示GPU 12使用哪种显现模式。在一些状况下,驱动程序执行的基于试探项的计算可导致高量CPU利用,其可影响应用程序性能及计算装置2的整个响应性。
如上文所指示,GPU 12控制用于基于来自所接收命令包的信息及/或基于GPU状态确定的模式的正排队的显现命令的执行序列及次序。GPU状态可包括GPU 12维持的实时状态及统计,例如相关于功率消耗、存储器消耗、工作负荷信息及/或其它状态或分析信息。
为使得GPU 12能够在直接显现模式与分格显现模式之间进行选择,CPU 6可产生GPU命令包(例如,显现场景描述符),并将GPU命令包发射到GPU 12。在不同实例中,命令包可包括PM4包。如上文所描述,PM4包可包含对一或多个IB的指标、包含屏幕分辨率的显现目标信息、格宽度(例如,以16个像素的倍数)、解析缓冲器、透明区及其它信息。
图形处理管线30可经配置以经由GPU驱动程序7从CPU 6接收一或多个图形处理命令,并执行图形处理命令来产生可显示图形图像。如上文所论述,图形处理管线30包含一起操作以执行图形处理命令的多个级。然而,应注意,此类级不需要一定实施在单独硬件块中。举例来说,几何处理级34及像素处理管线38的部分可实施为统一着色器单元的部分。而且,响应于从CPU 6经配置以执行的GPU驱动程序7接收描述符包,图形管线30可经配置以在多个不同显现模式中的一者中执行,包含分格显现模式及直接显现模式。
命令引擎32可接收图形处理命令且配置图形处理管线30内的剩余处理级以执行用于进行图形处理命令的各种操作。命令引擎32可从GPU驱动程序7接收命令包。图形处理命令可包含(例如)绘制命令及图形状态命令。绘制命令可包含顶点规格命令,其指定一或多个顶点的位置坐标,且在一些情况下,指定与顶点中的每一者相关联的其它属性值,例如色彩坐标、法向量、纹理坐标及雾坐标。图形状态命令可包含基元类型命令、变换命令、照明命令等。基元类型命令可指定待显现基元的类型及/或顶点如何组合以形成基元。变换命令可指定对顶点执行的变换类型。照明命令可指定图形场景内的不同光的类型、方向及/或放置。命令引擎32可致使几何处理级34相对于与一或多个所接收命令相关联的顶点及/或基元执行几何处理。
GPU 12接收命令包且响应于接收GPU命令包,可在直接模式与分格模式显现之间进行选择而无需要求来自CPU 6的进一步干预。GPU 12可基于GPU状态试探项及命令包的数据中的至少一者来确定是使用直接模式显现还是分格模式显现。作为另一实例,GPU 12可使用GPU状态以确定何时直接显现模式将比分格显现模式较快显现场景。
作为一个实例,GPU 12可使用GPU状态(例如,GPU 12的GPU处理负载、功率消耗、存储器使用率或一或多个其它性能分析特性)以在直接与分格显现模式之间进行选择。作为基于试探项在直接与分格显现之间切换的实例,当GPU功率消耗超出阈值功率消耗以为省电时,GPU 12可从直接显现模式切换以节电。当功率消耗或GPU负载较低时,GPU 12可类似地从分格显现模式切换到直接显现模式。
作为实例,高GPU利用(例如,高于80%)可指示在此期间的大量时间GPU是忙碌的且GPU的总线充满数据传送。GPU 12可通过比较所测量传送输送量与GPU 12的理论最大输送量来测量发生的数据传送量。GPU 12还可读取个别GPU硬件块的忙碌计数器相比于GPU12的“持续在线”计数器的值(例如,着色器处理器是否在测量周期期间历时由GPU 12使用的1000个周期的900个周期忙碌)。
几何处理级34可对一或多个顶点执行每顶点操作及/或基元设置操作以便产生用于光栅化级36的基元数据。每一顶点可与属性集合(例如,位置坐标、色彩值、法向量及纹理坐标)相关联。几何处理级34根据各种每顶点操作而修改这些属性中的一或多者。举例来说,几何处理级34可对顶点位置坐标执行一或多个变换以产生经修改的顶点位置坐标。几何处理级34可(例如)向顶点位置坐标应用模型化变换、观看变换、投影变换、ModelView变换、ModelViewProjection变换、视口变换及深度范围缩放变换中的一或多者以产生经修改的顶点位置坐标。在一些情况下,顶点位置坐标可为模型空间坐标,且经修改的顶点位置坐标可为屏幕空间坐标。可在应用模型化、观看、投影及视口变换之后获得屏幕空间坐标。在一些情况下,几何处理级34还可对顶点执行每顶点照明操作以产生顶点的经修改色彩坐标。几何处理级34还可执行其它操作,包含(例如)正常变换、正常标准化操作、观看量修剪、均匀划分及/或隐面消除操作。
几何处理级34可产生包含界定待光栅化基元的一或多个经修改顶点的集合的基元数据以及指定顶点如何组合以形成基元的数据。经修改顶点中的每一者可包含(例如)与顶点相关联的经修改的顶点位置坐标及经处理的顶点属性值。基元数据可共同地对应于将由图形处理管线30的其它级光栅化的基元。在概念上,每一顶点可对应于基元的其中所述基元的两个边缘会合的拐角。几何处理级34可将基元数据提供到光栅化级36以用于进一步处理。
在一些实例中,几何处理级34的全部或部分可由在一或多个着色器单元上执行的一或多个着色器程序实施。举例来说,在此类实例中,几何处理级34可由顶点着色器、几何着色器或其任何组合实施。在其它实例中,可将几何处理级34实施为固定功能硬件处理管线或实施为固定功能硬件与在一或多个着色器单元上执行的一或多个着色器程序的组合。
光栅化级36经配置以从几何处理级34接收表示待光栅化基元的基元数据,且光栅化所述基元以产生对应于经光栅化基元的多个源像素。在一些实例中,光栅化级36可确定哪些屏幕像素位置由待光栅化基元覆盖,且产生用于确定为由基元覆盖的每一屏幕像素位置的源像素。光栅化级36可通过使用所属领域的技术人员已知的技术确定哪些屏幕像素位置由基元覆盖,例如边缘遍历技术、评估边缘方程式等。光栅化级36可提供所得源像素到像素处理管线38以用于进一步处理。
由光栅化级36产生的源像素可对应于屏幕像素位置,例如目的地像素,且与一或多个色彩属性相关联。针对特定经光栅化基元所产生的全部源像素可称为与经光栅化基元相关联。由光栅化级36确定的将由基元覆盖的像素可在概念上包含表示基元的顶点的像素、表示基元的边缘的像素及表示基元的内部的像素。
像素处理管线38经配置以接收与经光栅化基元相关联的源像素,并对源像素执行一或多个每像素操作。可由像素处理管线38执行的每像素操作包含(例如)阿尔法测试、纹理映射、色彩计算、像素着色、每像素照明、雾处理、掺合、像素所有权文本、源阿尔法测试、模板测试、深度测试、剪刀测试及/或点刻操作。另外,像素处理管线38可执行一或多个像素着色器程序以执行一或多个每像素操作。由像素处理管线38产生的所得数据可在本文中被称作目的地像素数据且存储在帧缓冲器15中。目的地像素数据可与帧缓冲器15中具有与经处理源像素相同的显示位置的目的地像素相关联。目的地像素数据可包含例如色彩值、目的地阿尔法值、深度值等的数据。
帧缓冲器15存储GPU 12的目的地像素。每一目的地像素可与唯一屏幕像素位置相关联。在一些实例中,帧缓冲器15可存储每一目的地像素的色彩分量及目的地阿尔法值。举例来说,帧缓冲器15可存储每一像素的红色、绿色、蓝色、阿尔法(RGBA)分量,其中“RGB”分量对应于色彩值,且“A”分量对应于目的地阿尔法值。虽然帧缓冲器15及系统存储器10被说明为单独存储器单元,但在其它实例中,帧缓冲器15可为系统存储器10的部分。
如上文所论述,图形处理管线30可根据特定显现模式(包含分格显现模式及直接显现模式)显现图形图像。当根据分格显现模式显现时,图形处理管线30可接收一批基元(即,一或多个基元)以显现成所得图形图像。为显现所述基元批次,可将所得图形图像再分成多个较小部分(例如,像素的平铺块或格),且图形处理管线30可将图形图像的每一部分显现为单独显现遍次。
图3为说明划分成格以用于分格显现模式的帧的概念图。帧40可划分成多个格,例如格42。通常,图形硬件将含有具有足以保存至少一个数据格的大小的快速存储器(例如,图2的图形存储器14)。作为针对帧的特定部分的单一显现遍次的部分,图形处理管线30可相对于帧的目的地像素的特定子集(例如,目的地像素的特定格)显现基元批次的全部或子集。在相对于第一格执行第一显现遍次之后,图形处理管线30可执行相对于第二格的第二显现遍次等。图形处理管线30可递增地横越格直至已显现与每一格相关联的基元为止。
图4为较详细展示用于分格显现模式的格的概念图。格44、46、48及50经显现/光栅化为含有多个像素52。一或多个图形基元可在每一格中可见。举例来说,三角形A(Tri A)的部分在格44及格48两者中可见。三角形B(Tri B)的部分在格44、格46、格48及格50中的每一者中可见。三角形C(Tri C)仅在格46中可见。在显现遍次期间,在分格显现模式的一个实例中,场景分裂成格并显现所述格中的全部三角形(此有时被称为软件分格)。在分格显现模式的另一实例中,在显现之前采取确定格中的哪些三角形实际上可见于最后显现场景中的额外步骤(此有时被称为硬件分格)。举例来说,一些三角形可在一或多个其它三角形后方且将在最后显现场景中不可见。以此方式,无需显现针对所述格不可见的三角形。
在执行特定显现遍次时,用于与特定显现遍次相关联的格的像素数据可存储于图形存储器14(有时称为格缓冲器)中。在执行显现遍次之后,图形处理管线30可将图形存储器14的内容传送到帧缓冲器15。在一些状况下,图形处理管线30可用存储于图形存储器14中的数据覆盖帧缓冲器15中的数据的一部分。在其它状况下,图形处理管线30可复合或组合帧缓冲器15中的数据与存储于图形存储器14中的数据。在将图形存储器14的内容传送到帧缓冲器15之后,图形处理管线30可将图形存储器14初始化到默认值并相对于不同格开始后续显现遍次。
图5为展示用于使用“软件”分格来使用分格显现模式显现场景的实例命令结构的概念图。层级1间接缓冲器(IB1)60含有用于指示GPU 12执行图形存储器管线30的各种步骤的一系列执行命令。GPU 12接收的PM4命令包为对IB1 60的指标。IB1 60中的每一执行命令基本上为到含有用于显现管线的各种方面的命令的一或多个层级2间接缓冲器(IB2)的指标。以此方式,建立用于执行图形显现管线的两个或大于两个层级结构。GPU 12可循序通过IB1 60中的每一执行命令,其中IB1 60中的每一执行指向存储在IB2中的特定命令堆叠。IB1及IB2可为GPU 12的机载存储器或可为GPU 12的外部存储器,例如系统存储器10。
IB1 60中的前同步码执行命令指向含有可由GPU 12执行的前同步码命令的前同步码IB2 62。举例来说,前同步码IB2 62可包含初始化GPU 12的静态状态且设置GPU 12的初始显现状态的命令。GPU的静态状态包含并不基于特定应用改变的设置。另一方面,显现状态包含可基于特定应用(例如,OpenGL应用与Direct X应用)改变的GPU设置。在前同步码IB2中的命令完成之后,控制返回到IB1 60以执行下一执行命令。
IB1 60中的下一执行命令配置用于正利用显现模式的显现遍次。而且,在图5的实例中,显现模式为使用软件分格的分格显现模式。同样,IB1中的加载格执行命令指向BLT(块传送,即数据复制)IB2 64中的异步传图命令。在一些实例中,传图命令可使用光栅操纵器将若干位图组合成一个位图。在图5的实例中,传图可组合或修改产生于前同步码中的图形命令或状态。接下来,IB1 60中的加载格执行命令指向负载IB2 66中的命令。对于软件分格,将用于特定格的数据加载到GMEM 14(负载2GMEM)中。控制接着转回到IB1 60且显现格执行命令指向显现IB2中的命令。显现IB2 68由用于绘制经加载格中的三角形的一系列状态命令及绘制命令构成。每一绘制命令指示GPU 12根据由命令及/或GPU硬件建立的图形处理管线30(例如,包含几何处理级34、光栅化级36及/或像素处理管线38)绘制三角形。如显现IB2 68中所展示,绘制命令中的每一者指示无可见性流用于确定特定三角形是否实际上可见于格中。可见性流产生于使用“硬件”分格的分格显现模式中,且将参考图6较详细论述。显现IB2 68中的状态命令影响由GPU 12执行的图形处理管线的行为。举例来说,状态命令可改变色彩、多边形模式(例如,点而非固体或线)、掺合(开/关)、深度测试(开/关)、纹理化(开/关)、剔除、剪除及其它逻辑运算。如显现IB2 68中所展示,状态命令可以每三角形(或每基元)为基础而发布。也就是说,命令“状态Tri A”可影响GPU 12绘制三角形A时的行为,而“状态Tri B1”及“状态Tri B2”命令可影响GPU 12绘制三角形B时的行为。“状态TriB1”及“状态Tri B2”命令仅指示可针对每一三角形执行多个状态命令。
在已执行显现IB2 68中的全部命令之后(例如,已绘制全部三角形之后),控制返回到IB1 60。存储格执行命令可包含对存储IB2 70的指标,其包含将经显现格从GMEM 14存储到存储器(例如,帧缓冲器15)的命令。接着针对一或多个帧的每一格72重复显现遍次(例如,如IB1 60中所展示的从配置显现遍次到存储格的执行命令)。
图6为展示用于使用“硬件”分格来使用分格显现模式显现场景的实例命令结构的概念图。IB1 61中的执行命令类似于图6的IB1 60的那些执行命令,除相关于“分格”遍次的命令之外。“分格”遍次用于产生指示格中的特定三角形是否实际上可见于最后显现场景中的可见性流。举例来说,一些三角形可在场景中的另一三角形后方且在一些情境中将不可见(例如,当前方三角形不透明或当未使用掺合时)。在显现格72之前,IB1 61可包含指向分格IB2 74中的命令的分格遍次执行命令。分格IB2 74包含致使GPU 12执行图形管线的简化版本(例如,显现IB2 69的简化版本),但添加基于确定三角形是否可见于最后显现场景中的深度测试(Z测试)针对格中的每一三角形更新可见性流的步骤的命令。
分格遍次的目标为识别与当前格相交的三角形。因而,仅需要确定三角形的顶点的位置以识别三角形是否与特定格相交。分格遍次利用仅包含影响顶点的位置的指令的简化顶点着色器。举例来说,色彩指令、纹理坐标及并不影响三角形顶点的位置的其它指令可从用于分格遍次的简化顶点着色器移除。分格遍次还使用粗略光栅化而非精细光栅化以确定每一三角形的近似深度。粗略光栅化以与精细光栅化相比较低的精确度(例如,使用较低位数目)计算深度值。仅必需近似深度值来确定三角形是否在格中可见。像素着色器不用于分格遍次。
分格遍次接着利用对粗略深度值的深度测试以确定一三角形相对于格中的其它三角形是否在格中可见。基于此深度测试,更新可见性流。可见性流可为指示经显现格中的特定三角形是否可见的位串(例如,1指示三角形可见,0指示三角形不可见)。
显现IB2 69中的命令类似于图5中的显现IB 68的那些命令,除使用可见性流之外。显现IB2 69中的绘制命令(例如,绘制Tri A、绘制Tri B、绘制Tri C等)可使用由分格遍次产生的可见性流以确定是否有必要绘制特定三角形。举例来说,对于由可见性流指示为不可见的三角形可跳过绘制。
与逐格显现帧(如分格显现模式中)相反,直接显现以通过图形管线的一个遍次显现整个帧。直接显现当执行于具有有限量的图形存储器的基于分格的架构中时通常利用较慢系统存储器。
图7为展示用于使用直接显现模式显现场景的实例命令结构的概念图。用于直接显现模式的命令类似于图5中用于软件分格的那些命令,但并非以逐格为基础进行显现而是以一个遍次显现整个帧。举例来说,IB1 80中的执行命令类似于IB1 60中的那些命令,但并非加载、显现及存储格,IB1 80中的执行命令指向相应IB2中显现存储帧的命令。IB1 80的异步传图命令指向BLT IB2 84中的异步传图命令。更具体来说,IB1 80中的命令可包含前同步码、前同步码/恢复、配置显现遍次及显现帧。IB1 80中的显现帧执行命令指向含有致使GPU 12绘制帧中的基元的指令的显现IB2 88。类似于软件分格,直接显现模式中的显现并不利用硬件分格遍次或可见性流。显现IB2 88中的任何绘制命令(例如,绘制Tri A、绘制Tri B、绘制TriC)将利用GMEM存储器以存储经显现三角形。
IB1 80中的前同步码执行命令指向含有用于建立GPU 12的静态状态及初始显现状态的指令的前同步码IB2 82。这些命令动作类似于图6的前同步码IB2 62中的命令,除针对直接显现模式而非分格显现模式设置显现状态之外。
如图5到7中所说明,直接模式显现及分格模式显现两者都利用IB2。在显现遍次或显现回路期间,GPU 12基于关于待显现场景的信息循环显现IB2以用于分格及动态预置逻辑。在先前技术中,当显现帧的一部分时,执行于除了GPU 12的处理器上的驱动程序(例如,执行于CPU 6上的GPU驱动程序7)负责确定是利用直接显现模式还是分格显现。当利用CPU6确定是使用直接还是显现模式以显现场景时,所述过程可极其CPU束缚(即,可具有相对高的CPU 6利用)。当GPU 12确定是利用直接模式显现还是分格模式显现时,结果还可取决于直接模式显现与分格模式显现之间的能力差别。
根据本发明的技术,GPU 12可(例如)从执行于CPU 6上的GPU驱动程序7接收GPU命令包。命令包可指示GPU 12可利用直接显现或分格模式显现以用于显现待由GPU 12显现的帧的一部分。另外,命令包可囊封配置信息。命令包还可指代(或指向)一或多个IB2以用于直接模式显现及/或硬件及/或分格显现,例如IB2 82、84、86、88及90,作为一些实例。
在应用程序(例如,图2的软件应用程序24)开始显现场景之前,GPU 12可基于包含于命令包中的场景信息确定显现模式(例如,在分格显现与直接显现之间确定)。GPU 12还可基于GPU状态试探项确定是使用直接显现还是分格。在一些技术中,GPU 12还可基于来自先前显现遍次的数据确定显现模式。然而,此技术可并非始终为确定显现模式的最佳方式,这是由于应用程序可在显现新场景之前切换显现技术。因而,此技术可带来低效显现直至已累积足够新数据以切换到适当显现模式为止。
另外,如果当前场景不同于先前场景,则关于过去显现的试探性数据可并不始终提供用于当前场景的最佳显现模式。举例来说,将最佳地使用快速改变的显现模式的应用程序可带来许多错误预测。根据本发明的技术,GPU 12可确定GPU 12的功率使用且可基于功率使用确定显现模式。在根据本发明的技术的另一实例中,GPU 12可确定GPU 12的当前或未来利用,且可基于GPU 12的当前或未来利用确定用于显现帧的至少一部分的显现模式。根据本发明的技术,GPU 12可使用本文中未具体描述的其它试探项,且GPU 12可在并无来自CPU 6的干预或干扰的情况下执行本文中所描述的任何试探项。
以下技术适用于使用任何图形应用程序编程接口(API)的图形处理系统,且具体来说,适于利用分格显现的图形API。此类API的实例包含微软的DireetX9(DX9)、DX10及DX11、DX12以及开放式源代码图形API,例如OpenGL及OpenGL ES,及计算API,例如OpenCL及DirectCompute。
图8为用于不同显现模式的命令缓冲器的概念图。图8包含IB1 100、IB1 102及IB1104。IB1 100、102及104中的每一者可包括对应于特定显现模式的IB1缓冲器。每一IB1可对应于用于硬件分格的命令缓冲器。IBl 102可对应于用于软件分格的缓冲器,且IBl可对应于用于直接模式显现的缓冲器。根据图8中所说明的技术,为利用不同显现模式,GPU 12必须从不同IB1读取,此可要求GPU驱动程序7传送多个IB1到GPU 12。另外,GPU 12可被要求存储多个IB1,此消耗GPU 12的额外存储器。不同于关于图8说明的技术,本发明的技术并不要求将多个IB1传送到GPU1。
图9为说明根据本发明的技术的用于使用直接显现模式或分格显现模式显现场景的实例命令结构的概念图。在图9的实例中,GPU驱动程序7或GPU 12可产生或接收IB1 120。IB1 120类似于关于图5到7描述的其它IB1。然而,根据本发明的技术,IB1 120包含可包括PM4场景描述符的命令包。
在图9的实例中,IB1 120指代(或指向)调用分格IB2 132以及前同步码IB2 122、BLT IB2 124及显现IB2 128及存储IB2 130。IB1 120的GPU命令包(例如,PM4场景描述符)可囊封前述IB2,使得GPU 12可基于各种试探项执行硬件分格、软件分格或直接模式显现。IB1 120的PM4场景描述符通过参考那些IB2的存储器地址指代IB2 122、123、126、128、130及132。然而,PM4描述符120未必包含IB2 122、124、126、128、130及132。GPU 12可使用PM4场景描述符指代的IB2以产生执行次序,例如类似于图5到7中所说明的显现模式中的一者的执行次序。
通过将场景描述符包含于命令包中及允许GPU 12确定用于帧的部分的显现模式,本发明的技术提供多个优势。用于在直接模式与分格模式显现之间切换的先前技术要求产生多个IB2,且要求基于基于驱动程序的试探项循环显现IB2以用于分格及动态预置逻辑(例如,依赖于图形API提供的功能调用而非基于“变更”的功能调用)。所述产生、反复及基于驱动程序的试探项,及变更逻辑都是极其CPU束缚的(即,消耗大量CPU资源)。
图9中所说明的PM4场景描述符允许GPU 12条件性地触发不同显现模式,且允许GPU 12在显现模式决策机制中集成额外GPU状态特定试探项。在一个实例中,CPU 6可将场景描述符试探项包含于PM4描述符中。GPU 12可评估包含于PM4描述符中的试探项以确定显现模式。在另一实例中,GPU 12可基于GPU硬件状态分析确定显现模式,在一些实例中,所述状态分析可包含功率状态、存储器使用率及/或显现负载。在另一实例中,试探项可包含确定GPU 12的硬件能力,使得具有不同硬件能力的GPU可以不同方式显现场景。另外,所确定试探项可包含本文中未明确揭示的其它GPU性能查询以及执行时的状态确定。本发明的技术还将预置(即,确定何时从分格模式切换到直接显现模式)及显现逻辑从CPU 6及/或GPU驱动程序7移到GPU 12。
另外,将GPU显现模式决策移到GPU 12消除来自CPU 6的额外负荷、减少存储器占用面积且节省用于提交正排队的图形命令的IB1命令空间。另外,基于GPU的或GPU辅助式的试探项可在并无来自CPU 6及/或GPU驱动程序7的与动态预置过程的互动的情况下执行或嵌入于GPU 12上。本发明的技术还减少与由分批许多较小显现调用所引起的所谓的“小批次”问题(其可是CPU密集型的)相关联的性能降低。
图10为说明根据本发明的一个实例的方法的流程图。图10的方法可由GPU 12及/或驻留于计算装置2上的任何其它硬件、固件、软件元件或其组合执行。CPU 6可经配置以产生用于显现帧的显现命令,例如IB1。CPU 6可发射GPU命令包到GPU 12。在不同实例中,命令包可包括PM4格式命令包。
GPU 12可从CPU 6接收命令包。命令包可指示GPU 12对于待由GPU 12显现的帧的一部分可在直接显现模式或分格显现模式之间进行选择(160)。对于待显现帧的所述部分,GPU 12可基于以下各者中的至少一者确定是使用直接显现模式还是分格显现模式:所接收命令包中的信息或GPU 12的状态(162),并使用所确定直接显现模式或分格显现模式显现帧的所述部分(164)。在不同实例中,为显现帧的所述部分,GPU 12可反复进行显现回路及/或执行动态预置。
在不同实例中,为确定是利用直接显现模式还是分格显现模式,GPU 12可执行试探项以确定对于待显现帧的所述部分是利用直接显现模式还是分格显现模式。在一些实例中,GPU 12可基于GPU 12的功率消耗确定是利用直接显现模式还是分格显现模式。GPU 12还可基于GPU 12的一些资源利用率确定是利用直接显现模式还是格显现模式。
在不同实例中,命令包可包括囊封显现待显现帧所要求的信息的场景描述符包,例如间接缓冲器(IB2)信息及/或配置对。场景描述符的经囊封信息可进一步包含关于帧属于的场景的分辨率信息。
在一些实例中,GPU状态可包括GPU的功率消耗,且当GPU的功率消耗超出阈值功率消耗值时,GPU 12进一步确定使用分格显现模式以显现帧的所述部分。GPU状态还可包括GPU的利用负载,且当GPU的利用负载超出利用值时,GPU 12可确定使用分格显现模式。GPU状态还可包括GPU的存储器使用率。
在不同实例中,所接收命令包可包括囊封显现待显现帧所要求的信息的场景描述符包。在一些实例中,场景描述符的经囊封信息可包含间接缓冲器信息及配置对。场景描述符的经囊封信息还可包含关于待显现帧的分辨率信息。
在不同实例中,所接收命令包中的信息可包括待显现帧的所述部分中的几何量。所接收命令包还可包括用于显现待由GPU显现的帧所要求的全部格。在一些实例中,GPU 12可基于来自先前由GPU显现的帧的显现信息确定是使用直接显现模式还是分格显现模式。
在一些实例中,GPU 12可进一步经配置以确定当显现帧时将发生的张拉过度量。GPU 12可基于将发生的张拉过度量确定是使用直接显现模式还是分格显现模式。
在一或多个实例中,上文所描述的功能可以硬件、软件、固件或其任何组合实施。如果以软件实施,则功能可作为一或多个指令或代码存储在包括非暂时性计算机可读媒体的制品上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中所描述的技术的指令、代码及/或数据结构的任何可用媒体。作为实例而非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、闪存存储器或可用来携带或存储呈指令或数据结构形式的所要程序代码且可由计算机存取的任何其它媒体。如本文所使用,磁盘及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。上文各者的组合也应包含在计算机可读媒体的范围内。
代码可由一或多个处理器执行,所述一或多个处理器例如一或多个DSP、通用微处理器、ASIC、FPGA,或其它等效集成或离散逻辑电路。另外,在一些方面中,本文中所描述的功能性可提供在专用硬件及/或软件模块内。另外,所述技术可完全实施于一或多个电路或逻辑元件中。
本发明的技术可以广泛多种装置或设备实施,所述装置或设备包含无线手持机、集成电路(IC)或IC的集合(例如,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示的技术的装置的功能方面,但未必要求由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件及/或固件组合在编解码器硬件单元中,或通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已描述各种实例。这些及其它实例属于以下权利要求书的范围内。
Claims (30)
1.一种图形处理方法,其包括:
由图形处理单元GPU接收指示所述GPU对于待由所述GPU显现的帧的一部分可在直接显现模式或分格显现模式之间进行选择的GPU命令包;
对于待由所述GPU显现的所述帧的所述部分,由所述GPU基于以下各者中的至少一者确定是使用所述直接显现模式还是所述分格显现模式:所述所接收命令包中的信息或所述GPU的状态;及
由所述GPU使用所述所确定直接显现模式或所述分格显现模式显现所述帧的所述部分。
2.根据权利要求1所述的方法,其中所述GPU状态包括所述GPU的功率消耗。
3.根据权利要求2所述的方法,其进一步包括:
当所述GPU的所述功率消耗超出阈值功率消耗值时,确定使用所述分格显现模式来显现所述帧的所述部分。
4.根据权利要求1所述的方法,其中所述GPU状态包括所述GPU的利用负载。
5.根据权利要求4所述的方法,其进一步包括:当所述GPU的所述利用负载超出利用值时,确定使用所述分格显现模式。
6.根据权利要求1所述的方法,其中所述GPU状态包括所述GPU的存储器使用率。
7.根据权利要求1所述的方法,其中所述所接收命令包包括囊封显现所述待显现帧所需的信息的场景描述符包。
8.根据权利要求7所述的方法,其中所述场景描述符的所述经囊封信息包含间接缓冲器信息及配置对。
9.根据权利要求7所述的方法,其中所述场景描述符的所述经囊封信息包含关于所述待显现帧的分辨率信息。
10.根据权利要求1所述的方法,其中所述所接收命令包中的所述信息包括所述待显现帧的所述部分中的几何量。
11.根据权利要求1所述的方法,其中所述所接收命令包包括显现待由所述GPU显现的所述帧所需的全部格。
12.根据权利要求1所述的方法,其中确定是使用所述直接显现模式还是所述分格显现模式是基于来自先前由所述GPU显现的帧的显现信息。
13.根据权利要求1所述的方法,所述方法进一步包括:
确定当显现所述帧时将发生的张拉过度量,
其中确定是使用所述直接显现模式还是所述分格显现模式是基于将发生的所述张拉过度量。
14.一种包括图形处理单元GPU的装置,其中所述GPU进一步包括:
存储器;及
至少一个处理器,其经配置以:
接收指示所述GPU对于待由所述GPU显现的帧的一部分可在直接显现模式或分格显现模式之间进行选择的GPU命令包;
对于待由所述GPU显现的所述帧的所述部分,基于以下各者中的至少一者确定是使用所述直接显现模式还是所述分格显现模式:所述所接收命令包中的信息或所述GPU的状态;及
使用所述所确定直接显现模式或所述分格显现模式显现所述帧的所述部分。
15.根据权利要求14所述的装置,其中所述GPU状态包括所述GPU的功率消耗。
16.根据权利要求15所述的装置,其中所述至少一个处理器进一步经配置以:
当所述GPU的所述功率消耗超出阈值功率消耗值时,确定使用所述分格显现模式来显现所述帧的所述部分。
17.根据权利要求14所述的装置,其中所述GPU状态包括所述GPU的利用负载。
18.根据权利要求17所述的装置,其中所述至少一个处理器进一步经配置以:
当所述GPU的所述利用负载超出利用值时,确定使用所述分格显现模式。
19.根据权利要求14所述的装置,其中所述GPU状态包括所述GPU的存储器使用率。
20.根据权利要求14所述的装置,其中所述所接收命令包包括囊封显现所述待显现帧所需的信息的场景描述符包。
21.根据权利要求20所述的装置,其中所述场景描述符的所述经囊封信息包含间接缓冲器信息及配置对。
22.根据权利要求20所述的装置,其中所述场景描述符的所述经囊封信息包含关于所述待显现帧的分辨率信息。
23.根据权利要求14所述的装置,其中所述所接收命令包中的所述信息包括所述待显现帧的所述部分中的几何量。
24.根据权利要求14所述的装置,其中所述所接收命令包包括显现待由所述GPU显现的所述帧所需的全部格。
25.根据权利要求14所述的装置,其中确定是使用所述直接显现模式还是所述分格显现模式是基于来自先前由所述GPU显现的帧的显现信息。
26.根据权利要求14所述的装置,其中所述至少一个处理器进一步经配置以:
确定当显现所述帧时将发生的张拉过度量,其中确定是使用所述直接显现模式还是所述分格显现模式是基于将发生的所述张拉过度量。
27.一种包括图形处理单元GPU的装置,其中所述GPU进一步包括:
用于接收指示所述GPU对于待由所述GPU显现的帧的一部分可在直接显现模式或分格显现模式之间进行选择的GPU命令包的装置;
用于对于待由所述GPU显现的所述帧的所述部分,基于以下各者中的至少一者确定是使用所述直接显现模式还是所述分格显现模式的装置:所述所接收命令包中的信息或所述GPU的状态;及
用于使用所述所确定直接显现模式或所述分格显现模式显现所述帧的所述部分的装置。
28.根据权利要求27所述的装置,其中所述GPU状态包括所述GPU的功率消耗,其中所述用于确定所述显现模式的装置进一步包括:
用于当所述GPU的所述功率消耗超出阈值功率消耗值时,确定使用所述分格显现模式来显现所述帧的所述部分的装置。
29.根据权利要求27所述的装置,其中所述GPU状态包括所述GPU的利用负载,其中所述用于确定所述显现模式的装置进一步包括:
用于当所述GPU的所述利用负载超出利用值时,确定使用所述分格显现模式的装置。
30.一种非暂时性计算机可读存储媒体,其存储在执行时致使至少一个处理器进行以下操作的指令:
接收指示所述GPU对于待由GPU显现的帧的一部分可在直接显现模式或分格显现模式之间进行选择的GPU命令包;
对于待由所述GPU显现的所述帧的所述部分,基于以下各者中的至少一者确定是使用所述直接显现模式还是所述分格显现模式:所述所接收命令包中的信息或所述GPU的状态;及
使用所述所确定直接显现模式或所述分格显现模式显现所述帧的所述部分。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461982147P | 2014-04-21 | 2014-04-21 | |
US61/982,147 | 2014-04-21 | ||
US14/691,358 | 2015-04-20 | ||
US14/691,358 US9928565B2 (en) | 2014-04-21 | 2015-04-20 | Flex rendering based on a render target in graphics processing |
PCT/US2015/026910 WO2015164397A1 (en) | 2014-04-21 | 2015-04-21 | Flex rendering based on a render target in graphics processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106233326A true CN106233326A (zh) | 2016-12-14 |
CN106233326B CN106233326B (zh) | 2019-11-12 |
Family
ID=54322423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580020196.3A Active CN106233326B (zh) | 2014-04-21 | 2015-04-21 | 图形处理中基于显现目标的灵活显现 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9928565B2 (zh) |
EP (1) | EP3134864B1 (zh) |
JP (1) | JP6541685B2 (zh) |
KR (1) | KR20160148594A (zh) |
CN (1) | CN106233326B (zh) |
BR (1) | BR112016024424A2 (zh) |
WO (1) | WO2015164397A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110058926A (zh) * | 2018-01-18 | 2019-07-26 | 伊姆西Ip控股有限责任公司 | 用于处理gpu任务的方法、设备和计算机可读介质 |
CN116894906A (zh) * | 2023-09-11 | 2023-10-17 | 瀚博半导体(上海)有限公司 | 图形渲染方法和处理器硬件架构 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9928565B2 (en) | 2014-04-21 | 2018-03-27 | Qualcomm Incorporated | Flex rendering based on a render target in graphics processing |
US9842428B2 (en) * | 2014-06-27 | 2017-12-12 | Samsung Electronics Co., Ltd. | Dynamically optimized deferred rendering pipeline |
US9727392B2 (en) * | 2014-09-16 | 2017-08-08 | Nvidia Corporation | Techniques for render pass dependencies in an API |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
US10456672B2 (en) | 2016-05-19 | 2019-10-29 | Google Llc | Methods and systems for facilitating participation in a game session |
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
CN106528303A (zh) * | 2016-10-20 | 2017-03-22 | 武汉斗鱼网络科技有限公司 | 一种基于gpu纹理共享来获取d3d12游戏源图像的方法及系统 |
US10482648B2 (en) * | 2016-12-13 | 2019-11-19 | Qualcomm Incorporated | Scene-based foveated rendering of graphics content |
CN110678239B (zh) | 2017-10-10 | 2024-02-09 | 谷歌有限责任公司 | 利用游戏元数据和量度的分布式基于样本的游戏剖析以及支持第三方内容的游戏api平台 |
WO2019182752A1 (en) | 2018-03-22 | 2019-09-26 | Google Llc | Methods and systems for rendering and encoding content for online interactive gaming sessions |
US11077364B2 (en) | 2018-04-02 | 2021-08-03 | Google Llc | Resolution-based scaling of real-time interactive graphics |
KR20230017925A (ko) | 2018-04-02 | 2023-02-06 | 구글 엘엘씨 | 대화형 클라우드 게임용 방법, 디바이스 및 시스템 |
EP3701489B1 (en) * | 2018-04-10 | 2022-10-26 | Google LLC | Memory management in gaming rendering |
WO2019228497A1 (en) | 2018-05-31 | 2019-12-05 | Huawei Technologies Co., Ltd. | Apparatus and method for command stream optimization and enhancement |
US11037271B2 (en) * | 2018-08-07 | 2021-06-15 | Qualcomm Incorporated | Dynamic rendering for foveated rendering |
CN109325899B (zh) * | 2018-09-07 | 2023-04-04 | 格兰菲智能科技有限公司 | 计算机系统、图形处理单元及其图形处理方法 |
CN109242756B (zh) | 2018-09-07 | 2023-04-04 | 格兰菲智能科技有限公司 | 计算机系统、图形处理单元及其图形处理方法 |
CN111124656B (zh) * | 2018-10-31 | 2023-09-15 | 伊姆西Ip控股有限责任公司 | 用于向专用计算资源分配任务的方法、设备和计算机可读存储介质 |
EP3807766B1 (en) | 2018-11-16 | 2021-10-27 | Google LLC | Shadow tracking of real-time interactive simulations for complex system analysis |
CN109636709B (zh) * | 2018-11-28 | 2020-12-08 | 华中科技大学 | 一种适用于异构平台的图计算方法 |
CN111105477B (zh) * | 2019-11-25 | 2023-04-28 | 航天科技控股集团股份有限公司 | 全液晶仪表2d虚拟指针绘制方法 |
CN111145074B (zh) * | 2019-11-30 | 2023-11-28 | 航天科技控股集团股份有限公司 | 全液晶仪表图像渲染方法 |
US11972518B2 (en) * | 2020-01-20 | 2024-04-30 | Advanced Micro Devices, Inc. | Hybrid binning |
US20210287418A1 (en) * | 2020-03-10 | 2021-09-16 | Advanced Micro Devices, Inc. | Graphics processing unit render mode selection system |
US20220044350A1 (en) * | 2020-08-07 | 2022-02-10 | Advanced Micro Devices, Inc. | Graphics processing unit with selective two-level binning |
US20220156874A1 (en) * | 2020-11-13 | 2022-05-19 | Advanced Micro Devices, Inc. | Processing system with selective priority-based two-level binning |
US11983809B2 (en) * | 2022-05-23 | 2024-05-14 | Rockwell Collins, Inc. | A-Buffer dynamic allocation |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120206447A1 (en) * | 2011-02-10 | 2012-08-16 | Hutchins Edward A | Reconfigurable 3d graphics processor |
US20120293519A1 (en) * | 2011-05-16 | 2012-11-22 | Qualcomm Incorporated | Rendering mode selection in graphics processing units |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5777621A (en) * | 1994-12-22 | 1998-07-07 | Apple Computer, Inc. | Quality control mechanism for three-dimensional graphics rendering |
US6075546A (en) | 1997-11-10 | 2000-06-13 | Silicon Grahphics, Inc. | Packetized command interface to graphics processor |
US6466217B1 (en) | 1999-12-22 | 2002-10-15 | Intel Corporation | Method and apparatus for ensuring backward compatibility in a bucket rendering system |
CA2453137A1 (en) * | 2001-07-06 | 2003-01-16 | E-Genie Australia Pty Limited | Method and system for computer software application execution |
US7289119B2 (en) | 2005-05-10 | 2007-10-30 | Sony Computer Entertainment Inc. | Statistical rendering acceleration |
US8786628B2 (en) * | 2007-09-14 | 2014-07-22 | Microsoft Corporation | Rendering electronic chart objects |
US8675002B1 (en) * | 2010-06-09 | 2014-03-18 | Ati Technologies, Ulc | Efficient approach for a unified command buffer |
US9547930B2 (en) | 2011-11-30 | 2017-01-17 | Qualcomm Incorporated | Hardware switching between direct rendering and binning in graphics processing |
US9928565B2 (en) | 2014-04-21 | 2018-03-27 | Qualcomm Incorporated | Flex rendering based on a render target in graphics processing |
-
2015
- 2015-04-20 US US14/691,358 patent/US9928565B2/en active Active
- 2015-04-21 JP JP2016562910A patent/JP6541685B2/ja active Active
- 2015-04-21 WO PCT/US2015/026910 patent/WO2015164397A1/en active Application Filing
- 2015-04-21 BR BR112016024424A patent/BR112016024424A2/pt not_active IP Right Cessation
- 2015-04-21 CN CN201580020196.3A patent/CN106233326B/zh active Active
- 2015-04-21 EP EP15721424.8A patent/EP3134864B1/en active Active
- 2015-04-21 KR KR1020167032022A patent/KR20160148594A/ko not_active Application Discontinuation
-
2018
- 2018-02-13 US US15/895,652 patent/US10282813B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120206447A1 (en) * | 2011-02-10 | 2012-08-16 | Hutchins Edward A | Reconfigurable 3d graphics processor |
US20120293519A1 (en) * | 2011-05-16 | 2012-11-22 | Qualcomm Incorporated | Rendering mode selection in graphics processing units |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110058926A (zh) * | 2018-01-18 | 2019-07-26 | 伊姆西Ip控股有限责任公司 | 用于处理gpu任务的方法、设备和计算机可读介质 |
CN110058926B (zh) * | 2018-01-18 | 2023-03-14 | 伊姆西Ip控股有限责任公司 | 用于处理gpu任务的方法、设备和计算机可读介质 |
CN116894906A (zh) * | 2023-09-11 | 2023-10-17 | 瀚博半导体(上海)有限公司 | 图形渲染方法和处理器硬件架构 |
Also Published As
Publication number | Publication date |
---|---|
JP2017516207A (ja) | 2017-06-15 |
WO2015164397A1 (en) | 2015-10-29 |
JP6541685B2 (ja) | 2019-07-10 |
US20150302546A1 (en) | 2015-10-22 |
EP3134864B1 (en) | 2021-01-06 |
BR112016024424A2 (pt) | 2017-08-15 |
US20180165788A1 (en) | 2018-06-14 |
CN106233326B (zh) | 2019-11-12 |
US9928565B2 (en) | 2018-03-27 |
EP3134864A1 (en) | 2017-03-01 |
KR20160148594A (ko) | 2016-12-26 |
US10282813B2 (en) | 2019-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106233326B (zh) | 图形处理中基于显现目标的灵活显现 | |
EP3308359B1 (en) | Rendering using ray tracing to generate a visibility stream | |
US10049426B2 (en) | Draw call visibility stream | |
KR102327144B1 (ko) | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법 | |
JP5866457B2 (ja) | オーバドロー・トラッカを用いたグラフィック処理におけるダイレクト・レンダリングとビニングとの切替 | |
KR102003655B1 (ko) | 그래픽 프로세싱에서 셰도우 레이들에 대한 트리 횡단을 위한 시작 노드 결정 | |
CN107209923A (zh) | 图形处理中的混合渲染 | |
US9697640B2 (en) | Start node determination for tree traversal in ray tracing applications | |
EP2946364B1 (en) | Rendering graphics data using visibility information | |
CN105210111B (zh) | 基于每仓可见性信息以及添加的线内操作的渲染命令的条件性执行 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |