CN101271584B - 可编程图形处理单元计算核心的常量缓冲的方法和系统 - Google Patents
可编程图形处理单元计算核心的常量缓冲的方法和系统 Download PDFInfo
- Publication number
- CN101271584B CN101271584B CN2008100916652A CN200810091665A CN101271584B CN 101271584 B CN101271584 B CN 101271584B CN 2008100916652 A CN2008100916652 A CN 2008100916652A CN 200810091665 A CN200810091665 A CN 200810091665A CN 101271584 B CN101271584 B CN 101271584B
- Authority
- CN
- China
- Prior art keywords
- constant
- buffer
- buffering
- tinter
- processing unit
- 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.)
- Active
Links
Images
Landscapes
- Image Generation (AREA)
Abstract
本发明揭露了一种用于可编程图形处理单元计算核心的常量缓冲的方法,其特征在于包含以下步骤:响应第一着色器操作,在常量缓冲器中接收第一常量组,该第一常量组相应于第一渲染内文;响应第二着色器操作,在该常量缓冲器中接收第二常量组,该第二常量组相应于第二渲染内文,而且该第一常量组未被冲刷;更新内文地址转换表格,该内文地址转换表格将该第一着色器操作或者该第二着色器操作的参考值匹配至该常量缓冲器的物理地址,该第一着色器操作或者该第二着色器操作用来执行该第一常量组或该第二常量组中的常量。与现有系统相比较,本发明能够同步进行常量处理,该常量可以是使用来自于超过一个渲染内文的相同的或者不同的着色器。
Description
技术领域
本发明是关于数据处理系统(data processing systems),且特别是关于可编程图形处理(programmable graphics processing)的方法与系统。
背景技术
计算机图形(computer graphics)是利用计算机技术生成画面、图像或者其它绘画的、图示信息的工艺和科学。画面或图像的产生一般被称为渲染(rendering)。通常而言,在三维(3D)计算机图形中,一个场景(scene)中代表物体表面的图元(geometry)会被转化为若干像素(图像的基本元素),储存于一帧缓冲器,然后被显示在显示装置中。
一些不同的坐标空间会被用于将一个场景中的物体转换成可以显示在显示屏上的图像。例如,物体开始处于一个没有进行任何转换的模型空间。从该模型空间,该物体的顶点(vertices)和标准量(normals)可以通过使用一个或者多个模型转换器(model transform)来定位或定向以转换到世界空间或世界坐标。进而,对具有世界坐标的模型做视野转换,来定义该模型相对于相机的位置和方向。在该结果空间中,经常是指视觉空间或相机空间,以便利各种操作,比如映射和剪切功能,以及进一步的转换。
这些来自于视觉空间的进一步转换可以包含可编程着色程序的使用,比如顶点着色、像素着色,和图元着色,这些转换可以在平行、多线程执行单元池中被执行,以形成图形处理单元(GPU)的计算核心。着色器通常是指应用于三维计算机图形中的程序,该着色器用于决定一个物体或者图像的最终表面性质(surface properties)。每个物体或者一组物体可能具有与表面外观相关的特定视觉属性(比如,材质、反射系数、形状、纹理等),以及与之相关的操作;这些全部可称为该个物体或者一组物体的渲染内文。当对一个给定的渲染内文的一个物体或者一组物体进行渲染时,着色器需利用常量数据池(例如,存储于常量缓冲器中的特定内文常量)。
举例而言,顶点着色器通常被应用于每个顶点,运行在可编程的顶点处理器。该顶点着色器可以定义一个方法去计算向量空间的转换,并执行其它计算。在计算向量空间的转换时,会用到各种常量。比如,顶点(x,y,z,w)可通过使用一个常量(例如,C00,C01,C02,C03,...C33)矩阵(例如,4×4矩阵)被转换成新的顶点(x’,y’,z’,w’)。这些常量通常存储在相应于一个别执行单元的一个常量缓冲器中,该常量与一个或者更多三维物体的渲染内文关联。
现有系统目前存在一个新的挑战,由于为了渲染定义在适当的渲染内文中带有不同视觉属性的物体队列,该常量缓冲器的至少一部分需要频繁的更新。通常而言,常量的更新需要“冲洗”整个包含与“旧”内文关联的数据的常量缓冲器,然后载入与新内文关联的“新”常量。
而且,相应于该常量缓冲器的该执行单元,可能运转多线程,可能会在冲洗该常量缓冲器的时候被延迟。即,该执行单元可能会在开始利用一组新常量之前冲洗该多线程(例如,允许利用先前的常量完成处理)。因此,在运行于多线程计算核心的着色器中做这种渲染内文转换(例如,从第一内文至第二内文),可能会引起显著的表现力减低。
发明内容
本发明揭露了一种用于可编程图形处理单元计算核心的常量缓冲的方法,其特征在于包含以下步骤:响应第一着色器操作,在常量缓冲器中接收第一常量组,该第一常量组相应于第一渲染内文;响应第二着色器操作,在该常量缓冲器中接收第二常量组,该第二常量组相应于第二渲染内文,而且该第一常量组未被冲刷;更新内文地址转换表格,该内文地址转换表格将该第一着色器操作或者该第二着色器操作的参考值匹配至该常量缓冲器的物理地址,该第一着色器操作或者该第二着色器操作用来执行该第一常量组或该第二常量组中的常量。
本发明还提供一种用于可编程图形处理单元计算核心的常量缓冲的系统,其特征在于包含:执行单元池控制逻辑单元;常量缓冲器,该常量缓冲器和该执行单元池控制逻辑单元可以响应第一着色器操作,接收相应于第一渲染内文的第一常量组,和响应第二着色器操作,接收相应于第二渲染内文的第二常量组,而且该第一常量组未被冲刷;以及常量缓冲控制器和内文地址转换表格,其中该常量缓冲控制器使用该内文地址转换表格将应用程序界面空间中的常量的参考值,匹配至该常量缓冲器中的物理地址,该参考值是由一个或者多个该第一着色器操作和该第二着色器操作所提供的。
对于本领域技术人员而言,其它未包含在本发明下述所揭露的内容与图示中的系统、方法、特征或者优势为显而易见的,因此凡其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在本发明的权利要求范围内。
附图说明
本发明的一些实施例会详细描述如下。然而,除了详细描述外,本发明还可以广泛地在其它的实施例中施行,且本发明的范围不受限定,其以权利要求的范围为准。再者,在本说明书中,各元件的不同部分并没有依照尺寸绘图。某些尺度与其它相关尺度相比已经被夸张,以提供更清楚的描述宜对发明的理解。
图1绘示了一运行常量缓冲系统和方法的图形处理器系统的实施例的模块图。
图2绘示了一常量缓冲系统的处理环境的实施例的模块图。
图3绘示了图2所显示的处理环境的逻辑图形管线的一部分的模块图。
图4绘示了图2所显示的处理环境的部分组成的模块图。
图5绘示了一程序的实施例,该程序揭示了图形处理单元编译器的方法,用于从应用程序界面(API)空间映射常量至图形处理单元(GPU)存储器空间和 内部(芯片上)常量缓冲器。
图6A-6B绘示了一常量缓冲系统实施例的部分组成的模块图。
图7绘示了一常量缓冲方法的实施例的流程图。
图8进一步绘示了如图6B所示的常量内文表格模块图。
图9A-9B绘示了如图6A-6B所示的常量缓冲系统所利用的各种表格的模块图。
具体实施方式
本发明揭示应用于图形处理单元中多线程、平行计算核心的每一个执行单元的常量缓冲系统和方法。该常量缓冲系统能够在着色程序线程利用目前或现存于该缓冲器的内文数据渲染在先物体的同时,更新常量缓冲器为与新的被渲染物体相关的新内文数据。该常量缓冲器能够在不因重新下载常量而延迟计算核心执行单元的情况下进行更新。即,相较于现有系统随着每个渲染内文的改变而冲洗常量缓冲器(从该缓冲器中完全冲洗掉该“旧”的常量,由此可以有空间去下载新的常量),该常量系统能够使用来自于超过一个渲染内文的相同的或者不同的着色器同步进行常量处理。
因此不同于传统系统,在本发明实施例中常量的改变不会给速度和效率施加负担。尤其,如下描述的常量缓冲系统在更新或者改变常量的同时,也能够执行在先的常量。即,执行不同内文常量的多个着色程序是在同步处理通道中进行,一个通道相应于在先内文常量而至少一个其它通道相应于新的内文常量。通过常量缓冲系统来完成常量的更新或者替换可以使着色执行模块流畅的进行常量替换程序,以提升计算的效率。
渲染内文通常是指一个或多个物体的特定视觉属性,例如,表面的外观(材质、反射系数、外型、纹理等等),或者与之相关的操作。渲染内文的处理包括利用一组常量的着色器着色操作。渲染内文的改变可能牵涉执行另一组常量的同一着色器,或者执行另一组常量的其它着色器。这些常量可以被各种着色程序用于执行计算,例如,转换、加亮或者其它计算。每个常量由一相应的渲染内文识别子来被着色器识别,使得常量缓冲器能够维持多个内文的常量,并且被运行于各个执行单元的着色器程序所利用。
在一个实施例中,常量缓冲系统包含常量缓冲器、常量缓冲控制器、和内文地址转换表格。如下的进一步解释中,常量缓冲器包含相应于一个或多个渲染内文的常量的预定大小的数据槽,包含现有常量和更新后或新的常量。对使用内文地址转换表格中的每一个渲染内文,该常量缓冲器控制器维持这些常量的逻辑索引。即,常量缓冲控制器比对给定渲染内文的常量的着色器参考值(例如内文识别子)与常量缓冲器的物理地址。如此构造避免了覆写地址空间的需要或者当常量缓冲器中存在多个内文时执行的延迟。
本发明实施例的另外的特征还包含,在把与新的被渲染物体相关的内文数据更新至着色器常量缓冲器的同时,在该常量缓冲器中的现存内文数据可用于渲染在先物体的着色程序线程,而不必为常量的重新载入而延迟计算核心执行单元;映射与来自不同应用程序界面(API)的不同内文相关的常量至图形处理单元(GPU)存储器和内部的(在芯片上的)常量缓冲器;管理第一内文对该常量缓冲器的常量存取;在该内部常量缓冲器中有足够的空间(可用的常量模块)时,管理第二内文对该常量缓冲器的常量存取;监控常量的使用状态并生成一个可分配给新的即将来到的内文常量的可用常量缓冲器区块的列表;以及常量缓冲器槽中新的常量的分配和对内文地址转换表格的更新,该内文地址转换表格提供从位于GPU的计算核心的一个或者多个着色器程序中使用常量的通路。
以下将简单描述一实施例的图形计算器系统的环境和相应的组件,本领域技术人员应可以知道所揭露的系统和方法也可以扩展到其它处理环境中。
图1绘示了运行常量缓冲系统200和方法的图形处理器系统100的实施例的模块图。如图所示,常量缓冲器系统200被集成于计算核心中的每一个执行单元。在一些实施例中,图形处理器系统100可以为计算机系统。图形处理器系统100可以包含显示装置102,其被显示介面单元(以下简称DIU)104所驱动,本地存储器106(例如,可以包含显示缓冲器、帧缓冲器、纹理缓冲器、命令缓冲器等等)。本地存储器106也可以称为帧缓冲器或者存储单元。本地存储器106经过一个或者多个存储界面单元(以下简称MIU)110耦接至图形处理单元(以下简称GPU)114,MIU110、GPU114以及DIU104是耦接至外围装置互连高速(peripheral component interconnect express,以下简称PCIE)总线协议兼容的总线接口单元(bus interface unit,以下简称BIU)118。在一个实施例中,BIU118可以应用图形地址对照表(Graphics AddressRemapping Table,GART),尽管也可以应用其它存储器映射机制。GPU114包括如下所述的常量缓冲系统200。在一些实施例中,尽管常量缓冲系统200显示为GPU114的一个组件,常量缓冲系统200包含图形处理器系统100的一个或者多个额外的组件。
BIU118耦接至芯片组122(例如,北桥芯片组)或者开关。芯片组122包含界面电子元器件以加强来自中心处理单元(以下简称CPU)126(也指这里的主处理器)的信号,以及从这些信号中分离出来自于系统存储器124的信号和来自于输入/输出装置的信号(此处未绘出)。尽管PCIE总线协议已经描述了,在CPU126和GPU114之间的其它连接方式或者交换方式也会被应用于一些实施例中(例如,PCI、外围高速总线)。系统存储器124也包含驱动软件128,其利用CPU126与GPU114的缓存器交流指令组或者命令,以及应用程序界面空间130,在此常量是被存储器映射或者常量缓冲器映射,该常量由在GPU114上的编译器115所映射,以下会做进一步的说明。
额外的图形处理单元可以被用于一些实施例中,例如通过芯片组122耦接至如图1所示的组件上,其中芯片组122是通过PCIE总线协议。在某个实施例中,图形处理器系统100可以包含图1中所示的所有元件,或者在一些实施例中包含较图1而言更少的或者不同的元件,甚且,在一些实施例中,额外的组件可以被利用,例如耦接至芯片组122的南桥芯片组。
请参考图2,其描绘了一实施例的常量缓冲系统200的模块图。尤其,如图所示的GPU114包含了图形处理器202。图形处理器202包含编译器115、多重执行单元(multiple execution unit,EU)、计算核心204(也称为软件可编程核心处理单元)。在一个实施例中,计算核心204包含分布于一个或者多个执行单元的常量缓冲系统200。图形处理器202也包含执行单元池(execution unit pool,EUP)和顶点/码流缓冲单元206(也可称为EU池控制单元206)和具有固定功能逻辑的图形管线208(例如,包含三角形设立单元(triangle set-upunit,TSU)、跨距-像砖生成器(span-tile generator,STG))的图形管线,以下详述。计算核心204包含多重执行单元池,以满足与各种着色器程序相关的着色器任务的计算要求,包含顶点着色器、几何着色器、或者像素着色器,为该图形管线208处理数据。在一个实施例中,通过与计算核心204中的一个或者多个着色器合作可以实现常量缓冲系统200的功能。关于实施例中图形处理器202的通常描述已经完成,下面将描述该常量缓冲系统200的某些特别的实施例。
常量缓冲系统200可以被用于硬件、软件、固件或者其以上的一个结合。在一个实施例中,常量缓冲系统200是在硬件加固件系统中执行的,也包括在此技术领域中所众所周知的技术及以下所述技术的任意结合:一具有逻辑门的离散逻辑电路,可以依照数据信号来完成逻辑功能,一个具有适当集成的逻辑门的特定应用集成电路(ASIC),一可编程逻辑门阵列(PGA),一场域可编程逻辑门阵列(FPGA)等等。
请参考图3,其描述了逻辑图形管线208的实施例的模块图。在一些实施例中可以包含在图3中额外的或者较少的组件。例如,以下描述的每个模型可以包含它们自己内部的一个或者多个寄存器(没有显示在图3),由与该寄存器共同定位的一模型或者与其它不同的模型共享。除此之外,各种缓冲(例如,深度高速缓冲存储器,又称Z-高速缓冲存储器;颜色高速缓冲存储器,又称D-高速缓冲存储器;纹理高速缓冲存储器,又称T-高速缓冲存储器等等)可以根据熟知的管线工艺被实现。尤其,在图3中显示的组件包含一个图形管线208的基本组件,图形管线208整体或者部分与常量缓冲系统200合作。第一组件是输入合成器302,其利用索引缓冲器,主要抓取来自存储器300的所有的顶点数据,并且集合图元以在计算核心204中做进一步的处理。存储器300在其它的子存储器之外还包含本地存储器106,其它的子存储器可以是例如EU池控制单元206的码流和顶点高速缓冲存储器(后者一般被用做为了合成几何图元的顶点数据的来源)。该图元一旦被合成,就会被传送至顶点着色器304。顶点着色器304通过执行例如转换、表面处理(skinning)和亮度(lighting)操作来处理顶点数据。用来执行上述一个或多个计算的常量由常量缓冲系统200中的一个常量缓冲器所提供,由编译器115在编辑期间生成的特殊指令执行预载。这之后,顶点着色器304传送数据至几何着色器306中。几何着色器306接收一个完整图元的顶点作为输入,并输出形成一个单独的拓扑的多个顶点,比如一个三角形的条带、一个线性条带或者一个点列表等等。几何着色器306也该常量缓冲系统200的常量缓冲器中接收常量,并可以被用于进一步的执行各种演算法,比如镶嵌图形、阴影生成等。几何着色器306然后把信息输出至光栅器(rasterizer)308,其用于进行剪裁、图元建立和决定何时及如何激发像素着色器310。像素着色器310被每一个被该图元覆盖的像素所激发。像素着色器310也接收来自于常量缓冲系统200中常量缓冲器的常量,并执行插补和其它操作以共同确定将要输出至存储器300中的回复单元的像素的颜色。如图3所示的各种组件的机能操作通过一系列的状态寄存器进行组织或控制,该状态寄存器用于设定固定图形硬件单元和计算核心204的功能,如下所述。
在描述完毕计算核心204中为执行单元生成任务的组件之后,请参考图4。图4绘示了图形处理器202的实施例的模块图。图4中并未显示用于图形处理的所有组件,但对于一个本领域技术人员来说是足够充分的去理解与图形处理器相关的功能和工艺。在该可编程化处理环境的中心是计算核心204,其处理各种指令,当然也包含常量缓冲系统200。各种类型的着色器程序可以被执行或者映射至计算核心204,包括顶点着色器304,几何着色器306以及像素着色器310。计算核心204,为多重处理器,能够在单一时钟周期内处理多种指令。
如图4所示,与图形处理器202相关的组件包含计算核心204、纹理过滤单元402、像素打包器404、命令码流处理器406、回复单元408、和纹理地址生成器410,还有EU池控制单元206,EU池控制单元206中也包含顶点高速缓冲存储器和码流高速缓冲存储器。如图4所示,纹理过滤单元402提供纹理元素数据至计算核心204(输入A和B)。在一些实施例中,纹理元素数据是512位的数据。像素打包器404提供像素着色器输入至计算核心204(输入C和D),也以512位的数据格式。另外,像素打包器404向EU池控制单元206要求像素着色任务,EU池控制单元206提供像素打包器404的指定的EU编号和线程编号。因为像素打包器和纹理过滤单元均为本领域已知技术,这里略过不做进一步讨论。同时图4显示了像素和纹理元素信息包,该些数据包都是512位的数据信息包,在一些实施例中,根据图形处理器202的表现属性,信息包的尺寸可以变化。
命令码流处理器406提供三角形顶点索引至EU池控制单元206,在图4所示的实施例中,该索引是256位的。EU池控制单元206从码流高速缓冲存储器中合成顶点着色器输入并发送数据至计算核心204(输入E)。EU池控制单元206也合成几何着色器输入和提供这些输入信息至计算核心204(输入F)。一般来说,EU池控制单元206控制计算核心204对应的输入流和输出流。
在处理过程中,计算核心204提供像素着色器输出(输出J1和J2)至回复单元408。像素着色器输出包括颜色信息,例如红/绿/蓝/alpha(RGBA)信息,其为本领域已知技术。该像素着色器输出被提供为两个512位的数据码流。其它宽度位也可以在一些实施例中应用。
与像素着色器输出的方式类似,计算核心204输出包含UVRQ信息的纹理坐标(输出K1和K2)至纹理地址生成器410。纹理地址生成器410发出纹理描述符请求(T#Req)至计算核心204(输入为X)的L2高速缓冲存储器422,该L2高速缓冲存储器422输出(输出W)纹理描述符数据(T#data)至纹理地址生成器410。L2高速缓冲存储器422和EU池控制单元206也互相转移512位的顶点高速缓冲存储器溢出数据。两个512位顶点高速缓冲存储器的书写均是计算核心204的输出(输出M1和M2)至EU池控制单元206做进一步的处理。因为各种关于纹理地址生成器410的例子和回复单元408均为本领域中的已知技术,所以这里不做赘述。同时如同所示的UVRQ和RGBA信息均为512位,但在一些实施例中这个参数也是可以变化的。在图4所示的实施例中,总线是被分为两个512位的通道,每个通道都有128位的RGBA颜色和128位对应这四个像素的UVRQ的纹理坐标。
图形管线208包含固定功能的图形处理。为了响应来自于驱动软件128的命令,例如绘示三角形,顶点信息会被传送至计算核心204的顶点着色器304进行顶点转换。尤其,把物体从物体空间转换至工作空间或者屏幕空间成为若干三角形。这些三角形被从计算核心204传送至在图形管线208中的三角形建立单元(以下简称TSU)412,该图形管线208用于合成图元,也执行已知的任务,例如边界框生成、拣选、边界功能生成等其它已知功能。TSU412传送数据至图形管线208的跨距(span)和像砖(tile)生成器单元,其提供了像砖生成功能,这里的物体被分割成若干像砖(例如,8*8,16*16等)。接着这些像砖被传送至另一个固定功能单元来执行深度处理(例如Z值处理),例如高水平的Z值拒绝,在高水平处理中使用较低水平处理更少的位。基于接收的纹理和管线数据的像素着色器功能性表现,该Z值又被传回至计算核心204的像素着色器310。计算核心204再将处理过的数据传送至图形管线的目的单元。该目的单元用于在多个高速缓冲存储器中的值需要更新之前,执行alpha测试和纸模测试。
计算核心204包含一个执行单元池(execution unit pool,EUP)414,其在一实施例中包含一个或者多个执行单元(以下简称EU)420a至420h(这里共同称为EU420)。每个EU420包含控制逻辑单元和本地存储器,如下所述。而且每个EU420能够在单一的时钟周期内处理多个指令。因此,EU池414,在它的峰值时,可以同时或者基本上同时处理多个线程。虽然在这个实施例同时应用8个EU420,如图4所示(标示为EU0-EU7),在一些其它的实施例中,EU的数量不必限制为8个,可多可少。每个执行单元420包含常量缓冲系统200的一个实施例,以下详述。在一些实施例中,少于全部执行单元420的执行单元可以与常量缓冲系统200合并。进而,在一些实施例中,常量缓冲系统200的组件可以被分配在一个或多个图形处理器202的组件中,包括在EU池控制单元206中的逻辑单元。
L2高速缓冲存储器422从EU池控制单元206接收顶点高速缓冲存储器溢出(输入G),并提供顶点高速缓冲存储器溢出(输出H)至EU池控制单元206。另外,L2高速缓冲存储器422从纹理地址生成器410接收纹理描述符请求T#Req(输入X),并提供纹理描述符数据T#data(输出W)至纹理地址生成器410,以响应接收到的请求。
计算核心204也包含存储器存取单元(MXU)426,其通过存储器界面仲裁器424耦接至L2高速缓冲存储器422。该存储器界面仲裁器424提供控制界面至本地存储器(例如,帧缓冲器和本地存储器106)。BIU118通过,例如PCIE总线,提供界面至图形处理系统。存储器界面仲裁器424和BIU118提供存储器和L2高速缓冲存储器422之间的界面。在一些实施例中,L2高速缓冲存储器422通过存储器存取单元426连接至存储器界面仲裁器424和BIU118。存储器存取单元426将来自L2高速缓冲存储器422和其它模块的虚拟存储器地址转换至物理存储器地址。
存储器界面仲裁器424为L2高速缓冲存储器422提供存储器存取(例如读取或者写入),抓取指令、常量、数据、纹理,引导存储器存取(例如,下载、存储),暂时存储器存取的索引,寄存器溢出,顶点高速高速缓冲存储器内文溢出等。
其它没有显示但是可以被本领域技术人员理解的组件,包含纵横器(crossbars)或者总线,用于输入和输出数据的转移,寄存器,及可供EU420处理的其它组件。
EU池414中的执行单元流通常包含几个等级,一个是渲染内文等级,线程或任务等级,以及一指令或者执行等级。在任意给定时间,在每个执行单元420中会有多个渲染内文,该内文由一个位标记或其它机制所辨识。渲染内文(或者说是渲染内文信息)在属于该内文的任务开始前,从EU池控制单元206被传送。渲染内文信息包含着色类型、输入/输出寄存器的数量、指令开始地址、输出映射表、顶点辨识子,以及对应的常量缓冲器中的常量。EU池414中的每个执行单元420同时存储多个任务或者线程(例如在一些实施例中,32个线程)。在一实施例中,每个线程根据程序计数器抓取一个指令。
EU池控制单元206为任务的整体调度器,并在执行单元420中使用数据驱动方法而分配合适的线程(例如,顶点、像素、几何信息包)。例如,EU池控制单元206分配一个线程至EU池414中对应的执行单元420空线程槽中的一个。来自顶点高速缓冲存储器或者其它组件或模型的数据被放置于普通寄存器缓冲器,在线程执行开始后。
通常而言,图形处理器202的一个实施例利用了可编程顶点着色器304、几何图元着色器306和像素着色器310。相较于将这些组件的功能或者操作分别实现为具有不同设计和指令集的固定功能单元,这些操作可以由包含执行单元420a、420b...420n的EU池414以统一的指令集来执行。这些执行单元420中的每一个为相同的设计而且可编程操作。在一个实施例中,每个执行单元420能够进行同时多线程操作。顶点着色器304,几何着色器306,和像素着色器310产生的多个着色器任务均被传送至分别的执行单元420来执行。
当个别任务产生时,EU池控制单元206处理任务的分配至多个执行单元中的可用的线程。当任务完成时,EU池控制单元206进一步管理相关线程的释放。在这点上,EU池控制单元206负责分配顶点着色器,几何着色器和像素着色器任务至多个执行单元420的线程,而且,执行任务和线程的相关“薄记”(bookkeeping)。尤其,EU池控制单元206为所有的执行单元420维持一个关于线程和存储器的资源表。EU池控制单元206尤其知道哪一个线程已经被分配了任务和被占用,哪一个线程已经在线程终止后被释放,多少个共同登记文档存储寄存器被占用,和对于每个执行单元,有多少个自由空间可用。
除此之外,当一个任务被分配至一个执行单元(例如,420a),EU池控制单元206将会标注该线程为忙碌,以及将可用的普通寄存器文件存储器的总数减去每个线程恰当的寄存器文件足迹(footprint)的总数。该足迹由顶点着色器304、几何着色器306以及像素着色器310的状态所设置和决定。而且,每个着色器阶段都有不同的足迹尺寸。例如,顶点着色器线程可以要求10个普通寄存器文件登记,而像素着色器线程可能只要求5个普通寄存器文件寄存器。
当一个线程完成了它的指定任务,运行该线程的执行单元420发送恰当的信号至EU池控制单元206。EU池控制单元206相对地,更新它的资源列表以标示该线程为自由,并增加总线程普通寄存器文件空间的数量至可用空间。当所有的线程都忙或者所有的普通寄存器文件存储器已经被分配(或者寄存器空间太小以至于不能维持一个额外的线程),则执行单元420被认为已满,EU池控制单元206将不再分配任何额外的或者新的线程至那个执行单元。
在每个执行单元的内部也提供了一线程控制器,该线程控制器负责管理或者标示线程为可用或者不可用。
在描述完图形处理器202的体系后,下面将描述从API空间130至常量缓冲系统200的常量供应,如何由常量缓冲系统200管理用于多个渲染内文的常量。如图5所示,其描述了从API空间130映射常量至常量缓冲系统200可存取的存储器的一个实施例方法200a的模块图。该API空间130包含多个常量模块502a至502n(例如,在一个实施例中是16个),每个模块都包含4000(4k)个常量。在一个实施例中,每个模块502都由一个常量模块数来识别(例如C#0、C#1,等等),包含优先级504,其随着数字的降低而增加(例如,C#0有最高的优先级)。优先级504可被用于决定常量模块将被下载(例如,C#0可以被下载至快速常量通路506)的路径(快速通道506或者是慢速通道508)。
快速通道506实现在计算核心EUs420上(例如,通过EU数据通路EUDP514),并提供快速通道给常量(一个周期的延迟)。快速通道506包含与常量缓冲器510和内文地址转换表格512同时运行多个内文相关的操作。
慢速通道508利用芯片外部存储器(例如,本地存储器106)和L2高速缓冲存储器422来实现,常量通过存储器阶层被下载至寄存器文件。通过慢速通道508存取常量会花费几个周期。
GPU编译器115根据一个或多个规则映射常量至快速通道506和慢速通道508。例如,对于在芯片常量缓冲器510中一拥有足够空间的限制数量的非索引常量,编译器115通过快速通道506映射此种常量。对于可索引常量,编译器115通过慢速通道508映射此常量。对于大量的非索引常量模块,编译器115可以在快速通道506和慢速通道508间分裂路径。
以下是常量缓冲系统200的一个实施例,如图6A-6B所共同绘示。在一个实施例中,常量缓冲系统200包含执行单元数据路径(execution unit datapath,以下简称EUDP)514、常量缓冲控制器602、常量缓冲器510、两个内文地址转换表格512a、512b、一输入界面(crossbar或xbar)604、和EU池控制逻辑单元605。尽管这里绘示了利用两个内文地址转换表格512a,512b显示相应的两个渲染内文,常量缓冲系统200的某些实施例可以有不同数量的内文地址转换表格512,以相应于相同或者不同的渲染内文数量。输入界面604可以被用作一个纵横器或者总线或者本领域技术人员所能想到的等同物。
EUDP514包含算数逻辑单元和其它用于指令解码,操作数读取,分支计算,指令计算,开关/逻辑,下载/存储,及其它处理功能的逻辑单元。常量缓冲器510通过两个端口(例如两个128位的读取端口)耦接至EUDP514并且通过一个端口(例如,512位的写入端口)耦接至输入界面604。常量缓冲系统控制器602耦接至EUDP514,内文地址转换表格512a,5l2b,常量缓冲器510,和输入界面604。
在一个实施例中,常量缓冲器510被分为多个模块(例如,图6B中数据模块606,每个都被标示为常量数据模块0、常量数据模块1,等等)每个模块606包含多个用于存储常量的槽。例如,在一个实施例中,常量缓冲器510可以作为被分为16个模块606的256*128 2R1w缓冲器,每个模块606都包含个128位水平向量常量的槽。在一个实施例中,在常量缓冲510中的“自由”或者可用(例如,可写入)数据槽被分配用于下载新的常量。通常而言,用于处理特定渲染纹理的着色程序所使用的槽比所指定的要少,因此该自由空间可以被用于下载与其它渲染内文相关的新的常量。内文地址转换表格512a,512b被更新为新常量的地址,通过新的内文着色程序(EU池或者着色ID6l4)识别或者索引。换言之,内文地址转换表格512a、512b,维持由着色程序内文识别子所寻址的常量的物理索引。内文地址转换表格512a、512b转换逻辑索引至常量缓冲器510的物理地址。每个渲染内文有它们自己的地址转换表格(例如,第一渲染内文的内文0地址转换表格512a和第二渲染内文的内文1地址转换表格512b),其为常量将逻辑着色器常量空间(例如,API空间13O)映射至常量缓冲器510的物理定位。在一个实施例中,内文地址转换表格512a、512b,包含了一常量缓冲器物理地址的16个条目和四个最大位(MSBs)。任何实际的内文可以利用专门的有效遮蔽标签608在两个或者更多的内文之间分享。
如上所述,常量缓冲器510中的每个模块606中存在多个槽(例如,16个),可以在每个着色器管线阶段(例如,顶点着色器304、几何着色器306、或像素着色器310)被激活。在一个实施例中,对于映射至常量缓冲器510的常量,跨越多个常量缓冲器槽的索引是不被允许的,如果索引范围不超出槽的尺寸,则在槽的内部作索引是可能的。如果给定常量缓冲器槽的数量,可索引常量c#可以作为任意着色器操作的一个操作数,如同着色器中一个可索引的只可读取寄存器。在着色编码中,c#寄存器通常被宣告为语义名字,而且这些在着色器中的名字与在着色器外的常量缓冲器槽的名字相匹配。一个c#寄存器是一个常量缓冲器槽的占位符。在一实施例中,常量缓冲槽可以利用下面的句法在着色器中被存取:
c#[index]以作为着色器指令的操作数 (1)
这里的“index”可以包含暂时寄存器,该暂时寄存器包含一32位无符号的整数,一直接的32位无符号整数常量,例如,在下面的虚拟编码“mov r0,c3[6]”中,该运算包含从常量缓冲器槽3移动元素6至r0。
着色器中的常量缓冲器槽(c#register)的宣告包含以下信息或者处理过程:(a)宣告常量缓冲器510的尺寸(例如,用一个特别的标志标示允许未知长度);(b)着色器指示常量缓冲器510是仅通过字面的偏移量或者着色器所计算的偏移量值被存取;和(c)着色器中c#与其它相关c#的宣告出现的顺序定义常量缓冲器槽的优先级,从最高优先级开始。在一实施例中,超出常量缓冲器510边界的存取会导致返回0值。
分配至常量缓冲槽的优先级可协助硬件最大化的利用任何存在的常量数据存取通道或机制。在一些实施例中,不担保带有高优先级的常量缓冲槽总是比带有低优先级的常量缓冲槽快。例如,依据相关的缓冲器被宣告的性质,一个高优先级的常量缓冲器槽也可能产生相比较于一个较低优先级的常量缓冲器槽较低的表现。例如,在某一实施例中某些任意尺寸的快速常量随机存取存储器(RAM)对于被着色器宣告为高优先级的常量缓冲器槽可能会不够大,但对于被宣称为低优先级的常量缓冲器槽却足够大。类似的实施例可能没有选择只能为大量的、高优先级的常量存储器槽使用标准的纹理或者存储下载通道(可能恰好相反的高速缓冲器的行为),同时将最低优先级的常量缓冲器槽放置在常量随机存取存储器。
在常量缓冲系统200的一个实施例中,每个着色器管线阶段可能下载总共256个常量至常量缓冲器510中。假设每16个模块中有16个槽,常量可以被分割为16组。因此,在从一个内文转移至另一个内文时,可以有两个内文同时运行在一个执行单元420上。在一个实施例中,两个内文的常量总数不超过256个。如果两个内文的常量超过256个(或者无论对于一个给定的常量缓冲器所预设的槽的最大数量),EU池控制逻辑单元605不会下载第二个内文直到在先的一个内文已经完成(根据着色器编码中的指示,编译器115安排EU池控制逻辑单元605硬件以提供必要的下载功能)。请注意在一些实施例中,编译器115不需要知道所有状况,尽管编译器115可能在常量缓冲器510中分配较少的常量给某一个着色器,如果编译器115已经知道了在特定的应用程序中一起运行的着色器的组合。
编译器115宣告哪些常量要预载至常量缓冲器510中。例如,一个宣告可以提供常量缓冲器510中的模块4(常量64-79)使用API空间130的C#10偏移量16-31。此宣告也可以被解释为要求常量64-79是来自C#10常量16-31。在一个实施例中,着色器常量槽(C#)中所有的模块都被基本上同时预载至常量缓冲器510,以确保合适的间接的寻址操作。
在执行单元420开始内文处理之前,EU池控制逻辑单元605根据着色器宣告预载常量缓冲器510。EU池控制逻辑单元605也解析在何处放置来自两个不同内文的常量和下载内文地址转换表格512a、512b。EU池控制逻辑单元605也通过有效屏蔽位608追踪16个常量槽中的哪一个在使用中。在一个实施例中,如果常量缓冲器510不能为一个新的内文完成下载,则EU池控制逻辑单元605将不会开始新的内文直到旧的内文完成为止。
为了在常量缓冲器510中定位一个常量,常量缓冲控制器602使用内文地址转换表格512a、512b。在一个实施例中,当常量缓冲控制器602接收到一个常量索引(例如,一个8位常量索引),常量缓冲控制器602使用该请求线程中的内文ID610(例如,1位)去选择两个16*4位内文地址转换表格512a、512b中的一个,并利用常量索引C#中4个最高位(MSB)去寻找一常量物理缓冲器索引的最上面的4个位,并增加至该常量数字中最低的4个位(LSB)。如果每个指令中的两个读取已被执行,例如,两个常量被用于指令中的两个来源(例如,ADD dst、C#[indexl]、C#[index2])。
如前所述,如果两个内文均可以被供给至常量缓冲器510,则常量缓冲系统200能够使两个或者更多个常量内文同时运行。例如,常量可被在同一个着色器管线阶段的两个连续的内文分享,因此,在不重新载入整个常量缓冲器510的情况下,就可以使得小量的常量改变被更新。在某一执行单元420中,当主要常量内文被完成处理,次要内文被交换至主要的槽,并且EU池控制逻辑单元605开始将下一个可用内文的常量推动更新至已经释放了的次要内文槽内。
于上描述了常量缓冲系统200的各种特征,以下描述相应的常量缓冲系统方法200b,如图7所示。EU池控制逻辑605单元发送一个命令用主要内文的内文地址转换表格(512a、512b)中的地址位来初始化第二内文的内文地址转换表格(512a、512b)(步骤702)。EU池控制逻辑单元605发送更新后的常量和模块索引(步骤704)。常量缓冲控制器602在常量缓冲器510中搜索一个自由(无效)的模块606(步骤706),并将缓冲器地址的4位MSBs填入模块索引所指定的对应的内文地址转换表格512a、512b中的条目(步骤708)。受影响的条目的有效屏蔽位608被更新至常量内文表612中(步骤710)。有效屏蔽位608为一个位代表一个内文,因此,每个常量数据模块606包含2个或者更多的有效屏蔽608位,被置于常量内文表612(包含EU常量存储器队列),并且被当作标签附在每个常量数据模块606上。例如,对于在常量缓冲器510中16个数据模块606,存在一个16*2位的标签。然后,执行单元420准备接收使用新常量内文的任务(步骤712)。
图8绘示了常量内文表612的一个实施例。常量内文表612包含两个条目822和824,每个条目都包含一个1位内文ID 610、一个3位EU池着色器内文ID 614、和一个16位常量缓冲器有效屏蔽位608。该3位EU池着色器内文ID 614确定在EU池414中着色器管线阶段和常量内文。16位有效屏蔽位608指示当前内文中有效的常量模块条目。
当一个新内文在执行单元420中产生,EU池控制逻辑单元605利用常量内文表612发送一个命令来初始化内文地址转换表512a、512b,并且提供次要内文的有效屏蔽位608到常量内文表612的主要内文槽。在更新的常量模块到达执行单元420时,常量缓冲控制器602利用伴随而来的索引去查找内文地址转换表512a、512b中缓冲器地址的4MSBs,并使用该地址去定位在常量内文表612中的有效屏蔽位608并标示为无效。之后,在常量缓冲器510中选择可用的模块槽,以及将该缓冲器地址的4MSBs记录在上述常量索引所指示的内文地址转换表512a、512b中的位置。根据这4各MSBs,当前内文的有效屏蔽位608中的对应位被标示为有效。
图9A-9 B包含EU池控制逻辑单元605所使用或者集成的表。图9A中所示的EUP常量地址表900为位于存储器中的常量模块对应的12位存储地址902,并且EUP常量地址表900为从本地存储器106下至芯片上常量缓冲器510的常量数据载入提供地址,该常量缓冲器510位于计算核心204的EU420。当从命令码流处理器(CSP)406或者像素打包器404接收到一个新的常量更新时,EU池控制逻辑单元605检查相应的着色器阶段的第二内文是否可获得以对常量作更新。
请参考图9B,其绘示了常量参考表910,包含参考计数器904用于内文的着色器程序事件对常数的使用。当一个新的事件被载入至EU420时,此参考计数器904增加,当该着色器事件终止时,此参考计数器904减少。尤其,常量参考表910中的计数器904追踪着色器常量内文等待处理的任务数量。当一个新的任务增加时,常量参考表910中的计数器904增加,当任务完成后,计数器904减少。当计数器904为0时,EU池控制逻辑单元605被告知该内文的所有任务已经完成,并且EU池414被冲刷。当主要常量内文被冲刷出EU池414,次要内文被交换至主要槽,而次要槽可以接收命令码流处理器406或者像素打包器404的下一个更新。当一个任务被安排至执行单元420,此任务相应的着色器常量内文ID610与目标执行单元420现存的内文ID作比对。如果匹配,此任务被发送至该目标执行单元420,否则,一个常量下载程序被触发以预载常量至目标执行单元。
这里描述的流程图表中任何处理描述符或者模块应该理解为范例模型、片段,或编码部分,在这个处理流程中可以包含一个或者更多的为执行特别逻辑功能或步骤的可执行的指令,并且任何可替代的执行也被包含在本发明揭露系统或方法的范围内,也包含依赖于其所具有的功能是本领域技术人员可以理解的实质的并发或者相反的指令。
应该强调,上面提到的实施例仅仅是可能执行中的一些例子。在不脱离本发明原则的基础上,还会有更多的变形和修改。本发明范围内的所有类似的修改和变形将由本发明的权利要求所限定。
Claims (16)
1.一种用于可编程图形处理单元计算核心的常量缓冲的方法,其特征在于包含以下步骤:
响应第一着色器操作,在常量缓冲器中接收第一常量组,该第一常量组相应于第一渲染内文;
响应第二着色器操作,在该常量缓冲器中接收第二常量组,该第二常量组相应于第二渲染内文,而且该第一常量组未被冲刷;以及
更新内文地址转换表格,该内文地址转换表格将该第一着色器操作或者该第二着色器操作的参考值匹配至该常量缓冲器的物理地址,该第一着色器操作或者该第二着色器操作用来执行该第一常量组或该第二常量组中的常量。
2.根据权利要求1所述的一种用于可编程图形处理单元计算核心的常量缓冲的方法,其中该第一着色器操作和该第二着色器操作可以被该计算核心中可执行多线程的一个着色器所执行,或者被多个可执行多线程的着色器分别执行。
3.根据权利要求2所述的一种用于可编程图形处理单元计算核心的常量缓冲的方法,其中接收该第二常量组的同时也包含未停止执行该第一着色器操作的接收。
4.根据权利要求1所述的一种用于可编程图形处理单元计算核心的常量缓冲的方法,其进一步包含,决定是否将该第一常量组和该第二常量组中的常量映射至存储器或缓冲器。
5.根据权利要求4所述的一种用于可编程图形处理单元计算核心的常量缓冲的方法,其中接收该第一常量组和该第二常量组包含响应该决定,选择通过存储器映射、缓冲器映射或者存储器和缓冲器映射的结合来接收。
6.根据权利要求5所述的一种用于可编程图形处理单元计算核心的常量缓冲的方法,其中存储器映射和缓冲器映射进一步包含,对于缓冲器映射,从应用程序界面空间映射该些常量至该常量缓冲器,或者对于存储器映射,从应用程序界面空间映射该些常量至图形处理单元存储器。
7.根据权利要求1所述的一种用于可编程图形处理单元计算核心的常量缓冲的方法,其进一步包含,决定是否该常量缓冲器有足够的空间去接收该第二常量组。
8.根据权利要求7所述的一种用于可编程图形处理单元计算核心的常量缓冲的方法,其中决定该常量缓冲器是否有足够的空间去接收该第二常量组的步骤还包括,决定是否有可用的常量缓冲器模块。
9.根据权利要求1所述的一种用于可编程图形处理单元计算核心的常量缓冲的方法,其进一步包含监视常量使用。
10.根据权利要求9所述的一种用于可编程图形处理单元计算核心的常量缓冲的方法,其中监视常量使用的步骤还包括:产生和维持自由常量缓冲器模块的一个表,该表用于分配该第二常量组。
11.根据权利要求10所述的一种用于可编程图形处理单元计算核心的常量缓冲的方法,其进一步包含为该第二常量组分配该常量缓冲器中的多个槽。
12.一种用于可编程图形处理单元计算核心的常量缓冲的系统,其特征在于包含:
执行单元池控制逻辑单元;
常量缓冲器,该常量缓冲器和该执行单元池控制逻辑单元可以响应第一着色器操作,接收相应于第一渲染内文的第一常量组,和响应第二着色器操作,接收相应于第二渲染内文的第二常量组,而且该第一常量组未被冲刷;以及
常量缓冲控制器和内文地址转换表格,其中该常量缓冲控制器使用该内文地址转换表格将应用程序界面空间中的常量的参考值,匹配至该常量缓冲器中的物理地址,该参考值是由一个或者多个该第一着色器操作和该第二着色器操作所提供的。
13.根据权利要求12所述的用于可编程图形处理单元计算核心的常量缓冲的系统,其中该第一着色器操作和该第二着色器操作经由在该计算核心中可执行多线程的顶点着色器、几何着色器和像素着色器其中的一个被执行,或者分别被其中的两个所执行。
14.根据权利要求12所述的用于可编程图形处理单元计算核心的常量缓冲的系统,其进一步包含编译器,该编译器与该执行单元池控制逻辑单元合作,决定是否将该第一常量组和该第二常量组中的这些常量从应用程序界面空间映射至图形处理单元存储器、该常量缓冲器,或映射至图形处理单元存储器与该常量缓冲器两者的结合。
15.根据权利要求12所述的用于可编程图形处理单元计算核心的常量缓冲的系统,其中该常量缓冲控制器用于检索和分配在该常量缓冲器中的自由模块,使得为该常量缓冲器可以存储该第二常量组的常量,同时保持该常量缓冲器中该第一常量组中的常量。
16.根据权利要求12所述的用于可编程图形处理单元计算核心的常量缓冲的系统,其进一步包含一个常量内文表,该常量内文表包含多个有效屏蔽,其中该执行单元池控制逻辑单元通过使用该有效屏蔽来确定该常量缓冲器中哪些槽处于使用中,其中该常量内文表经由该执行单元池控制逻辑单元被更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100916652A CN101271584B (zh) | 2008-04-11 | 2008-04-11 | 可编程图形处理单元计算核心的常量缓冲的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100916652A CN101271584B (zh) | 2008-04-11 | 2008-04-11 | 可编程图形处理单元计算核心的常量缓冲的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101271584A CN101271584A (zh) | 2008-09-24 |
CN101271584B true CN101271584B (zh) | 2010-11-10 |
Family
ID=40005535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100916652A Active CN101271584B (zh) | 2008-04-11 | 2008-04-11 | 可编程图形处理单元计算核心的常量缓冲的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101271584B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9442780B2 (en) | 2011-07-19 | 2016-09-13 | Qualcomm Incorporated | Synchronization of shader operation |
US10535185B2 (en) | 2012-04-04 | 2020-01-14 | Qualcomm Incorporated | Patched shading in graphics processing |
CN103200128B (zh) * | 2013-04-01 | 2016-12-28 | 华为技术有限公司 | 一种网络包处理的方法、装置和系统 |
CN106569779A (zh) * | 2015-10-12 | 2017-04-19 | 北京京东尚科信息技术有限公司 | 一种防止重复执行的任务执行方法及装置 |
CN105979243A (zh) * | 2015-12-01 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 一种显示立体图像的处理方法和装置 |
US10157443B1 (en) * | 2017-07-28 | 2018-12-18 | Qualcomm Incorporated | Deferred batching of incremental constant loads |
WO2022141484A1 (zh) * | 2020-12-31 | 2022-07-07 | 华为技术有限公司 | Gpu、sppu和任务处理方法 |
CN113345067B (zh) * | 2021-06-25 | 2023-03-31 | 深圳中微电科技有限公司 | 一种统一渲染方法、装置、设备和引擎 |
CN116126252B (zh) * | 2023-04-11 | 2023-08-08 | 南京砺算科技有限公司 | 数据加载方法及图形处理器、计算机可读存储介质 |
-
2008
- 2008-04-11 CN CN2008100916652A patent/CN101271584B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101271584A (zh) | 2008-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101271584B (zh) | 可编程图形处理单元计算核心的常量缓冲的方法和系统 | |
US8120608B2 (en) | Constant buffering for a computational core of a programmable graphics processing unit | |
US11604649B2 (en) | Techniques for efficiently transferring data to a processor | |
CN106504181B (zh) | 用于处理子图元的图形处理方法和系统 | |
US9946666B2 (en) | Coalescing texture access and load/store operations | |
CN105630441B (zh) | 一种基于统一染色技术的gpu系统 | |
CN104246829B (zh) | 图形处理中的拼补着色 | |
CN109978751A (zh) | 多gpu帧渲染 | |
CN103793893B (zh) | 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序 | |
US9202303B2 (en) | System and method for compositing path color in path rendering | |
TWI604410B (zh) | 改善暫存器不足和提升平行處理的即時分析式重新計算技術 | |
CN102648450B (zh) | 用于并行命令列表生成的硬件 | |
US8174534B2 (en) | Shader processing systems and methods | |
CN106504184B (zh) | 用于处理子图元的图形处理方法和系统 | |
JP5053857B2 (ja) | 3次元グラフィックス処理装置および方法 | |
CN109840931A (zh) | 骨骼动画的合批渲染方法、装置、系统及存储介质 | |
CN103886634A (zh) | 利用每像素着色器线程的高效超级采样 | |
CN1512454A (zh) | 用于图形渲染的z-缓冲技术 | |
CN104050705A (zh) | 处置光栅操作中的post-z覆盖数据 | |
CN101236661A (zh) | 在计算机中管理纹理数据的系统与方法 | |
CN103810743A (zh) | 在上游着色器中设置下游渲染状态 | |
CN103810669A (zh) | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 | |
CN104050706A (zh) | 用于低功率图形渲染的像素着色器旁路 | |
CN103886547A (zh) | 用于存储共享顶点的技术 | |
CN103885893A (zh) | 用于访问内容寻址存储器的技术 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |