CN117350915B - 一种图元装配调度方法、系统及设备 - Google Patents
一种图元装配调度方法、系统及设备 Download PDFInfo
- Publication number
- CN117350915B CN117350915B CN202311640802.4A CN202311640802A CN117350915B CN 117350915 B CN117350915 B CN 117350915B CN 202311640802 A CN202311640802 A CN 202311640802A CN 117350915 B CN117350915 B CN 117350915B
- Authority
- CN
- China
- Prior art keywords
- primitive
- sub
- vertex
- assembly
- state
- 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
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000001514 detection method Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 abstract description 6
- 238000009877 rendering Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
- 230000003068 static effect Effects 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
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Abstract
本申请实施例公开了一种图元装配调度方法、系统及设备,通过对待装配图元的绘图命令进行解析,获得每个子图元的类型和顶点处理任务,通过利用子图元的图元类型和预设的根类策略分解顶点处理任务,获得子图元的顶点处理任务包,任意一个图形簇都可以通过对顶点处理包中的起始顶点和结束顶点进行装配,无需再将顶点处理任务包分发至指定的图形簇,减少了渲染管线计算量,还无需要占用大量带宽去传递图元信息,从而避免绘制进程的卡顿。
Description
技术领域
本发明涉及图元装配领域,尤其涉及一种图元装配调度方法、系统及设备。
背景技术
图元管理是GPU(Graphic Processing Unit,图形处理器)渲染管线中的一项重要工作,在任务分发、图元装配、着色器调度、图元排序等环节均有体现。现代GPU通常将芯片内的大量并行计算核划分为若干图形簇,便于调度管理和合理的匹配算力资源。在此基础上,GPU的任务处理流程通常是:接收到绘制命令之后,由任务分发模块根据图元类型、顶点等信息进行图元网格划分,主要作用是确认哪些顶点构成哪种图元,然后直接将每个图元的描述信息分发到各个图形簇,再由各图形簇中的调度器进一步将顶点处理任务安排到计算核上。这种在分发任务之前集中进行图元划分的机制,在绘制大量顶点时,会加大渲染管线计算量,还需要占用大量带宽去传递图元信息,从而造成绘制进程的卡顿。
发明内容
有鉴于此,本发明提供了一种图元装配调度方法、系统及设备,以避免绘制进程的卡顿。
本发明第一实施例的具体技术方案为:一种图元装配调度方法,所述方法包括:对待装配图元的绘图命令进行解析,获得所述待装配图元中每个子图元的图元类型和每个子图元的顶点处理任务;所述顶点处理任务包括所述待装配图元的绘图起始点和所述待装配图元的绘制顶点数量;其中,全部的子图元构成所述待装配图元;根据所述子图元的图元类型和预设的分配策略分解所述顶点处理任务,获得所述子图元的顶点处理任务包;所述顶点处理任务包中包含所述子图元的起始顶点和所述子图元的结束顶点;利用预设的图形簇对全部的子图元的起始顶点和结束顶点进行装配,以完成所述待装配图元的装配。
优选的,所述预设的分配策略包括:当所述子图元的图元类型为点时,所述子图元的起始顶点和所述子图元的结束顶点相同;当所述子图元的图元类型为线且不存在共用顶点时,所述子图元的起始顶点为2N1-1,所述子图元的结束顶点为2N1;其中,N1为大于或等于1的整数;当所述子图元的图元类型为三角形且不存在共用顶点时,所述子图元的起始顶点为3N1-2,所述子图元的结束顶点为3N1且能被3整除;当所述子图元的图元类型为线条带时,所述子图元的起始顶点为N1,所述子图元的结束顶点大于N1;当所述子图元的图元类型为三角形条带时,所述子图元的起始顶点为N1,所述子图元的结束顶点大于N1+1。
优选的,所述利用预设的图形簇对全部的子图元的起始顶点和结束顶点进行装配,之后还包括:检测每个子图元的装配状态;所述装配状态包括完成装配和未完成装配;当所述子图元的装配状态为未完成装配时,继续对所述子图元进行装配,并返回所述检测所述子图元的装配状态的步骤,直至全部的子图元完成装配,以完成所述待装配图元的装配。
优选的,所述检测每个子图元的装配状态,包括:对待装配图元的全部顶点号进行排序,获得顶点号序列;获取当前已装配完成的顶点号,并按照已装配完成的顶点号在所述顶点号序列中进行标记获得图元状态表;所述图元状态表用于表征每个顶点号的装配状态;根据所述图元状态表中的标记和预设的检测规则获得所述子图元的装配状态。
优选的,所述预设的检测规则包括:所述子图元的图元类型为点时,若所述图元状态表中的标记所对应的目标顶点为所述子图元的起始顶点或所述子图元的结束顶点时,则所述子图元的装配状态为完成装配;所述子图元的图元类型为线时,获取所述图元状态表中的第N2个顶点号的第一目标标记;当N2为奇数时,若所述图元状态表中存在第N2+1个顶点号的标记,则第N2/2+1个子图元的装配状态为完成装配;当N2为偶数时,若所述图元状态表中存在第N2-1个顶点号的标记,则第N2/2+1个子图元的装配状态为完成装配;所述子图元的图元类型为三角形时,获取所述图元状态表中的第N3个顶点号的第二目标标记;当N3对3作商,余数为1时,若所述图元状态表中存在第N3+1个顶点号和第N3+2个顶点号的标记,则第N3/3+1个子图元的装配状态为已完成装配;当N3对3作商,余数为2时,若所述图元状态表中存在第N3-1个顶点号和第N3+1个顶点号的标记,则第N3/3+1个子图元的装配状态为已完成装配;当N3对3作商,余数为0时,若所述图元状态表中存在第N3-2个顶点号和第N3-1个顶点号的标记,则第N3/3个子图元的装配状态为已完成装配;所述子图元的图元类型为线条带时,获取所述图元状态表中的第N4个顶点号的第三目标标记;若所述图元状态表中存在第N4-1个顶点号的标记,则第N4-1个子图元的装配状态为已完成装配;若所述图元状态表中存在第N4+1个顶点号的标记,则第N4+1个子图元的装配状态为已完成装配;其中,N4大于1;所述子图元的图元类型为三角形条带时,获取所述图元状态表中的第N5个顶点号的第四目标标记;若所述图元状态表中存在第N5-2个顶点号和第N5-1个顶点号的标记,则第N5-2个子图元的装配状态为已完成装配;其中N5大于2;或所述子图元的图元类型为三角形条带时,获取所述图元状态表中的第N6个顶点号的第五目标标记;若所述图元状态表中存在第N6-1个顶点号和第N6+1个顶点号的标记,则第N6-1个子图元的装配状态为已完成装配;其中N6大于1;或所述子图元的图元类型为三角形条带时,获取所述图元状态表中的第N7个顶点号的第六目标标记;若所述图元状态表中存在第N7+1个顶点号和第N7+2个顶点号的标记,则第N7个子图元的装配状态为已完成装配。
优选的,所述方法还包括:当第一目标子图元的图元类型为点、线或三角形时,所述第一目标子图元的结束顶点为与所述第一目标子图元的一端相连的子图元的起始顶点,所述第一目标子图元的起始顶点为与所述第一目标子图元的另一端相连的子图元的结束顶点;所述第一目标子图元为全部的子图元中,非起点子图元和非终点子图元以外的任意一个子图元。
优选的,当第二目标子图元的图元类型为线条带时,所述第二目标子图元的结束顶点的序号i1设为i1=i1+1;所述第二目标子图元为全部的子图元中任意一个子图元。
优选的,当第三目标子图元的图元类型为三角形条带时,所述第三目标子图元的结束顶点的序号i2设为i2=i2-1;所述第三目标子图元为全部的子图元中任意一个子图元。
本发明第二实施例的具体技术方案为:一种图元装配调度系统,所述系统包括:命令处理模块、图元预装配模块和图元装配模块;所述命令处理模块用于对待装配图元的绘图命令进行解析,获得所述待装配图元中每个子图元的图元类型和每个子图元的顶点处理任务;所述顶点处理任务包括所述待装配图元的绘图起始点和所述待装配图元的绘制顶点数量;其中,全部的子图元构成所述待装配图元;所述图元预装配模块用于根据所述子图元的图元类型和预设的分配策略分解所述顶点处理任务,获得所述子图元的顶点处理任务包;所述顶点处理任务包中包含所述子图元的起始顶点和所述子图元的结束顶点;所述图元装配模块用于利用预设的图形簇对全部的子图元的起始顶点和结束顶点进行装配,以完成所述待装配图元的装配。
本发明第三实施例的具体技术方案为:一种图元装配调度设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如本申请第一实施例中任一项所述方法的步骤。
实施本发明实施例,将具有如下有益效果:
本发明对待装配图元的绘图命令进行解析,获得待装配图元中每个子图元的图元类型和每个子图元的顶点处理任务;顶点处理任务包括待装配图元的绘图起始点和待装配图元的绘制顶点数量;其中,全部的子图元构成待装配图元;根据子图元的图元类型和预设的分配策略分解顶点处理任务,获得子图元的顶点处理任务包;顶点处理任务包中包含子图元的起始顶点和子图元的结束顶点;利用预设的图形簇对全部的子图元的起始顶点和结束顶点进行装配,以完成待装配图元的装配。
通过对待装配图元的绘图命令进行解析,获得每个子图元的类型和顶点处理任务,通过利用子图元的图元类型和预设的根类策略分解顶点处理任务,获得子图元的顶点处理任务包,任意一个图形簇都可以通过对顶点处理包中的起始顶点和结束顶点进行装配,无需再将顶点处理任务包分发至指定的图形簇,减少了渲染管线计算量,还无需要占用大量带宽去传递图元信息,从而避免绘制进程的卡顿。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为图元装配调度方法的步骤流程图;
图2为检测待装配图元的装配状态的步骤流程图;
图3为检测每个子图元的装配状态的步骤流程图;
图4为图元状态表示意图;
图5为线条带顶点划分示意图;
图6为三角形条带顶点划分示意图;
图7为图元装配调度系统的结构示意图。
其中,401、命令处理模块;402、图元预装配模块;403、图元装配模块。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,为本申请第一实施例中一种图元装配调度方法的步骤流程图,以减少了渲染管线计算量,方法包括:
步骤101、对待装配图元的绘图命令进行解析,获得所述待装配图元中每个子图元的图元类型和每个子图元的顶点处理任务;所述顶点处理任务包括所述待装配图元的绘图起始点和所述待装配图元的绘制顶点数量;其中,全部的子图元构成所述待装配图元;
步骤102、根据所述子图元的图元类型和预设的分配策略分解所述顶点处理任务,获得所述子图元的顶点处理任务包;所述顶点处理任务包中包含所述子图元的起始顶点和所述子图元的结束顶点;
步骤103、利用预设的图形簇对全部的子图元的起始顶点和结束顶点进行装配,以完成所述待装配图元的装配。
具体的,对待装配图元的绘图命令进行解析,获得待装配图元中每个子图元的图元类型和每个子图元的绘图起始点和绘制顶点数量,由于每种图元类型所设定的顶点装配方式不同,因此根据图元类型和预设的分配策略对绘图起始点和绘制顶点数量进行分解,获得每个子图元的顶点任务包,顶点任务包中包括每个子图元的起始顶点和结束顶点,并将子图元的起始顶点和结束顶点发送至任意一个预设的图形簇中,图形簇根据起始顶点和结束顶点对子图元进行装配,当全部的子图元装配完成后,待装配图元完成装配。
在具体实施例中,所述预设的分配策略包括:
当所述子图元的图元类型为点时,所述子图元的起始顶点和所述子图元的结束顶点相同;
当所述子图元的图元类型为线且不存在共用顶点时,所述子图元的起始顶点为2N1-1,所述子图元的结束顶点为2N1;其中,N1为大于或等于1的整数;
当所述子图元的图元类型为三角形且不存在共用顶点时,所述子图元的起始顶点为3N1-2,所述子图元的结束顶点为3N1且能被3整除;
当所述子图元的图元类型为线条带时,所述子图元的起始顶点为N1,所述子图元的结束顶点大于N1;
当所述子图元的图元类型为三角形条带时,所述子图元的起始顶点为N1,所述子图元的结束顶点大于N1+1。
具体的,当子图元的图元类型为点时,子图元的起始顶点为1,则子图元的结束顶点也为1;当多个子图元的图元类型均为点时,且这些子图元的装配顺序为连续的,则这些子图元所连成的结束顶点会大于1;当子图元的图元类型为线且不存在共用顶点时,子图元的起始顶点为3,子图元的结束顶点为4;当子图元的图元类型为三角形且不存在共用顶点时,子图元的起始顶点为1,子图元的结束顶点为3;当子图元的图元类型为线条带时,子图元的起始顶点为2,所述子图元的结束顶点大于2;当子图元的图元类型为三角形条带时,子图元的起始顶点为4,子图元的结束顶点大于5。通过设定不同图元类型的子图元的顶点分配策略,保证每个子图元所装配后的图形为完整。
在具体实施例中,请参阅图2,步骤103中利用预设的图形簇对全部的子图元的起始顶点和结束顶点进行装配,之后还包括:
步骤201、检测每个子图元的装配状态;所述装配状态包括完成装配和未完成装配;
步骤202、当所述子图元的装配状态为未完成装配时,继续对所述子图元进行装配,并返回所述检测所述子图元的装配状态的步骤,直至全部的子图元完成装配,以完成所述待装配图元的装配。
具体的,并行的检测每个子图元的装配状态,当其中子图元A的装配状态为装配未完成时,继续对子图元A进行装配,并继续检测子图元A的装配状态,直至全部的子图元的装配状态为完成装配时,待装配图元完成装配。并行检测能够降低实时的检测数据,当某些子图元的装配状态为完成装配时,就无需对这些已完成装配的子图元进行装配状态的检测,从而减少了计算量。
在具体实施例中,请参阅图3,步骤201中检测每个子图元的装配状态,包括:
步骤301、对待装配图元的全部顶点号进行排序,获得顶点号序列;
步骤302、获取当前已装配完成的顶点号,并按照已装配完成的顶点号在所述顶点号序列中进行标记获得图元状态表;所述图元状态表用于表征每个顶点号的装配状态;
步骤303、根据所述图元状态表中的标记和预设的检测规则获得所述子图元的装配状态。
具体的,对待装配图元的全部的顶点号进行排序,获得顶点号序列,如1.2.3...n;获取当期已装配完成的顶点号,如顶点3、4、5、6、7和8已完成装配,则在顶点序列号中对已装配完成的顶点号进行标记,获得标记V3、标记V4、标记V5、标记V6、标记V7和标记V8获得图元状态表;图元状态表示意图如图4所示(为使图片简洁,未装配完成的顶点号未显示),通过查询图元状态表中的标记并结合预设的检测规则获得子图元的装配状态。通过构建图元状态表,使图元的状态检测方法的复杂度减小,并且能够及时获取到可以进入下一阶段的图元,避免集中处理造成拥塞。
在具体实施例中,所述预设的检测规则包括:
所述子图元的图元类型为点时,若所述图元状态表中的标记所对应的目标顶点为所述子图元的起始顶点或所述子图元的结束顶点时,则所述子图元的装配状态为完成装配;具体的,若子图元B的起始顶点或结束顶点为1时,若图元状态表中存在标记V1,则子图元B的装配状态为装配已完成。
所述子图元的图元类型为线时,获取所述图元状态表中的第N2个顶点号的第一目标标记;当N2为奇数时,若所述图元状态表中存在第N2+1个顶点号的标记,则第N2/2+1个子图元的装配状态为完成装配;当N2为偶数时,若所述图元状态表中存在第N2-1个顶点号的标记,则第N2/2+1个子图元的装配状态为完成装配。具体的,当图元状态表中存在标记V5时,若图元状态表同时存在标记V6,则第3个子图元的装配状态为完成装配;当图元状态表中存在标记V6,若图元状态表同时存在标记V5,则第4个子图元的装配状态为完成装配。
所述子图元的图元类型为三角形时,获取所述图元状态表中的第N3个顶点号的第二目标标记;当N3对3作商,余数为1时,若所述图元状态表中存在第N3+1个顶点号和第N3+2个顶点号的标记,则第N3/3+1个子图元的装配状态为已完成装配;当N3对3作商,余数为2时,若所述图元状态表中存在第N3-1个顶点号和第N3+1个顶点号的标记,则第N3/3+1个子图元的装配状态为已完成装配;当N3对3作商,余数为0时,若所述图元状态表中存在第N3-2个顶点号和第N3-1个顶点号的标记,则第N3/3个子图元的装配状态为已完成装配。具体的,当图元状态表中具有标记V4时,若图元状态表中同时存在标记V5和标记V6,则第2个子图元的装配状态为已完成装配,当图元状态表中具有标记V5时,若图元状态表中同时存在标记V4和标记V6,则第2个子图元的装配状态为装配已完成;当图元状态表中具有标记V6时,若图元状态表中同时存在标记V4和标记V5,则第2个子图元的装配状态为装配已完成。
所述子图元的图元类型为线条带时,获取所述图元状态表中的第N4个顶点号的第三目标标记;若所述图元状态表中存在第N4-1个顶点号的标记,则第N4-1个子图元的装配状态为已完成装配;若所述图元状态表中存在第N4+1个顶点号的标记,则第N4+1个子图元的装配状态为已完成装配;其中,N4大于1。具体的,当图元状态表中具有标记V2时,若图元状态表中同时存在标记V1,则第1个子图元的装配状态为装配已完成;当图元状态表中具有标记V3时,若图元状态表中同时存在标记V4,则第4个子图元的装配状态为已完成装配。
所述子图元的图元类型为三角形条带时,获取所述图元状态表中的第N5个顶点号的第四目标标记;若所述图元状态表中存在第N5-2个顶点号和第N5-1个顶点号的标记,则第N5-2个子图元的装配状态为已完成装配;其中N5大于2。具体的,当图元状态表中存在标记V3时,若图元状态表中存在标记V1和标记V2,则第1个子图元的装配状态为已完成装配。
或所述子图元的图元类型为三角形条带时,获取所述图元状态表中的第N6个顶点号的第五目标标记;若所述图元状态表中存在第N6-1个顶点号和第N6+1个顶点号的标记,则第N6-1个子图元的装配状态为已完成装配;其中N6大于1。具体的,当图元状态表中存在标记V4时,若图元状态表中同时存在标记V3和标记V5,则第3个子图元的装配状态为已完成装配。
或所述子图元的图元类型为三角形条带时,获取所述图元状态表中的第N7个顶点号的第六目标标记;若所述图元状态表中存在第N7+1个顶点号和第N7+2个顶点号的标记,则第N7个子图元的装配状态为已完成装配;具体的,当图元状态表中具有标记V6时,若图元状态表中同时具有标记V7和标记V8,则第6个子图元的装配状态为装配已完成。
通过设置不同图元类型的装配状态的检测规则,可以确保检测的方法根据子图元的类型进行自动调整,保证所获得的检测结果是准确的。
在具体实施例中,所述方法还包括:当第一目标子图元的图元类型为点、线或三角形时,所述第一目标子图元的结束顶点为与所述第一目标子图元的一端相连的子图元的起始顶点,所述第一目标子图元的起始顶点为与所述第一目标子图元的另一端相连的子图元的结束顶点;所述第一目标子图元为全部的子图元中,非起点子图元和非终点子图元以外的任意一个子图元。具体的,第2个子图元的起始顶点为第1个子图元的结束顶点,第2个子图元的结束顶点为第3个子图元的起始顶点,从而使装配后的子图元为连续的。
在具体实施例中,当第二目标子图元的图元类型为线条带时,所述第二目标子图元的结束顶点的序号i1设为i1=i1+1;所述第二目标子图元为全部的子图元中任意一个子图元。具体的,请参阅图5,对于一个绘制线条带的绘图命令,顶点处理任务被打包分为(1,3),(4,6),(7,8)分发到不同的图元簇进行处理,接收到(1,3)任务包的图元簇,起始顶点为1,结束顶点为4,会装配出图元(1,2),(2,3),(3,4);接收到(4,6)任务包的图元簇,起始顶点为4,结束顶点为7,会装配出图元(4,5),(5,6),(6,7);接收到(7,8)任务包的图元簇,起始顶点为7,结束顶点为8,会装配出图元(7,8)。
在具体实施例中,当第三目标子图元的图元类型为三角形条带时,所述第三目标子图元的结束顶点的序号i2设为i2=i2-1;所述第三目标子图元为全部的子图元中任意一个子图元。具体的,请参阅图6,对于另一个绘制三角形条带的绘图命令,顶点处理任务被打包分为(1,3),(4,7),(8,11),接收到(1,3)任务包的图元簇,起始顶点为1,结束顶点为4,会装配出图元(1,2,3),(2,3,4);接收到(4,7)任务包的图元簇,起始顶点为3,结束顶点为8,会装配出图元(3,4,5),(4,5,6),(5,6,7),(6,7,8);接收到(8,11)任务包的图元簇,起始顶点为7,结束顶点为11,会装配出图元(7,8,9),(8,9,10),(9,10,11)。
在具体实施例中,请参阅图7,为本申请第二实施例中一种图元装配调度系统的结构示意图,所述系统包括:命令处理模块401、图元预装配模块402和图元装配模块403;命令处理模块401用于对待装配图元的绘图命令进行解析,获得所述待装配图元中每个子图元的图元类型和每个子图元的顶点处理任务;所述顶点处理任务包括所述待装配图元的绘图起始点和所述待装配图元的绘制顶点数量;其中,全部的子图元构成所述待装配图元;图元预装配模块402用于根据所述子图元的图元类型和预设的分配策略分解所述顶点处理任务,获得所述子图元的顶点处理任务包;所述顶点处理任务包中包含所述子图元的起始顶点和所述子图元的结束顶点;图元装配模块403用于利用预设的图形簇对全部的子图元的起始顶点和结束顶点进行装配,以完成所述待装配图元的装配。
通过使用本实施例中的系统,可以对待装配图元的绘图命令进行解析,获得每个子图元的类型和顶点处理任务,通过利用子图元的图元类型和预设的根类策略分解顶点处理任务,获得子图元的顶点处理任务包,任意一个图形簇都可以通过对顶点处理包中的起始顶点和结束顶点进行装配,无需再将顶点处理任务包分发至指定的图形簇,减少了渲染管线计算量,还无需要占用大量带宽去传递图元信息,从而避免绘制进程的卡顿。
在具体实施例中,本申请第三实施例一种图元装配调度设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如本申请第一实施例中任一项所述方法的步骤。
在具体实施例中,本申请第四实施例提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如本申请第一实施例中任一项所述方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。故,本申请专利的保护范围应以所附权利要求为准。
Claims (7)
1.一种图元装配调度方法,其特征在于,所述方法包括:
对待装配图元的绘图命令进行解析,获得所述待装配图元中每个子图元的图元类型和每个子图元的顶点处理任务;所述顶点处理任务包括所述待装配图元的绘图起始点和所述待装配图元的绘制顶点数量;其中,全部的子图元构成所述待装配图元;
根据所述子图元的图元类型和预设的分配策略分解所述顶点处理任务,获得所述子图元的顶点处理任务包;所述顶点处理任务包中包含所述子图元的起始顶点和所述子图元的结束顶点;
利用预设的图形簇对全部的子图元的起始顶点和结束顶点进行装配,以完成所述待装配图元的装配;
所述利用预设的图形簇对全部的子图元的起始顶点和结束顶点进行装配,之后还包括:
检测每个子图元的装配状态;所述装配状态包括完成装配和未完成装配;
当所述子图元的装配状态为未完成装配时,继续对所述子图元进行装配,并返回所述检测所述子图元的装配状态的步骤,直至全部的子图元完成装配,以完成所述待装配图元的装配;
所述检测每个子图元的装配状态,包括:
对待装配图元的全部顶点号进行排序,获得顶点号序列;
获取当前已装配完成的顶点号,并按照已装配完成的顶点号在所述顶点号序列中进行标记获得图元状态表;所述图元状态表用于表征每个顶点号的装配状态;
根据所述图元状态表中的标记和预设的检测规则获得所述子图元的装配状态;
所述预设的检测规则包括:
所述子图元的图元类型为点时,若所述图元状态表中的标记所对应的目标顶点为所述子图元的起始顶点或所述子图元的结束顶点时,则所述子图元的装配状态为完成装配;
所述子图元的图元类型为线时,获取所述图元状态表中的第N2个顶点号的第一目标标记;当N2为奇数时,若所述图元状态表中存在第N2+1个顶点号的标记,则第N2/2+1个子图元的装配状态为完成装配;当N2为偶数时,若所述图元状态表中存在第N2-1个顶点号的标记,则第N2/2+1个子图元的装配状态为完成装配;
所述子图元的图元类型为三角形时,获取所述图元状态表中的第N3个顶点号的第二目标标记;当N3对3作商,余数为1时,若所述图元状态表中存在第N3+1个顶点号和第N3+2个顶点号的标记,则第N3/3+1个子图元的装配状态为已完成装配;当N3对3作商,余数为2时,若所述图元状态表中存在第N3-1个顶点号和第N3+1个顶点号的标记,则第N3/3+1个子图元的装配状态为已完成装配;当N3对3作商,余数为0时,若所述图元状态表中存在第N3-2个顶点号和第N3-1个顶点号的标记,则第N3/3个子图元的装配状态为已完成装配;
所述子图元的图元类型为线条带时,获取所述图元状态表中的第N4个顶点号的第三目标标记;若所述图元状态表中存在第N4-1个顶点号的标记,则第N4-1个子图元的装配状态为已完成装配;若所述图元状态表中存在第N4+1个顶点号的标记,则第N4+1个子图元的装配状态为已完成装配;其中,N4大于1;
所述子图元的图元类型为三角形条带时,获取所述图元状态表中的第N5个顶点号的第四目标标记;若所述图元状态表中存在第N5-2个顶点号和第N5-1个顶点号的标记,则第N5-2个子图元的装配状态为已完成装配;其中N5大于2;
或所述子图元的图元类型为三角形条带时,获取所述图元状态表中的第N6个顶点号的第五目标标记;若所述图元状态表中存在第N6-1个顶点号和第N6+1个顶点号的标记,则第N6-1个子图元的装配状态为已完成装配;其中N6大于1;
或所述子图元的图元类型为三角形条带时,获取所述图元状态表中的第N7个顶点号的第六目标标记;若所述图元状态表中存在第N7+1个顶点号和第N7+2个顶点号的标记,则第N7个子图元的装配状态为已完成装配。
2.如权利要求1所述的图元装配调度方法,其特征在于,所述预设的分配策略包括:
当所述子图元的图元类型为点时,所述子图元的起始顶点和所述子图元的结束顶点相同;
当所述子图元的图元类型为线且不存在共用顶点时,所述子图元的起始顶点为2N1-1,所述子图元的结束顶点为2N1;其中,N1为大于或等于1的整数;
当所述子图元的图元类型为三角形且不存在共用顶点时,所述子图元的起始顶点为3N1-2,所述子图元的结束顶点为3N1且能被3整除;
当所述子图元的图元类型为线条带时,所述子图元的起始顶点为N1,所述子图元的结束顶点大于N1;
当所述子图元的图元类型为三角形条带时,所述子图元的起始顶点为N1,所述子图元的结束顶点大于N1+1。
3.如权利要求1所述的图元装配调度方法,其特征在于,所述方法还包括:当第一目标子图元的图元类型为点、线或三角形时,所述第一目标子图元的结束顶点为与所述第一目标子图元的一端相连的子图元的起始顶点,所述第一目标子图元的起始顶点为与所述第一目标子图元的另一端相连的子图元的结束顶点;所述第一目标子图元为全部的子图元中,非起点子图元和非终点子图元以外的任意一个子图元。
4.如权利要求1所述的图元装配调度方法,其特征在于,当第二目标子图元的图元类型为线条带时,所述第二目标子图元的结束顶点的序号i1设为i1=i1+1;所述第二目标子图元为全部的子图元中任意一个子图元。
5.如权利要求1所述的图元装配调度方法,其特征在于,当第三目标子图元的图元类型为三角形条带时,所述第三目标子图元的结束顶点的序号i2设为i2=i2-1;所述第三目标子图元为全部的子图元中任意一个子图元。
6.一种图元装配调度系统,其特征在于,所述系统包括:命令处理模块、图元预装配模块、图元装配模块和装配状态检测模块;
所述命令处理模块用于对待装配图元的绘图命令进行解析,获得所述待装配图元中每个子图元的图元类型和每个子图元的顶点处理任务;所述顶点处理任务包括所述待装配图元的绘图起始点和所述待装配图元的绘制顶点数量;其中,全部的子图元构成所述待装配图元;
所述图元预装配模块用于根据所述子图元的图元类型和预设的分配策略分解所述顶点处理任务,获得所述子图元的顶点处理任务包;所述顶点处理任务包中包含所述子图元的起始顶点和所述子图元的结束顶点;
所述图元装配模块用于利用预设的图形簇对全部的子图元的起始顶点和结束顶点进行装配,以完成所述待装配图元的装配;
所述装配状态检测模块用于检测每个子图元的装配状态;所述装配状态包括完成装配和未完成装配;当所述子图元的装配状态为未完成装配时,继续对所述子图元进行装配,并返回所述检测所述子图元的装配状态的步骤,直至全部的子图元完成装配,以完成所述待装配图元的装配;
所述检测每个子图元的装配状态,包括:
对待装配图元的全部顶点号进行排序,获得顶点号序列;
获取当前已装配完成的顶点号,并按照已装配完成的顶点号在所述顶点号序列中进行标记获得图元状态表;所述图元状态表用于表征每个顶点号的装配状态;
根据所述图元状态表中的标记和预设的检测规则获得所述子图元的装配状态;
所述预设的检测规则包括:
所述子图元的图元类型为点时,若所述图元状态表中的标记所对应的目标顶点为所述子图元的起始顶点或所述子图元的结束顶点时,则所述子图元的装配状态为完成装配;
所述子图元的图元类型为线时,获取所述图元状态表中的第N2个顶点号的第一目标标记;当N2为奇数时,若所述图元状态表中存在第N2+1个顶点号的标记,则第N2/2+1个子图元的装配状态为完成装配;当N2为偶数时,若所述图元状态表中存在第N2-1个顶点号的标记,则第N2/2+1个子图元的装配状态为完成装配;
所述子图元的图元类型为三角形时,获取所述图元状态表中的第N3个顶点号的第二目标标记;当N3对3作商,余数为1时,若所述图元状态表中存在第N3+1个顶点号和第N3+2个顶点号的标记,则第N3/3+1个子图元的装配状态为已完成装配;当N3对3作商,余数为2时,若所述图元状态表中存在第N3-1个顶点号和第N3+1个顶点号的标记,则第N3/3+1个子图元的装配状态为已完成装配;当N3对3作商,余数为0时,若所述图元状态表中存在第N3-2个顶点号和第N3-1个顶点号的标记,则第N3/3个子图元的装配状态为已完成装配;
所述子图元的图元类型为线条带时,获取所述图元状态表中的第N4个顶点号的第三目标标记;若所述图元状态表中存在第N4-1个顶点号的标记,则第N4-1个子图元的装配状态为已完成装配;若所述图元状态表中存在第N4+1个顶点号的标记,则第N4+1个子图元的装配状态为已完成装配;其中,N4大于1;
所述子图元的图元类型为三角形条带时,获取所述图元状态表中的第N5个顶点号的第四目标标记;若所述图元状态表中存在第N5-2个顶点号和第N5-1个顶点号的标记,则第N5-2个子图元的装配状态为已完成装配;其中N5大于2;
或所述子图元的图元类型为三角形条带时,获取所述图元状态表中的第N6个顶点号的第五目标标记;若所述图元状态表中存在第N6-1个顶点号和第N6+1个顶点号的标记,则第N6-1个子图元的装配状态为已完成装配;其中N6大于1;
或所述子图元的图元类型为三角形条带时,获取所述图元状态表中的第N7个顶点号的第六目标标记;若所述图元状态表中存在第N7+1个顶点号和第N7+2个顶点号的标记,则第N7个子图元的装配状态为已完成装配。
7.一种图元装配调度设备,包括存储器和处理器,其特征在于,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至5中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311640802.4A CN117350915B (zh) | 2023-12-04 | 2023-12-04 | 一种图元装配调度方法、系统及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311640802.4A CN117350915B (zh) | 2023-12-04 | 2023-12-04 | 一种图元装配调度方法、系统及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117350915A CN117350915A (zh) | 2024-01-05 |
CN117350915B true CN117350915B (zh) | 2024-03-26 |
Family
ID=89365246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311640802.4A Active CN117350915B (zh) | 2023-12-04 | 2023-12-04 | 一种图元装配调度方法、系统及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117350915B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5793371A (en) * | 1995-08-04 | 1998-08-11 | Sun Microsystems, Inc. | Method and apparatus for geometric compression of three-dimensional graphics data |
CN111476706A (zh) * | 2020-06-02 | 2020-07-31 | 长沙景嘉微电子股份有限公司 | 顶点并行处理方法、装置及计算机存储介质、电子设备 |
CN112581584A (zh) * | 2020-12-24 | 2021-03-30 | 西安翔腾微电子科技有限公司 | 一种基于SysML视图的GPU图元装配模块的TLM装置及操作方法 |
CN112991143A (zh) * | 2021-05-06 | 2021-06-18 | 南京芯瞳半导体技术有限公司 | 一种图元装配的方法、装置及计算机存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8769207B2 (en) * | 2008-01-16 | 2014-07-01 | Via Technologies, Inc. | Caching method and apparatus for a vertex shader and geometry shader |
US11043028B2 (en) * | 2018-11-02 | 2021-06-22 | Nvidia Corporation | Reducing level of detail of a polygon mesh to decrease a complexity of rendered geometry within a scene |
-
2023
- 2023-12-04 CN CN202311640802.4A patent/CN117350915B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5793371A (en) * | 1995-08-04 | 1998-08-11 | Sun Microsystems, Inc. | Method and apparatus for geometric compression of three-dimensional graphics data |
CN111476706A (zh) * | 2020-06-02 | 2020-07-31 | 长沙景嘉微电子股份有限公司 | 顶点并行处理方法、装置及计算机存储介质、电子设备 |
CN112581584A (zh) * | 2020-12-24 | 2021-03-30 | 西安翔腾微电子科技有限公司 | 一种基于SysML视图的GPU图元装配模块的TLM装置及操作方法 |
CN112991143A (zh) * | 2021-05-06 | 2021-06-18 | 南京芯瞳半导体技术有限公司 | 一种图元装配的方法、装置及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117350915A (zh) | 2024-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112012001132B4 (de) | Kompression einer tessellierten Primitivindexliste in einem kachelbasierten Rendering-System | |
DE102010046891B4 (de) | Hierarchische Netzquantisierung für speichereffizientes Raytracing | |
CN103026402B (zh) | 显示压缩超级切片图像 | |
DE102013018139A1 (de) | Technik zur Speicherung gemeinsamer Vertices | |
CN110096691A (zh) | 基于电子书的排版方法、电子设备及计算机存储介质 | |
DE102013018136A1 (de) | Technik zur Speicherung gemeinsamer Vertices | |
DE102018104188A1 (de) | Kombiniertes Rendering- und Berechnungs-Ressourcenzuweisungsverwaltungssystem | |
CN110223216B (zh) | 一种基于并行plb的数据处理方法、装置及计算机存储介质 | |
US20200364047A1 (en) | High throughput neural network operations using inter-layer memory layout transformation | |
JP5706754B2 (ja) | データ処理装置及びデータ処理方法 | |
DE102013017981A1 (de) | Optimierung einer Dreieck-Topologie für Pfad-Bilderzeugung | |
CN117350915B (zh) | 一种图元装配调度方法、系统及设备 | |
JPH03116237A (ja) | 知識処理方法 | |
CN114138468B (zh) | 一种封装任务量自适应分配方法、装置及存储介质 | |
CN115035128A (zh) | 基于fpga的图像重叠滑窗分割方法及系统 | |
DE102016125846A1 (de) | Makro-E/A-Einheit für Grafikprozessor | |
DE202014011350U1 (de) | FFT- Beschleuniger | |
DE102018114303A1 (de) | Verfahren zur grafischen Verarbeitung unter Verwendung von vordefinierten Render-Chunks | |
EP3438936A1 (en) | Method and apparatus for managing graphics layers within a data processing system | |
DE60306388T2 (de) | Verfahren und vorrichtung zur bilddatenverarbeitung unter verwendung von bildstreifen und zirkularadressierungsanordnung | |
US20220188380A1 (en) | Data processing method and apparatus applied to graphics processing unit, and electronic device | |
CN114328747A (zh) | 数据同步方法、装置、计算机设备和介质 | |
CN111882482A (zh) | 图形分块数据读写方法、装置、设备及存储介质 | |
DE102008004978B4 (de) | Verfahren zum Speichern und Auslesen einer Folge von Datenwerten | |
DE19951878A1 (de) | Zentrale Verarbeitungseinheit und System mit einer Vorabruf-Warteschlange und einem Befehls-Cache |
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 |