CN110892383A - 增量常量负载的延迟批处理 - Google Patents

增量常量负载的延迟批处理 Download PDF

Info

Publication number
CN110892383A
CN110892383A CN201880045258.XA CN201880045258A CN110892383A CN 110892383 A CN110892383 A CN 110892383A CN 201880045258 A CN201880045258 A CN 201880045258A CN 110892383 A CN110892383 A CN 110892383A
Authority
CN
China
Prior art keywords
command
buffer
constant
updates
state
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.)
Pending
Application number
CN201880045258.XA
Other languages
English (en)
Inventor
R·哈默斯托内
T·E·弗里辛格
A·E·格鲁贝尔
N·T·普尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN110892383A publication Critical patent/CN110892383A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Advance Control (AREA)
  • Image Generation (AREA)

Abstract

本公开的技术包含增量常量负载的延迟批处理。图形API包含使用轻量常量供着色器使用的能力。由含有当前轻量常量的快照的图形处理单元GPU驱动程序分配缓冲器。这可提供完整状态集作为起始点。随后,可通过在图形处理单元GPU上由命令处理器插入更新并增大所述缓冲器的大小以增量方式来将所述轻量常量的所述更新附加到这一缓冲器。可捕获所述更新的增量性质,但无需在每一绘制调用上都发布所述更新,而是可在遇到实时绘制调用时对增量更新进行批处理。

Description

增量常量负载的延迟批处理
技术领域
本公开涉及图形处理。
背景技术
计算装置通常利用图形处理单元(GPU)来加速再现用于显示的图形数据。这类计算装置可包含例如计算机工作站、手机(例如所谓的智能手机)、嵌入系统、个人计算机、平板计算机和视频游戏控制台。GPU通常执行图形处理管线,所述图形处理管线包含一起操作以执行图形处理命令的多个处理级。主中央处理单元(CPU)可通过经由例如应用程序编程接口(API)将一或多个图形处理命令发布到GPU来控制GPU的操作。现代的CPU通常能够同时执行多个应用,所述多个应用中的每一个可能需要在执行期间利用GPU。
发明内容
本公开的技术包含增量常量负载的延迟批处理。具体地说,图形API包含供着色器使用的轻量常量(又称为推式常量)。由中央处理单元(CPU)上的图形驱动程序分配缓冲器,其中所述缓冲器含有当前轻量常量的快照。快照可提供完整状态集作为起始点。随后,可通过插入更新并增大缓冲器的大小以增量方式来由图形驱动程序将轻量常量的更新附加到这一缓冲器,而不需要在接收更新命令时执行更新。这可有效地捕获更新的增量性质,但无需在每一绘制调用上发布所述更新,而是可在遇到实时(live)(例如可见)绘制调用时对增量更新进行批处理。举例来说,特别是如果更新是用于最终不可见的像素,那么不将处理时间浪费在立即执行更新上。
在本公开的一个实例中,一种操作图形处理单元(GPU)的方法包括:在装仓操作期间确定命令缓冲器中的第一命令配置成更新状态缓冲器中的一或多个常量值,所述状态缓冲器包括当前常量状态的副本;在不更新一或多个常量值的情况下基于所述第一命令将一或多个常量更新从所述第一命令附加到所述状态缓冲器直到绘制操作为止;确定命令缓冲器中的第二命令配置成执行绘制操作;确定第二命令是否为可见绘制操作;以及当所述第二命令是可见绘制操作时,对状态缓冲器中的一或多个常量更新进行批处理。
在另一实例中,一种用于处理数据的设备,所述设备包括图形处理单元(GPU)和命令处理器,所述GPU包括命令缓冲器和状态缓冲器,其中所述命令处理器配置成:在装仓操作期间确定命令缓冲器中的第一命令配置成更新状态缓冲器中的一或多个常量值,所述状态缓冲器包括当前常量状态的副本;在不更新一或多个常量值的情况下基于所述第一命令将一或多个常量更新从所述第一命令附加到所述状态缓冲器直到绘制操作为止;确定命令缓冲器中的第二命令配置成执行绘制操作;确定第二命令是否为可见绘制操作;以及当所述第二命令是可见绘制操作时,对状态缓冲器中的一或多个常量更新进行批处理。
在另一实例中,一种配置成操作图形处理单元(GPU)的设备,所述设备包括:用于在装仓操作期间确定命令缓冲器中的第一命令配置成更新状态缓冲器中的一或多个常量值的装置,所述状态缓冲器包括当前常量状态的副本;用于在不更新一或多个常量值的情况下基于所述第一命令将一或多个常量更新从所述第一命令附加到所述状态缓冲器直到绘制操作为止的装置;用于确定命令缓冲器中的第二命令配置成执行绘制操作的装置;用于确定第二命令是否为可见绘制操作的装置;以及用于在所述第二命令是可见绘制操作时对状态缓冲器中的一或多个常量更新进行批处理的装置。
在另一实例中,一种包含存储在其上的指令的非暂时性计算机可读存储媒体,所述指令在执行时使得至少一个处理器进行以下操作:在装仓操作期间确定命令缓冲器中的第一命令配置成更新状态缓冲器中的一或多个常量值,所述状态缓冲器包括当前常量状态的副本;在不更新一或多个常量值的情况下基于所述第一命令将一或多个常量更新从所述第一命令附加到所述状态缓冲器直到绘制操作为止;确定命令缓冲器中的第二命令配置成执行绘制操作;确定第二命令是否为可见绘制操作;以及当所述第二命令是可见绘制操作时,对状态缓冲器中的一或多个常量更新进行批处理。
在下文的附图及描述中阐述本公开的一或多个方面的细节。本公开的其它特征、目标和优点将从描述和图式以及所附权利要求书中显而易见。
附图说明
图1是说明可配置成实施本公开的一或多个方面的实例计算装置的框图。
图2是说明根据本公开的各方面的图1的命令缓冲器46和状态缓冲器48的示范性操作的概念图。
图3是说明根据本公开的各方面的常量的延迟批处理的实例方法的流程图。
图4是说明根据本公开的各方面的实例方法的流程图。
具体实施方式
例如科纳斯(Khronos)GroupTM
Figure BDA0002356736310000031
的图形应用编程接口(API)包含供着色器使用的轻量常量。着色器是在图形处理单元(GPU)上执行并使得GPU执行各种操作的程序。轻量常量(又称为推式常量)可包含在无对GPU驱动程序的额外开销的情况下直接映射到寄存器的常量,在中央处理单元(CPU)上执行以写入到这些常量。这些常量可由着色器存取,且在一些实例中,包含存储在命令缓冲器内并可从着色器存取(与单一全局均一缓冲器类似)的均一值。
在再现图形数据时,各种图形处理技术以两个遍次执行图形处理。第一遍次被称为装仓遍次,其中GPU确定哪些基元属于哪一仓(又称为平铺块)和哪些基元可见。在被称为再现遍次的第二遍次中,GPU基于哪些基元属于哪一仓和基元的可见性的确定来依序再现每一仓。
无论仓中的绘制是可见(例如实时)还是不可见(例如失效(dead)),轻量常量可经设计为本质上为增量的,且可难以并低效地用于装仓架构,这是由于可能需要为每一仓执行增量改变流。在装仓架构中,图像帧划分为仓且GPU处理每一仓。为可见的仓中的实时绘制意指再现可见像素的绘制调用,且为不可见的仓中的失效绘制意指再现不可见像素的绘制调用。
本公开的技术包含图形处理单元(GPU),其可将寄存器分组且经由间接指针将其它状态写入并加载所述其它状态到硬件。在示范性装仓架构中,这一间接指针加载可延迟直到在命令流中遇到可见绘制调用为止。增量常量负载的延迟批处理可利用这一功能来允许增量常量的累积在当前轻量常量状态的快照的顶部上写入。可分配含有当前轻量常量的快照的缓冲器。在一个实例中,图形驱动程序将所有寄存器写入命令放置在较大命令缓冲器中。在另一实例中,图形驱动程序可分配较小个别缓存器,所述较小个别缓存器可加载有寄存器状态的子集(例如由功能进行分组)。随后,图形驱动程序将这些较小缓存器的间接指针放置在主要命令缓冲器中。在GPU硬件中的命令处理器(CP)消耗主要命令缓冲器时,CP存储这些间接指针直到遇到实时绘制调用为止,此时执行其中的寄存器编程。针对失效绘制调用,唯一额外开销是存储间接指针。
随后,可通过插入更新并增大缓冲器的大小来以增量方式将轻量常量的更新附加到这一缓冲器。这可有效地捕获更新的增量性质,但可能无需在每一绘制调用上发布所述更新:如果绘制调用将为可见的,那么为实时的(live);或如果绘制调用将不为可见的,那么为失效的(dead)。
本公开的技术可表示替代方案的重要优势,例如为每一绘制调用捕获整个轻量常量状态的快照或以即时方式处理常量更新,其中无论特定绘制是可见的还是不可见的,都将为每一绘制执行所述更新,这是因为这些技术可能引起并不影响显示之物的对于绘制调用的不必要处理。
图1是说明可配置成实施本公开的一或多个方面的实例计算装置10的框图。计算装置10可以是包含但不限于以下各项的计算装置:视频装置、媒体播放器、机顶盒、无线手持机(例如移动电话和所谓的智能电话)、个人数字助理(PDA)、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置以及类似物。
在图1的实例中,计算装置10包含中央处理单元(CPU)12、GPU 14和系统存储器16。计算装置10还包含收发器模块19、用户接口20和显示器21。然而,应理解,计算装置10的其它实例可包含比所展示的那些更多、更少的组件或组件的替代布置。
举例来说,计算装置10可在其中计算装置10为移动无线电话的实例中包含扬声器和麦克风(两者均未在图1中示出)以实现电话通信,或在计算装置10为媒体播放器的情况下包含扬声器。计算装置10还可包含摄像机。在另一实例中,例如与显示器21相关联的收发器模块19或显示处理器的某些单元可以是与CPU 12和/或GPU 14相同的集成电路(IC)的部分,可均在包含CPU 12和/或GPU 14的一或多个IC外部,或可形成于包含CPU 12和/或GPU14的IC外部的IC中。
CPU 12可包括控制计算装置10的操作的通用或专用处理器。举例来说,CPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。如下文更详细地描述,CPU 12可发布一或多个图形再现命令到GPU 14以使得GPU 14再现图形数据。
GPU 14可包含具有高度并行结构的处理组件的可编程管线,所述高度并行结构提供复杂图形相关操作的有效处理。GPU 14可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。GPU 14还可包含一或多个处理器核心,使得GPU 14可被称为多核处理器。在一些情况下,可将GPU 14整合到计算装置10的母板中。在其它情况下,GPU 14可存在于安装在计算装置10的母板中的端口中的图形卡上,或可以其它方式并入配置成与计算装置10交互操作的外围装置内。
GPU 14可以将所再现数据输出到系统存储器16,例如系统存储器16的帧缓冲器18。系统存储器16可存储控制计算装置10的组件的操作的操作系统(未展示)。系统存储器16还可由通过计算装置10执行的软件或应用程序(如下文所描述)使用以在程序执行期间存储信息。系统存储器16可包含计算机可读存储媒体或计算机可读存储装置。在一些实例中,系统存储器16可包含短期存储器或长期存储器中的一或多个。系统存储器16可包含例如随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、高速缓存存储器、磁性硬盘、光学光盘、快闪存储器或各形式的电可编程存储器(EPROM)或电可擦除且可编程存储器(EEPROM)。
帧缓冲器18存储用于GPU 14的目的地像素。每一目的地像素可与唯一屏幕像素位置相关联。在一些实例中,帧缓冲器18可存储每一目的地像素的色彩分量和目的地阿尔法值。举例来说,帧缓冲器18可存储每一像素的红色、绿色、蓝色、阿尔法(RGBA)分量,其中“RGB”分量对应于色彩值并且“A”分量对应于目的地阿尔法值(例如可用于合成中的透明度值,其也可称为不透明度)。虽然将帧缓冲器18和系统存储器16说明为单独的存储器单元,但在其它实例中,帧缓冲器18可以是系统存储器16的部分。
收发器模块19可包含电路以允许计算装置10与另一装置或网络之间的无线或有线通信。收发器模块19可包含调制器、解调器、放大器以及用于有线或无线通信的其它这类电路。
用户接口20可允许用户提供输入到计算装置10。用户接口20的实例包含(但不限于)轨迹球、鼠标、键盘和其它类型的输入装置。用户接口20还可以是触摸屏幕,且可作为显示器21的一部分并入。
显示器21可显示由GPU 14产生的图像内容,例如来自帧缓冲器18的所再现图形数据。显示器21可以是液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子体显示器或另一类型的显示装置。显示器21可包含显示处理器,所述显示处理器检索来自系统存储器16的图像并且输出使得显示器21的像素照亮以显示图像的值。
在操作中,CPU 12可执行一或多个软件应用程序24。软件应用程序24的实例包含利用GPU 14的功能性的应用程序。举例来说,软件应用程序24可包含图形用户接口(GUI)应用程序、操作系统、便携式制图应用程序、针对工程技术或艺术应用的计算机辅助设计程序、视频游戏应用程序或使用2D或3D图形的另一类型的软件应用程序。
软件应用程序24可包含指示GPU 14再现图形用户接口(GUI)和/或图形场景的一或多个绘制指令。举例来说,绘制指令可包含定义将由GPU 14再现的一或多个图形基元的集合的指令。在一些实例中,绘制指令可共同地定义用于GUI中的多个开窗表面的全部或部分。在额外实例中,绘制指令可共同地定义图形场景的全部或部分,所述图形场景包含在由应用程序定义的模型空间或世界空间内的一或多个图形对象。
软件应用程序24可使用图形应用程序编程接口(API)26以调用GPU驱动程序28。实例图形API包含科纳斯(Khronos)GroupTM
Figure BDA0002356736310000061
API、开放图形库
Figure BDA0002356736310000062
API、开放图形库嵌入式系统(OpenGL ES)API、Direct3D API、X3D API、RenderMan API、WebGL API、开放计算语言(OpenCLTM)、RenderScript或任何其它异构计算API,或任何其它公开或专有标准图形或计算API。图形API 26可支持轻量或推式常量。轻量常量直接映射到硬件资源,且因此避免使用普通常量缓冲器进行存储器分配和跟踪。其包含可经由API写入且可在着色器中存取的一组值。推式常量允许应用程序设置在着色器中使用的值而无需创建缓存器或针对每一更新修改和绑定描述符集。轻量常量可包含浮点值。在其它实例中,轻量常量包含整数值。
GPU驱动程序28可发布一或多个命令到GPU 14以用于将一或多个图形基元再现成可显示的图形图像。举例来说,软件应用程序24可经由图形API 26调用GPU驱动程序28以将基元定义提供给GPU 14。在一些情况下,GPU驱动程序28可将呈绘制基元的列表的形式(例如三角形、矩形、三角扇、三角带等)的基元定义提供给GPU 14。所述基元定义可包含指定与待再现的基元相关联的一或多个顶点的顶点规格。顶点规格可包含每一顶点的位置坐标,且在一些情况下包含与顶点相关联的其它属性,例如色彩坐标、法向量和纹理坐标。基元定义还可包含基元类型信息(例如三角形、矩形、三角扇、三角带等)、缩放信息、旋转信息以及类似物。因此,基于由软件应用程序24发布到GPU驱动程序28的指令,GPU驱动程序28可调配指定供GPU 14执行的一或多个操作以便再现基元的一或多个命令。
在一些实例中,GPU驱动程序28可包含编译程序,所述编译程序配置成将命令编译为一或多个着色器程序,并且将经编译的着色器程序下载到GPU 14。经编译的着色器程序可包含控制GPU 14内的着色器单元32的操作的一或多个指令。可以用高级着色语言来编写着色器程序,例如OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形的C(Cg)着色语言、OpenCL C内核等。
GPU 14包含用于执行着色器程序的着色器单元32,且可执行用于再现图形的各种着色操作。举例来说,着色器单元32(也为着色器核心)可执行着色器程序以实施图形处理管线的各种着色器级(其可共同地称为着色器管道)。着色器程序(或仅着色器)可包含:顶点着色器程序,其可由着色器单元32执行以执行顶点着色器级的功能;外壳着色器程序,其可由着色器单元32执行以执行外壳着色器级的功能;域着色器程序,其可由着色器单元32执行以执行域着色器级的功能;几何着色器程序,其可由着色器单元32执行以执行几何着色器级的功能;和/或像素着色器程序,其可由着色器单元32执行以执行像素着色器的功能。
在图1的实例中,着色器单元32各自具有着色器处理器34。着色器处理器34可包含多个处理元件以用于以并行方式在多个顶点或像素上操作。举例来说,着色器处理器34可各自包含用于提取和解码操作的一或多个组件、用于执行算术计算的一或多个算术逻辑单元(ALU)、一或多个存储器、高速缓存和寄存器。
GPU 14包含命令处理器52。命令处理器52可从由GPU驱动程序28识别的系统存储器16中的位置提取指令且将那些指令存储在命令缓冲器46中。命令处理器52可处理命令缓冲器46中发现的指令。
GPU 14包含图形存储器42,其含有常量缓冲器44、命令缓冲器46、状态缓冲器48。GPU 14还包含寄存器文件50。在一些实例中,命令缓冲器46定位于系统存储器16内。命令缓冲器46可存储待由命令处理器52处理且由GPU 14执行的包含在着色器单元32处的命令,例如绘制命令。GPU驱动程序28将命令存储在系统存储器16中。GPU驱动程序28随后指示GPU14何时检索命令,从何处获得命令以及何时执行所述命令。GPU驱动程序28可指示GPU 14检索命令并将这些命令存储在命令缓冲器46中。状态缓冲器48包括写入寄存器或写入资源描述符(用于纹理、取样器、着色器等)的命令。状态缓冲器48含有设置硬件(例如GPU 14)的当前状态的命令。在一些实例中,状态缓冲器48不包含执行动作(例如绘制等)的命令。状态缓冲器48可存储寄存器文件50的全部或部分的状态的副本。寄存器文件50的全部或部分的状态的副本可包含对应于存储在寄存器文件50中的轻量常量的部分。寄存器文件50可存储可由着色器单元32存取的一或多个轻量常量。
GPU驱动程序28可针对常量数据的初始快照分配状态缓冲器48存储器,且GPU驱动程序28可针对更新分配额外存储器。这种额外存储器可经分配但保持为未使用的。状态缓冲器48可从寄存器文件50接收轻量常量的状态的副本并将所述副本存储在GPU14中,且也可存储尚未经处理的常量更新。举例来说,命令处理器52可确定命令缓冲器46中的命令配置成更新一或多个常量值。在例如由着色器单元32的着色器处理器34遇到存储在命令缓冲器46中的改变轻量常量的状态的这类命令时,状态缓冲器48中的所使用存储器的大小可由GPU驱动程序28增大(相较于例如总计分配的物理大小)且更新可附加到状态缓冲器48以供用于稍后处理。在GPU驱动程序28将常量附加到状态缓冲器48时,GPU驱动程序28可增大有效数据的大小(通过例如常量更新命令的大小)。在某些时候,多余空间可能全部用光,且GPU驱动程序28可创建新状态缓冲器并再次开始处理。命令处理器52可确定命令缓冲器46中的命令是绘制命令。在例如由着色器单元32的着色器处理器34遇到绘制命令时,确定命令是实时的(例如可见)还是失效的(例如不可见)。命令处理器52可通过读取用于当前仓的可见性流来确定命令是实时的还是失效的。
在一些实例中,待绘制的场景分为多个仓,且一次一个地在芯片上存储器缓冲器中(例如在图形存储器42中)再现以保存存储器带宽。在绘制场景时,GPU驱动程序28在多个遍次中将再现命令发送到GPU 14。第一遍次是“可见性”遍次。GPU 14并不绘制场景,而是计算哪些绘制命令和三角形在每一仓中为可见的。这类信息存储在图形存储器42中的每仓可见性流中。一旦可见性遍次为完整的,GPU驱动程序28便每仓一个遍次地再次发送再现命令。命令处理器52在其处理命令缓冲器46时读取当前仓的可见性流。在每一遍次上仅执行当前仓中可见的绘制命令和三角形。
如果命令是实时的,那么命令处理器52可(按状态缓冲器48中的堆栈中接收延迟的常量更新的次序)处理所有或基本上所有延迟的常量更新。可一或多个批次地执行更新的处理。在常量更新的处理之后,可经由将所处理更新加载到硬件状态(例如经由例如间接指针到寄存器文件50)来更新更新后的常量,且可在无任何附加更新的情况下将新快照保存在状态缓冲器48中。如果绘制命令是失效的,那么可在潜在地稍后时间(例如在不更新常量值的情况下)将常量更新附加到状态缓冲器48以供用于处理。在一实例中,如果确定绘制命令为实时的,但尚不存在对处理绘制命令所需的常量值的更新,那么GPU14的命令处理器52可能不处理常量更新(例如略过常量更新的处理)并允许所述常量更新在状态缓冲器48中继续累积。
由于常量的更新延迟,因此在不存在使用这些轻量常量值的实时绘制调用的实例中,GPU 14的命令处理器52可能从来不需要在保存处理资源的状态缓冲器48中处理上述更新。可丢弃或重写这些未处理更新。
图2是更详细地说明图1的命令缓冲器46和状态缓冲器48的示范性操作的概念图。在图2的实例中,可用待在GPU 14上执行的一或多个命令60A到60H(统称为“命令60”)填充命令缓冲器46。在装仓架构中,每一仓(或平铺块)可独立地处理绘制调用和常量更新。所公开的技术可允许常量更新的处理仅
GPU 14可(例如经由命令处理器52)处理命令缓冲器46中的下一命令,命令60A。命令60A包含延迟的状态加载机构,所述延迟的状态加载机构在经处理时,从寄存器文件50加载轻量常量值的快照,包含常量0到7。大小字段可包含状态缓冲器48中的常量的数目(例如双字(dwords))且(如所展示)等于八。此外,命令60A包含将加载延迟状态常量的位置的地址。如图2中所展示,这可以是状态缓冲器48的地址。GPU 14可随后处理命令缓冲器46中的下一命令,命令60B。在经处理时,命令60B是用以再现图形元素的绘制命令。GPU 14的命令处理器52可确定绘制命令是实时的(例如可见)还是失效的(例如不可见)。GPU 14可确定不存在用以处理的延迟的常量更新。
在一实例中,状态缓冲器48仅包含轻量常量。其它状态信息可存储在其它状态缓存器中。在这一实例中,轻量常量未与单一状态缓冲器中的其它状态信息混合,这是因为其可使得附加机构复杂化。图2中的标记为“常量X”的状态缓冲器48中的条项中的每一个包含用以加载所述常量(地址、数据)对的硬件命令。命令处理器52在其处理状态缓冲器48时按次序执行这些命令。在其它实例中,一或多个缓存器可混合状态信息。
GPU 14可处理命令缓冲器46中的下一命令,命令60C。命令60C包含延迟的状态加载机构,所述延迟的状态加载机构在经处理时将状态缓冲器48的大小(从如由命令60A更新后的八)增大到十一。状态缓冲器48的指针(或地址)保持不变。GPU 14可随后处理命令缓冲器46中的下一命令,命令60D。在经处理时,命令60D是用以再现图形元素的绘制命令。GPU14可确定绘制命令60D是实时的(例如可见)还是失效的(例如不可见)。如果绘制命令60D是实时的,那么GPU 14可通过更改寄存器文件50中的常量值的值来处理更新命令。在一些实例中,GPU 14可重新加载轻量常量的状态的快照。如果绘制调用是失效的,那么GPU 14可将常量1、3和6的更新附加到状态缓冲器48。
GPU 14可处理命令缓冲器46中的下一命令,命令60E。命令60E包含延迟的状态加载机构,所述延迟的状态加载机构在经处理时将状态缓冲器48的大小(从如由命令60C更新后的十一)增大到十四。状态缓冲器48的指针(或地址)保持不变。GPU 14可随后处理命令缓冲器46中的下一命令,命令60F。在经处理时,命令60F是用以再现图形元素的绘制命令。GPU14可确定绘制命令60F是实时的(例如可见)还是失效的(例如不可见)。如果绘制命令60F是实时的,那么GPU 14可通过更改寄存器文件50中的常量值的值来处理更新命令。在一些实例中,GPU 14可重新加载轻量常量的状态的快照。如果绘制调用是失效的,那么GPU 14可将常量1、2和7的更新附加到状态缓冲器48。
GPU 14可处理命令缓冲器46中的下一命令,命令60G。命令60G包含延迟的状态加载机构,所述延迟的状态加载机构在经处理时将状态缓冲器48的大小(从如由命令60E更新后的十四)增大到十八。状态缓冲器48的指针(或地址)保持不变。GPU 14可随后处理命令缓冲器46中的下一命令,命令60H。在经处理时,命令60H是用以再现图形元素的绘制命令。GPU14可确定绘制命令60H是实时的(例如可见)还是失效的(例如不可见)。如果绘制命令60H是实时的,那么GPU 14可通过更改寄存器文件50中的常量值的值来处理更新命令。在一些实例中,GPU 14可重新加载轻量常量的状态的快照。如果绘制调用是失效的,那么GPU 14可将常量3、4、5和6的更新附加到状态缓冲器48。
如图2中所展示,一旦到达实时绘制命令,GPU 14便可执行成批的常量更新。举例来说,如果绘制1(命令60D)和绘制2(命令60F)不是实时的,那么待更新的常量中的每一个存储在状态缓冲器48中并保持延迟。随后,如果绘制3(命令60H)是实时的,那么GPU 14可配置成从更新1开始依序处理每一更新(例如更新1到3),且例如存储在寄存器文件50中(例如经由间接指针加载到硬件状态中)。因此,在图2中展示的实例中,常量1、3和6将分别更新2次。在其它实例中,合并单一常量的多个更新,这使得常量更新一次。轻量常量的干净快照可从寄存器文件50检索到状态缓冲器48中。如果绘制3(命令60H)是失效的且是用于例如仓的最终绘制命令,那么可在无另外处理的情况下丢弃所有更新(例如更新1到3)。
在一些实例中,常量的更新在同一仓中与实时的和失效的绘制命令穿插。在这类实例中,可在遇到实时绘制命令时针对所述仓处理多次延迟的常量更新。在这类实例中,在执行最后一个实时绘制命令之后可能存在延迟的常量更新。这种情况出现在例如存在添加到常量缓冲器中的常量更新后跟着一或多个失效的绘制命令的情况下。即使在这些实例中,可能并不处理且可能丢弃其余延迟的常量更新。
图3是说明根据本公开的各方面的常量的延迟批处理的实例方法的流程图。
GPU 14的命令处理器52可处理命令缓冲器46中的下一命令(300)。如果下一命令是轻量常量值的更新(302,常量更新支路),那么GPU 14的命令处理器52可审核命令缓冲器46中的更新命令(304)。GPU 14可将常量更新命令中的一或多个常量更新附加到状态缓冲器48(306)。GPU 14的命令处理器52可确定当前命令是否为(例如针对当前仓)命令缓冲器46中的最后一个命令(316)并继续。
如果下一命令是绘制命令(302,绘制命令支路),那么命令处理器52可审核命令缓冲器46中的绘制命令(308)。GPU 14的命令处理器52可确定绘制命令是否为可见(例如实时)绘制命令。如果命令不是可见绘制命令(310,否(no)分支),那么GPU 14的命令处理器52可确定当前命令是否为(例如针对当前仓)命令缓冲器46中的最后一个命令(316)并继续。如果命令是可见绘制命令(310,是(yes)分支),那么GPU 14的命令处理器52可对状态缓冲器48中的一或多个常量更新进行批处理(312)。所得更新值可经由例如间接指针加载到硬件状态(例如寄存器文件50中)。可利用来自寄存器文件50的新快照更新状态缓冲器48(314)。GPU 14的命令处理器52可确定当前命令是否为(例如针对当前仓)命令缓冲器46中的最后一个命令(316)并继续。
如果下一命令不是常量更新或绘制命令(302,否分支),那么GPU 14的命令处理器52可确定当前命令是否为(例如针对当前仓)命令缓冲器46中的最后一个命令(316)。如果命令不是最后一个命令(316,否分支),那么命令处理器52可审核命令缓冲器46中的下一命令(300)。如果命令是最后一个命令(316,是分支),那么方法结束(318)。在方法结束(318)之后,GPU 14可处理图像中的另一仓。因此,可能存在其中因命令处理器52未遇到实时绘制命令而导致存在从未经批处理(312)的附加到状态缓冲器48的延迟更新(306)的实例。在这类实例中,GPU 14可保存处理附加的和未处理的常量更新的处理时间。
图4是说明根据本公开的各方面的实例方法的流程图。
GPU 14的命令处理器52可配置成在装仓操作期间确定命令缓冲器46中的第一命令配置成更新常量值(400)。命令可包含用以更新常量(例如轻量常量)的值的指令。GPU 14可将常量更新中的一或多个从第一命令附加到状态缓冲器48(402),而不是在状态缓冲器48中或寄存器文件50中执行立即更新以及更新快照值。附加常量更新可包含基于更新后的常量值的数目而增大状态缓冲器的大小。这一操作可使状态缓冲器48的大小扩大相称数量的更新。
命令处理器52可确定命令缓冲器46中的第二命令配置成执行绘制操作(404)。GPU14可确定绘制命令是可见的绘制操作还是不可见的(406)。如果绘制命令是可见的,那么GPU 14可对状态缓冲器48中的一或多个常量更新进行批处理(408)。可按添加到状态缓冲器中的次序执行批处理。GPU 14可经由间接指针将所处理的一或多个常量更新加载到硬件状态(例如寄存器文件50中)(410)。如果绘制命令是不可见的,那么GPU 14可略过状态缓冲器48中的常量更新(例如停止处理)。在完成处理图像的第一仓(或平铺块)时,GPU 14可丢弃附加的但未经批处理的常量更新。
应理解,图3和4中展示的技术仅出于说明的目的而提供。在其它实例中,过程可包含比所展示的那些更多、更少的步骤或步骤的替代布置。举例来说,如上文所描述,可能并不针对全部纹理数据执行过滤操作。
在一或多个实例中,所描述的功能可用硬件、软件、固件或其任何组合来实施。如果实施于软件中,那么可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体发射。计算机可读媒体可包含计算机数据存储媒体或通信媒体,所述通信媒体包含促进计算机程序从一处传递至另一处的任何媒体。数据存储媒体可以是可由一或多个计算机或一或多个处理器存取以检索用于实施本公开中描述的技术的指令、代码和/或数据结构的任何可用媒体。借助于实例而非限制,这类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、高速缓存存储器或可用于携载或存储呈指令或数据结构形式的所需程序代码且可由计算机存取的任何其它媒体。并且,适当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波的无线技术从网站、服务器或其它远程源传输软件,那么所述同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波的无线技术包含在媒体的定义中。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再生数据,而光盘利用激光以光学方式再生数据。以上各个的组合也应包含在计算机可读媒体的范围内。
代码可以由一或多个处理器执行,所述一或多个处理器例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”和“处理单元”可指前述结构或适于实施本文中所描述的技术的任何其它结构中的任一者。此外,在一些方面中,本文中所描述的功能性可在配置成用于编码和解码或并入在组合编解码器中的专用硬件和/或软件模块内提供。并且,所述技术可完全实施于一或多个电路或逻辑元件中。
本公开的技术可实施于广泛多种装置或设备中,所述装置或设备包含无线手持机、集成电路(IC)或一组IC(即,芯片组)。本公开中描述各种组件、模块或单元是为了强调配置成执行所公开的技术的装置的功能方面,但未必需要通过不同硬件单元实现。确切地,如上文所描述,各种单元可结合合适的软件和/或固件组合在编解码器硬件单元中,或由互操作硬件单元的集合来提供,所述硬件单元包含如上文中所描述的一或多个处理器。
已经描述了本公开的各个方面。这些和其它实施例在所附权利要求书的范围内。

