CN117934260B - 渲染方法、图块分配装置、图形处理设备及计算设备 - Google Patents
渲染方法、图块分配装置、图形处理设备及计算设备 Download PDFInfo
- Publication number
- CN117934260B CN117934260B CN202410340377.5A CN202410340377A CN117934260B CN 117934260 B CN117934260 B CN 117934260B CN 202410340377 A CN202410340377 A CN 202410340377A CN 117934260 B CN117934260 B CN 117934260B
- Authority
- CN
- China
- Prior art keywords
- tile
- core
- tiles
- available
- available core
- 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
- 238000009877 rendering Methods 0.000 title claims abstract description 142
- 238000012545 processing Methods 0.000 title claims abstract description 131
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000004044 response Effects 0.000 claims description 21
- 238000012805 post-processing Methods 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 6
- 230000000875 corresponding effect Effects 0.000 claims 12
- 230000002596 correlated effect Effects 0.000 claims 2
- 230000008569 process Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000005265 energy consumption Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
本公开涉及一种用于图形处理设备的渲染方法、图块分配装置、图形处理设备及计算设备。该方法包括:获取渲染对象的多个图块,其中,渲染对象包括多个图元,多个图块中的每个图块被渲染对象的至少一个图元覆盖;基于图形处理设备的硬件配置确定至少一个可用核心和至少一个可用核心中的各个可用核心所包括的可用计算单元的数量;根据各个可用核心所包括的可用计算单元的数量,在至少一个可用核心之间分配多个图块,以便图形处理设备根据多个图块在至少一个可用核心之间的分配情况,调用相应可用核心来对相应图块执行渲染操作。这有助于提升系统负载均衡,提升渲染效率。
Description
技术领域
本公开涉及图形处理技术,具体地,涉及一种用于图形处理设备的渲染方法、图块分配装置、图形处理设备及计算设备。
背景技术
图形处理技术可以指利用各种硬件及软件设备,对二维或三维的视觉、图像等进行处理,以实现特定呈现效果的技术。图形处理设备可以指用于执行图形处理相关操作的设备,例如图形处理单元(graphics processing unit,GPU)或其他类似设备。一般而言,图形处理设备可以包括多个处理核心,以便通过并行操作来实现更高的图形处理效率。故,如何在多个处理核心之间分配图形处理任务,以最大程度地利用图形处理设备的计算能力成为一项备受关注的问题。
发明内容
有鉴于此,本公开提供了一种用于图形处理设备的渲染方法、图块分配装置、图形处理设备及计算设备,以解决或至少缓解上述问题。
根据本公开的一方面,提供了一种用于图形处理设备的渲染方法,包括:获取渲染对象的多个图块,其中,渲染对象包括多个图元,多个图块中的每个图块被渲染对象的至少一个图元覆盖;基于图形处理设备的硬件配置确定至少一个可用核心和至少一个可用核心中的各个可用核心所包括的可用计算单元的数量;根据各个可用核心所包括的可用计算单元的数量,在至少一个可用核心之间分配多个图块,以便图形处理设备根据多个图块在至少一个可用核心之间的分配情况,调用相应可用核心来对相应图块执行渲染操作。
在一些实施例中,根据各个可用核心所包括的可用计算单元的数量,在至少一个可用核心之间分配多个图块包括:基于多个图块中的每个图块的坐标,根据核心分配规则,将多个图块中的各图块分配至相应的可用核心,其中,核心分配规则为将指定数量的图块按指定顺序分配至各可用核心的规则,其中,分配至各可用核心的图块的数量是根据各可用核心的可用计算单元的数量确定的。
在一些实施例中,基于多个图块中的每个图块的坐标,根据核心分配规则,将多个图块中的各图块分配至相应的可用核心包括:针对多个图块中的每个图块,根据该图块的坐标和核心分配规则中的指定数量,确定该图块的分配轮次;根据图块在相应分配轮次中的位次和核心分配规则中的指定顺序,将多个图块中的各图块分配至相应的可用核心。
在一些实施例中,基于多个图块中的每个图块的坐标,根据核心分配规则,将多个图块中的各图块分配至相应的可用核心包括:将多个图块划分为多个图块组;针对多个图块组中的每个图块组,确定与该图块组对应的核心分配规则;针对每个图块组,基于该图块组中的每个图块的坐标,根据与该图块组对应的核心分配规则,将该图块组中的各图块分配至相应的可用核心。
在一些实施例中,不同图块组对应于不同核心分配规则。
在一些实施例中,不同图块组所对应的核心分配规则具有相同的核心排序和不同的起始核心。
在一些实施例中,根据各个可用核心所包括的可用计算单元的数量,在至少一个可用核心之间分配多个图块包括:响应于渲染对象属于预设场景,获取与预设场景对应的分配表格;根据分配表格在至少一个可用核心之间分配多个图块。
在一些实施例中,根据各个可用核心所包括的可用计算单元的数量,在至少一个可用核心之间分配多个图块还包括:针对多个图块中的每个图块,至少基于该图块的坐标和该图块被分配至的可用核心,确定该图块的签名值;基于图块的签名值,更新多个图块中的至少部分图块被分配至的可用核心。
在一些实施例中,基于图块的签名值,更新多个图块中的至少部分图块被分配至的可用核心包括:初始化当前图块的图块标识和各个可用核心的图块计数,当前图块为当前被处理的图块,图块计数指示被分配至相应可用核心的图块数量;执行迭代分配步骤,迭代分配步骤包括:响应于与当前图块被分配至的可用核心对应的图块计数达到第一阈值,根据当前图块的签名值,将当前图块分配至另一可用核心,以更新当前图块被分配至的可用核心,并令另一可用核心的图块计数加1;响应于与当前图块被分配至的可用核心对应的图块计数未达到第一阈值,令该可用核心的图块计数加1;响应于当前图块为最后一个图块,停止迭代;响应于当前图块非最后一个图块,沿指定方向,将当前图块的图块标识更新为下一图块的图块标识。
在一些实施例中,迭代分配步骤还包括:响应于与一个可用核心对应的图块计数达到第一阈值,在当前轮次内禁用该可用核心;响应于在当前轮次中处理的图块数量达到第二阈值,进入下一轮次,并重置各个可用核心的图块计数。
根据本公开的另一方面,提供了一种图块分配装置,被集成在图形处理设备中,并包括:输入端,被配置为:获取渲染对象的多个图块,渲染对象包括多个图元,多个图块中的每个图块被渲染对象的至少一个图元覆盖;预处理模块,被配置为:基于图形处理设备的硬件配置确定至少一个可用核心和至少一个可用核心中的各个可用核心所包括的可用计算单元的数量;图块分配模块,被配置为:根据各个可用核心所包括的可用计算单元的数量,在至少一个可用核心之间分配多个图块,以便图形处理设备根据多个图块在至少一个可用核心之间的分配情况,调用相应可用核心来对相应图块执行渲染操作。
在一些实施例中,该装置还包括:图元分配模块,被配置为:根据多个图块在至少一个可用核心之间的分配情况,向各可用核心分配覆盖相应图块的图元。
在一些实施例中,该装置还包括:后处理模块,被配置为:维护多个图块被相应可用核心渲染过程中的状态信息。
根据本公开的又一方面,提供了一种图形处理设备,包括:图块划分装置,被配置为:获取渲染对象,并将渲染对象划分为多个图块,其中,渲染对象包括多个图元,每个图块被渲染对象的至少一个图元覆盖;根据前述方面的任一实施例所述的图块分配装置;图块渲染装置,被配置为:根据多个图块在至少一个可用核心之间的分配情况,调用相应可用核心来对相应图块执行渲染操作。
根据本公开的又一方面,提供了一种计算设备,包括前述方面所述的图形处理设备。
通过本公开所提供的渲染方法,可以获取渲染对象的多个图块,根据图形处理设备中各可用核心的可用计算单元的数量来在各可用核心之间分配多个图块,这有助于更均衡地利用各可用核心的计算资源,降低部分核心或部分计算单元负载过重的概率,从而实现更好的负载均衡,并且,有助于降低计算单元的空闲时间,提高并行度和并发度,从而最大程度地发挥多个可用核心的并行计算能力,并实现对计算资源的更充分的利用,这些进而有助于提升总体图形处理效率,降低处理耗时,提升图形处理的整体性能,比如提升吞吐量、提升响应速度等,并降低总体能耗。
根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1示意性示出了根据相关技术的基于Tile的渲染管线的示例性框图;
图2A示意性示出了根据本公开的一些实施例的用于图形处理设备的渲染方法的示例性流程图;
图2B示意性示出了根据本公开的一些实施例的核心的示例性框图;
图3示意性示出了根据本公开的一些实施例的渲染对象的示例;
图4示意性示出了根据本公开的一些实施例的核心分配情况的示例;
图5示意性示出了根据本公开的一些实施例的应用分配表格的示例;
图6示意性示出了根据本公开的一些实施例的另一核心分配情况的示例;
图7示意性示出了根据本公开的一些实施例的图块分配过程的示例流程图;
图8示意性示出了根据本公开的一些实施例的图块分配装置的示例性框图;
图9示意性示出了根据本公开的一些实施例的包含图块分配装置的示例架构;
图10示意性示出了根据本公开的一些实施例的图形处理设备的示例性框图;
图11示意性示出了根据本公开的一些实施例的计算设备的示例性框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。应理解,所描述的实施例仅仅是本公开的一部分实施例,而不是全部的实施例。基于本公开所描述的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。本领域技术人员将会理解,下文描述的实施例旨在用于解释本公开,而不应视为对本公开的限制。除非特别说明,在下文实施例中没有明确描述具体技术或条件的,本领域技术人员可以按照本领域内的常用的技术或条件或者按照产品说明书进行理解。
在本说明书的描述中,参考术语“一个实施例”、“另一个实施例”等的描述意指结合该实施例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。另外,需要说明的是,本说明书中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
如本领域技术人员将理解的,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是这并非要求或者暗示必须按照该特定顺序来执行这些步骤,除非上下文另有明确说明。附加的或可替换的,可以将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行。此外,在步骤之间可以插入其他方法步骤。插入的步骤可以表示诸如本文所描述的方法的改进,或者可以与该方法无关。此外,在下一步骤开始之前,给定步骤可能尚未完全完成。
在详细介绍本公开的实施例之前,为了清楚起见,首先对一些相关的概念进行解释。
渲染对象(Render Target)可以指待渲染的对象,其可以是需要渲染的虚拟场景的一部分,或者也可以是需要渲染的图片或视频帧等。
图元(Primitive)可以指构成图形的基本几何形状,例如点、线、三角形等。例如,对于一个应用程序绘制的图形,其可以在计算机中用大量的基本几何的拼接来表示这个图形。
渲染管线(Rendering Pipeline)是计算机图形学中的一个关键概念,它是图形处理单元(GPU)中的一个阶段,负责处理和转换图形数据以进行渲染。渲染管线的主要任务是将输入的几何图元(如点、线、三角形等)转换为屏幕上可见的像素。渲染管线的目标是以高效的方式处理图形并生成最终的图像。通过并行处理和专门的硬件支持,GPU能够快速执行这些计算,以实现实时的图形渲染。
在相关技术中,可以借助图形管线(Graphics Pipline)来实施渲染过程。在标准的图形管线中,可以对渲染对象所包括的图元进行光栅化,然后将有效的像素送入像素着色器中着色。为了提高处理性能,提出了将渲染对象划分为多个Tile(图块),并对渲染对象执行基于Tile的渲染(Tiled-Based Rendering,TBR),其中每个Tile可以用于渲染一小部分场景。可选地,可以根据每个Tile的复杂度和重要性,利用图形处理单元(GPU)中的Tile级别调度器,来调度GPU资源,以便分配更多的计算资源给需要更多细节的Tile。这种方法可以在GPU硬件层面上实现Tile级别的资源分配,以更大程度地利用GPU的计算能力,并有助于降低功耗,故其常用于计算资源有限的场景下,例如移动设备的GPU中。示意性地,图1示出了一种基于Tile的渲染管线100的示例性框图。如图所示,渲染管线100可以包括前端和后端,其中,前端可包括顶点处理(Vertex Processing)110、裁剪/剔除(Clip/Cull)120、图块化(Tiling)130等模块,后端可包括光栅化(Raster)140、HSR(Hidden SurfaceRemove,隐藏表面消除)150、像素处理(Pixel Processing)160、输出合并(Output Merge)170等模块。具体地,前端可以执行顶点和图元的变换、图形处理(包括裁剪、剔除等),然后在图块化阶段完成屏幕的切分、记录覆盖到各Tile的图形数据,将上述生成数据(比如图元列表(Primitive List)、顶点数据(Vertex Data)等)写入到内存或其他存储结构中,例如写入图1所示的图元块(Primitive Block)中,其中图元块可以用于存储覆盖Tile的图元的索引、坐标等数据,针对一个Tile,可以通过一个或多个图元块来存储覆盖该Tile的图元的数据,图元块例如可以通过区域数组(Region Array)来存储;后端可以执行光栅化、深度测试(Depth Test)、像素着色等操作,最后输出渲染结果。对于一个Tile,渲染管线会将其包含的所有图元(比如三角形图元)加载到片元阶段进行处理,所有覆盖到该Tile的图元都可以直接从相应图元块中读取,当该Tile所有的图元被处理完后,可以继续处理下一个Tile。
然而,虽然上述基于Tile的渲染管线有助于提升计算资源的利用率和降低功耗,但其仍然存在各处理核心之间计算任务分配不均衡、进而影响图形处理效率的问题。
为解决或至少缓解上述问题,本公开提供了一种用于图形处理设备的渲染方法。示例性地,图2A示出了根据本公开的一些实施例的用于图形处理设备的渲染方法200的示意性框图。在本公开中,图形处理设备可以指任何具有图形处理功能的设备,例如GPU或其他设备。如图2A所示,渲染方法200可以包括步骤210至250,具体如下所述。
在步骤210,可以获取渲染对象的多个图块,其中,渲染对象可以包括多个图元,多个图块中的每个图块可以被渲染对象的至少一个图元覆盖。示例性地,渲染对象的图块信息可以获取自前一模块或存储装置(比如内存)等,例如,可以从诸如图1所示的图块化模块130或其他前序模块接收渲染对象的多个图块,或者,可以从前序模块接收控制信息,并根据控制信息从存储装置读取渲染对象的图块信息,等等。示例性地,获取渲染对象的多个图块可以包括获取该多个图块的图块信息,图块信息可以包括图块标识(比如图块的坐标数据、索引数据等)以及覆盖图块的图元的信息(比如图元的标识、坐标等数据或存储此类数据的地址等)。可选地,图元可以为三角形图元,或者也可以为其他几何形状。示例性地,多个图块可以通过对渲染对象进行划分来得到。示例性地,图块可以为具有预设大小的正方形,比如16×16、32×32、64×64等。或者,根据具体应用需求,也可以将渲染对象划分为具有其他预设大小的图块,或具有其他形状的图块。示例性地,在将渲染对象划分为多个图块时,可以读取覆盖各图块的图元,并生成对应于各图块的图元列表,图元列表可以包括例如覆盖相应图块的图元的标识、存储地址等信息,这种图元列表可以被传递至后续处理模块,或者也可以被存储在诸如内存的存储装置中。或者,根据具体应用需求,也可以以其他方式传输或存储关于图块和图元的信息。可选地,图块可以为前述TBR架构下的图块,或者也可以是类似的通过对渲染对象进行划分所得到的对象。
在步骤220,可以基于图形处理设备的硬件配置确定至少一个可用核心和至少一个可用核心中的各个可用核心所包括的可用计算单元的数量。示例性地,可以从诸如内存的结构获取图形处理设备的硬件配置,比如硬件状态信息、寄存器等,其中,硬件状态信息可以包括诸如片段状态字(fragment event words)、事件状态(event state)等的信息,寄存器可以指硬件需要处理运行所需的各种参数、配置等信息。当硬件配置确定时,可以得到可用的处理核心与计算资源的数量,其中一个处理核心可以包含一个或多个计算单元。如前文所提及的,诸如GPU的图形处理设备可以包括多个核心,其中部分或全部核心可以为当前可用的核心,其中,不同核心可以具有相同或不同数量的当前可用的计算单元。示例性地,可以根据硬件配置信息确定至少一个可用核心,并确定该至少一个可用核心中的每个可用核心所包括的可用计算单元的数量。示例性地,可以获取该至少一个可用核心的核心标识,核心标识可以为预先设置或运行时设置的掩码或其他形式的标识。例如,可以通过软件或硬件实现的方法,对不同核心和/或不同计算单元进行编号。
示例性地,图2B示意性示出了本公开所涉及的核心201的示例性框图。如图2B所示,核心201可以包括多个计算单元203-1至203-n,其中n可以为大于或等于1的整数。计算单元203-1至203-n可以用于执行各种计算功能。此外,核心201还可以包括控制单元202和存储单元204,其中控制单元202可以用于控制核心201与外部装置或模块的交互以核心201内部的各种操作,存储单元204可以用于存放核心201运行或执行各种任务的过程中所需要使用的数据。应理解,图2B所示的结构仅仅是示例性地,本公开所提到的核心也可以具有其他结构。
在步骤230,可以根据各个可用核心所包括的可用计算单元的数量,在至少一个可用核心之间分配前述多个图块,以便图形处理设备根据多个图块在至少一个可用核心之间的分配情况,调用相应可用核心来对相应图块执行渲染操作。示例性地,可以向具有更多可用计算单元的可用核心分配更多图块,例如,被分配给各可用核心的图块数量可以与各可用核心所包括的可用计算单元的数量成正比。可选地,多个图块在至少一个可用核心之间的分配情况可以通过诸如查找表格或其他形式进行存储,例如存储至内存中,以便后续读取该分配情况,并调用相应核心处理相应图块。示例性地,根据图块在可用核心之间的分配情况,图形处理设备可以调用不同核心对相应图块执行光栅化,以及后续的HSR、像素处理等操作。
通过上述渲染方法200,可以以图块(Tile)为单位进行分配,并考虑不同核心的不同数量的可用计算单元。这有助于实现以下效果:第一,可以根据当前渲染任务和核心负载情况来在运行时的图块进行动态分配,相比于固定的分配方案,可以更好地适应负载变化,可以更充分地利用图形处理设备中的计算资源,平衡不同核心之间的任务分配和负载,减少核心或计算单元的空闲时间,最大程度地发挥图形处理设备的并行计算能力,提高计算资源的利用率;第二,通过平衡计算资源的分配,可以降低某些核心或某些计算单元负载过重的概率,并提高并行度,这种并行化和负载均衡有助于提高整体处理效率,减少处理时间;第三,可以降低资源争用和冲突概率,优化图形处理过程的并行性,提高系统的整体性能,比如提高系统的吞吐量和响应速度等;第四,通过降低某些核心或计算单元过度负载的概率,可以降低整体能耗,避免计算资源的浪费和不必要的能量消耗,从而有助于提高整体能效性,进而有助于避免将过多资源分配给某些渲染任务,提高资源的整体利用率,使得整个计算系统(比如整个图形处理设备)能够在面对更大规模的计算任务时保持良好的性能。通过上述优势,能够提高计算性能、资源利用率等,从而有助于改善渲染效果。
示例性地,上述渲染方法200可以用于前文所介绍的相关技术中的TBR架构,以改进其中的Tile调度和分配,从而提升渲染效果。或者,上述渲染方法200也可以用于其他类似架构下的图形处理设备。
在一些实施例中,前述步骤230可以包括:基于多个图块中的每个图块的坐标,根据核心分配规则,将多个图块中的各图块分配至相应的可用核心。核心分配规则可以为将指定数量的图块按指定顺序分配至各可用核心的规则,其中,分配至各可用核心的图块的数量是根据各可用核心的可用计算单元的数量确定的。示例性地,图块的坐标可以表征图块在整个渲染对象中的位置,可以根据各图块的坐标确定各图块被分配的次序,例如,可以根据坐标为各图块确定索引,索引可以指示图块被分配的次序,比如,可以按照从上之下、从左至右或其他规律来为各个位置处的图块确定索引。配合前述核心分配规则,可以确定各图块被分配至的核心。可选地,在前述核心分配规则中,指定数量可以是根据各可用核心所包括的可用计算单元的数量确定的,比如等于各可用核心所包括的可用计算单元的总数量、与可用计算单元的总数量成正比的值、或低于可用计算单元的总数量的任意期望值等,指定顺序可以根据实际应用需求来预先设定或根据预设规则自适应地确定。可选地,分配至各可用核心的图块的数量可以与各可用核心的可用计算单元的数量相等、或与之成正比等。可选地,核心分配规则可以是预先设计的,或者可以是运行时自适应确定的。例如,在根据硬件配置确定了可用核心及各可用核心的可用计算单元的数量后,可以根据预设顺序或随机顺序等排列各可用核心,使得各可用核心的出现次数等于各可用核心的可用计算单元的数量或与之对应,从而得到前述核心分配规则,其中,各可用核心的出现总次数为前述指定数量,各可用核心的排列顺序为前述指定顺序。进一步示例性地,假设存在4个核心,核心0、核心1、核心2、核心3分别包括1、2、3、4个可用计算单元,并按照编号从小到大的顺序排列各核心,直至所有核心的可用计算单元被耗尽,则可以得到如下核心分配规则,“0、1、2、3、1、2、3、2、3、3”(其中每个数字表示相应核心)。通过上述步骤,可以有序地将各图块分配至相应的可用核心,并实现根据各可用核心的可用计算单元的数量进行分配,以提升计算资源的均衡分配,提升各核心的并行化程度,进而提升渲染效率。
示例性地,如图3所示,渲染对象300可以包括9个图块,各图块按照从左到右、从上到下的顺序被编号为T0至T8。假设存在2个可用核心,核心1包括2个可用计算单元,核心2包括1个可用计算单元,并且核心分配规则为将3个图块按照“核心1、核心2、核心1”的顺序进行分配,则,在将该核心分配规则应用于图3所示的第一行图块时,T0可以被分配至核心1,T1可以被分配至核心2,T2可以被分配至核心1。在该示例中,T0至T2的分配属于一个分配轮次。
在一些实施例中,可以通过以下步骤来将多个图块中的各图块分配至相应的可用核心:针对多个图块中的每个图块,根据该图块的坐标和核心分配规则中的指定数量,确定该图块的分配轮次;根据图块在相应分配轮次中的位次和核心分配规则中的指定顺序,将多个图块中的各图块分配至相应的可用核心。在本公开中,一个分配轮次可以理解为对指定数量的图块进行分配的过程,换言之,在根据核心分配规则将指定数量的图块按指定顺序分配至各可用核心时,这些指定数量的图块可以视为属于同一分配轮次。示例性地,如前文所述,根据某图块的坐标可以确定其被分配的次序,根据该次序与前述指定数量,可以确定该图块的分配轮次,例如可以根据次序序号与指定数量的商来确定分配轮次;进而,可以根据该图块在相应分配轮次中的位次,根据核心分配规则中的指定顺序下,找到应被分配至的核心,例如可以根据次序序号与指定数量的通过上述方式,在确定了核心分配规则后,可以根据各图块的坐标,查询其分配轮次和应被分配至的可用核心,从而有助于快速完成各图块的分配过程。同时,在引入分配轮次的概念后,可以令各核心根据分配轮次有序执行被分配至其的图块的渲染操作,从而便于后续核心调度操作。
示例性地,假设将“核心1、核心2、核心1”的示例核心分配规则应用于图3所示的9个图块,则对于T4,其为排序第5的图块,由于5除以3等于1余2,则T4应属于第2个分配轮次,并且,按照“核心1、核心2、核心1”的顺序,可查询到T4应被分配至核心2。可根据类似逻辑完成对其他图块的分配。
在一些实施例中,可以通过以下步骤来将多个图块中的各图块分配至相应的可用核心:将多个图块划分为多个图块组;针对多个图块组中的每个图块组,确定与该图块组对应的核心分配规则;针对每个图块组,基于该图块组中的每个图块的坐标,根据与该图块组对应的核心分配规则,将该图块组中的各图块分配至相应的可用核心。示例性地,可以根据图形处理设备的处理粒度或其他规则来将多个图块划分为多个图块组,例如,假设图形处理设备一次可处理两行图块,则可以将每两行图块视为一组。示例性地,可以根据各图块的坐标确定每组所包含的图块,比如,可以根据各图块的坐标确定各图块组所包含的图块的索引值。示例性地,在每个图块组内,可以根据前述实施例所描述的方式来将该图块组中的各图块分配至相应可用核心。通过上述方式,可以以图块组为单位实施图块到核心的分配,以便与图形处理设备的处理能力或处理粒度相适应。
示例性地,如图4所示,渲染对象400包括64个图块,即T0至T63。假设以每两行为一个图块组,则渲染对象400中的第1-2行为第一组、第3-4行为第2组、第5-6行为第3组、第7-8行为第4组。针对第1组,即前两行,假设所应用的规则为“0、1、2、3、1、2、3、2、3、3”(其中数字表示核心编号),则可以得到如图所示的分配结果,其中表征图块的方框的填充图案表示该图块被分配至的核心。
在一些实施例中,不同图块组可以对应于不同核心分配规则。不同的核心分配规则可以理解为指定了不同的起始核心、不同的核心排序、不同的核心数量等中的至少一项。换言之,只要两个核心分配规则之间存在区别,即可视为不同核心分配规则。可选地,不同核心分配规则可以具有相同的指定数量和不同的指定顺序,其中,相同的指定数量是指每个核心分配规则中所包含的核心数量相同,不同的指定顺序可以涉及不同的起始核心和不同的核心排序两个方面中的至少一个方面。如此,可以在一定程度上打乱各图块被分配至相应核心的规律性,避免同一行或同一列(或以其他方式邻近)的图块被集中分配至某一个或几个核心上。对于某个渲染对象,其不同区域可以具有不同的渲染复杂度,这反映到图块上,部分邻近(或者同行或同列)图块可能涉及较多数量的图元,而部分邻近(或者同行或同列)图块可能涉及较少数量的图元。故,通过令不同图块组对应于不同核心分配规则,有助于降低将较为复杂或较为简单的图块集中分配至某一个或几个核心的可能性,从而进一步有助于提升各核心的负载平衡。
在一些实施例中,不同图块组所对应的核心分配规则可以具有相同的核心排序和不同的起始核心。上述相同的核心排序可以理解为各核心在不同核心分配规则中符合相同的排序方式,或者说,在具有相同核心排序的不同核心分配规则中,不同核心分配规则可以通过将同一核心序列向前移位或向后移位来得到,前方溢出的核心可以被移至序列末位,后方溢出的核心可以被移至序列首位。例如,“1、2、3”、“2、3、1”、“3、1、2”可以理解为具有相同的排序。示例性地,不同图块组的核心分配规则可以以swizzle的方式确定,比如,相邻图块组的起始核心在核心排序中可以处于相邻位置。如此,可以便于在运行时自适应地确定各图块组所对应的核心分配规则。继续以图4所示的渲染对象400为例,假设前两行(即T0、T1所在的两行)所应用的核心分配规则为前述“0、1、2、3、1、2、3、2、3、3”,则T16、T17所在的两行可应用核心分配规则“1、2、3、1、2、3、2、3、3、0”,T32、T33所在的两行可应用核心分配规则“2、3、1、2、3、2、3、3、0、1”,T48、T49所在的两行可应用核心分配规则“3、1、2、3、2、3、3、0、1、2”。可见,在上述示例中,不同图块组的核心分配规则具有相同的核心排序、不同的起始核心,由此所得到的分配结果可以如图4所示。
在一些实施例中,步骤230可以包括:响应于目标图像属于预设场景,获取与预设场景对应的分配表格,以及,根据所获取的分配表格,在至少一个可用核心之间分配多个图块。分配表格可以为描述图块与核心的对应关系的表格,例如,分配表格可以为n×m的表格(其中,n、m为大于0的整数,n、m可以相等或不等),表格中每个位置可以对应于一个可用核心,例如填有可用核心的核心标识,比如前文提到的核心掩码。为了充分利用各可用核心以及避免处理错误,分配表格中各核心出现的次数可以根据各核心所包括的可用计算单元的数量来确定。可选地,可以存在一个或多个分配表格,其中每个分配表格可以对应于一种或多种场景,比如游戏场景、虚拟会议场景等。当渲染对象属于某种预设场景时,可以直接调用相应分配表格,并根据该分配表格来分配该渲染对象的图块。示例性地,可以在渲染对象上滑动分配表格,在滑动过程中,被分配表格中的相应位置覆盖的图块可以被分配至该位置对应的可用核心。例如,如图5所示,渲染对象510可以包括T0至T63共64个图块,分配表格520可以为3×3的表格,并可以表征9个位置处的图块与核心0至核心3之间的对应关系,在应用分配表格520来分配渲染对象510中的图块时,可以令分配表格520在渲染对象510上滑动,例如按照从左往右、从上往下的方向滑动,其滑动所经过的位置可以如图中的粗虚线所示,每滑动到一个虚线框时,可以根据分配表格对图块的覆盖情况确定相应图块的分配情况,例如在左上虚线框处,T0可以被分配至核心0,T1可以被分配至核心1,T16可以被分配至核心2,T2可以被分配至核心1,T3可以被分配至核心3,T18可以被分配至核心1,T4可以被分配至核心2,T5可以被分配至核心0,T20可以被分配至核心3。以此类推,可以完成所有图块的分配,其中,当滑动至某位置处,仅分配表格的一部分可以覆盖到图块时,例如图中右侧框和下侧框,仅对被覆盖的图块进行分配即可即可。应理解,图5中的图块编号仅仅是为了便于描述,在根据分配表格分配图块时,对图块进行编号并非必要的。
示例性地,可以由开发人员选择一些经过分析验证的比较有效分配结构,作为某些场景下的分配表格存储在硬件中。或者,示例性地,可以允许用户通过API或寄存器等硬件接口来自定义分配表格,例如将自定义分配表格写入硬件(比如内存或其他存储结构),以供图形处理设备调用。或者,示例性地,图形处理设备在图形处理过程中,可以通过各种与处理过程相关的监控或反馈参数来自动确定在某些场景下应用效果较好分配方式,并对这种分配方式借助表格方式进行存储,作为相应场景下的分配表格。或者,示例性地,可以预先指定某些场景下的分配表格生成规则,并在运行时根据预先指定的生成规则自动生成要使用的分配表格。示例性地,图6示出了一个具有64个图块的渲染目标600,其中各个图块根据分配表格被分配,每个图块方框中的填充图案和数字表示该图块被分配至的核心。
可选地上述基于分配表格的实施例可以单独应用于图块到可用核心的分配,或者,也可以与基于核心分配规则的前述各种实施例相结合地使用。例如,在默认情况下,可以基于核心分配规则来实施图块的分配,当出现某个或某些预设场景时,可以基于分配表格来实施图块的分配;或者,可以对渲染目标的部分区域应用分配表格,对渲染目标的其他区域应用核心分配规则。
借助上述分配表格,在某些预设场景下,可以得到分散性更好的分配结果,从而有助于优化这些预设场景下的图块分配,并提升渲染方法200在不同场景下的适应性和灵活度。例如,当一个核心具有大量可用计算单元,而其他核心仅具有较少可用计算资源时,若根据前述基于核心分配规则的实施例来实施图块分配,可能导致某区域内的图块被分配至同一核心,这可能导致该核心的负担过重(例如在该区域恰好为渲染复杂度较高的区域时)。借助上述分配表格,可以在相应预设场景下避免此类情况的发生,从而有助于进一步提升这类预设场景下的负载均衡,进而提升正常渲染效率。此外,例如,当每个核心具有相同数量的可用计算单元时,通过上述分配表格,可以将每个列中的每两个相邻行的图块分配至不同核心来处理,从而更好地保障分配结果的分散性。
在一些实施例中,前述步骤230还可以包括:针对多个图块中的每个图块,至少基于该图块的坐标和该图块被分配至的可用核心,确定该图块的签名值;基于图块的签名值,更新多个图块中的至少部分图块被分配至的可用核心。签名值可以理解为用于表征某个图块被分配至某个核心的值,该值可以是唯一的,其可以通过各种已有或自定义的算法来确定,例如通过哈希(Hash)算法等来确定。示例性地,可以根据预设规则或随机地更新部分图块被分配至的可用核心。例如,可以通过前述基于核心分配规则或基于分配表格来确定各图块被分配至的可用核心,该可用核心可以视为初始核心,然后可以根据图块坐标和图块的初始核心(可选地,还可以存在其他参数)确定图块的签名值,并根据预设规则或随机地对部分或全部图块进行重新分配。可选地,针对被重新分配的图块,可以根据其被重新分配至的核心更新其签名值,使得可以根据签名值定位各图块的处理情况,比如当前被分配至的核心、是否被重新分配等,由此,当图形处理设备故障或发生其他意外情况而导致图块的分配操作中断时,可以根据签名值确定各图块被分配的情况,从而快速恢复至中断前的状态。可选地,在对部分图块进行再次分配时,可以考虑诸如图块中图元数量、复杂度、各核心已被分配的图块数量等信息以辅助分配,以便进一步提升不同核心的负载均衡。示例性地,当需要再次分配的图块包含较多的图元时,可以优先将其分配至被分配了较少图块的核心或被分配的图块包含较少图元的核心等。通过更新至少部分图块被分配至的可用核心,可以进一步优化图块分配情况,进一步改善在一些复杂场景下的负载均衡性,这些复杂场景例如可以为虚拟会议、游戏等具有多样化或精细对象的场景。
在一些实施例中,可以通过如下步骤更新多个图块中的至少部分图块被分配至的可用核心:初始化当前图块的图块标识和各个可用核心的图块计数,当前图块为当前被处理的图块,图块计数指示被分配至相应可用核心的图块数量,并执行迭代分配步骤。示例性地,可以使用图块的坐标或者其他形式的索引、编码等作为图块标识,可以借助寄存器或其他软件或硬件模块来记录当前图块的图块标识。示例性地,可以通过计数器或者其他软件或硬件模块来记录分配至各个可用核心的图块的数量,即前述图块计数。可选地,在初始化时,可以将当前图块的图块标识初始化为根据预设规则选定的起始图块的坐标,比如左上角图块、左下角图块、右上角图块、右下角图块等,可以将各个可用核心的图块计数初始化为0或其他预设值。
迭代分配步骤可以包括:响应于与当前图块被分配至的可用核心对应的图块计数达到第一阈值,根据当前图块的签名值,将当前图块分配至另一可用核心,以更新当前图块被分配至的可用核心,并令另一可用核心的图块计数加1;响应于与当前图块被分配至的可用核心对应的图块计数未达到第一阈值,令该可用核心的图块计数加1;响应于当前图块为最后一个图块,停止迭代;响应于当前图块非最后一个图块,沿指定方向,将当前图块的图块标识更新为下一图块的图块标识。第一阈值可以是预先设置或自适应设置的,针对不同可用核心,可以设置相同或不同的第一阈值。可选地,第一阈值可以根据各可用核心的可用计算单元的数量来确定,例如,各可用核心的第一阈值可以被设置为等于该可用核心的可用计算单元的数量,或者其他期望值,比如与可用计算单元的数量成正比或低于可用计算单元的数量的任意值,等等。或者,第一阈值也可以根据渲染目标的大小等其他参数来确定。例如,假设某可用核心的可用计算单元为5个,则其第一阈值可以被设置为5或者小于5的值,比如4、3或其他期望值。示例性地,上述第一阈值可以在执行迭代步骤前被确定。可选地,指定方向可以根据实际应用需求来选择,本公开对此不作具体限定。示例性地,可以从渲染目标的左上角的图块开始,沿向右方向依次处理下一图块,当某一行处理完毕后,可移至下一行最左图块继续处理。通过上述迭代分配步骤,可以实现对渲染目标中的图块的遍历,针对渲染目标中各位置处的图块,当其被分配至的初始核心已满,即被分配至该核心的图块数量已达到第一阈值,则可以根据该图块的签名值将其分配至另一核心,否则,可以直接将其分配至初始核心。可选地,该另一核心可以是未满核心,即分配至该核心的图块数量尚未达到该核心的第一阈值,也即未达到该核心的可用计算单元的数量或者其他设定值。可选地,若图块通过上述再分配过程被分配至的核心也已满,则可以继续执行上述再分配过程,直至将该图块分配至另一未满核心。由此,可以更好地均衡不同核心的负载,进一步降低高复杂度图块被集中分配至少量核心的几率,从而有助于降低总体能耗,并促进渲染效率的提升。
在一些实施例中,上述迭代分配步骤还可以包括:响应于与一个可用核心对应的图块计数达到第一阈值,在当前轮次内禁用该可用核心;响应于在当前轮次中处理的图块数量达到第二阈值,进入下一轮次,并重置各个可用核心的图块计数。可选地,第二阈值可以被设置为各可用核心的第一阈值之和,或者,也可以根据具体需求被设定为其他值。可选地,在每一轮次内,可以记录被处理的图块数量,例如通过计数器或者类似的软件或硬件模块,当所记录的数量达到第二阈值时,可以进入下一轮次,并重置这种计数器或类似模块。或者,可选地,可以仅记录被分配至各核心的图块数量,当所有核心的图块数量均达到相应的第一阈值时,可以认为当前轮次中处理的图块数量已达到第二阈值,并进入下一轮次。可选地,在进入下一轮次时,可重置用于记录分配至各核心的图块数量的计数器或类似模块。可选地,可以使用计数器或类似的软件或硬件模块来记录轮次值,示例性地,每当进入下一轮次时,该计数器或类似模块可加1。通过上述实施例,可以限制每轮次内分配至各可用核心的图块的最大数量,并可以通过多个轮次有序完成所有图块的分配操作,其中至少部分图块被分配至新的可用核心。
可选地,上述对渲染目标的图块进行再次分配的各种实施例可以在基于核心分配规则或基于分配表格的分配之后实施,或者可以与之并行地实施。示例性地,在处理某个图块时,可以先根据前述实施例基于核心分配规则或分配表格确定其被分配至的可用核心(初始核心),再基于该图块的坐标、初始核心等信息确定签名值,随后根据前述实施例中的规则确定是否要将其分配至新核心,以确定该图块最终被分配至的可用核心。
为便于理解,图7示意性示出了基于前述部分实施例的图块分配过程700的示例流程图。图块分配过程700可以基于用户控制或根据某些条件自适应地开启。如图7所示,在图块分配过程700开始后,在步骤701,可以执行初始化操作,例如,根据各可用核心的可用计算单元的数量、渲染目标的大小等参数初始化各可用核心的状态机,比如初始化用于记录被分配至各可用核心的图块数量的计数器、用于记录轮次的计数器、当前图块的坐标等中的一项或几项,以及确定各可用核心的最大图块处理数量,即前述第一阈值。如前所述,各可用核心的最大图块处理数量可以被确定为各可用核心的可用计算单元的数量,或者也可以被设定为其他期望值。在步骤702,可以根据图块坐标处理图块,例如获取或生成图块信息,比如图块所涉及的图元信息等。在步骤703,可以获取当前图块的初始核心,该初始核心可以是根据前文所述的实施例确定的。在步骤704,可以基于当前图块的坐标、初始核心等信息计算签名值。在步骤705,可以判断初始核心是否已满,即,本轮次内分配至该初始核心的图块数量是否已达到其最大图块处理数量,这例如比如通过比较本轮次内分配至该初始核心的图块数量与其最大图块处理数量或者根据相关状态机判断该初始核心是否已在本轮次内被禁用来判定,若是,则进行至步骤706和707,若否,则进行至步骤708。在步骤706和707可以基于签名值为当前图块确定新核心,并将其分配至新核心;在步骤708,可以将当前图块分配至初始核心。在步骤709,可以更新各种相关信息,例如用于记录分配至核心的图块数量的计数器、当前图块的签名值、当前图块的坐标(比如沿指定方向更新为下一图块的坐标)等。在步骤710,可以判断新核心是否已满,若是,则进行至步骤711,若否,则进行至步骤712。在步骤711,可以更新与该新核心相关的状态机,例如,将其更新为禁用状态,以指示在本轮次内禁用该核心。再步骤712,可以判断当前轮次内处理的图块数量是否已达到阈值,若是,则进行至步骤713,若否,则进行至步骤714。在步骤713,可以重置计数器,比如用于记录被分配至各核心的图块数量的计数器等。在步骤714,可以判断渲染目标的所有图块是否已处理完毕,例如判断是否已处理至最后一个图块,若是,则结束图块分配过程700,若否,则返回至步骤702继续处理下一图块。
本公开还提供了一种图块分配装置,其可以被集成在图形处理设备中,例如在GPU中。示例性地,图8示出了根据本公开的一些实施例的图块分配装置800的示意性框图。可选地,图块分配装置800可以设置在图1所示的光栅化模块140之前,从而读取渲染对象的图块及相关图元信息(比如,通过相应图元块来读取图元信息),以完成图块在多个核心之间的分配,从而更高效地执行光栅化及后续操作。如图8所示,图块分配装置800可以包括输入端810、预处理模块820以及图块分配模块830。
具体地,输入端810可以被配置为:获取渲染对象的多个图块,渲染对象包括多个图元,多个图块中的每个图块被渲染对象的至少一个图元覆盖;预处理模块820可以被配置为:基于图形处理设备的硬件配置确定至少一个可用核心和至少一个可用核心中的各个可用核心所包括的可用计算单元的数量;图块分配模块830可以被配置为:根据各个可用核心所包括的可用计算单元的数量,在至少一个可用核心之间分配多个图块,以便图形处理设备根据多个图块在至少一个可用核心之间的分配情况,调用相应可用核心来对相应图块执行渲染操作。上述图块分配装置800可以以软件、硬件或软硬件相结合的方式实现。多个不同模块可以在同一软件或硬件结构中实现,或者一个模块可以由多个不同的软件或硬件结构实现。示例性地,图块分配装置800可以以诸如逻辑电路、集成电路、可编程门电路、可编程逻辑器件等形式实现。此外,图块分配装置800可以用于实施前文所描述的渲染方法200中的至少部分步骤。更具体地,上述图块分配模块830可以被配置为执行前文各实施例中所描述的步骤230的各种执行方式中的一种或多种的组合,以便将图块分配至相应可用核心进行处理。示例性地,上述步骤230的各种执行方式中的一种或多种可以作为算法模块部署于图块分配模块830中,以便在需要时被调用。可选地,部署于图块分配模块830中的这种算法模块可以是可修改的,以便根据实际需求对图块分配方式进行调整或增加期望的图块分配方式。应理解,图块分配装置800可以具有与关于前述方法描述的相同的特征和优势。其相关细节已经在前文中详细描述,为简洁起见,在此不再重复。
在一些实施例中,图块分配装置800还可以包括图元分配模块,其可以被配置为:根据多个图块在至少一个可用核心之间的分配情况,向各可用核心分配覆盖相应图块的图元。如前文所述,每个图块可以被至少一个图元覆盖,图元分配模块可以根据图块被分配至的核心情况,将覆盖该图块的图元分发至相应核心。例如,可以将图块坐标等信息、图元集合及对应的地址数据等打包传递至下游计算模块。可选地,图元分配模块可以管理图元的调度顺序和分配策略,以进一步优化图形渲染的效率。可选地,图元分配模块可以根据相关技术中的处理方式来将图元分配至对应的核心和/或计算单元。
在一些实施例中,图块分配装置800还可以包括后处理模块,其可以被配置为:维护多个图块被相应可用核心渲染过程中的状态信息。示例性地,后处理模块可以维护和管理图元处理过程中的状态信息。由此,可以实现对后续渲染操作的统一管理,有助于提升整体处理效率。
示例性地,图9示出了根据本公开的一些实施例图块分配装置的示例架构。如图所示,图块分配装置910可以包括预处理模块911、图块分配模块912、图元分配模块913和后处理模块914。如前文所提到的,该图块分配装置910可以设置在光栅化模块之前,故其也可以被称为光栅化参数处理(Raster Parameter Processing,RPP)模块或者其他模块或装置。
示例性地,预处理模块911可以借助输入接口,从内存940中获取硬件状态信息、寄存器等,以及从前一模块(比如图1所示的图块化模块130)或以其他方式获取图形渲染管线前端的控制流(control stream)920等。示例性地,硬件状态信息可以包括fragment statewords(片段状态字),event status(事件状态)等信息,寄存器可以包括硬件处理运行所需的各种参数,配置等信息。示例性地,控制流920可以包含图块中的图元块的数量、对应图元块的地址、图元块的大小、所包含的图元数量等信息。可选地,根据具体应用,图元块的地址可以通过渲染目标的内存地址、图块的相对坐标等信息计算得到或以其他方式得到。
示例性地,图块分配模块912可以选择分配算法并根据所选择的算法对图块进行分配。分配算法例如可以是前文参考图2A至图7所描述的各种实施例中的图块分配方案,比如基于核心分配规则的分配、基于分配表格的分配、基于迭代分配步骤的分配等。可选地,可以根据渲染目标所属场景的不同来选择实施某种分配算法或者组合实施两种或更多种分配算法,或者,分配算法可以由用户指定。例如,可以通过配置寄存器、写API(Application Program Interface,应用程序接口)等方式指定某种分配算法,并可以对算法执行的参数进行控制,这例如可以借助软件控制930来实现。通过根据不同场景选择所实施的分配算法,有助于实现对不同场景的良好适应,并提升在不同场景下的渲染性能。关于上述分配方案的具体执行细节,请参阅前文所述的各种实施例,在此不再赘述。
示例性地,图元分配模块913可以将输入的图元分配给可用核心进行并行处理,比如光栅化950或其他后续操作,其中,分配可以根据图块分配模块912所提供的分配结果来执行。示例性地,若某个图块已被分配至某个可用核心,则图元分配模块913可以将与该图块相关的图元分发至该可用核心,并可选地对图元的执行顺序、用于处理图元的计算单元等进行调度。可选地,图元分配模块913可以执行以下功能:根据图元的类型和特征,将它们分配给可用核心,以进一步实现并行处理,提升渲染性能;在诸如GPU的图形处理设备的不同核心可以同时处理多个任务的情况下,决定哪些任务应该在特定的处理单元上执行,以实现任务的高效分配和利用;等等。
示例性地,后处理模块914可以维护和管理图元处理过程中的状态信息。示例性地,在将图块分配给后续模块后,可以对渲染状态的信息进行更新、接收特殊事件、上报异常情况等。例如维护当前处理的图元索引、图元处理状态、错误处理等。
本公开还提供了一种图形处理设备。示例性地,图10示出了根据本公开的一些实施例的图形处理设备1000的示意性框图。如图10所示,图形处理设备1000可以包括图块划分装置1010、图块分配装置1020和图块渲染装置1030。
具体地,图块划分装置1010可以被配置为:获取渲染对象,并将渲染对象划分为多个图块,其中,渲染对象包括多个图元,每个图块被渲染对象的至少一个图元覆盖;图块分配装置1020可以与前文所述的图块分配装置800具有相同的结构和功能;图块渲染装置1030可以被配置为:根据多个图块在至少一个可用核心之间的分配情况,调用相应可用核心来对相应图块执行渲染操作。
上述图形处理设备1000可以电路、芯片等形式来实现。示例性地,图形处理设备1000可以为GPU或其他类似设备。此外,图形处理设备1000可以用于实施前文所描述的渲染方法200中的步骤,其相关细节已经在前文中详细描述,为简洁起见,在此不再重复。图形处理设备1000可以具有与关于前述方法描述的相同的特征和优势。
本公开还提供了一种计算设备。示例性地,图11示出了计算设备1100的示例性框图,如图所示,计算设备1100可以包括图形处理设备1110,该图像处理设备1110可以具有前文所述的图形处理设备1000相同的结构。图形处理设备1110可以用于执行计算设备1100中的涉及图形处理的操作及其他相关操作。可选地,计算设备1100还可以包括诸如内存、中央处理单元(CPU)、I/O(输入/输出)接口等各种结构。
通过研究附图、公开内容和所附的权利要求书,本领域技术人员在实践所要求保护的主题时,能够理解和实现对于所公开的实施例的变型。在权利要求书中,词语“包括”不排除其他元件或步骤,并且“一”或“一个”不排除多个。在相互不同的从属权利要求中记载某些措施的纯粹事实并不表明这些措施的组合不能用来获利。
Claims (15)
1.一种用于图形处理设备的渲染方法,其特征在于,所述渲染方法包括:
获取渲染对象的多个图块,其中,所述渲染对象包括多个图元,所述多个图块中的每个图块被所述渲染对象的至少一个图元覆盖;
获取所述图形处理设备的硬件配置,其中所述硬件配置包括与所述图形处理设备的硬件有关的信息;
基于所述图形处理设备的硬件配置确定至少一个可用核心和所述至少一个可用核心中的各个可用核心所包括的可用计算单元的数量;
根据各个可用核心所包括的可用计算单元的数量,在所述至少一个可用核心之间分配所述多个图块,以便所述图形处理设备根据所述多个图块在所述至少一个可用核心之间的分配情况,调用相应可用核心来对相应图块执行渲染操作,其中,所述至少一个可用核心中的每个可用核心被分配到的图块数量与该可用核心所包括的可用计算单元的数量正相关。
2.根据权利要求1所述的渲染方法,其特征在于,所述根据各个可用核心所包括的可用计算单元的数量,在所述至少一个可用核心之间分配所述多个图块包括:
基于所述多个图块中的每个图块的坐标,根据核心分配规则,将所述多个图块中的各图块分配至相应的可用核心,
其中,所述核心分配规则为将指定数量的图块按指定顺序分配至各可用核心的规则,其中,分配至各可用核心的图块的数量是根据各可用核心的可用计算单元的数量确定的。
3.根据权利要求2所述的渲染方法,其特征在于,所述基于所述多个图块中的每个图块的坐标,根据核心分配规则,将所述多个图块中的各图块分配至相应的可用核心包括:
针对所述多个图块中的每个图块,根据该图块的坐标和所述核心分配规则中的指定数量,确定该图块的分配轮次;
根据图块在相应分配轮次中的位次和所述核心分配规则中的指定顺序,将所述多个图块中的各图块分配至相应的可用核心。
4.根据权利要求2所述的渲染方法,其特征在于,所述基于所述多个图块中的每个图块的坐标,根据核心分配规则,将所述多个图块中的各图块分配至相应的可用核心包括:
将所述多个图块划分为多个图块组;
针对所述多个图块组中的每个图块组,确定与该图块组对应的核心分配规则;
针对每个图块组,基于该图块组中的每个图块的坐标,根据与该图块组对应的核心分配规则,将该图块组中的各图块分配至相应的可用核心。
5.根据权利要求4所述的渲染方法,其特征在于,不同图块组对应于不同核心分配规则。
6.根据权利要求5所述的渲染方法,其特征在于,不同图块组所对应的核心分配规则具有相同的核心排序和不同的起始核心。
7.根据权利要求1所述的渲染方法,其特征在于,所述根据各个可用核心所包括的可用计算单元的数量,在所述至少一个可用核心之间分配所述多个图块包括:
响应于所述渲染对象属于预设场景,获取与所述预设场景对应的分配表格;
根据所述分配表格在所述至少一个可用核心之间分配所述多个图块。
8.根据权利要求2至7中任一项所述的渲染方法,其特征在于,所述根据各个可用核心所包括的可用计算单元的数量,在所述至少一个可用核心之间分配所述多个图块还包括:
针对所述多个图块中的每个图块,至少基于该图块的坐标和该图块被分配至的可用核心,确定该图块的签名值;
基于图块的签名值,更新所述多个图块中的至少部分图块被分配至的可用核心。
9.根据权利要求8所述的渲染方法,其特征在于,所述基于图块的签名值,更新所述多个图块中的至少部分图块被分配至的可用核心包括:
初始化当前图块的图块标识和各个可用核心的图块计数,所述当前图块为当前被处理的图块,所述图块计数指示被分配至相应可用核心的图块数量;
执行迭代分配步骤,所述迭代分配步骤包括:
响应于与所述当前图块被分配至的可用核心对应的图块计数达到第一阈值,根据所述当前图块的签名值,将所述当前图块分配至另一可用核心,以更新所述当前图块被分配至的可用核心,并令所述另一可用核心的图块计数加1;
响应于与所述当前图块被分配至的可用核心对应的图块计数未达到所述第一阈值,令该可用核心的图块计数加1;
响应于所述当前图块为最后一个图块,停止迭代;
响应于所述当前图块非最后一个图块,沿指定方向,将所述当前图块的图块标识更新为下一图块的图块标识。
10.根据权利要求9所述的渲染方法,其特征在于,所述迭代分配步骤还包括:
响应于与一个可用核心对应的图块计数达到所述第一阈值,在当前轮次内禁用该可用核心;
响应于在当前轮次中处理的图块数量达到第二阈值,进入下一轮次,并重置各个可用核心的图块计数。
11.一种图块分配装置,其特征在于,所述图块分配装置被集成在图形处理设备中,并包括:
输入端,被配置为:获取渲染对象的多个图块,所述渲染对象包括多个图元,所述多个图块中的每个图块被所述渲染对象的至少一个图元覆盖;
预处理模块,被配置为:获取所述图形处理设备的硬件配置,其中所述硬件配置包括与所述图形处理设备的硬件有关的信息,以及,基于所述图形处理设备的硬件配置确定至少一个可用核心和所述至少一个可用核心中的各个可用核心所包括的可用计算单元的数量;
图块分配模块,被配置为:根据各个可用核心所包括的可用计算单元的数量,在所述至少一个可用核心之间分配所述多个图块,以便所述图形处理设备根据所述多个图块在所述至少一个可用核心之间的分配情况,调用相应可用核心来对相应图块执行渲染操作,其中,所述至少一个可用核心中的每个可用核心被分配到的图块数量与该可用核心所包括的可用计算单元的数量正相关。
12.根据权利要求11所述的图块分配装置,其特征在于,所述图块分配装置还包括:
图元分配模块,被配置为:根据所述多个图块在所述至少一个可用核心之间的分配情况,向各可用核心分配覆盖相应图块的图元。
13.根据权利要求11或12所述的图块分配装置,其特征在于,所述图块分配装置还包括:后处理模块,被配置为:维护所述多个图块被相应可用核心渲染过程中的状态信息。
14.一种图形处理设备,其特征在于,所述图形处理设备包括:
图块划分装置,被配置为:获取渲染对象,并将所述渲染对象划分为多个图块,其中,所述渲染对象包括多个图元,每个图块被所述渲染对象的至少一个图元覆盖;
如权利要求11-13中任一项所述的图块分配装置;
图块渲染装置,被配置为:根据所述多个图块在至少一个可用核心之间的分配情况,调用相应可用核心来对相应图块执行渲染操作。
15.一种计算设备,其特征在于,所述计算设备包括如权利要求14所述的图形处理设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410340377.5A CN117934260B (zh) | 2024-03-25 | 2024-03-25 | 渲染方法、图块分配装置、图形处理设备及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410340377.5A CN117934260B (zh) | 2024-03-25 | 2024-03-25 | 渲染方法、图块分配装置、图形处理设备及计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117934260A CN117934260A (zh) | 2024-04-26 |
CN117934260B true CN117934260B (zh) | 2024-07-26 |
Family
ID=90763437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410340377.5A Active CN117934260B (zh) | 2024-03-25 | 2024-03-25 | 渲染方法、图块分配装置、图形处理设备及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117934260B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110728616A (zh) * | 2018-06-29 | 2020-01-24 | 畅想科技有限公司 | 图形处理单元内处理核心的图块分配 |
CN117058288A (zh) * | 2022-05-07 | 2023-11-14 | 象帝先计算技术(重庆)有限公司 | 图形处理器及方法、多核图形处理系统、电子装置及设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102646906B1 (ko) * | 2016-11-17 | 2024-03-12 | 삼성전자주식회사 | 타일 기반 렌더링 방법 및 장치 |
GB2579112B (en) * | 2019-05-31 | 2021-04-21 | Imagination Tech Ltd | Graphics processing units and methods using render progression checks |
CN116740248B (zh) * | 2023-08-08 | 2024-07-19 | 摩尔线程智能科技(北京)有限责任公司 | 图块分发的控制方法、芯片及装置、控制器、设备和介质 |
-
2024
- 2024-03-25 CN CN202410340377.5A patent/CN117934260B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110728616A (zh) * | 2018-06-29 | 2020-01-24 | 畅想科技有限公司 | 图形处理单元内处理核心的图块分配 |
CN117058288A (zh) * | 2022-05-07 | 2023-11-14 | 象帝先计算技术(重庆)有限公司 | 图形处理器及方法、多核图形处理系统、电子装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117934260A (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10475228B2 (en) | Allocation of tiles to processing engines in a graphics processing system | |
US8933943B2 (en) | Technique for performing load balancing for parallel rendering | |
US10249016B2 (en) | Graphics processing units and methods using cost indications for sets of tiles of a rendering space | |
JP6294565B2 (ja) | グラフィックス処理において使用するためのシェーダプログラム実行技法 | |
US10387990B2 (en) | Graphics processing units and methods for subdividing a set of one or more tiles of a rendering space for rendering | |
US11803936B2 (en) | Tile assignment to processing cores within a graphics processing unit | |
US11373371B2 (en) | Scalable parallel tessellation | |
US20220139022A1 (en) | Multi-Rendering in Graphics Processing Units Using Render Progression Checks | |
KR20130123645A (ko) | 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법 | |
US20130141448A1 (en) | Graphics Command Generation Device and Graphics Command Generation Method | |
EP4254306A1 (en) | Control stream stitching for multicore 3-d graphics rendering | |
CN113467959A (zh) | 应用于gpu的确定任务复杂度的方法、装置及介质 | |
CN117934260B (zh) | 渲染方法、图块分配装置、图形处理设备及计算设备 | |
CN115049531B (zh) | 图像渲染方法、装置、图形处理设备及存储介质 | |
US20230094115A1 (en) | Load multiple primitives per thread in a graphics pipeline | |
JP6801001B2 (ja) | 画像処理装置、画像処理方法およびプログラム | |
CN114862652A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |