CN115908102A - 图形处理方法及系统 - Google Patents
图形处理方法及系统 Download PDFInfo
- Publication number
- CN115908102A CN115908102A CN202211275710.6A CN202211275710A CN115908102A CN 115908102 A CN115908102 A CN 115908102A CN 202211275710 A CN202211275710 A CN 202211275710A CN 115908102 A CN115908102 A CN 115908102A
- Authority
- CN
- China
- Prior art keywords
- kernel
- primitive
- module
- display list
- processing
- 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
Links
Images
Classifications
-
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种图形处理方法及系统。该系统包括多个内核,多个内核中有一个为主模式内核,其余为从模式内核;主模式内核用于根据输入的几何数据构造图元,并将构造的图元划分为图元内核组分配至主模式内核和从模式内核;主模式内核和从模式内核用于对分配的图元内核组进行处理,得到渲染的图像。本发明具有强大的数据并行处理能力,能够处理大量的几何数据,且充分考虑了硬件的实际工作状态,具有优异的性能。
Description
技术领域
本发明属于图像处理技术领域,更具体地,涉及一种图形处理方法及系统。
背景技术
计算机图形处理系统用于处理各种计算机图形应用(例如计算机游戏)的图形数据(包括图元数据和顶点数据),输出通过渲染管道产生的渲染图像。
图形应用程序中的三维模型是使用图元(primitives)(例如包括但不限于三角形、线、点)对场景中物体的剖分建立的,这些图元由顶点为其在三维空间中的位置以及光线效果和着色特性定义。三维模型中图元和顶点的几何数据作为渲染过程中几何处理阶段(geometry processing)的输入数据流,被发送到计算机图形处理系统,对输入图元做几何处理,包括将图元转换到屏幕空间,并删除屏幕空间中不可见的图元。经过几何处理后,图元和顶点的几何数据被发送到片段处理管道(fragment processing pipeline),以便在计算机图形处理系统中进行渲染。作为渲染处理的结果,计算机图形处理系统生成3D模型的输出图像,并在显示单元(例如显示屏幕)上进行显示。
现有的计算机图形处理系统包括基于图块(tile-based)的分块渲染模式。在分块渲染模式下,屏幕被划分为多个矩形图块,图元经过几何处理后在屏幕上被分类至不同图块,然后在屏幕上的每个图块中分别进行片段处理。现有的多核分块渲染计算机图形处理系统技术中,仅在片段处理阶段对分块后的多个图块同时在多核中进行并行的分块处理,对系统性能的提升程度有限。而随着图形处理内容的复杂程度不断增加,有必要对计算机图形系统的性能进行进一步提升。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种图形处理方法及系统,具有强大的数据并行处理能力,能够处理大量的几何数据,且充分考虑了硬件的实际工作状态,具有优异的性能。
为实现上述目的,按照本发明的一个方面,提供了一种图形处理系统,包括多个内核,多个内核中有一个为主模式内核,其余为从模式内核;主模式内核用于根据输入的几何数据构造图元,并将构造的图元划分为图元内核组分配至主模式内核和从模式内核;主模式内核和从模式内核用于对分配的图元内核组进行处理,得到渲染的图像。
在一些实施方式中,每个内核均包括几何处理系统和片段处理系统;主模式内核的几何处理系统和从模式内核的几何处理系统分别用于对分配的图元内核组进行处理,生成图块的分块显示列表;对每个图块,主模式内核的片段处理系统和从模式内核的片段处理系统用于将主模式内核的几何处理系统和从模式内核的几何处理系统生成的分块显示列表合并为一个分块显示列表,以及根据合并后的分块显示列表,对图块进行渲染,得到渲染的图像。
在一些实施方式中,上述多个内核的数量为n,存在图块具有n个分块显示列表,所述n个分块显示列表分别由n个内核的几何处理系统生成。
在一些实施方式中,上述多个内核的数量为n,存在图块具有数量小于n的分块显示列表,所述数量小于n的分块显示列表分别由n个内核中的一部分内核的几何处理系统生成。
在一些实施方式中,每个内核的几何处理系统均包括输入汇编模块、几何处理管道和分块模块;主模式内核的输入汇编模块用于根据输入的几何数据构造图元,并将构造的图元划分为图元内核组分配至主模式内核的输入汇编模块和从模式内核的输入汇编模块;主模式内核的输入汇编模块和从模式内核的输入汇编模块分别用于将分配的图元内核组发送至主模式内核的几何处理管道和从模式内核的几何处理管道;主模式内核的几何处理管道和从模式内核的几何处理管道分别用于对分配的图元内核组进行处理,使图元内核组的所有图元都位于屏幕视觉空间中;主模式内核的分块模块和从模式内核的分块模块分别用于将来自主模式内核的几何处理管道和从模式内核的几何处理管道的图元内核组分块到屏幕视觉空间的多个图块,并为每个图块生成分块显示列表。
在一些实施方式中,每个内核的输入汇编模块均包括数据处理模块、图元数据流管理器和数据分配模块;每个内核的图元数据流管理器均包括前端模块和后端模块;主模式内核的数据处理模块用于根据输入的几何数据构造图元,形成图元数据流;主模式内核的前端模块用于将图元数据流划分为图元内核组,分配至主模式内核的后端模块以及从模式内核的后端模块;主模式内核的数据分配模块用于将从主模式内核的后端模块获取的图元内核组发送至主模式内核的几何处理管道;从模式内核的数据分配模块用于将从从模式内核的后端模块获取的图元内核组发送至从模式内核的几何处理管道;从模式内核的数据处理模块和前端模块处于非激活状态。
在一些实施方式中,在划分图元内核组时,当前图元内核组中的图元数量达到预设的内核组图元限制时,或者内核组图元限制的值发生变化时,或者当前图元内核组中的几何任务数量达到预设的内核组几何任务限制时,或者内核组几何任务限制的值发生变化时,关闭当前图元内核组,启用一个新的图元内核组。
在一些实施方式中,划分的图元内核组被按顺序发送到多个内核中的每个内核;或者,划分的图元内核组被发送到多个内核中的组合权重因子最大的内核,其中,组合权重因子综合考虑内核的几何处理管道的输入和输出能力。
在一些实施方式中,第j个内核的组合权重因子Wj=kjin*Wjin+kjout*Wjout,其中,Wjin表示第j个内核的来自几何处理管道的顶点输入能力的权重因子,Wjout表示第j个内核的来自几何处理管道的顶点输出能力的权重因子,Kjin和kjout分别表示Wjin和Wjout的预设系数。
在一些实施方式中,其中,Sini表示第i个几何处理管道接受新的输入几何数据的能力,Souti表示第i个几何处理管道在几何转换和其他管道阶段接受输出的几何数据的能力,m为第j个内核具有的几何处理管道的数量。
在一些实施方式中,主模式内核的输入汇编模块还用于为划分的每个图元内核组添加内核组索引,分块显示列表包含内核组索引。
在一些实施方式中,每个内核的几何处理管道均包括几何转换模块、剪裁和剔除模块以及数据接收模块;主模式内核的几何转换模块和从模式内核的几何转换模块分别用于对分配的图元内核组进行处理,将图元的顶点数据转换到屏幕视觉空间;主模式内核的裁剪和剔除模块和从模式内核的裁剪和剔除模块分别用于删除在屏幕视觉空间中不可见的图元,更新图元内核组;主模式内核的数据接收模块和从模式内核的数据接收模块分别用于接收和存储更新的图元内核组以及转换后的图元数据和顶点数据。
在一些实施方式中,每个内核的片段处理系统均包括分块处理模块;主模式内核的分块处理模块和从模式内核的分块处理模块用于获取主模式内核的分块显示列表和从模式内核的分块显示列表,根据获取的分块显示列表中的内核组索引,按原始分配的顺序,将读取的分块显示列表合并为一个分块显示列表;主模式内核的片段处理系统和从模式内核的片段处理系统根据合并后的分块显示列表,对图块进行渲染,得到渲染的图像。
在一些实施方式中,内核组索引用于将构造的图元数据流划分为图元内核组,且内核组索引以整数递增;主模式内核的分块处理模块和从模式内核的分块处理模块用于持续跟踪所有分块显示列表中的内核组索引,首先将具有最低内核组索引值的分块显示列表作为当前分块显示列表,处理当前分块显示列表,直至当前分块显示列表的下一个分块显示列表条目是分块显示列表中的新的内核组索引条目或终止条目;在当前分块显示列表中出现新的内核组索引条目时,主模式内核的分块处理模块和从模式内核的分块处理模块将再次比较所有分块显示列表中的内核组索引的值,将具有最低内核组索引值的分块显示列表作为当前分块显示列表,处理当前分块显示列表,直至当前分块显示列表的下一个分块显示列表条目是分块显示列表中的新的内核组索引条目或终止条目;在当前分块显示列表中出现终止条目时,主模式内核的分块处理模块和从模式内核的分块处理模块将再次比较剩余其他分块显示列表中内核组索引的值,将具有最低内核组索引值的分块显示列表作为当前分块显示列表,处理当前分块显示列表,直至当前分块显示列表的下一个分块显示列表条目是分块显示列表中的新的内核组索引条目或终止条目。
在一些实施方式中,每个内核的片段处理系统还均包括光栅化模块、隐藏面移除模块、像素着色模块和后处理模块;主模式内核的光栅化模块和从模式内核的光栅化模块用于将合并后的分块显示列表中引用的图元光栅化为可见像素;主模式内核的隐藏面移除模块和从模式内核的隐藏面移除模块分别用于将所在内核的光栅化模块输出的图元像素的深度值与之前图元像素的深度值进行深度测试,在所在内核的光栅化模块输出的图元像素被之前图元像素遮挡时,将所在内核的光栅化模块输出的图元像素移除,否则将所在内核的光栅化模块输出的图元像素发送至所在内核的像素着色模块;主模式内核的像素着色模块和从模式内核的像素着色模块分别用于将所在内核的隐藏面移除模块输出的图元像素进行着色处理;主模式内核的后处理模块和从模式内核的后处理模块分别用于对着色处理后的图元像素生成的颜色进行包括累加在内的后处理操作;主模式内核的片段处理系统和从模式内核的片段处理系统在处理完合并后的分块显示列表中的所有图元后,生成图块的最终渲染图像。
根据本发明的另一方面,提供了一种图形处理方法,包括:根据输入的几何数据构造图元,并将构造的图元划分为图元内核组;将划分的图元内核组分配至多个内核;在多个内核中分别对分配的图元内核组进行处理,得到渲染的图像。
在一些实施方式中,在多个内核中分别对分配的图元内核组进行处理包括:将分配的图元内核组分块到屏幕视觉空间的多个图块,生成图块的分块显示列表;对每个图块,将上述多个内核中生成的分块显示列表合并为一个分块显示列表;根据合并后的分块显示列表,对图块进行渲染,得到渲染的图像。
在一些实施方式中,将分配的图元内核组分块到屏幕视觉空间的多个图块包括:对分配的图元内核组进行处理,使图元内核组的所有图元都位于屏幕视觉空间中;将处理后的图元内核组分块到屏幕视觉空间的多个图块。
在一些实施方式中,将构造的图元划分为图元内核组包括:在满足预设条件时,关闭当前图元内核组,并启用一个新的图元内核组;预设条件为当前图元内核组中的图元数量达到预设的内核组图元限制,或者内核组图元限制的值发生变化,或者当前图元内核组中的几何任务数量达到预设的内核组几何任务限制,或者内核组几何任务限制的值发生变化。
按照本发明的又一方面,提供了一种电子设备,包括上述图形处理系统;或者,电子设备包括:处理器;与处理器通信连接的存储器;存储器存储有可被处理器执行的指令,指令被处理器执行,以使处理器能够执行上述方法。
按照本发明的又一方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令被处理器执行时实现上述方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:在几何处理阶段,将输入数据分配到多个内核(core)中并行协同处理,使得系统的数据处理能力得到显著提升,能够处理大量的几何数据,避免处理大量几何数据时的性能瓶颈;在输入汇编模块中新增图元数据流管理器(PSM),PSM在任务分配时充分考虑了GPU内部的多种因素(例如动态分布的输入图元数据),对任务的分配更加合理高效(例如设置不同的划分方式),能够真实展现硬件的实际工作状态,有助于实现最优性能;每个内核具有单独的显示列表(display list),各显示列表具有单独的存储空间,因而在合并显示列表时,缩短了各内核间相互等待的时间,避免因等待导致的数据阻塞。
附图说明
图1是本发明实施例的分块渲染模式的多核计算机图形处理系统的结构示意图;
图2是本发明实施例的主模式内核和从模式内核的几何处理系统的结构示意图;
图3是本发明实施例的主模式内核和从模式内核的几何处理系统生成分块显示列表的示意图;
图4是本发明实施例的主模式内核或从模式内核的结构示意图;
图5是本发明实施例的分块处理模块将多个分块显示列表合并为一个的示意图;
图6是本发明实施例的图形处理方法的流程示意图;
图7是本发明实施例的电子设备的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。正如本领域技术人员可以认识到的那样,在不脱离本申请的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
为了进一步提高计算机图形处理系统的性能,可以将多个计算机图形处理内核组合成一个多核系统,多核系统的内核可以在主模式(Master Mode)或从模式(Slave Mode)下工作。在几何处理阶段,将输入数据分配到多个内核(core)中并行协同处理,使得数据处理能力得到显著提升,能够处理大量的几何数据,避免处理大量几何数据时的性能瓶颈。
如图1所示,本发明实施例的分块渲染模式的多核计算机图形处理系统包括4个内核,每个内核均包括几何处理系统、片段处理系统和调度器。其中1个内核在主模式下工作,被称为主模式内核,剩余的3个内核在从模式下工作,被称为从模式内核。主模式内核分别连接3个从模式内核。
主模式内核用于根据输入的几何数据(例如顶点数据)构造图元,并将构造的图元划分为图元内核组(primitive core groups)分配至主模式内核和从模式内核。主模式内核和从模式内核对分配的图元内核组进行处理,得到渲染的图像并输出。其中,图元内核组是指划分到内核的图元组。
具体地,主模式内核的几何处理系统根据输入的几何数据构造图元,将构造的图元划分为单独的具有渲染状态数据的图元内核组,分配至主模式内核的几何处理系统和调度器,即,将一部分图元内核组留在主模式内核的几何处理系统中继续进行后续处理,另一部分图元内核组发送至调度器。主模式内核的调度器根据系统配置中确定的从模式内核的数量,将分配的图元内核组进一步分配至各从模式内核的几何处理系统。
主模式内核和从模式内核的几何处理系统对分配的图元内核组进行处理,将分配的图元内核组分块到屏幕视觉空间的多个图块,并为每个图块生成分块显示列表。在一些实施方式中,分块显示列表中包含与图块至少部分重叠从而需要在图块中进行渲染的所有图元。主模式内核的片段处理系统根据主模式内核和从模式内核的几何处理系统生成的图块的分块显示列表,对图块进行渲染,得到最终渲染图像;从模式内核的片段处理系统根据主模式内核和从模式内核的几何处理系统生成的图块的分块显示列表,对图块进行渲染,得到最终渲染图像。
图2给出了本发明实施例的主模式内核和从模式内核的几何处理系统的结构示意图。如图2所示,每个几何处理系统均包括输入汇编模块和几何处理管道。主模式内核的输入汇编模块用于接收输入数据流,即输入的几何数据(例如顶点数据),根据输入的几何数据构造图元,形成图元数据流,并将图元数据流划分为单独的具有渲染状态数据的图元内核组,将划分好的图元内核组分配至主模式内核和从模式内核,主模式内核和从模式内核进一步将分配的图元内核组分发至下游的几何处理管道。
进一步地,如图2所示,在主模式内核和从模式内核的几何处理系统中,输入汇编模块进一步包括依次连接的数据处理模块、图元数据流管理器(Primitive StreamManager,PSM)和数据分配模块。
主模式内核的数据处理模块用于接收输入数据流,并根据输入数据流构造图元,形成图元数据流;主模式内核的PSM用于将图元数据流划分为单独的具有渲染状态数据的图元内核组,分配至主模式内核和从模式内核。具体地,主模式内核的PSM的前端模块103用于将图元数据流划分为单独的具有渲染状态数据的图元内核组,分别发送至主模式内核的PSM的后端模块105以及主模式内核的调度器。主模式内核的调度器根据系统配置中确定的从模式内核的数量,通过核间互连101将分配的图元内核组进一步分配至各从模式内核的PSM的后端模块107。主模式内核中,图元内核组经后端模块105进入数据分配模块。主模式内核的数据分配模块用于将分配的图元内核组分发至下游的几何处理管道。
从模式内核的数据处理模块以及从模式内核的PSM的前端模块109处于非激活状态,从模式内核的PSM通过核间互连101从主模式内核的调度器接收分配的图元内核组,即,从模式内核的后端模块107通过核间互连101从主模式内核的调度器接收分配的图元内核组。从模式内核中,图元内核组经后端模块107进入数据分配模块。从模式内核的数据分配模块用于将分配的图元内核组分发至下游的几何处理管道。
在一些实施方式中,引入内核组几何任务限制(例如CG_GEOMETRY_TASK_LIMIT)这一配置参数来控制图元内核组中几何任务的数量。将配置参数CG_GEOMETRY_TASK_LIMIT添加为全局寄存器或渲染状态字。主模式内核中的输入汇编模块可以使用该参数将图元数据流拆分为不同的图元内核组,用于分块渲染模式的多核计算机图形处理系统所有内核中的几何处理管道内。配置参数CG_GEOMETRY_TASK_LIMIT定义了可以发送到每个内核的几何处理管道内的最大几何任务数,在内核的几何处理管道内的几何任务数达到该值后,开始新的图元内核组。几何任务是从输入汇编模块发送到几何处理管道的任务,包括图元和渲染状态更新等几何处理管道中可以计算处理的几何任务数。
在一些实施方式中,图元数据流管理器(PSM)中用于确定图元内核组切换的机制如下:
(1)在图元内核组启用后,PSM统计发送到每个内核中处于激活状态的几何处理管道的几何任务总数;
(2)当几何任务总数≥CG_GEOMETRY_TASK_LIMIT,且PSM正在处理一个图元任务时,PSM将图元发送到下游几何处理管道后关闭当前图元内核组;
(3)当几何任务数≥CG_GEOMETRY_TASK_LIMIT,且PSM未处理图元任务时,PSM关闭当前图元内核组。
使用内核组几何任务限制划分图元内核组,能够使得在某些情况下,图元数据流管理器(PSM)必须关闭当前的图元内核组。例如,当图元内核组中总的几何任务数≥CG_GEOMETRY_TASK_LIMIT时,关闭当前图元内核组,并启用新的图元内核组;再例如,CG_GEOMETRY_TASK_LIMIT的值的改变将导致关闭当前的图元内核组,并启用新的图元内核组。由于几何任务计数是基于图元和渲染状态数据,因此仅当渲染状态改变时不需要启用新的图元内核组。
由于CG_GEOMETRY_TASK_LIMIT是将图元数据流拆分为图元内核组的唯一参数,因此,该方案一简单且易于实施,但对图元数据流分配的灵活性可能不是很强。可以理解的是,可通过实验确定CG_GEOMETRY_TASK_LIMIT中设置的几何任务限制的最佳值,以实现分块渲染模式的多核计算机图形处理系统的最佳性能。
在一些实施方式中,引入内核组图元限制(例如CG_PRIMITIVE_LIMIT)这一配置参数来控制主模式内核中的PSM发送到内核的图元数量。CG_PRIMITIVE_LIMIT的值可以由软件驱动程序设置为几何处理状态。在本发明实施例中,可以为每个绘制图元命令单独进行设置,也可以在多个绘制图元命令之间共享。在主模式或从模式下,CG_PRIMITIVE_LIMIT为在一个内核的几何处理管道中将要处理的一个图元内核组中的最大图元数量。
通过将设置控制权留给软件驱动程序,该方案二可以更灵活地平衡几何工作分配。例如,软件驱动程序可以选择为几何处理阶段中具有复杂着色器指令的图元数据流设置较小的CG_PRIMITIVE_LIMIT,而为几何处理阶段中具有简单着色器指令的图元数据流设置较大的CG_PRIMITIVE_LIMIT。
使用内核组图元限制划分图元内核组,能够使得在某些情况下,主模式内核中的图元数据流管理器(PSM)将关闭当前的图元内核组,并为不同的内核启用新的图元内核组。例如,当图元内核组中的图元数量等于CG_PRIMITIVE_LIMIT的值时,主模式内核中的PMS关闭当前图元内核组;再例如,CG_PRIMITIVE_LIMIT数值的变化将导致关闭当前的图元内核组,并启用新的图元内核组,该新的图元内核组具有更新后的CG_PRIMITIVE_LIMIT数值。
在本发明实施例中,软件驱动程序可以为CG_PRIMITIVE_LIMIT设置默认值。可以理解的是,为使分块渲染模式的多核计算机图形处理系统的性能得到最佳增强,可以进行实验来确定CG_PRIMITIVE_LIMIT的值。
在一些实施方式中,通过结合上述方案一和方案二,控制图元内核组的划分。
具体地,设置关闭当前图元内核组的条件。
条件一:图元数量达到内核组图元限制CG_PRIMITIVE_LIMIT;
条件二:内核组图元限制CG_PRIMITIVE_LIMIT的值发生变化;
条件三:几何任务数量达到内核组几何任务限制CG_GEOMETRY_TASK_LIMIT;
条件四:内核组几何任务限制CG_GEOMETRY_TASK_LIMIT的值发生变化。
当满足上述条件一至条件四中的任何一个条件时,关闭当前图元内核组,并启用一个新的图元内核组。
在该组合方案中,考虑了图元数量限制和几何任务限制,对分块渲染模式的多核计算机图形处理系统的图元内核组进行了划分,实现了图元数据流在内核之间的分布。这种组合方法更复杂但也更灵活。
通过软件驱动程序对CG_PRIMITIVE_LIMIT的值的设置可以更加灵活。通过分析图元绘图命令中图元的特征,软件驱动程序可以设置每个图元绘图命令的CG_PRIMITIVE_LIMIT值。仅当渲染状态发生变化时不需要启用新的图元内核组,因此可以跨多个图元绘图命令设置CG_PRIMITIVE_LIMIT。当多个图元绘图命令的图元总数达到CG_PRIMITIVE_LIMIT的极限值或CG_PRIMITIVE_LIMIT的值发生变化时,可以启用新的图元内核组。
CG_GEOMETRY_TASK_LIMIT可以设置为一个配置参数,用于控制每个内核中处理的几何任务数量。CG_GEOMETRY_TASK_LIMIT应该更准确地反映硬件几何处理管道的工作量。其可以用作对图元数量限制的补偿,在图元数量限制不能单独均匀分配几何工作负载时进行额外的控制。
在一些实施方式中,可以通过实验来选择CG_PRIMITIVE_LIMIT和CG_GEOMETRY_TASK_LIMIT的默认值,以实现分块渲染模式的多核计算机图形处理系统的更好性能。
将在主模式内核的图元数据流管理器(PSM)中生成的图元内核组发送到分块渲染模式的多核计算机图形处理系统的所有内核中的几何处理管道,以分配几何工作。在本发明实施例中可采用不同的分配方案来进行几何工作分配。
在一些实施例中,采用循环分配的方式将生成的图元内核组发送到各内核的几何处理管道,即,在分块渲染模式的多核计算机图形处理系统中,图元内核组被按顺序发送到每个内核,而与内核的当前状态无关。该方案易于在分块渲染模式的多核计算机图形处理系统中实现,但当内核的工作负载不平衡时,由于将要接受下一个图元内核组的内核仍忙于现有的几何处理工作,可能会发生管道暂停状况。
在一些实施方式中,采用加权分配的方式将生成的图元内核组发送到各内核的几何处理管道,即,对分块渲染模式的多核计算机图形处理系统,在每个内核的几何处理管道中处理图元内核组中的图元,每个内核中的几何工作负载可能不平衡。几何处理包括各种操作,例如着色器执行、顶点投影、图元剪裁和剔除等。
本发明实施例中提出了一种加权分配方案,以便在图元内核组分配期间考虑内核的工作量。
Wj为第j个内核的综合考虑几何处理管道的输入和输出能力的组合权重因子,可用于主模式内核和从模式内核之间的几何工作量分配。j=1,2,…,n,n个内核的权重因子分别表示为W1,W2,W3,…,Wn,权重因子Wj的值应根据每个内核的当前工作量状态进行计算。
在加权分配方案中,主模式内核中的图元数据流管理器(PSM)可以向所有内核发送关于组合权重因子的查询,然后再决定将新的图元内核组发送到哪个内核。每个内核的组合权重因子将通过核间互连发送回主模式内核中的PSM。在分块渲染模式的多核计算机图形处理系统中,主模式内核中的PSM将新的图元内核组发送到权重因子最大的内核。
在本发明其他实施例中,让每个内核给主模式内核中的PSM广播组合权重因子。主模式内核中的PSM会将新的图元内核组发送到组合权重因子最大的内核。
在一些实施方式中,第j个内核的组合权重因子Wj=kjin*Wjin+kjout*Wjout。其中,Wjin表示第j个内核的来自几何处理管道的顶点输入能力的权重因子,Wjout表示第j个内核的来自几何处理管道的顶点输出能力的权重因子;Wjin和Wjout的值越大的内核将优先接收来自图元数据流管理器(PSM)的下一个图元内核组。Kjin和kjout分别表示Wjin和Wjout的预设系数,可以通过实验来确定,以便在分块渲染模式的多核计算机图形处理系统中获得更均衡的几何工作量分配。
在一些实施方式中,设定第j个内核具有m(m≥1)个几何处理管道。
第j个内核的来自几何处理管道的顶点输入能力的权重因子Wjin可以表示为:
其中,Sini表示第i个几何处理管道接受新的输入几何数据(例如顶点数据和图元数据)的能力。
在一些实施方式中,Sini=Vertfreei/Vertfulli。其中,Vertfreei表示第i个几何处理管道的几何输入数据缓冲区中顶点的可用空间,Vertfulli表示第i个几何处理管道的几何输入数据缓冲区的大小。
第j个内核的来自几何处理管道的顶点输出能力的权重因子Wjout可以表示为:
其中,Souti表示第i个几何处理管道在几何转换模块和其他管道阶段接受输出的几何数据(例如顶点数据和图元数据)的能力。
在一些实施方式中,Souti=Vertspacei/Vertbuffersizei。其中,Vertspacei表示第i个几何处理管道中几何转换模块输出数据缓冲区中顶点的可用空间,Vertbuffersizei表示第i个几何处理管道中几何转换模块输出数据缓冲区的大小。
通过在输入汇编模块中新增图元数据流管理器(PSM),PSM在任务分配时充分考虑了GPU内部的多种因素(例如动态分布的输入图元数据),对任务的分配更加合理高效(例如设置不同的划分方式),能够真实展现硬件的实际工作状态,有助于实现最优性能。
在一些实施方式中,分块渲染模式的多核计算机图形处理系统仅具有一个内核工作于主模式下,即仅具有一个主模式内核。在一些实施方式中,分块渲染模式的多核计算机图形处理系统具有一个或者多个内核工作于从模式下,即可以具有一个或者多个从模式内核。在一些实施方式中,主模式内核连接一个从模式内核,或者主模式内核分别连接多个从模式内核。
在一些实施方式中,主模式内核的几何处理系统包括一个几何处理管道,主模式内核的数据分配模块用于将分配的图元内核组下发至下游的几何处理管道。在一些实施方式中,主模式内核的几何处理系统包括多个几何处理管道,主模式内核的数据分配模块用于将分配的图元内核组分发至下游的多个几何处理管道,即,主模式内核的数据分配模块将几何处理工作量分配到多个几何处理管道中。在一些实施方式中,从模式内核的几何处理系统包括一个几何处理管道,从模式内核的数据分配模块用于将分配的图元内核组下发至下游的几何处理管道。在一些实施方式中,从模式内核的几何处理系统包括多个几何处理管道,从模式内核的数据分配模块用于将分配的图元内核组分发至下游的多个几何处理管道,即,从模式内核的数据分配模块将几何处理工作量分配到多个几何处理管道中。
如图2所示,几何处理系统还包括分块模块。以主模式内核为例,下游的几何处理管道对分配的图元内核组进行处理,使图元内核组仅包含屏幕视觉空间中需要进行渲染的图元;在分块模块中,对来自所有几何处理管道的图元内核组按原始分配的顺序进行合并,将合并后的图元内核组分块到屏幕视觉空间的多个图块,并为每个图块生成分块显示列表。从模式内核的处理方式与主模式内核类似,在此不再赘述。
在一些实施方式中,分块渲染模式的多核计算机图形处理系统还包括在独立模式下工作的内核,被称为独立模式内核。独立模式内核不连接到任何从模式内核,独立模式内核的调度程序仅控制其自身的处理事件,此时,核间互连不用在多个内核之间分发图元数据流。具体地,独立模式内核的输入汇编模块的数据处理模块接收输入数据流,根据输入数据流构造图元;独立模式内核的输入汇编模块的PSM以旁路模式工作,即在PSM中,构造的图元不会被划分为单独的图元内核组,而是直接被发送到数据分配模块,再由数据分配模块将图元数据流发送至下游的几何处理管道。类似地,在几何处理管道为一个时,数据分配模块直接将图元数据流下发至下游的几何处理管道;在几何处理管道为多个时,数据分配模块将图元数据流分发至下游的多个几何处理管道。
由于输入汇编模块的其他功能保持不变,因此可以非常方便地将内核配置为主模式、从模式或者独立模式。以图1所示的分块渲染模式的多核计算机图形处理系统为例,可以根据实际需要,配置4个内核的工作模式,例如,1个主模式内核、2个从模式内核和1个独立模式内核;或者1个主模式内核、1个从模式内核和2个独立模式内核。
本发明实施例的分块渲染模式的多核计算机图形处理系统的体系结构中,通过向内核的几何处理系统的输入汇编模块引入PSM,使得在几何处理阶段就能将图形处理任务分配到多个内核(core)中并行协同处理,避免了因几何处理阶段工作繁重而导致的性能瓶颈。
在一些实施方式中,主模式内核的输入汇编模块中的PSM将图元数据流划分为单独的具有渲染状态数据的图元内核组后,在每个图元内核组的开头添加内核组索引(CoreGroup Index,CGI)。在一些实施方式中,内核组索引以整数递增。CGI通过几何处理管道向下传递,作为特殊的显示列表条目写入分块显示列表。
在一些实施方式中,主模式内核的PSM将在每个几何处理阶段开始时将CGI值重置为0。在一些实施方式中,在达到最大值后,CGI值可以重新回到0。
在一些实施方式中,渲染状态数据由主模式内核的输入汇编模块进行处理,并包含在图元内核组中。只有图元内核组使用的渲染状态数据才与图元内核组一起发送到内核。当绘图命令调用的图元被拆分为不同的图元内核组时,相同的渲染状态数据可在多个图元内核组中复制。
在本发明其他实施方式中,渲染状态数据可以发送到每个图元内核组。
在一些实施方式中,主模式内核的分块模块根据内核组索引,对来自该主模式内核的所有几何处理管道的图元内核组按原始分配的顺序进行合并,将合并后的图元内核组分块到屏幕视觉空间的多个图块,并为每个图块生成分块显示列表。类似地,从模式内核的分块模块根据内核组索引,对来自该从模式内核的所有几何处理管道的图元内核组按原始分配的顺序进行合并,将合并后的图元内核组分块到屏幕视觉空间的多个图块,并为每个图块生成分块显示列表。内核组索引作为特殊条目包含在主模式内核和从模式内核的分块显示列表中。
如图3所示,本发明实施例的分块渲染模式的多核计算机图形处理系统的每个内核中,分块显示列表都写在单独的内存空间中,无论该内核处于主模式还是从模式。具体地,对任一图块,主模式内核的分块模块生成分块显示列表List0,3个从模式内核的分块模块分别生成分块显示列表List1、List2和List3。也就是说,对任一图块,通过四个内核的几何处理系统对输入的几何数据进行并行协同处理,分别生成一个分块显示列表,一共得到四个分块显示列表。
几何处理系统生成的分块显示列表会被发送至片段处理系统进行后续处理。在本发明实施例的分块渲染模式的多核计算机图形处理系统的每个内核中,片段处理系统将对主模式内核和从模式内核的分块显示列表进行处理。每个内核具有单独的显示列表(display list),各显示列表具有单独的存储空间,因而在合并显示列表时,缩短了各内核间相互等待的时间,避免因等待导致的数据阻塞。
如图4所示,本发明实施例的分块渲染模式的多核计算机图形处理系统的主模式内核和从模式内核中,几何处理管道进一步包括几何转换模块、剪裁和剔除模块以及数据接收模块。其中,几何转换模块用于对输入汇编模块分配的图元内核组进行处理,将图元的顶点数据转换到屏幕视觉空间。裁剪和剔除模块用于删除在屏幕视觉空间中不可见的图元,更新图元内核组,例如,裁剪和剔除模块删除屏幕视觉空间之外的图元或者屏幕视觉空间背面的图元,经过裁剪和剔除模块后的所有图元都位于屏幕视觉空间中,并且需要在计算机图形处理系统中进行渲染。数据接收模块用于接收和存储更新的图元内核组以及转换后的图元数据和顶点数据。在一些实施方式中,数据接收模块还用于对存储的转换后的图元数据和顶点数据进行压缩后,再存储至存储模块的第一存储器。在一些实施方式中,主模式内核的一个或多个几何处理管道中,数据接收模块存储的图元数据和顶点数据均存储至第一存储器,从模式内核的一个或多个几何处理管道中,数据接收模块存储的图元数据和顶点数据同样均存储至第一存储器。
在主模式内核和从模式内核中,分块模块对来自其所在内核的所有几何处理管道的图元内核组(即数据接收模块存储的更新的图元内核组)按原始分配的顺序进行合并,将合并后的图元内核组分块到屏幕视觉空间的多个图块,并为每个图块生成分块显示列表(例如图3中的分块显示列表List0、List1、List2和List3),并将生成的分块显示列表存储至存储模块的第二存储器。即,主模式内核生成的分块显示列表以及每个从模式内核生成的分块显示列表均存储至存储模块的第二存储器。
内核组索引(CGI)是主模式内核在PSM中生成的递增的整数值,用于将图元数据流划分为图元内核组。CGI值从PSM传递到几何处理管道,然后传递到分块模块,作为特殊显示列表条目添加到分块显示列表中。
在本发明实施例中,软件驱动程序将为分块渲染模式的多核计算机图形处理系统的每个内核保留单独的分块显示列表存储空间。因此,在具有n个内核的系统中,每个图块可能有n个分块显示列表基地址。
在一些实施方式中,如果内核处理的图元内核组中没有与该图块交叠的图元,则图块在图元内核组对应的分块显示列表中可能为空,尽管该图块在其他分块显示列表中可能不为空。在渲染的几何处理结束时,必须在图块的每个分块显示列表中写入显示列表终止条目。
在本发明实施例中,分块显示列表条目类型可以通过2位字段表示CS条目类型,例如图元、显示列表链接和显示列表终止符,并加入CGI的新类型,如下表1所示。
表1
为CGI添加了一个新的分块显示列表条目,如下表2所示。
表2
分块模块将CGI条目添加到分块显示列表的开头,保存CGI值以标记图元内核组的开始。在图元内核组的分块显示列表中的CGI条目之后,分块显示列表中的其他条目没有变化。
在分块渲染模式的计算机图形处理系统中,渲染的片段处理在几何处理阶段完成后开始。在片段处理阶段,在几何处理阶段被转换并准备好的顶点数据及其对应的渲染状态数据将在渲染管道中使用。场景的渲染在屏幕上的每个图块中分别完成。
如图4所示,本发明实施例的分块渲染模式的多核计算机图形处理系统的主模式内核和从模式内核中,片段处理系统进一步包括分块处理模块、光栅化模块、隐藏面移除模块、像素着色模块和后处理模块。在主模式内核和从模式内核中,分块处理模块用于从第二存储器中读取几何处理系统生成的分块显示列表,读取的分块显示列表有多个,其中既包括该分块处理模块所在的内核的几何处理系统生成的分块显示列表,又包括其他内核的几何处理系统生成的分块显示列表。
分块处理模块从单独的分块显示列表中读取渲染每个图块所需的图元信息。在本发明实施例中,当分块处理模块开始处理图块时,将有从主模式内核和从模式内核的几何处理管道写入的多个分块显示列表基地址,多个分块显示列表可以由分块处理模块从不同的分块显示列表基地址打开。对位于图块中的图元,可能不需要由每个内核的几何处理管道都进行处理。因此,有的图块在某些内核中的分块显示列表中可能为空。在本发明实施例中,分块处理模块处理图块中的非空分块显示列表。
分块处理模块根据读取的分块显示列表中的内核组索引条目,按原始分配的顺序,将读取的分块显示列表合并为一个分块显示列表。由于来自多个内核的分块显示列表被合并为一个分块显示列表,因此,片段处理系统的后续处理不受主模式内核和从模式内核生成的多个分块显示列表的影响。
图5是本发明实施例的分块处理模块将多个内核的分块显示列表合并为一个的示意图。内核组索引作为特殊的分块显示列表条目出现在每个分块显示列表的开始位置,之后是其他分块显示列表条目,例如,图元内核组中图元的存储地址、显示列表链接指针和显示列表终止符等。
分块处理模块持续跟踪所有分块显示列表中的CGI,首先将具有最低CGI值的分块显示列表作为当前分块显示列表,处理当前分块显示列表,直至当前分块显示列表的下一个分块显示列表条目是分块显示列表中的新的CGI条目或终止条目;在当前分块显示列表中出现新的CGI条目时,分块处理模块将再次比较所有分块显示列表中的CGI值,将具有最低CGI值的分块显示列表作为当前分块显示列表,处理当前分块显示列表,直至当前分块显示列表的下一个分块显示列表条目是分块显示列表中的新的CGI条目或终止条目;在当前分块显示列表中出现终止条目时,分块处理模块将再次比较剩余其他分块显示列表中的CGI值,将具有最低CGI值的分块显示列表作为当前分块显示列表,处理当前分块显示列表,直至当前分块显示列表的下一个分块显示列表条目是分块显示列表中的新的CGI条目或终止条目。
如图5所示,分块渲染模式的多核计算机图形处理系统的4个内核的几何处理系统各自生成了1个分块显示列表,一共4个分块显示列表,每个分块显示列表位于单独的内存空间中。内核组索引CGI0、CGI1、CGI2和CGI3作为特殊的分块显示列表条目出现在每个分块显示列表的开始位置,N+1个分块显示列表条目TDL0、TDL1、TDL2、……、TDLN分别以N+1个内核组索引CGI0、CGI1、CGI2、……、CGIN作为特殊条目开头,分块显示列表条目TDL0、TDL1、TDL2、……、TDLN分别包含图元内核组中图元的相关信息。
渲染中的每个图块可能都有多个分块显示列表。分块显示列表在分块处理模块中按照分块显示列表中每个图元内核组开始处的CGI值的顺序进行处理。处理一个图块的分块显示列表时,首先将来自每个分块显示列表的当前CGI值(均为整数)存储在分块处理模块中,如下表3所示,是一个分块渲染模式的4核计算机图形处理系统的示例。在分块处理模块中比较这4个CGI值,然后处理CGI值最小的分块显示列表(例如CGI0的值最小时,处理分块显示列表List0),处理完后删除该分块显示列表的CGI条目(例如CGI0),直到下一个显示列表条目是分块显示列表中的CGI条目或显示列表终止条目。
Core0 | Core1 | Core2 | Core3 |
CGI0 | CGI1 | CGI2 | CGI3 |
表3
具体地,在当前分块显示列表(例如List0)中出现新的CGI条目(例如CGI5)时,分块处理模块存储的CGI值将被更新,然后处理CGI值最低的分块显示列表;在当前分块显示列表中出现终止条目Terminator0、Terminator1、Terminator2或者Terminator3时(例如Terminator0),分块处理模块将再次比较剩余其他分块显示列表(例如List1、List2和List3)中的CGI值,然后处理CGI值最低的分块显示列表,处理完后删除该分块显示列表的CGI条目。
在处理分块显示列表终止条目时,该分块显示列表终止;在图块的所有分块显示列表均终止时,图块的分块显示列表合并完成。通过上述处理,来自多个内核的分块显示列表在主模式内核和从模式内核的分块处理模块中根据CGI条目以原始提交顺序重新合并为一个分块显示列表List,也就是说,主模式内核和从模式内核的分块处理模块中均生成分块显示列表List,因此,后续管道中的片段处理不受主模式和从模式内核生成的多个分块显示列表的影响。
在主模式内核和从模式内核中,光栅化模块用于从第一存储器中读取合并后的分块显示列表中引用的图元所需的图元数据和顶点数据,将图元光栅化为可见像素。
在主模式内核和从模式内核中,隐藏面移除模块用于将光栅化模块输出的图元像素的深度值与存储在深度缓冲区的之前图元像素的深度值进行比较,在光栅化模块输出的图元像素被之前图元像素遮挡时,即深度测试没有通过时,将光栅化模块输出的图元像素移除,否则将光栅化模块输出的图元像素发送至像素着色模块。在一些实施方式中,之前图元像素的深度值为预设值。在一些实施方式中,之前图元像素的深度值为之前通过深度测试的图元像素的深度值。
在主模式内核和从模式内核中,像素着色模块用于将隐藏面移除模块输出的图元像素进行着色处理,以获得图元像素的最终颜色。后处理模块用于对图元像素生成的颜色进行累加。在一些实施方式中,后处理模块还用于对累加后的图元像素颜色进行一些后处理操作,例如格式转换、下采样等。
在主模式内核和从模式内核的片段处理系统处理完合并后的分块显示列表中的所有图元后,生成图块的最终渲染图像。最终渲染图像可以发送到计算机图形处理系统的外部显示单元进行显示。
在一些实施方式中,光栅化模块获取图元内核组中的图元的原始顶点数据(即输入的顶点数据)后,在将图元光栅化为像素之前,先将图元的原始顶点转换至屏幕空间。
在一些实施方式中,在所有图块中的片段处理完成后,分块渲染模式的多核计算机图形处理系统释放分配给图元数据和顶点数据的第一存储器以及分配给分块显示列表的第二存储器。
在本发明实施例的分块渲染模式的多核计算机图形处理系统中,主模式内核的PSM可以根据不同的情况将图元数据流划分为图元内核组,以便在所有内核的几何处理管道之间进行分布式几何处理工作,使得系统的数据处理能力得到显著提升,能够处理大量的几何数据,避免处理大量几何数据时的性能瓶颈。
如图6所示,与上述图形处理系统相对应地,本发明实施例还提供了一种图形处理方法,该方法包括:
步骤601:根据输入的几何数据构造图元,并将构造的图元划分为图元内核组;
在一些实施方式中,根据输入的几何数据构造图元包括:在满足预设条件时,关闭当前图元内核组,并启用一个新的图元内核组。
在一些实施方式中,预设条件为当前图元内核组中的图元数量达到预设的内核组图元限制,或者内核组图元限制的值发生变化,或者当前图元内核组中的几何任务数量达到预设的内核组几何任务限制,或者内核组几何任务限制的值发生变化。
在一些实施方式中,将构造的图元划分为图元内核组包括:为划分的每个图元内核组添加内核组索引,内核组索引用于将构造的图元数据流划分为图元内核组。在一些实施方式中,内核组索引以整数递增。
步骤603:将划分的图元内核组分配至多个内核;
在一些实施方式中,划分的图元内核组被按顺序发送到多个内核中的每个内核。
在一些实施方式中,划分的图元内核组被发送到多个内核中的组合权重因子最大的内核,其中,每个内核均包括几何处理管道,几何处理管道用于对分配的图元内核组进行处理,使图元内核组的所有图元都位于屏幕视觉空间中。组合权重因子综合考虑内核的几何处理管道的输入和输出能力。
在一些实施方式中,第j个内核的组合权重因子Wj=kjin*Wjin+kjout*Wjout,其中,Wjin表示第j个内核的来自几何处理管道的顶点输入能力的权重因子,Wjout表示第j个内核的来自几何处理管道的顶点输出能力的权重因子,Kjin和kjout分别表示Wjin和Wjout的预设系数。
在一些实施方式中,其中,Sini表示第i个几何处理管道接受新的输入几何数据的能力,Souti表示第i个几何处理管道在几何转换和其他管道阶段接受输出的几何数据的能力,m为第j个内核具有的几何处理管道的数量。
步骤605:在多个内核中分别对分配的图元内核组进行处理,得到渲染的图像。
在一些实施方式中,对分配的图元内核组进行处理,使图元内核组的所有图元都位于屏幕视觉空间中;将处理后的图元内核组分块到屏幕视觉空间的多个图块。
在一些实施方式中,将分配的图元内核组分块到屏幕视觉空间的多个图块;为每个图块生成分块显示列表。
在一些实施方式中,分块显示列表包含内核组索引。
在一些实施方式中,步骤601、步骤603和步骤605的上述过程属于几何处理阶段,步骤605的下述过程属于片段处理阶段。
在一些实施方式中,根据生成的分块显示列表,对图块进行渲染,得到渲染的图像。
在一些实施方式中,对每个图块,获取分块显示列表中的内核组索引,按原始分配的顺序,将多个分块显示列表合并为一个分块显示列表;根据合并后的分块显示列表,对图块进行渲染,得到渲染的图像。
在一些实施方式中,将多个分块显示列表合并为一个分块显示列表具体包括:持续跟踪所有分块显示列表中的内核组索引,首先将具有最低内核组索引值的分块显示列表作为当前分块显示列表,处理当前分块显示列表,直至当前分块显示列表的下一个分块显示列表条目是分块显示列表中的新的内核组索引条目或终止条目;在当前分块显示列表中出现新的内核组索引条目时,主模式内核的分块处理模块和从模式内核的分块处理模块将再次比较所有分块显示列表中的内核组索引的值,将具有最低内核组索引值的分块显示列表作为当前分块显示列表,处理当前分块显示列表,直至当前分块显示列表的下一个分块显示列表条目是分块显示列表中的新的内核组索引条目或终止条目;在当前分块显示列表中出现终止条目时,主模式内核的分块处理模块和从模式内核的分块处理模块将再次比较剩余其他分块显示列表中内核组索引的值,将具有最低内核组索引值的分块显示列表作为当前分块显示列表,处理当前分块显示列表,直至当前分块显示列表的下一个分块显示列表条目是分块显示列表中的新的内核组索引条目或终止条目。
在一些实施方式中,将合并后的分块显示列表中引用的图元光栅化为可见像素;将图元像素的深度值与之前图元像素的深度值进行比较,在所在内核的光栅化模块输出的图元像素被之前图元像素覆盖时,即深度测试没有通过时,将图元像素移除;对保留的图元像素进行着色处理,并对生成的颜色进行包括累加在内的后处理操作。处理完合并后的分块显示列表中的所有图元后,生成图块的最终渲染图像。
图7为根据本申请一实施例的电子设备的结构框图。本申请实施例还提供了一种电子设备,如图7所示,该电子设备包括:至少一个处理器701,以及与至少一个处理器701通信连接的存储器703。存储器703内存储有可被至少一个处理器701执行的指令。指令被至少一个处理器701执行。处理器701执行该指令时实现上述实施例中的图形处理方法。存储器703和处理器701的数量可以为一个或多个。该电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
该电子设备还可以包括通信接口705,用于与外界设备进行通信,进行数据交互传输。各个设备利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器701可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示图形用户界面(Graphical User Interface,GUI)的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器703、处理器701及通信接口705集成在一块芯片上,则存储器703、处理器701及通信接口705可以通过内部接口完成相互间的通信。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(Advanced RISC Machines,ARM)架构的处理器。
本申请实施例提供了一种计算机可读存储介质(如上述的存储器703),其存储有计算机指令,该程序被处理器执行时实现本申请实施例中提供的方法。
可选的,存储器703可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据图形处理方法的电子设备的使用所创建的数据等。此外,存储器703可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器703可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至图形处理方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个(两个或两个以上)用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (20)
1.一种图形处理系统,其特征在于,包括多个内核,所述多个内核中有一个为主模式内核,其余为从模式内核;所述主模式内核用于根据输入的几何数据构造图元,并将构造的图元划分为图元内核组分配至所述主模式内核和所述从模式内核;所述主模式内核和所述从模式内核用于对分配的图元内核组进行处理,得到渲染的图像。
2.如权利要求1所述的图形处理系统,其特征在于,每个所述内核均包括几何处理系统和片段处理系统;所述主模式内核的几何处理系统和所述从模式内核的几何处理系统分别用于对分配的图元内核组进行处理,生成图块的分块显示列表;对每个图块,所述主模式内核的片段处理系统和所述从模式内核的片段处理系统用于将所述主模式内核的几何处理系统和所述从模式内核的几何处理系统生成的分块显示列表合并为一个分块显示列表,以及根据合并后的分块显示列表,对图块进行渲染,得到渲染的图像。
3.如权利要求2所述的图形处理系统,其特征在于,所述多个内核的数量为n,存在图块具有n个分块显示列表,所述n个分块显示列表分别由n个所述内核的几何处理系统生成。
4.如权利要求2所述的图形处理系统,其特征在于,所述多个内核的数量为n,存在图块具有数量小于n的分块显示列表,所述数量小于n的分块显示列表分别由n个所述内核中的一部分内核的几何处理系统生成。
5.如权利要求2所述的图形处理系统,其特征在于,每个所述内核的几何处理系统均包括输入汇编模块、几何处理管道和分块模块;
所述主模式内核的输入汇编模块用于根据输入的几何数据构造图元,并将构造的图元划分为图元内核组分配至所述主模式内核的输入汇编模块和所述从模式内核的输入汇编模块;
所述主模式内核的输入汇编模块和所述从模式内核的输入汇编模块分别用于将分配的图元内核组发送至所述主模式内核的几何处理管道和所述从模式内核的几何处理管道;
所述主模式内核的几何处理管道和所述从模式内核的几何处理管道分别用于对分配的图元内核组进行处理,使图元内核组的所有图元都位于屏幕视觉空间中;
所述主模式内核的分块模块和所述从模式内核的分块模块分别用于将来自所述主模式内核的几何处理管道和所述从模式内核的几何处理管道的图元内核组分块到屏幕视觉空间的多个图块,并为每个图块生成分块显示列表。
6.如权利要求5所述的图形处理系统,其特征在于,每个所述内核的输入汇编模块均包括数据处理模块、图元数据流管理器和数据分配模块;每个所述内核的图元数据流管理器均包括前端模块和后端模块;
所述主模式内核的数据处理模块用于根据输入的几何数据构造图元,形成图元数据流;
所述主模式内核的前端模块用于将图元数据流划分为图元内核组,分配至所述主模式内核的后端模块以及所述从模式内核的后端模块;
所述主模式内核的数据分配模块用于将从所述主模式内核的后端模块获取的图元内核组发送至所述主模式内核的几何处理管道;所述从模式内核的数据分配模块用于将从所述从模式内核的后端模块获取的图元内核组发送至所述从模式内核的几何处理管道;
所述从模式内核的数据处理模块和前端模块处于非激活状态。
7.如权利要求1至6中任一项所述的图形处理系统,其特征在于,在划分图元内核组时,当前图元内核组中的图元数量达到预设的内核组图元限制时,或者内核组图元限制的值发生变化时,或者当前图元内核组中的几何任务数量达到预设的内核组几何任务限制时,或者内核组几何任务限制的值发生变化时,关闭当前图元内核组,启用一个新的图元内核组。
8.如权利要求1至6中任一项所述的图形处理系统,其特征在于,划分的图元内核组被按顺序发送到所述多个内核中的每个内核;或者,划分的图元内核组被发送到所述多个内核中的组合权重因子最大的内核,其中,所述组合权重因子根据内核的几何处理管道的输入和输出能力确定。
9.如权利要求8所述的图形处理系统,其特征在于,第j个内核的组合权重因子Wj=kjin*Wjin+kjout*Wjout,其中,Wjin表示第j个内核的来自几何处理管道的顶点输入能力的权重因子,Wjout表示第j个内核的来自几何处理管道的顶点输出能力的权重因子,Kjin和kjout分别表示Wjin和Wjout的预设系数。
11.如权利要求1至6中任一项所述的图形处理系统,其特征在于,所述主模式内核的输入汇编模块用于为划分的每个图元内核组添加内核组索引,分块显示列表包含所述内核组索引。
12.如权利要求11所述的图形处理系统,其特征在于,每个所述内核的几何处理管道均包括几何转换模块、剪裁和剔除模块以及数据接收模块;
所述主模式内核的几何转换模块和所述从模式内核的几何转换模块分别用于对分配的图元内核组进行处理,将图元的顶点数据转换到屏幕视觉空间;
所述主模式内核的裁剪和剔除模块和所述从模式内核的裁剪和剔除模块分别用于删除在屏幕视觉空间中不可见的图元,更新图元内核组;
所述主模式内核的数据接收模块和所述从模式内核的数据接收模块分别用于接收和存储更新的图元内核组以及转换后的图元数据和顶点数据。
13.如权利要求11所述的图形处理系统,其特征在于,每个所述内核的片段处理系统均包括分块处理模块;所述主模式内核的分块处理模块和所述从模式内核的分块处理模块用于获取所述主模式内核的分块显示列表和所述从模式内核的分块显示列表,根据获取的分块显示列表中的内核组索引,按原始分配的顺序,将读取的分块显示列表合并为一个分块显示列表。
14.如权利要求13所述的图形处理系统,其特征在于,所述内核组索引用于将构造的图元数据流划分为图元内核组,且所述内核组索引以整数递增;
所述主模式内核的分块处理模块和所述从模式内核的分块处理模块用于持续跟踪所有分块显示列表中的内核组索引,首先将具有最低内核组索引值的分块显示列表作为当前分块显示列表,处理当前分块显示列表,直至当前分块显示列表的下一个分块显示列表条目是分块显示列表中的新的内核组索引条目或终止条目;
在当前分块显示列表中出现新的内核组索引条目时,所述主模式内核的分块处理模块和所述从模式内核的分块处理模块将再次比较所有分块显示列表中的内核组索引的值,将具有最低内核组索引值的分块显示列表作为当前分块显示列表,处理当前分块显示列表,直至当前分块显示列表的下一个分块显示列表条目是分块显示列表中的新的内核组索引条目或终止条目;
在当前分块显示列表中出现终止条目时,所述主模式内核的分块处理模块和所述从模式内核的分块处理模块将再次比较剩余其他分块显示列表中内核组索引的值,将具有最低内核组索引值的分块显示列表作为当前分块显示列表,处理当前分块显示列表,直至当前分块显示列表的下一个分块显示列表条目是分块显示列表中的新的内核组索引条目或终止条目。
15.如权利要求11所述的图形处理系统,其特征在于,每个所述内核的片段处理系统还均包括光栅化模块、隐藏面移除模块、像素着色模块和后处理模块;
所述主模式内核的光栅化模块和所述从模式内核的光栅化模块用于将合并后的分块显示列表中引用的图元光栅化为可见像素;
所述主模式内核的隐藏面移除模块和所述从模式内核的隐藏面移除模块分别用于将所在内核的光栅化模块输出的图元像素的深度值与之前图元像素的深度值进行深度测试,在所在内核的光栅化模块输出的图元像素被之前图元像素遮挡时,将所在内核的光栅化模块输出的图元像素移除,否则将所在内核的光栅化模块输出的图元像素发送至所在内核的像素着色模块;
所述主模式内核的像素着色模块和所述从模式内核的像素着色模块分别用于将所在内核的隐藏面移除模块输出的图元像素进行着色处理;
所述主模式内核的后处理模块和所述从模式内核的后处理模块分别用于对着色处理后的图元像素生成的颜色进行包括累加在内的后处理操作;
所述主模式内核的片段处理系统和所述从模式内核的片段处理系统在处理完合并后的分块显示列表中的所有图元后,生成图块的最终渲染图像。
16.一种图形处理方法,其特征在于,包括:
根据输入的几何数据构造图元,并将构造的图元划分为图元内核组;
将划分的图元内核组分配至多个内核;
在所述多个内核中分别对分配的图元内核组进行处理,得到渲染的图像。
17.如权利要求16所述的图形处理方法,其特征在于,在所述多个内核中分别对分配的图元内核组进行处理包括:
将分配的图元内核组分块到屏幕视觉空间的多个图块,生成图块的分块显示列表;
对每个图块,将所述多个内核中生成的分块显示列表合并为一个分块显示列表;
根据合并后的分块显示列表,对图块进行渲染,得到渲染的图像。
18.如权利要求17所述的图形处理方法,其特征在于,所述将分配的图元内核组分块到屏幕视觉空间的多个图块包括:
对分配的图元内核组进行处理,使图元内核组的所有图元都位于屏幕视觉空间中;
将处理后的图元内核组分块到屏幕视觉空间的多个图块。
19.如权利要求16至18中任一项所述的图形处理方法,其特征在于,所述将构造的图元划分为图元内核组包括:
在满足预设条件时,关闭当前图元内核组,并启用一个新的图元内核组;
所述预设条件为当前图元内核组中的图元数量达到预设的内核组图元限制,或者内核组图元限制的值发生变化,或者当前图元内核组中的几何任务数量达到预设的内核组几何任务限制,或者内核组几何任务限制的值发生变化。
20.一种电子设备,其特征在于,包括权利要求1至15中任一项所述的图形处理系统;
或者,所述电子设备包括:
处理器;
与所述处理器通信连接的存储器;
所述存储器存储有可被所述处理器执行的指令,所述指令被所述处理器执行,以使所述处理器能够执行权利要求16至19中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211275710.6A CN115908102A (zh) | 2022-08-23 | 2022-08-23 | 图形处理方法及系统 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211275710.6A CN115908102A (zh) | 2022-08-23 | 2022-08-23 | 图形处理方法及系统 |
CN202211013176.1A CN115100022B (zh) | 2022-08-23 | 2022-08-23 | 图形处理方法及系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211013176.1A Division CN115100022B (zh) | 2022-08-23 | 2022-08-23 | 图形处理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115908102A true CN115908102A (zh) | 2023-04-04 |
Family
ID=83300203
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211275710.6A Pending CN115908102A (zh) | 2022-08-23 | 2022-08-23 | 图形处理方法及系统 |
CN202211013176.1A Active CN115100022B (zh) | 2022-08-23 | 2022-08-23 | 图形处理方法及系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211013176.1A Active CN115100022B (zh) | 2022-08-23 | 2022-08-23 | 图形处理方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN115908102A (zh) |
WO (1) | WO2024040815A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116485629A (zh) * | 2023-06-21 | 2023-07-25 | 芯动微电子科技(珠海)有限公司 | 一种多gpu并行几何处理的图形处理方法及系统 |
CN117011444A (zh) * | 2023-10-07 | 2023-11-07 | 芯动微电子科技(武汉)有限公司 | 一种gpu分块渲染的性能分析方法及系统 |
CN117252751A (zh) * | 2023-11-17 | 2023-12-19 | 摩尔线程智能科技(北京)有限责任公司 | 几何处理方法、装置、设备及存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115908102A (zh) * | 2022-08-23 | 2023-04-04 | 芯动微电子科技(珠海)有限公司 | 图形处理方法及系统 |
CN115330986B (zh) * | 2022-10-13 | 2023-02-03 | 芯动微电子科技(珠海)有限公司 | 一种分块渲染模式图形处理方法及系统 |
CN115660935B (zh) * | 2022-10-08 | 2024-03-01 | 芯动微电子科技(珠海)有限公司 | 一种分块渲染模式图形处理方法及系统 |
CN116188244B (zh) * | 2023-04-25 | 2023-07-25 | 摩尔线程智能科技(北京)有限责任公司 | 图块分发方法、装置、设备及存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2595085A1 (en) * | 2005-01-25 | 2006-11-09 | Lucid Information Technology, Ltd. | Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction |
GB2542133B (en) * | 2015-09-08 | 2020-05-27 | Imagination Tech Ltd | Graphics processing method and system for processing sub-primitives |
GB2543866B (en) * | 2016-03-07 | 2017-11-01 | Imagination Tech Ltd | Task assembly for SIMD processing |
US11379941B2 (en) * | 2016-09-22 | 2022-07-05 | Advanced Micro Devices, Inc. | Primitive shader |
GB2558886B (en) * | 2017-01-12 | 2019-12-25 | Imagination Tech Ltd | Graphics processing units and methods for controlling rendering complexity using cost indications for sets of tiles of a rendering space |
GB2579111B (en) * | 2019-05-30 | 2021-06-23 | Imagination Tech Ltd | Functional safety in graphics processing systems |
CN111062858B (zh) * | 2019-12-27 | 2023-09-15 | 西安芯瞳半导体技术有限公司 | 高效的提前渲染方法、装置及计算机存储介质 |
GB2591803B (en) * | 2020-02-07 | 2022-02-23 | Imagination Tech Ltd | Graphics processing method and system for rendering items of geometry based on their size |
CN115943421A (zh) * | 2020-09-17 | 2023-04-07 | 华为技术有限公司 | 单通道的渲染和后处理滤波 |
CN112801855B (zh) * | 2021-04-14 | 2021-07-20 | 南京芯瞳半导体技术有限公司 | 基于图元的渲染任务调度的方法、装置及存储介质 |
CN114463160B (zh) * | 2022-01-30 | 2022-10-28 | 摩尔线程智能科技(北京)有限责任公司 | 一种图形流水线的并行处理方法、装置及可读存储介质 |
CN115908102A (zh) * | 2022-08-23 | 2023-04-04 | 芯动微电子科技(珠海)有限公司 | 图形处理方法及系统 |
-
2022
- 2022-08-23 CN CN202211275710.6A patent/CN115908102A/zh active Pending
- 2022-08-23 CN CN202211013176.1A patent/CN115100022B/zh active Active
- 2022-12-21 WO PCT/CN2022/140670 patent/WO2024040815A1/zh unknown
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116485629A (zh) * | 2023-06-21 | 2023-07-25 | 芯动微电子科技(珠海)有限公司 | 一种多gpu并行几何处理的图形处理方法及系统 |
CN117011444A (zh) * | 2023-10-07 | 2023-11-07 | 芯动微电子科技(武汉)有限公司 | 一种gpu分块渲染的性能分析方法及系统 |
CN117011444B (zh) * | 2023-10-07 | 2024-01-02 | 芯动微电子科技(武汉)有限公司 | 一种gpu分块渲染的性能分析方法及系统 |
CN117252751A (zh) * | 2023-11-17 | 2023-12-19 | 摩尔线程智能科技(北京)有限责任公司 | 几何处理方法、装置、设备及存储介质 |
CN117252751B (zh) * | 2023-11-17 | 2024-02-13 | 摩尔线程智能科技(北京)有限责任公司 | 几何处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115100022A (zh) | 2022-09-23 |
WO2024040815A1 (zh) | 2024-02-29 |
CN115100022B (zh) | 2022-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115100022B (zh) | 图形处理方法及系统 | |
US10210651B2 (en) | Allocation of tiles to processing engines in a graphics processing system | |
US10223122B2 (en) | Managing event count reports in a tile-based architecture | |
JP4799588B2 (ja) | 常駐ミップマップデータを用いた非常駐ミップマップデータの外挿 | |
US8760460B1 (en) | Hardware-managed virtual buffers using a shared memory for load distribution | |
CN107169916B (zh) | 用于simd处理的任务组合 | |
US7928990B2 (en) | Graphics processing unit with unified vertex cache and shader register file | |
CN104050706B (zh) | 用于低功率图形渲染的像素着色器旁路 | |
CN109978751A (zh) | 多gpu帧渲染 | |
CN103810669B (zh) | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 | |
CN103793876A (zh) | 分布式拼接式进行高速缓存 | |
US11908039B2 (en) | Graphics rendering method and apparatus, and computer-readable storage medium | |
EP2488993A1 (en) | An order-preserving distributed rasterizer | |
US20160203635A1 (en) | Frustum tests for sub-pixel shadows | |
CN103886547A (zh) | 用于存储共享顶点的技术 | |
CN110084738B (zh) | 在扩展的图形处理管线中表示和处理几何形状的技术 | |
JPH10116346A (ja) | テクスチャの高速ダウンロード方法 | |
CN115315727A (zh) | 图形处理单元渲染模式选择系统 | |
US11734869B2 (en) | Graphics processing | |
CN116261740A (zh) | 基于每个信道压缩纹理数据 | |
US20240070962A1 (en) | Graphics processing method and system | |
US10395424B2 (en) | Method and apparatus of copying data to remote memory |
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 |