Claims (30)

1.一种操作图形处理单元GPU的方法,所述方法包括:
在装仓操作期间确定命令缓冲器中的第一命令配置成更新状态缓冲器中的一或多个常量值,所述状态缓冲器包括当前常量状态的副本;
在不更新所述一或多个常量值的情况下基于所述第一命令将一或多个常量更新从所述第一命令附加到所述状态缓冲器直到绘制操作为止;
确定所述命令缓冲器中的第二命令配置成执行所述绘制操作;
确定所述第二命令是否为可见绘制操作;以及
当所述第二命令是所述可见绘制操作时,对所述状态缓冲器中的所述一或多个常量更新进行批处理。
2.根据权利要求1所述的方法,其进一步包括:当所述第二命令是所述可见绘制操作时,经由间接指针将处理的一或多个常量更新加载到硬件状态。
3.根据权利要求1所述的方法,其中处理所述一或多个常量更新包括按附加到所述状态缓冲器的次序处理所述一或多个常量更新。
4.根据权利要求1所述的方法,其进一步包括:
当所述第二命令不是所述可见绘制操作时,在不更新所述一或多个常量值的情况下处理所述命令缓冲器中的下一命令。
5.根据权利要求1所述的方法,其进一步包括基于附加所述一或多个常量值而增大所述状态缓冲器的大小。
6.根据权利要求1所述的方法,其进一步包括当所述第二命令不是所述可见绘制操作时,略过对所述一或多个常量更新的所述处理。
7.根据权利要求1所述的方法,其中对所述状态缓冲器中的所述一或多个常量更新进行批处理是基于确定所述第二命令是所述可见绘制操作。
8.根据权利要求1所述的方法,其中所述装仓操作包括待由所述GPU再现的图像的多个平铺块中的第一平铺块的所述装仓操作。
9.根据权利要求8所述的方法,其进一步包括:
在不更新所述一或多个常量值的情况下将一或多个常量更新从一或多个第三命令附加到所述状态缓冲器;
在所述多个平铺块中的所述第一平铺块的所述装仓操作完成时,丢弃尚未经批处理的所附加一或多个常量更新。
10.根据权利要求1所述的方法,其进一步包括:
在检索所述第二命令之前和在所述装仓操作期间确定所述命令缓冲器中的第三命令配置成更新所述状态缓冲器中的所述一或多个常量值;
略过更新所述一或多个常量值;以及
基于所述第三命令将一或多个常量更新从所述第三命令附加到所述状态缓冲器。
11.根据权利要求1所述的方法,其中批处理包括仅在所述第二命令是所述可见绘制操作时,对所述状态缓冲器中的所述一或多个常量更新进行批处理。
12.根据权利要求1所述的方法,其中所述一或多个常量值包括直接映射到所述GPU上的硬件资源的常量值。
13.一种用于处理数据的设备,所述设备包括:
图形处理单元GPU和命令处理器,所述GPU包括命令缓冲器和状态缓冲器,其中所述命令处理器配置成:
在装仓操作期间确定所述命令缓冲器中的第一命令配置成更新所述状态缓冲器中的一或多个常量值,所述状态缓冲器包括当前常量状态的副本;
在不更新所述一或多个常量值的情况下基于所述第一命令将一或多个常量更新从所述第一命令附加到所述状态缓冲器直到绘制操作为止;
确定所述命令缓冲器中的第二命令配置成执行所述绘制操作;
确定所述第二命令是否为可见绘制操作;以及
当所述第二命令是所述可见绘制操作时,对所述状态缓冲器中的所述一或多个常量更新进行批处理。
14.根据权利要求13所述的设备,其中所述命令处理器进一步配置成在所述第二命令是所述可见绘制操作时,经由间接指针将处理的一或多个常量更新加载到硬件状态。
15.根据权利要求13所述的设备,其中所述命令处理器配置成处理所述一或多个常量更新包括所述命令处理器配置成按附加到所述状态缓冲器的次序处理所述一或多个常量更新。
16.根据权利要求13所述的设备,其中所述命令处理器进一步配置成在所述第二命令不是所述可见绘制操作时在不更新所述一或多个常量值的情况下处理所述命令缓冲器中的下一命令。
17.根据权利要求13所述的设备,其进一步包括中央处理单元CPU,所述中央处理单元包括GPU驱动程序,所述GPU驱动程序配置成基于附加所述一或多个常量值而增大所述状态缓冲器的大小。
18.根据权利要求13所述的设备,其中所述命令处理器进一步配置成在所述第二命令不是所述可见绘制操作时,略过对所述一或多个常量更新的所述处理。
19.根据权利要求13所述的设备,其中对所述状态缓冲器中的所述一或多个常量更新进行批处理是基于确定所述第二命令是所述可见绘制操作。
20.根据权利要求13所述的设备,其中所述装仓操作包括待由所述GPU再现的图像的多个平铺块中的第一平铺块的所述装仓操作。
21.根据权利要求13所述的设备,其中所述命令处理器进一步配置成:
在不更新所述一或多个常量值的情况下将一或多个常量更新从一或多个第三命令附加到所述状态缓冲器;
在所述多个平铺块中的所述第一平铺块的所述装仓操作完成时,丢弃尚未经批处理的所附加一或多个常量更新。
22.根据权利要求13所述的设备,其中所述命令处理器进一步配置成:
在检索所述第二命令之前和在所述装仓操作期间确定所述命令缓冲器中的第三命令配置成更新所述状态缓冲器中的所述一或多个常量值;
略过对所述一或多个常量值的所述更新;以及
基于所述第三命令将一或多个常量更新从所述第三命令附加到所述状态缓冲器。
23.根据权利要求13所述的设备,其中所述命令处理器配置成进行批处理包括仅在所述第二命令是所述可见绘制操作时对所述状态缓冲器中的所述一或多个常量更新进行批处理。
24.根据权利要求13所述的设备,其中所述一或多个常量值包括直接映射到所述GPU上的硬件资源的常量值。
25.一种配置成操作图形处理单元GPU的设备,所述设备包括:
用于在装仓操作期间确定命令缓冲器中的第一命令配置成更新状态缓冲器中的一或多个常量值的装置,所述状态缓冲器包括当前常量状态的副本;
用于在不更新所述一或多个常量值的情况下基于所述第一命令将一或多个常量更新从所述第一命令附加到所述状态缓冲器直到绘制操作为止的装置;
用于确定所述命令缓冲器中的第二命令配置成执行所述绘制操作的装置;
用于确定所述第二命令是否为可见绘制操作的装置;以及
用于在所述第二命令是所述可见绘制操作时对所述状态缓冲器中的一或多个常量更新进行批处理的装置。
26.根据权利要求25所述的设备,其进一步包括:用于在所述第二命令是所述可见绘制操作时经由间接指针将处理的一或多个常量更新加载到硬件状态的装置。
27.根据权利要求25所述的设备,其进一步包括:用于在所述第二命令不是所述可见绘制操作时在不更新所述一或多个常量值的情况下处理所述命令缓冲器中的下一命令的装置。
28.根据权利要求25所述的设备,其中用于对所述状态缓冲器中的所述一或多个常量更新进行批处理的装置是基于确定所述第二命令是所述可见绘制操作。
29.根据权利要求25所述的设备,其中所述一或多个常量值包括直接映射到所述GPU上的硬件资源的常量值。
30.一种包含存储在其上的指令的非暂时性计算机可读存储媒体,所述指令在执行时使得至少一个处理器进行以下操作:
在装仓操作期间确定命令缓冲器中的第一命令配置成更新状态缓冲器中的一或多个常量值,所述状态缓冲器包括当前常量状态的副本;
在不更新所述一或多个常量值的情况下基于所述第一命令将一或多个常量更新从所述第一命令附加到所述状态缓冲器直到绘制操作为止;
确定所述命令缓冲器中的第二命令配置成执行所述绘制操作;
确定所述第二命令是否为可见绘制操作;以及
当所述第二命令是所述可见绘制操作时,对所述状态缓冲器中的所述一或多个常量更新进行批处理。
CN201880045258.XA 2017-07-28 2018-06-22 增量常量负载的延迟批处理 Pending CN110892383A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/662,933 2017-07-28
US15/662,933 US10157443B1 (en) 2017-07-28 2017-07-28 Deferred batching of incremental constant loads
PCT/US2018/039072 WO2019022881A1 (en) 2017-07-28 2018-06-22 DELAYED LOTS OF INCREMENTAL CONSTANT LOADS

