CN114463160B - 一种图形流水线的并行处理方法、装置及可读存储介质 - Google Patents
一种图形流水线的并行处理方法、装置及可读存储介质 Download PDFInfo
- Publication number
- CN114463160B CN114463160B CN202210114413.7A CN202210114413A CN114463160B CN 114463160 B CN114463160 B CN 114463160B CN 202210114413 A CN202210114413 A CN 202210114413A CN 114463160 B CN114463160 B CN 114463160B
- Authority
- CN
- China
- Prior art keywords
- cores
- core
- requests
- geometric
- phase
- 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
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
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- 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/505—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 load
-
- 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
Abstract
本发明提供了一种图形流水线的并行处理方法、装置及可读存储介质,该方法应用于多核图形处理器的驱动层,图形流水线采用基于图块渲染(TBR)架构,方法包括:接收多个绘制调用指令,将多个绘制调用指令分组生成指定数量的几何阶段请求,每个几何阶段请求携带根据多个绘制调用指令的原始输入顺序确定的顺序标识;响应于渲染指令,将指定数量的几何阶段请求并行分发给多核图形处理器的多个核心,使多个核心并行执行几何阶段操作以生成对应于每个几何阶段请求的多边形列表;以及,按每个几何阶段请求携带的顺序标识拼接多边形列表,得到目标多边形列表。利用上述方法,能够提高基于图块渲染的几何阶段处理效率。
Description
技术领域
本发明属于图形处理领域,具体涉及一种图形流水线的并行处理方法、装置及计算机可读存储介质。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
图形处理技术可以分成即时模式渲染(Immediate Mode Rendering,简称IMR)和基于图块渲染(Tile-based Rendering,简称TBR),在IMR中,每当在几何阶段生成物体数据的图元时立即执行渲染,在TBR中,将帧划分成虚拟的图块(tile)以对每个图块执行渲染。在这些模式中,TBR使存储带宽减小并可以降低功耗。因此,TBR被频繁用于将功耗作为主要设计考虑之一的移动装置中。
这种TBR架构把整个渲染过程切分成了2个阶段:几何阶段和3D阶段。其中,在几何阶段,图形处理器只运行顶点着色器,计算出每个图元的位置,为每个图块都产生一个多边形列表,这个多边形列表包含了和当前图块有交集的所有图元。在3D阶段,依次针对每一个图块,从多边形列表中取出图元进行渲染。当一个图块的多边形列表的所有图元都渲染完毕后,即完成了该图块的渲染,然后再渲染另外一个图块。
现有的图形处理器一般都是多核架构,每个核都能够独立完成所有的渲染工作。然而,由于多边形列表的生成需要严格按照输入图元的顺序,而不同核心之间的运行又是完全独立的,因此TBR架构的图形处理器通常由单独的核心来执行全部的几何阶段操作,从而导致性能瓶颈,渲染效率降低。
发明内容
针对上述现有技术中存在的问题,提出了一种图形流水线的并行处理方法、装置及计算机可读存储介质,利用这种方法、装置及计算机可读存储介质,能够解决上述问题。
本发明提供了以下方案。
第一方面,提供一种图形流水线的并行处理方法,其应用于多核图形处理器的驱动层,图形流水线采用基于图块渲染(TBR)架构,方法包括:接收多个绘制调用指令,将多个绘制调用指令分组生成指定数量的几何阶段请求,其中,指定数量根据多核图形处理器的核心数量而确定,每个几何阶段请求携带根据多个绘制调用指令的原始输入顺序确定的顺序标识;响应于渲染指令,将指定数量的几何阶段请求并行分发给多核图形处理器的多个核心,使多个核心并行执行几何阶段操作以生成对应于每个几何阶段请求的多边形列表;以及,按每个几何阶段请求携带的顺序标识拼接多边形列表,得到目标多边形列表。
在一些实施中,将多个绘制调用指令分组生成指定数量的几何阶段请求,还包括:确定每个绘制调用指令所指示的顶点数量,根据针对顶点数量的负载均衡原则将多个绘制调用指令划分为指定数量的分组,其中每个分组包含一个或多个绘制调用指令;根据指定数量的分组对应生成指定数量的几何阶段请求,几何阶段请求指示图形处理器核心执行相应的几何阶段操作。
在一些实施中,多个核心并行执行几何阶段操作包括:每个核心响应于几何阶段请求执行顶点着色操作和图块化操作,生成对应于每个图块的多边形列表;以及,拼接多边形列表包括:遍历每个图块,按几何阶段请求携带的顺序标识拼接多个核心针对图块生成的多边形列表,得到对应于每个图块的目标多边形列表。
在一些实施中,将指定数量的几何阶段请求并行分发给多核图形处理器的多个核心,包括:根据每个核心的繁忙程度分发几何阶段请求,以提高多个核心的负载均衡。
在一些实施中,几何阶段请求还携带:本次渲染的几何阶段请求的总数量、本次渲染标识。
在一些实施中,方法还包括:利用驱动层的用户模式驱动执行:将多个绘制调用指令分组生成指定数量的几何阶段请求。
在一些实施中,方法还包括:利用驱动层的协处理器执行:将指定数量的几何阶段请求并行分发给多核图形处理器的多个核心,以及,按每个几何阶段请求携带的顺序标识拼接多边形列表,得到目标多边形列表。
第二方面,提供一种图形流水线的并行处理装置,应用于多核图形处理器的驱动层,应用于多核图形处理器的驱动层,图形流水线采用基于图块渲染(TBR)架构,装置包括:第一驱动组件,被配置为用于:接收多个绘制调用指令,将多个绘制调用指令分组生成指定数量的几何阶段请求,其中,指定数量根据多核图形处理器的核心数量而确定,每个几何阶段请求携带根据多个绘制调用指令的原始输入顺序确定的顺序标识;第二驱动组件,被配置为用于:响应于渲染指令,将指定数量的几何阶段请求并行分发给多核图形处理器的多个核心,使多个核心并行执行几何阶段操作以生成对应于每个几何阶段请求的多边形列表;以及,按每个几何阶段请求携带的顺序标识拼接多边形列表,得到目标多边形列表。
在一些实施中,第一驱动组件,被配置为还用于:确定每个绘制调用指令所指示的顶点数量,根据针对顶点数量的负载均衡原则将多个绘制调用指令划分为指定数量的分组,其中每个分组包含一个或多个绘制调用指令;根据指定数量的分组对应生成指定数量的几何阶段请求,几何阶段请求指示图形处理器核心执行相应的几何阶段操作。
在一些实施中,每个核心响应于几何阶段请求执行顶点着色操作和图块化操作,生成对应于每个图块的多边形列表;以及,第二驱动组件,被配置为还用于:遍历每个图块,按几何阶段请求携带的顺序标识拼接多个核心针对图块生成的多边形列表,得到对应于每个图块的目标多边形列表。
在一些实施中,第二驱动组件,被配置为还用于:根据每个核心的繁忙程度分发几何阶段请求,以提高多个核心的负载均衡。
在一些实施中,几何阶段请求还携带:本次渲染的几何阶段请求的总数量、本次渲染标识。
在一些实施中,第一驱动组件为用户模式驱动。
在一些实施中,第二驱动组件为协处理器。
第三方面,提供一种图形流水线的并行处理装置,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:如第一方面的方法。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质存储有程序,当程序被多核处理器执行时,使得多核处理器执行如第一方面的方法。
上述实施例的优点之一,通过软件层面的驱动层改动,在保证多核心运行时输出和单核心运行时相同的几何阶段操作结果的前提下,能够使图形流水线的几何阶段任务由多个图形处理器核心并行执行,提高几何阶段的处理效率。
本发明的其他优点将配合以下的说明和附图进行更详细的解说。
应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本发明的具体实施例。
附图说明
通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文的优点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:
图1为根据本发明一实施例的图形流水线的结构示意图;
图2为根据本发明一实施例的图形流水线的并行处理方法的流程示意图;
图3为根据本发明一实施例的图形流水线的并行处理装置的结构示意图;
图4为根据本发明另一实施例的图形流水线的并行处理装置的结构示意图;
图5为根据本发明又一实施例的图形流水线的并行处理装置的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施例
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在本申请实施例的描述中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。
除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请中的所有代码都是示例性的,本领域技术人员根据所使用的编程语言,具体的需求和个人习惯等因素会在不脱离本申请的思想的条件下想到各种变型。
为清楚阐述本申请实施例,首先将介绍一些后续实施例中可能会出现的概念。
概念描述
绘制调用(drawcall)指令,绘制调用(drawcall)是CPU(Central ProcessingUnit,中央处理器)调用操作系统中内置的图形编程接口来命令GPU(Graphics ProcessingUnit,图像处理器)进行渲染的操作。渲染时在调用绘制调用(drawcall)之前,CPU会完成各种准备工作,然后向GPU发送渲染指令数据。GPU接收到了来自CPU发来的渲染数据指令后,便开始本次的图形渲染。每个绘制调用(drawcall)都会具有针对其限定的一组相应顶点,以及使用这些顶点的一组图元。
如上,传统方案中的TBR架构中,通常由图形处理器的单独一个核心来执行全部的几何阶段操作。但是传统方案存在如下问题:现有的TBR架构图形处理器一般用于画面并不复杂的移动端场景,此时即使将几何阶段渲染过程都放在单独的核心上也并不会导致性能问题出现。但是当需要把这类型的图形处理器应用于画面非常复杂的桌面端场景时,每一帧包含的三角形数量非常多,模型非常复杂,经常包含几百万个三角形,如果的带宽是每周期1个图元,那么光是生成多边形列表就需要几百万个周期,这时几何阶段渲染就会导致严重的性能瓶颈。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本公开的示例实施例提出了一种图形流水线的并行处理的方案。在该方案中,通过对图形处理器的驱动层进行修改,接收CPU发来的针对本次渲染操作的多个绘制调用(drawcall)指令,将多个绘制调用指令进行分组并生成指定数量的几何阶段请求,其中指定数量是根据多核图形处理器的核心数量而确定,并且每个几何阶段请求均携带根据多个绘制调用指令的原始输入顺序确定的顺序标识;当接收到指示执行本次渲染操作的渲染指令时,将指定数量的几何阶段请求并行分发给多核图形处理器的多个核心,使多个核心并行执行几何阶段操作以生成对应于每个几何阶段请求的多边形列表;以及,按每个几何阶段请求携带的顺序标识拼接多边形列表,得到目标多边形列表。
由此,通过软件层面的驱动层改动,在保证多核心运行时输出和单核心运行时相同的几何阶段操作结果的前提下,能够使图形流水线的几何阶段任务由多个图形处理器核心并行执行,加快几何阶段的处理效率。
下面将参考附图并结合实施例来详细说明本发明。
首先参见图1,图1示出了根据本公开的实施例的图形流水线系统100的示意图。
在图1所示的图形流水线系统中,中央处理器11在需要进行一次渲染操作时,向多核图形处理器12发送多个绘制调用指令,并将渲染操作所需的属性数据、纹理数据等渲染数据加载到内存13中。基于图块渲染(TBR)架构的多核图形处理器相应执行几何阶段和3D阶段两个阶段处理:在几何阶段,图形处理器运行顶点着色模块计算出每个图元(primitive)的位置,之后运行图块化模块为每个图块(tile)都产生一个多边形列表(polygonlist),该多边形列表包含了和当前图块有交集的所有图元(primitive)。在3D阶段,图形处理器运行片段着色模块以依次针对每个图块,从多边形列表中取出图元(primitive)进行渲染。当一个图块的多边形列表的所有图元都渲染完毕后,即完成了该图块的渲染,将这个图块存入到帧缓存空间中,然后再渲染另外一个图块。当一帧的全部图块均完成渲染之后,所有的图块都存入到帧缓存空间中,即完成一帧的渲染。
该多核图形处理器包括多个核心(比如核心1、核心2等),在本申请实施例中,为了使多核图形处理器的多个核心能够并行承担该几何阶段的计算任务,在多核图形处理器的驱动层执行以下操作:
接收CPU发来的针对本次渲染操作的多个绘制调用(drawcall)指令,将多个绘制调用(drawcall)指令进行分组并生成指定数量的几何阶段请求,其中指定数量是根据多核图形处理器的核心数量而确定的,并且每个几何阶段请求均携带根据多个绘制调用(drawcall)指令的原始输入顺序确定的顺序标识;当接收到指示执行本次渲染操作的渲染指令时,将指定数量的几何阶段请求并行分发给多核图形处理器的多个核心,使多个核心并行执行几何阶段操作以生成对应于每个几何阶段请求的多边形列表;紧接着,按每个几何阶段请求携带的顺序标识拼接多边形列表,得到目标多边形列表。
由此,通过软件层面的驱动层改动,在保证多核心运行时输出和单核心运行时相同的几何阶段操作结果的前提下,能够使图形流水线的几何阶段任务由多个图形处理器核心并行执行,加快几何阶段的处理效率。
图2示出了根据本公开的实施例的图形流水线的并行处理方法的流程图。该方法例如可以应用于多核图形处理器的驱动层,该图形流水线采用如图1所示的基于图块渲染(TBR)架构。应当理解的是,方法200还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框202,接收多个绘制调用(drawcall)指令,将多个绘制调用(drawcall)指令分组生成指定数量的几何阶段请求。
具体的,当需要进行一次渲染时,CPU会调用操作系统中内置的图形编程接口向GPU发出多个绘制调用(drawcall)指令来命令GPU进行渲染操作,其中每个绘制调用(drawcall)指令会限定一组相应顶点数据,以及使用这些顶点的一组图元(Primitive)。
该几何阶段请求具体为用于指示图形处理核心进行相应几何阶段任务的请求,该几何阶段任务包括顶点着色操作和图块化操作。
为了使多核图形处理器的每个核心并行承担几何阶段任务,可以根据多核图形处理器的核心数量而确定生成的几何阶段请求的数量,即该指定数量。
可选地,还可以预先根据多核图形处理器的核心繁忙程度调整该指定数量。比如,当多核图形处理器中的某一个或多个核心将被占用较长时间,可以仅生成对应于若干个空闲核心的若干个几何阶段请求。
在框204处,响应于渲染指令,将指定数量的几何阶段请求并行分发给多核图形处理器的多个核心,使多个核心能够并行执行几何阶段操作以生成对应于每个几何阶段请求的多边形列表。
其中,该渲染指令可以是一次冲刷(flush)指令,用于指示GPU当前需要处理接收到的该多个绘制调用(drawcall)指令。驱动层收到该渲染指令之后,会把之前生成的指定数量的几何阶段请求相应分发给多核处理器的多个核心,由此,使多个核心能够并行执行几何阶段操作以生成对应于每个几何阶段请求的多边形列表。具体地,该几何阶段操作包括对几何阶段请求指示的顶点数据和图元数据进行顶点着色操作和图块化操作。
在框206处,按每个几何阶段请求携带的顺序标识拼接多边形列表,得到目标多边形列表。
其中,生成的每个几何阶段请求携带根据多个绘制调用(drawcall)指令的原始输入顺序确定的顺序标识。并且,在获得多个核心传来的多边形列表之后,按照该多边形列表对应的几何阶段请求的顺序标识进行有序拼接,从而保证输出图元(也即目标多边形列表中的图元顺序)和输入图元(也即CPU按顺序发送的多个绘制调用(drawcall)指令所指示的原始图元顺序)之间的顺序一致性。
具体地,可以修改每个几何阶段请求对应的多边形列表的数据头和/或数据尾,按照每个几何阶段请求携带的顺序标识所指示的先后顺序将修改后的多边形列表连接起来,生成统一的目标多边形列表。
由此,能够使得多核处理器中的多个核心并行处理几何阶段操作,加快渲染效率。
一个示例中,参考图3,示出了图形流水线的并行处理装置的示意图,该图形流水线的并行处理装置包括第一驱动组件和第二驱动组件。当需要进行一次渲染时,CPU会调用操作系统中内置的图形编程接口向GPU有序发出多个绘制调用(drawcall)指令来命令GPU进行渲染操作,比如,按顺序发送绘制调用1、绘制调用2、…绘制调用8。其中每次渲染绘制调用(drawcall)指令会指示多个顶点数据和使用该顶点数据的一组图元,当GPU的驱动层收到该多个绘制调用之后,会将该多个绘制调用(drawcall)指令转换成用于命令GPU进行硬件层面的几何阶段操作的几何阶段请求。本实施例为了使图形处理器的多个核心能够并行进行该几何阶段操作,利用驱动层的第一驱动组件将该多个绘制调用(drawcall)指令分组转换生成指定数量的几何阶段请求,比如,将绘制调用(drawcall)指令1、2转换生成几何阶段请求1,将绘制调用(drawcall)指令3、4、5转换生成几何阶段请求2,等等。值得注意的是,在每个几何阶段请求内部,原本的绘制调用(drawcall)指令的顺序不变,在几何阶段请求之间,会根据该多个绘制调用(drawcall)指令的原始输入顺序设置顺序标识,以避免输入图元顺序和输出图元顺序不一致。之后,第一驱动组件将生成的多个几何阶段请求传送给第二驱动组件,第二驱动组件会将该指定数量个几何阶段请求分发给对应的核心,以使得该图形处理器的多个核心并行进行硬件层面的几何阶段操作,提高几何阶段处理效率。每个核心在执行几何阶段操作之后,会相应生成对应于接收到的几何阶段请求的多边形列表。第二驱动组件从该多个核心中获得对应于每个几何阶段请求的多边形列表,并按照顺序标识将其拼接在一起,组合成为统一的目标多边形列表。
可以理解,在传统方案中,多核图形处理器的驱动层在接收到中央处理器发来的多个绘制调用(drawcall)指令之后,只将其转换成几何阶段请求并发送给单个核心进行几何阶段渲染操作以生成多边形列表,而其他核心处于空闲状态。
本申请实施例最终生成的目标多边形列表与单个核心进行全部几何阶段渲染操作而生成多边形列表一致,并且能够使得多核处理器中的多个核心并行处理几何阶段操作,提高渲染效率。
在一些实施例中,为进一步提高多个核心的负载均衡程度,可以确定每个绘制调用(drawcall)指令所指示的顶点数量,并基于负载均衡原则并根据顶点数量将多个绘制调用(drawcall)指令划分为指定数量的分组,其中每个分组包含一个或多个绘制调用(drawcall)指令;并根据指定数量的分组对应生成指定数量的几何阶段请求,几何阶段请求指示图形处理器核心执行相应的硬件渲染操作。
几何阶段操作包含顶点着色操作和图块化操作,因此,每个核心执行几何阶段操作的时间收到相应几何阶段请求所指示的顶点数量的影响。由此,本实施例可以基于每个绘制调用(drawcall)指令所指示的顶点数量进行均衡分组,从而提高多个核心的负载均衡程度。
比如,可以统计全部绘制调用(drawcall)指令所指示的顶点总量,根据核心数量均分该顶点总量,最优均衡方案是每个分组中所指示的顶点数量完全相同。然而可以理解,由于不同的绘制调用(drawcall)指令所指示的顶点数量存在不同,可能难以使各个分组所指示的顶点数量完全一致,在此情况下,选择全局最优负载均衡分组方案或者满足预设负载均衡程度的分组方案均可。可选地,该负载均衡程度可以根据每个分组包含的顶点数量的方差、标准差等评价离散程度的参数来获得。
在一些实施例中,多个核心并行执行几何阶段操作包括:每个核心响应于几何阶段请求执行顶点着色操作和图块化操作,生成对应于每个图块的多边形列表;以及,拼接多边形列表包括:遍历每个图块,按几何阶段请求携带的顺序标识拼接多个核心针对图块生成的多边形列表,得到对应于每个图块的目标多边形列表。
在一些实施例中,为了进一步提高多核处理器中多个核的负载均衡程度,可以根据每个核心的繁忙程度分发几何阶段请求,以提高多个核心的负载均衡。
比如,分发给每个核心的几何阶段请求所指示的顶点数量可以和该核心的繁忙程度成反比。
又比如,当多核处理器的一个或多个核心的繁忙程度超过预设阈值,则将原本将要分发至一个或多个核心的几何阶段请求分发给其他相对空闲的核心。
在一些实施例中,为了便于驱动层了解每次渲染具体包含哪些几何阶段请求,从而实现对几何阶段请求的分发管理,几何阶段请求除了携带顺序标识之外,还可以携带:本次渲染的几何阶段请求的总数量和本次渲染标识。
例如,以下示出该几何阶段请求command的示例性数据结构。
在一些实施例中,可以利用驱动层的用户模式驱动(User Mode Drive,简称UMD)执行上述框202。比如,图3中的第一驱动组件为该用户模式驱动(UMD)。
在一些实施例中,可以利用驱动层的协处理器执行上述框204和206。比如,图3中的第二驱动组件为该协处理器。
在本说明书的描述中,参考术语“一些可能的实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
关于本申请实施例的方法流程图,将某些操作描述为以一定顺序执行的不同的步骤。这样的流程图属于说明性的而非限制性的。可以将在本文中所描述的某些步骤分组在一起并且在单个操作中执行、可以将某些步骤分割成多个子步骤、并且可以以不同于在本文中所示出的顺序来执行某些步骤。可以由任何电路结构和/或有形机制(例如,由在计算机设备上运行的软件、硬件(例如,处理器或芯片实现的逻辑功能)等、和/或其任何组合)以任何方式来实现在流程图中所示出的各个步骤。
基于相同的技术构思,本发明实施例还提供一种图形流水线的并行处理装置,用于执行上述任一实施例所提供的形流水线的并行处理方法。该装置设置于多核图形处理器的驱动层,且该图形流水线采用基于图块渲染(TBR)架构,图4为本发明实施例提供的一种图形流水线的并行处理装置的结构示意图。
如图4所示,装置400包括:
第一驱动组件401,被配置为用于:接收多个绘制调用(drawcall)指令,将多个绘制调用(drawcall)指令分组生成指定数量的几何阶段请求,其中,指定数量根据多核图形处理器的核心数量而确定,每个几何阶段请求携带根据多个绘制调用(drawcall)指令的原始输入顺序确定的顺序标识;
第二驱动组件402,被配置为用于:响应于渲染指令,将指定数量的几何阶段请求并行分发给多核图形处理器的多个核心,使多个核心并行执行几何阶段操作以生成对应于每个几何阶段请求的多边形列表;以及,按每个几何阶段请求携带的顺序标识拼接多边形列表,得到目标多边形列表。
在一些实施中,第一驱动组件401,被配置为还用于:确定每个绘制调用(drawcall)指令所指示的顶点数量,根据针对顶点数量的负载均衡原则将多个绘制调用(drawcall)指令划分为指定数量的分组,其中每个分组包含一个或多个绘制调用(drawcall)指令;根据指定数量的分组对应生成指定数量的几何阶段请求,几何阶段请求指示图形处理器核心执行相应的几何阶段操作。
在一些实施中,每个核心响应于几何阶段请求执行顶点着色操作和图块化操作,生成对应于每个图块的多边形列表;以及,第二驱动组件402,被配置为还用于:遍历每个图块,按几何阶段请求携带的顺序标识拼接多个核心针对图块生成的多边形列表,得到对应于每个图块的目标多边形列表。
在一些实施中,第二驱动组件402,被配置为还用于:根据每个核心的繁忙程度分发几何阶段请求,以提高多个核心的负载均衡。
在一些实施中,几何阶段请求还携带:本次渲染的几何阶段请求的总数量、本次渲染标识。
在一些实施中,第一驱动组件401为用户模式驱动。
在一些实施中,第二驱动组件402为协处理器。
需要说明的是,本申请实施例中的装置可以实现前述方法的实施例的各个过程,并达到相同的效果和功能,这里不再赘述。
图5为根据本申请一实施例的图形流水线的并行处理装置,用于执行图2所示出的图形流水线的并行处理方法,该装置包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施例所述的方法。
根据本申请的一些实施例,提供了图形流水线的并行处理方法的非易失性计算机存储介质,其上存储有计算机可执行指令,该计算机可执行指令设置为在由处理器运行时执行:上述实施例所述的方法。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以其描述进行了简化,相关之处可参见方法实施例的部分说明即可。
本申请实施例提供的装置、设备和计算机可读存储介质与方法是一一对应的,因此,装置、设备和计算机可读存储介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置、设备和计算机可读存储介质的有益技术效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施例描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施例,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (16)
1.一种图形流水线的并行处理方法,其特征在于,应用于多核图形处理器的驱动层,所述图形流水线采用基于图块渲染(TBR)架构,所述方法包括:
接收多个绘制调用指令,将所述多个绘制调用指令分组生成指定数量的几何阶段请求,其中,所述指定数量根据所述多核图形处理器的核心数量而确定,所述几何阶段请求为用于指示图形处理核心进行几何阶段任务的请求,每个所述几何阶段请求携带根据所述多个绘制调用指令的原始输入顺序确定的顺序标识;
响应于渲染指令,将所述指定数量的几何阶段请求并行分发给所述多核图形处理器的多个核心,使所述多个核心并行执行几何阶段操作以生成对应于每个所述几何阶段请求的多边形列表;以及,按每个所述几何阶段请求携带的所述顺序标识拼接所述多边形列表,得到目标多边形列表。
2.根据权利要求1所述的方法,其特征在于,将所述多个绘制调用指令分组生成指定数量的几何阶段请求,还包括:
确定每个所述绘制调用指令所指示的顶点数量,根据针对所述顶点数量的负载均衡原则将所述多个绘制调用指令划分为所述指定数量的分组,其中每个分组包含一个或多个所述绘制调用指令;
根据所述指定数量的分组对应生成所述指定数量的几何阶段请求,所述几何阶段请求指示图形处理器核心执行相应的几何阶段操作。
3.根据权利要求1所述的方法,其特征在于,
所述多个核心并行执行几何阶段操作包括:每个所述核心响应于所述几何阶段请求执行顶点着色操作和图块化操作,生成对应于每个图块的多边形列表;以及,
所述拼接所述多边形列表包括:遍历每个图块,按所述几何阶段请求携带的顺序标识拼接多个核心针对所述图块生成的所述多边形列表,得到对应于每个图块的所述目标多边形列表。
4.根据权利要求1所述的方法,其特征在于,将所述指定数量的几何阶段请求并行分发给所述多核图形处理器的多个核心,包括:
根据每个核心的繁忙程度分发所述几何阶段请求,以提高所述多个核心的负载均衡。
5.根据权利要求1所述的方法,其特征在于,所述几何阶段请求还携带:本次渲染的几何阶段请求的总数量和本次渲染标识。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
利用驱动层的用户模式驱动执行:所述将所述多个绘制调用指令分组生成指定数量的几何阶段请求。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
利用驱动层的协处理器执行:所述将所述指定数量的几何阶段请求并行分发给所述多核图形处理器的多个核心,以及,所述按每个所述几何阶段请求携带的所述顺序标识拼接所述多边形列表,得到目标多边形列表。
8.一种图形流水线的并行处理装置,其特征在于,应用于多核图形处理器的驱动层,所述图形流水线采用基于图块渲染(TBR)架构,所述装置包括:
第一驱动组件,被配置为用于:接收多个绘制调用指令,将所述多个绘制调用指令分组生成指定数量的几何阶段请求,其中,所述几何阶段请求为用于指示图形处理核心进行几何阶段任务的请求,所述指定数量根据所述多核图形处理器的核心数量而确定,每个所述几何阶段请求携带根据所述多个绘制调用指令的原始输入顺序确定的顺序标识;
第二驱动组件,被配置为用于:响应于渲染指令,将所述指定数量的几何阶段请求并行分发给所述多核图形处理器的多个核心,使所述多个核心并行执行几何阶段操作以生成对应于每个所述几何阶段请求的多边形列表;以及,按每个所述几何阶段请求携带的所述顺序标识拼接所述多边形列表,得到目标多边形列表。
9.根据权利要求8所述的装置,其特征在于,所述第一驱动组件,被配置为还用于:
确定每个所述绘制调用指令所指示的顶点数量,根据针对所述顶点数量的负载均衡原则将所述多个绘制调用指令划分为所述指定数量的分组,其中每个分组包含一个或多个所述绘制调用指令;
根据所述指定数量的分组对应生成所述指定数量的几何阶段请求,所述几何阶段请求指示图形处理器核心执行相应的几何阶段操作。
10.根据权利要求8所述的装置,其特征在于,每个所述核心响应于所述几何阶段请求执行顶点着色操作和图块化操作,生成对应于每个图块的多边形列表;以及,
所述第二驱动组件,被配置为还用于:
遍历每个图块,按所述几何阶段请求携带的顺序标识拼接多个核心针对所述图块生成的所述多边形列表,得到对应于每个图块的所述目标多边形列表。
11.根据权利要求8所述的装置,其特征在于,所述第二驱动组件,被配置为还用于:
根据每个核心的繁忙程度分发所述几何阶段请求,以提高所述多个核心的负载均衡。
12.根据权利要求8所述的装置,其特征在于,所述几何阶段请求还携带:本次渲染的几何阶段请求的总数量、本次渲染标识。
13.根据权利要求8所述的装置,其特征在于,所述第一驱动组件为用户模式驱动。
14.根据权利要求8所述的装置,其特征在于,所述第二驱动组件为协处理器。
15.一种图形流水线的并行处理装置,其特征在于,包括:
至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:如权利要求1-7中任一项所述的方法。
16.一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被多核处理器执行时,使得所述多核处理器执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210114413.7A CN114463160B (zh) | 2022-01-30 | 2022-01-30 | 一种图形流水线的并行处理方法、装置及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210114413.7A CN114463160B (zh) | 2022-01-30 | 2022-01-30 | 一种图形流水线的并行处理方法、装置及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114463160A CN114463160A (zh) | 2022-05-10 |
CN114463160B true CN114463160B (zh) | 2022-10-28 |
Family
ID=81412395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210114413.7A Active CN114463160B (zh) | 2022-01-30 | 2022-01-30 | 一种图形流水线的并行处理方法、装置及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114463160B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115250374A (zh) * | 2022-07-08 | 2022-10-28 | 北京有竹居网络技术有限公司 | 展示全景图像的方法、装置、设备和存储介质 |
CN115908102A (zh) * | 2022-08-23 | 2023-04-04 | 芯动微电子科技(珠海)有限公司 | 图形处理方法及系统 |
CN115659443B (zh) * | 2022-12-29 | 2023-06-27 | 摩尔线程智能科技(北京)有限责任公司 | 几何形状流数据处理方法和装置、计算设备和存储介质 |
CN116188244B (zh) * | 2023-04-25 | 2023-07-25 | 摩尔线程智能科技(北京)有限责任公司 | 图块分发方法、装置、设备及存储介质 |
CN116432477B (zh) * | 2023-06-12 | 2023-08-18 | 临沂大学 | 一种基于bim的施工模拟方法、系统及存储介质 |
CN116485629A (zh) * | 2023-06-21 | 2023-07-25 | 芯动微电子科技(珠海)有限公司 | 一种多gpu并行几何处理的图形处理方法及系统 |
CN117252751B (zh) * | 2023-11-17 | 2024-02-13 | 摩尔线程智能科技(北京)有限责任公司 | 几何处理方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804205A (zh) * | 2017-04-28 | 2018-11-13 | 英特尔公司 | 原子操作的智能线程分派和向量化 |
CN112017104A (zh) * | 2019-05-30 | 2020-12-01 | 畅想科技有限公司 | 图形处理系统中的功能安全 |
CN113256474A (zh) * | 2020-02-07 | 2021-08-13 | 畅想科技有限公司 | 图形处理方法和系统 |
CN113888704A (zh) * | 2021-12-01 | 2022-01-04 | 中国电子科技集团公司第二十八研究所 | 一种面向低时延交互的微场景分级分时绘制优化方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7728841B1 (en) * | 2005-12-19 | 2010-06-01 | Nvidia Corporation | Coherent shader output for multiple targets |
KR101511273B1 (ko) * | 2008-12-29 | 2015-04-10 | 삼성전자주식회사 | 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템 |
EP2517169A4 (en) * | 2009-12-23 | 2017-10-18 | Intel Corporation | Image processing techniques |
US9123167B2 (en) * | 2012-09-29 | 2015-09-01 | Intel Corporation | Shader serialization and instance unrolling |
KR102646906B1 (ko) * | 2016-11-17 | 2024-03-12 | 삼성전자주식회사 | 타일 기반 렌더링 방법 및 장치 |
-
2022
- 2022-01-30 CN CN202210114413.7A patent/CN114463160B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804205A (zh) * | 2017-04-28 | 2018-11-13 | 英特尔公司 | 原子操作的智能线程分派和向量化 |
CN112017104A (zh) * | 2019-05-30 | 2020-12-01 | 畅想科技有限公司 | 图形处理系统中的功能安全 |
CN113256474A (zh) * | 2020-02-07 | 2021-08-13 | 畅想科技有限公司 | 图形处理方法和系统 |
CN113888704A (zh) * | 2021-12-01 | 2022-01-04 | 中国电子科技集团公司第二十八研究所 | 一种面向低时延交互的微场景分级分时绘制优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114463160A (zh) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114463160B (zh) | 一种图形流水线的并行处理方法、装置及可读存储介质 | |
EP4198909A1 (en) | Image rendering method and apparatus, and computer device and storage medium | |
EP3657327B1 (en) | Method for rendering game, and method, apparatus and device for generating game resource file | |
US8587602B2 (en) | GPU texture tile detail control | |
US11227425B2 (en) | Emulation of geometry shaders and stream output using compute shaders | |
JP6062438B2 (ja) | タイル単位レンダラーを用いてレイヤリングするシステムおよび方法 | |
US20170004647A1 (en) | Rendering graphics data on demand | |
JP7253488B2 (ja) | 複合ワールドスペースパイプラインシェーダステージ | |
JP5805864B2 (ja) | グラフィックスレンダリングエンジンおよびその実施方法 | |
CN111400024B (zh) | 渲染过程中的资源调用方法、装置和渲染引擎 | |
KR20150003406A (ko) | 동화상 배포 서버, 동화상 재생 장치, 제어 방법, 기록 매체, 및 동화상 배포 시스템 | |
KR102521654B1 (ko) | 컴퓨팅 시스템 및 컴퓨팅 시스템에서 타일-기반 렌더링의 그래픽스 파이프라인을 수행하는 방법 | |
CN113730922A (zh) | 图形渲染方法、装置、电子设备及存储介质 | |
US20120133660A1 (en) | Data processing method and apparatus in heterogeneous multi-core environment | |
TW202103111A (zh) | 用於圖形處理之資產感知計算架構 | |
JP6113142B2 (ja) | 立体的なグラフィックオブジェクトを定義するためのシーングラフ | |
US10580106B2 (en) | Graphics processing method utilizing predefined render chunks | |
CN115049531B (zh) | 图像渲染方法、装置、图形处理设备及存储介质 | |
CN113419806B (zh) | 图像处理方法、装置、计算机设备和存储介质 | |
CN111402349A (zh) | 渲染方法、渲染装置和渲染引擎 | |
KR101281156B1 (ko) | 레이 트레이싱 코어 및 레이 트레이싱 처리 방법 | |
CN112184865A (zh) | 三维渲染的方法、装置、电子设备及存储介质 | |
CN116843540B (zh) | 图形处理器及图形处理设备 | |
US20230377240A1 (en) | Run-time mechanism for optimal shader | |
US20190004842A1 (en) | Varying firmware for virtualized device |
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 |