具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
参见图1,其示出了能够实现本发明实施例技术方案的计算装置100,该计算装置100可以包含但不限于以下各项:无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器、固定或移动媒体播放器等。在图1的实例中,计算装置100可以包括中央处理单元(CPU)102 和经由存储器桥105的互连路径进行通信的系统存储器104。存储器桥105 可以是例如北桥芯片,经由总线或其他通信路径106(例如超传输(HyperTransport)链路)连接到I/O(输入/输出)桥107。I/O 桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108(例如键盘、鼠标、轨迹球、能够作为组成部分并入显示设备110的触摸屏或其他类型的输入装置)接收用户输入并且经由路径106和存储器桥105将所述输入转发到CPU 102。图形处理器(GPU)112经由总线或其他通信路径113(例如PCI Express、加速图形端口或超传输链路)耦合到存储器桥105;在一个实施例中,GPU 112可以是将像素传递到显示设备110(例如传统的基于CRT或LCD 的监视器)的图形子系统。系统盘114 也连接到I/O 桥107。开关116 提供I/O 桥107与诸如网络适配器118 以及各种外插卡120 和121 的其他组件之间的连接。其他组件(未明确示出),包括USB 或其他端口连接、CD 驱动器、DVD 驱动器、胶片录制设备及类似组件,也可以连接到I/O 桥107。使图1 中各种组件互连的通信路径可以使用任何适合的协议实现,诸如PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、超传输或者任何其他总线或点到点通信协议,并且不同设备间的连接可使用本领域已知的不同协议。
在一个实施例中,GPU 112 包含经优化用于图形和视频处理的电路,包括例如视频输出电路。在另一个实施例中,GPU 112 包含经优化用于通用处理的电路,同时保留底层(underlying)的计算架构。在又一个实施例中,可以将GPU 112 与一个或多个其他系统元件集成起来,诸如存储器桥105、CPU 102 以及I/O 桥107,以形成片上系统(SoC)。
应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数量和布置、CPU 102 的数量以及GPU 112 的数量,可根据需要修改。例如,在一些实施例中,系统存储器104 直接连接到CPU 102 而不是通过桥,并且其他设备经由存储器桥105 和CPU 102 与系统存储器104 通信。在其他替代性拓扑中,GPU 112 连接到I/O 桥107 或直接连接到CPU 102,而不是连接到存储器桥105。而在其他实施例中,I/O 桥107 和存储器桥105 可能被集成到单个芯片上。大量实施例可以包括两个或两个以上的CPU 102以及两个或两个以上的GPU 112。本文所示的特定组件是可选的;例如,任意数量的外插卡或外围设备都可能得到支持。在一些实施例中,开关116被去掉,网络适配器118 和外插卡120、121 直接连接到I/O 桥107。
基于图1所示的计算装置100,图2示出了可实现本发明实施例一个或多个技术方案的一种GPU 112示意框图,在本发明实施例中,图形存储器204可为GPU 112的一部分。因此,GPU 112可在不使用总线的情况下从图形存储器204读取数据且将数据写入到图形存储器204。换句话说,GPU 112可使用本地存储装置而不是芯片外存储器在本地处理数据。此类图形存储器204可被称作芯片上存储器。这允许GPU 112通过消除GPU 112经由总线读取和写入数据的需要来以更高效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU 112可不包含单独的存储器,而是经由总线利用系统存储器10。图形存储器204可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
基于此,GPU 112可以经配置以执行与下述相关的各种操作:经由存储器桥105和通信路径113从CPU 102 和/ 或系统存储器104 所提供的图形数据生成像素数据,与本地图形存储器204(例如常用帧缓冲区(buffer))交互以存储和更新像素数据,传递像素数据到显示设备110 等等。
在操作中,CPU 102 是计算装置100 的主处理器,控制和协调其他系统组件的操作。具体地,CPU 102 发出控制GPU 112的操作的命令。在一些实施例中,CPU 102 为GPU112写入命令流到数据结构中(在图1或图2中未明确示出),所述数据结构可位于系统存储器104、图形存储器204、或CPU 102 和GPU 112都可访问的其他存储位置中。将指向每个数据结构的指针写到入栈缓冲区(pushbuffer)以启动对数据结构中的命令流的处理。GPU112从一个或多个入栈缓冲区读取命令流,然后相对于CPU 102 的操作异步地执行命令。可以为每个入栈缓冲区指定执行优先权以控制对不同入栈缓冲区的调度。
具体如图2中所述,GPU 112包括经由连接到存储器桥105(或者,在一个替代性实施例中,直接连接到CPU 102)的通信路径113与计算装置100的其余部分通信的I/O(输入/输出)单元205。GPU 112到计算装置100的其余部分的连接也可以变化。在一些实施例中,GPU 112可作为外插卡来实现,所述外插卡可被插入到计算机系统100 的扩展槽中。在其他实施例中,GPU 112可以和诸如存储器桥105 或I/O 桥107 的总线桥一起集成在单个芯片上。而在其他实施例中,GPU 112的一些或所有元件可和CPU 102一起集成在单个芯片上。
在一个实施例中,通信路径113 可以是PCI-EXPRESS 链路,如本领域所知的,在PCI-EXPRESS 链路中专用通道被分配到GPU 112。I/O 单元205 生成用于在通信路径113上传输的数据包(或其他信号),并且还从通信路径113 接收所有传入的数据包(或其他信号),将传入的数据包引导到GPU 112的适当组件。例如,可将与处理任务有关的命令引导到调度器207,而可将与存储器操作有关的命令(例如,对图形存储器204的读取或写入)引导到图形存储器204。
在GPU 112中,可以包括渲染核阵列230,该阵列230可以包括C 个通用的渲染核208,其中C>1;以及D个固定功能渲染核209,可以理解地,图2中的括号内的数字表示通用渲染核208或固定功能渲染核209的标号。基于阵列230中的通用渲染核208,GPU 112能够并发执行大量的程序任务或计算任务。举例来说,每个渲染核均可被编程以能够执行与种类繁多的程序相关的处理任务,包括但不限于,线性与非线性数据变换,视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图形渲染操作(例如,曲面细分着色器、顶点着色器、几何着色器、和/或片元着色器程序)等等。
而固定功能渲染核209,其可包含经硬连线以执行某些功能的硬件。尽管固定功能硬件可经由例如一或多个控制信号而配置以执行不同功能,但所述固定功能硬件通常并不包含能够接收用户编译程序的程序存储器。在一些实例中,固定功能渲染核209可包含例如执行图元装配的处理单元、执行裁剪和划分操作的处理单元、执行光栅化操作的处理单元和执行片段操作的处理单元。对于执行图元装配的处理单元来说,其能够将通过顶点着色器单元已完成着色的顶点按照原始连接关系还原出图形的网格结构,即图元,从而供后续片元着色器单元进行处理;所述裁剪和划分操作则包括对装配完成的图元进行裁剪剔除后,按照tile的大小进行划分;所述光栅化操作包括转换图元并将片段输出至片元着色器;而片段操作则包括例如深度测试、剪刀测试、α掺合等,经过上述操作所输出的像素数据可以作为图形数据通过显示设备110进行显示。综合上述渲染核阵列230中的通用渲染核208以及固定功能渲染核209,能够实现一个完整的图形渲染管线的逻辑模型。
此外,渲染核阵列230可以从调度器207接收将要执行的处理任务。调度器207可独立地调度所述任务由GPU 112的资源(比如渲染核阵列230中的一或多个通用渲染核208,固定功能渲染核209)执行。在一个实例中,调度器207可以是硬件处理器。在图2中所示出的实例中,调度器207可包含于GPU 112中。在其它实例中,调度器207还可以是与CPU 102和GPU112分离的单元。调度器207还可被配置成接收命令和/或操作的流的任何处理器。
调度器207可处理一或多个命令流,其包含调度操作,所述调度操作包含于由GPU112执行的一或多个命令流中。具体地说,调度器207可处理一或多个命令流,且调度所述一或多个命令流中的操作,以由渲染核阵列230执行。在操作中,CPU 102藉由图1中系统存储器104所包括的GPU驱动程序103可向调度器207发送包括待由GPU 112执行的一系列操作的命令流。调度器207可通过I/O单元205接收包括命令流的操作流且可基于命令流中的操作次序依序地处理命令流的操作,且可调度命令流中的操作可以由渲染核阵列230中的一或多个渲染核执行。
并且,tile缓存232是与GPU 112一起位于芯片上的少量的极高带宽存储器。然而,tile缓存232的大小太小而无法保持整个图形数据,因此渲染核阵列230必须执行多个渲染回合以再现整个图形数据。举例来说,渲染核阵列230可针对一帧图像的每一tile执行一个渲染回合。具体来说,tile缓存232可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)等。在一些实例中,tile缓存232可为芯片上缓冲器。芯片上缓冲器可指代形成于、定位于和/或安置于与上面形成、定位和/或安置GPU 112的微芯片、集成电路和/或裸片相同的微芯片、集成电路和/或裸片上的缓冲器。此外,当tile缓存232实施在与GPU 112相同的芯片上时,GPU 112未必需要经由通信路径113存取tile缓存232,而是可经由在与GPU 112相同的芯片上实施的内部通信接口(例如,总线)存取tile缓存232。因为此接口在芯片上,所以其可能够以比通信路径113高的带宽操作。由此可知,尽管tile缓存232的存储容量有限且增加了硬件上的开销,只能用来缓存一个或几个小矩形的数据,但是避免了反复访问显存的开销,减少了带宽,节省了功耗。
基于上述图1及图2的描述,图3示出了以图2所示的GPU 112的结构所形成的图形渲染管线80的示例,需要说明的是,图形渲染管线80的核心部分是利用渲染核阵列230中所包括的通用渲染核208以及固定功能渲染核209通过级联形成的逻辑结构,此外,对于GPU112中所包括的调度器207、图形存储器204、tile缓存232以及I/O单元205,均为实现该图形渲染管线80这一逻辑结构功能的外围电路或装置,相应来说,图形渲染管线80通常包含可编程级模块(如图3中圆角框示意)和固定功能级模块(如图3中方框示意),举例来说,可编程级模块的功能可由渲染核阵列230中所包括的通用渲染核208来执行,固定功能级模块的功能可由渲染核阵列230中所包括的固定功能渲染核209实现。如图3所示,图形渲染管线80所包括的各级依次为:
顶点抓取模块82,在图3的实例中展示为固定功能级且通常负责将图形数据(三角形、线和点)供应到图形渲染管线80。举例来说,顶点抓取模块82可收集高阶表面、图元等的顶点数据,且将顶点数据和属性输出到顶点着色器模块84。
顶点着色器模块84,在图3中展示为可编程级,且负责处理所接收顶点数据和属性,并通过每次针对每个顶点实施一组操作来处理顶点数据。
图元装配模块86,在图3中展示为固定功能级,负责收集顶点着色器模块84输出的顶点并将所述顶点组成几何图元。例如,图元装配模块86可以配置为将每三个连续的顶点组成为几何图元(即三角形)。在一些实施例中,特定的顶点可以被重复用于连续的几何图元(例如,三角形带中的两个连续的三角形可以共享两个顶点)。
裁剪和划分模块88,在图3中展示为固定功能级,负责对装配完成的图元进行裁剪剔除后,按照tile的大小进行划分;
光栅化模块90通常为负责准备片元着色器模块92的图元的固定功能级。举例来说,光栅化模块90可产生若干碎片以供片元着色器模块92进行阴影处理。
片元着色器模块92,在图3中展示为可编程级从光栅化模块90接收碎片且产生例如颜色等每像素数据。片元着色器模块92还可执行例如纹理混合和照明模型计算等每像素处理。
输出合并器模块94,在图3中展示为固定功能级,通常负责对像素数据实施多种操作,例如实施透明测试(alpha test)、模板测试(stencil test)、以及将像素数据与对应于与该像素相关的其他片段的其他像素数据混合。当输出合并器模块94已经完成处理像素数据(即输出数据)时,可以将处理完成的像素数据写入到渲染目标,以产生最终结果。
对于常规的TBR方案来说,通常会将屏幕区域分成多个等大的tile,对于一帧图像来说,在图元装配阶段结束后,GPU 112根据图元的大小计算出屏幕中哪些tile被该图元覆盖,并为每个tile建立一个图元列表,一旦该tile被图元覆盖,则tile的图元列表中就更新相应的图元信息,直到收集完所有的图元为止。在收集完毕后续的光栅化等阶段,GPU 112会遍历每一块tile的图元列表(例如,一个tile可能会被多个图元所覆盖),每渲染完一个图元列表里的图元,tile的数据被写入片上缓存。直到列表里所有的图元处理结束后,该tile的最终数据才被写入显存中。具体来说,结合图3所示的图形渲染管线80,上述常规的TBR方案会包括以下步骤:1、顶点着色器模块84对顶点执行顶点着色程序;2、图元装配模块86执行图元装配,而且裁剪和划分模块88执行裁剪、划分tile的操作;3、重复第二个步骤直到所有的图元都划分完tile;4、遍历每一个tile,通过光栅化模块90对每个tile图元列表中的每一个图元执行光栅化raster操作;5、片元着色器模块92对每个tile中的每个图元的像素执行片元着色程序;6、输出合并器模块94对每个图元的像素执行深度测试、混合等操作;7、每个图元执行结束后,写回片上存储,并当一个tile中所有图元都处理完后写回系统存储器104。
在上述常规TBR方案的描述中,特别是针对执行步骤5的过程中,可以发现:每个tile均对应一个通用渲染核208以针对该tile内每个图元的像素执行片元着色程序,由此可知,每个tile对应的图元列表的大小决定了相应通用渲染核208执行片元着色程序的工作量的大小。但是,各tile对应的图元列表大小之间差别很大,具体来说,在很多渲染场景中,屏幕中心附近的tile对应的图元列表比屏幕其他靠近边缘部分的tile对应的图元列表要更大,如此就会造成在这类情况下,某些通用渲染核208的工作量较大而处于忙碌状态,而某些通用渲染核208因为工作量较小而处于空闲状态,从而导致各通用渲染核208之间的工作量不均衡,降低了渲染效率。举例来说,如图4所示,设定渲染场景覆盖了4个tile,分别标记为T0、T1、T2和T3;图元一共为8个,分别标记为图元0、图元1、图元2、……、图元7;每个tile对应的图元列表为:T0覆盖了图元0和图元1;T1覆盖了图元1、图元2和图元3;T2覆盖了图元2、图元3、图元4、图元5、图元6和图元7;T3覆盖了图元1和图元2;继续设定通用渲染核208的数目为8个,分别标记为208(0)、208(1)、208(2)、208(3)、……、208(7)。基于以上设定,按照常规TBR方案,每个通用渲染核208均对应一个tile内每个图元的像素执行片元着色程序,那么可以获知:如图4中箭头所示,T0对应208(0)、T1对应208(1)、T2对应208(2)、T3对应208(3),在执行片元着色程序的过程中,通用渲染核208(0)至208(3)均将处于忙碌状态,图4中用“忙”表示。进一步地,通用渲染核208(4)至208(7)由于均没有对应的tile,因此在执行片元着色程序的过程中这些通用渲染核208将处于空闲状态,图4中用“闲”表示。此外,由于T2对应的图元列表最多,因此,即便通用渲染核208(0)至208(3)均将处于忙碌状态,那么通用渲染核208(2)处于忙碌状态的时长也将明显大于其他tile对应的通用渲染核208处于忙碌状态的时长。由此可知,在常规TBR方案中,各通用渲染核208之间的任务工作量不均衡,造成了硬件资源的浪费。
基于此,本发明实施例的技术方案期望能够提供一种提高渲染效率的技术,在采用TBR方案进行渲染的过程中,实现渲染核的负载均衡,提升渲染效率。举例来说,不再以tile为基本单位向各通用渲染核208调度片元着色任务,而是将以各tile中的图元为基本单元向各通用渲染核208调度片元着色任务,从而保证各通用渲染核208之间的任务工作量均衡,提高了渲染核的效率及利用率。
在一些示例中,调度器207,经配置为按照设定的访问顺序依次访问待执行片元着色的瓦片tile对应的图元列表;以及,遍历当前被访问的tile对应的图元列表中的所有图元,并将每个被遍历到的图元对应轮询地分配至当前空闲的通用渲染核以执行片元着色任务;通用渲染核208,经配置为基于调度器207所对应分配的图元执行片元着色任务。
具体来说,沿用图4中所描述的设定,上述示例所阐述的技术方案在实施过程中如图5所示。在一些可选实例中,调度器207可以按照tile的标号顺序依次访问待执行片元着色的tile,比如按照T0、T1、T2以及T3的顺序访问各tile所对应的图元列表。在一些可选实例中,也可以按照待执行片元着色的tile的重要程度依次访问待执行片元着色的tile;对于重要程度而言,可以认为图元列表越大的tile相应的重要性程度越高,于是可以将tile对应的图元列表大小作为关于重要程度的一个优选衡量指标;或者,可以认为越接近屏幕中心的tile相应的重要性程度越高,于是可以优选将tile中心与屏幕中心的距离值作为关于重要程度的另一个优选衡量指标;当然,也可以按照具体应用环境的需求设定多种关于重要程度的衡量指标,本发明实施例不做赘述。为了能够简要的阐述技术方案,本发明实施例仅以tile的标号顺序作为访问顺序进行示例性说明。当访问T0的图元列表时,遍历T0的图元列表的所有图元,即图元0和图元1,此时,调度器207可以将T0图元列表中的图元0分配至通用渲染核208(0),将T0图元列表中的图元1分配至通用渲染核208(1)。T0的图元列表访问完毕之后,接着访问T1的图元列表,并遍历T1的图元列表中的所有图元,即图元1至图元3,此时,调度器207可以将T1图元列表中的图元1分配至通用渲染核208(2),将T1图元列表中的图元2分配至通用渲染核208(3),将T1图元列表中的图元3分配至通用渲染核208(4)。访问完成T1的图元列表之后,接着访问T2的图元列表,并遍历T1的图元列表中的所有图元,即图元2至图元7,此时,调度器207可以将T2图元列表中的图元2分配至通用渲染核208(5),将T2图元列表中的图元3分配至通用渲染核208(6),将T2图元列表中的图元4分配至通用渲染核208(7);至此,用于执行片元着色任务的通用渲染核已分配完毕,如图5所示,所有的通用渲染核均处于“忙”状态。相较于常规方案中依照tile分配通用渲染核执行片元着色任务的方案,本发明实施例所阐述的技术方案能够充分利用通用渲染核,提高了通用渲染核的效率及利用率。
继续参见图5所示,由于所有的通用渲染核均处于忙碌状态,在一些示例中,相应于所有执行片元着色任务的通用渲染核208均处于忙碌状态,所述调度器207,还经配置为暂停向所述通用渲染核208分配图元以执行片元着色任务;以及,相应于检测到通用渲染核208的工作状态重新转换为空闲状态,基于所述访问顺序以及遍历顺序将尚未分配的图元分配至重新转换为空闲状态的通用渲染核208。举例来说,仍然沿用图5所示,调度器207检测到所有通用渲染核208均处于忙碌状态之后,调度器207暂停向通用渲染核208分配图元以执行片元着色任务;而此时,当前调度器207正访问T2的图元列表且准备遍历至图元5,由此可知,调度器207暂停分配图元时,T2的图元列表中尚有图元5至图元7未分配,并且T3的图元列表也尚未访问。那么可以在调度器207内设置一中断缓存,从而在暂停分配图元时记录中断信息,比如,调度器207在暂停时正访问图元列表所对应的tile标识以及准备遍历的图元标识,例如T2的图元列表中的图元5。当处于忙碌状态的通用渲染核208中的任一个由于执行完毕针对图元对应分配的片元着色任务之后转化为空闲状态后,调度器207可以通过读取缓存中的暂停信息,基于所述访问顺序以及遍历顺序将尚未分配的图元轮询地分配至重新转换为空闲状态的通用渲染核208;比如,如图5中所示的通用渲染核208(3)在完成针对T1图元列表中的图元2的片元着色任务转为空闲状态后,调度器207可以从中断缓存中读取中断信息,例如T2的图元列表中的图元5,于是,调度器207基于其读取到的中断信息将T2的图元列表中的图元5分配至重新转为空闲状态的通用渲染核208(3);进一步来说,若重新转为空闲状态的通用渲染核208数量较多,则调度器207可以从T2的图元列表中的图元5开始,按照访问顺序以及遍历顺序轮询地将尚未分配的图元分配至这些重新转为空闲状态的通用渲染核208,本发明实施例对此不做赘述。
需要说明的是,由于常规方案中每个通用渲染核仅针对单个tile的图元列表进行片元着色处理,因此,tile缓存232的数目可以与用于执行片元着色任务的通用渲染核208的数目一致,并且每个通用渲染核各自独享一个tile缓存232。但是,当采用上述图元分配的渲染任务调度方案之后,由于每个通用渲染核不再对应处理单个tile的图元列表中的图元,而是通过轮询的方式实现多个通用渲染核同时处理单个tile的图元列表中的图元。基于此,在一些示例中,所述tile缓存232的数目可以设置为一个,从而使得所有用于执行片元着色任务的通用渲染核208共享一个tile缓存232,此外,被共享的tile缓存232的大小可以是常规方案中所有对应通用渲染核的tile缓存大小之总和。
基于上述示例,由于各通用渲染核不再独享tile缓存,而是所有通用渲染核共享一个tile缓存,为了保证图元在执行片元着色任务前后的顺序一致,在一些示例中,调度器207可以在向通用渲染核208分配图元时,对被分配图元进行标记,并且向通用渲染核208传输被分配图元的标记信息;可以理解地,该标记信息可以标志被分配图元的标识以及被分配图元所处图元列表所对应的tile标识。相应地,通用渲染核208在完成针对被分配图元的片元着色任务之后,向tile缓存输出该被分配图元对应的渲染结果的同时,还将该被分配图元的标记信息对应记录在在所述tile缓存内该被分配图元对应的渲染结果中,从而实现了图元的重新排序,保证了图元的顺序。
基于前述技术方案相同的发明构思,参见图6,其示出了本发明实施例提供的一种基于图元的渲染任务调度的方法,该方法可以应用于前述图2或图3所示的GPU 112中,所述方法可以包括:
S601:通过调度器207按照设定的访问顺序依次访问待执行片元着色的瓦片tile对应的图元列表;
S602:通过调度器207遍历当前被访问的tile对应的图元列表中的所有图元,并将每个被遍历到的图元对应轮询地分配至当前空闲的通用渲染核以执行片元着色任务;
S603:通过通用渲染核208基于调度器207所对应分配的图元执行片元着色任务。
在一些示例中,步骤S601所述的通过调度器207按照设定的访问顺序依次访问待执行片元着色的瓦片tile对应的图元列表,可以包括:调度器207按照tile的标号顺序依次访问待执行片元着色的tile;或者,调度器207按照待执行片元着色的tile的重要程度依次访问待执行片元着色的tile。对于重要程度而言,可以认为图元列表越大的tile相应的重要性程度越高,于是可以将tile对应的图元列表大小作为关于重要程度的一个优选衡量指标;或者,可以认为越接近屏幕中心的tile相应的重要性程度越高,于是可以优选将tile中心与屏幕中心的距离值作为关于重要程度的另一个优选衡量指标;当然,也可以按照具体应用环境的需求设定多种关于重要程度的衡量指标,本发明实施例不做赘述。
在一些示例中,相应于所有执行片元着色任务的通用渲染核208均处于忙碌状态,所述方法还包括:
通过调度器207暂停向所述通用渲染核208分配图元以执行片元着色任务;
相应于检测到通用渲染核208的工作状态重新转换为空闲状态,通过调度器207基于所述访问顺序以及遍历顺序将尚未分配的图元分配至重新转换为空闲状态的通用渲染核208。
在一些示例中,tile缓存232的数目可以设置为一个,且所有用于执行片元着色任务的通用渲染核208共享该tile缓存232。
基于上述示例,所述方法还包括:调度器207在向通用渲染核208分配图元时,对被分配图元进行标记,并且向通用渲染核208传输被分配图元的标记信息;相应来说,用渲染核208在完成针对被分配图元的片元着色任务之后,向tile缓存输出该被分配图元对应的渲染结果的同时,还将该被分配图元的标记信息对应记录在在所述tile缓存内该被分配图元对应的渲染结果中,从而实现了图元的重新排序,保证了图元的顺序。
在上述一或多个实例或示例中,所描述的功能可实施于,所描述功能可实施于硬件、软件、固件或其任何组合中。如果实施于软件中,那么可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输。计算机可读媒体可包含计算机数据存储媒体或通信媒体,通信媒体包含促进将计算机程序从一处传递到另一处的任何媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。举例来说且非限制,此类计算机可读媒体可包括U盘、移动硬盘、RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于运载或存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,那么同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波等无线技术包含于媒体的定义中。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
代码可由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。因此,如本文中所使用的术语“处理器”和“处理单元”可指前述结构或适于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可在经配置用于编码和解码的专用硬件和/或软件模块内提供,或者并入在组合式编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
本发明实施例的技术可实施于各种各样的装置或设备中,所述装置或设备包含无线手持机、集成电路(IC)或一组IC(即,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所公开的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已描述了本发明的各种方面。这些和其它实施例在所附权利要求书的范围内。需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。