Publications (1)

Publication Number Publication Date
CN110892383A true CN110892383A (zh) 2020-03-17

Family

ID=63015020

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880045258.XA Pending CN110892383A (zh) 2017-07-28 2018-06-22 增量常量负载的延迟批处理

Country Status (3)

Country Link
US (1) US10157443B1 (zh)
CN (1) CN110892383A (zh)
WO (1) WO2019022881A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11694384B2 (en) * 2020-10-30 2023-07-04 Qualcomm Incorporated Fast incremental shared constants

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101271584A (zh) * 2008-04-11 2008-09-24 威盛电子股份有限公司 可编程图形处理单元计算核心的常量缓冲的方法和系统
US20130106853A1 (en) * 2008-12-29 2013-05-02 Microsoft Corporation Leveraging graphics processors to optimize rendering 2-d objects
US20130293544A1 (en) * 2012-05-03 2013-11-07 Richard W. Schreyer Tiled Forward Shading with Improved Depth Filtering
CN104169974A (zh) * 2012-03-15 2014-11-26 高通股份有限公司 图形处理单元中基于可见性的状态更新
CN105210111A (zh) * 2013-05-31 2015-12-30 高通股份有限公司 基于每仓可见性信息以及添加的线内操作的渲染命令的条件性执行
US20160232645A1 (en) * 2015-02-10 2016-08-11 Qualcomm Incorporated Hybrid rendering in graphics processing

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8120608B2 (en) 2008-04-04 2012-02-21 Via Technologies, Inc. Constant buffering for a computational core of a programmable graphics processing unit
US10957094B2 (en) 2013-03-29 2021-03-23 Advanced Micro Devices, Inc. Hybrid render with preferred primitive batch binning and sorting
US9600926B2 (en) 2014-12-15 2017-03-21 Intel Corporation Apparatus and method decoupling visibility bins and render tile dimensions for tiled rendering
US9922449B2 (en) 2015-06-01 2018-03-20 Intel Corporation Apparatus and method for dynamic polygon or primitive sorting for improved culling

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101271584A (zh) * 2008-04-11 2008-09-24 威盛电子股份有限公司 可编程图形处理单元计算核心的常量缓冲的方法和系统
US20130106853A1 (en) * 2008-12-29 2013-05-02 Microsoft Corporation Leveraging graphics processors to optimize rendering 2-d objects
CN104169974A (zh) * 2012-03-15 2014-11-26 高通股份有限公司 图形处理单元中基于可见性的状态更新
US20130293544A1 (en) * 2012-05-03 2013-11-07 Richard W. Schreyer Tiled Forward Shading with Improved Depth Filtering
CN105210111A (zh) * 2013-05-31 2015-12-30 高通股份有限公司 基于每仓可见性信息以及添加的线内操作的渲染命令的条件性执行
US20160232645A1 (en) * 2015-02-10 2016-08-11 Qualcomm Incorporated Hybrid rendering in graphics processing

Also Published As

Publication number Publication date
US10157443B1 (en) 2018-12-18
WO2019022881A1 (en) 2019-01-31

Similar Documents

Publication Publication Date Title
US9679347B2 (en) Shader pipeline with shared data channels
US10297003B2 (en) Efficient saving and restoring of context information for context switches
EP3350766B1 (en) Storing bandwidth-compressed graphics data
KR102006584B1 (ko) 레이트 심도 테스팅과 컨서버티브 심도 테스팅 간의 동적 스위칭
US20160292812A1 (en) Hybrid 2d/3d graphics rendering
US10062139B2 (en) Vertex shaders for binning based graphics processing
TWI786233B (zh) 關於以微磚為基礎之低解析度深度儲存之方法、器件與非暫時性電腦可讀儲存媒體
US9720691B2 (en) Speculative scalarization in vector processing
CN109983533B (zh) 用于固定颜色及图案子帧的提取减少
CN116909511A (zh) 提升gpu双缓冲显示效率的方法、装置及存储介质
US10157443B1 (en) Deferred batching of incremental constant loads
CN116457830A (zh) 基于区域不连续性的运动估计

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned
AD01 Patent right deemed abandoned

Effective date of abandoning: 20220506