CN112991143A - 一种图元装配的方法、装置及计算机存储介质 - Google Patents

一种图元装配的方法、装置及计算机存储介质 Download PDF

Info

Publication number
CN112991143A
CN112991143A CN202110488310.2A CN202110488310A CN112991143A CN 112991143 A CN112991143 A CN 112991143A CN 202110488310 A CN202110488310 A CN 202110488310A CN 112991143 A CN112991143 A CN 112991143A
Authority
CN
China
Prior art keywords
primitive
assembling
primitive assembling
command
processor
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
Application number
CN202110488310.2A
Other languages
English (en)
Inventor
樊良辉
孙建康
陈成
张竞丹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Xintong Semiconductor Technology Co ltd
Original Assignee
Nanjing Xintong Semiconductor Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing Xintong Semiconductor Technology Co ltd filed Critical Nanjing Xintong Semiconductor Technology Co ltd
Priority to CN202110488310.2A priority Critical patent/CN112991143A/zh
Publication of CN112991143A publication Critical patent/CN112991143A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

本发明实施例公开了一种图元装配的方法、装置及计算机存储介质,所述方法包括:根据接收到的绘制命令生成多个调度指令;将所述多个调度指令分配给多个图元装配模块并行执行图元装配处理;输出装配完毕后的图元。

Description

一种图元装配的方法、装置及计算机存储介质
技术领域
本发明实施例涉及图像处理(GPU,Graphics Processing Unit)技术领域,尤其涉及一种图元装配方法、装置及计算机存储介质。
背景技术
常规的图形渲染管线中通常包括图元装配模块,其被配置为将顶点着色器所输出的所有顶点作为输入,根据顶点的原始连接关系还原出图形的网格结构,从而转换为图元并输出。
而当前图形渲染管线中仅有一个图元装配模块进行图元装配,随着目前GPU计算能力的不断提升,单一图元装配模块进行图元装配的处理方式极大限制了图元装配的效率,从而成为影响图形渲染管线性能提升的瓶颈之一。
发明内容
有鉴于此,本发明实施例期望提供一种图元装配的方法、装置及计算机存储介质,能够实现多图元装配并行处理顶点数据,从而提高了图元装配的效率。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供了一种图元装配的方法,包括:
根据接收到的绘制命令生成多个调度指令;
将所述多个调度指令分配给多个图元装配模块并行执行图元装配处理;
输出装配完毕后的图元。
第二方面,本发明实施例提供了一种图元装配装置,所述装置包括:命令处理器以及多个图元装配模块;其中,
所述命令处理器,经配置为根据接收到的绘制命令生成多个调度指令;以及将所述多个调度指令分配给多个图元装配模块并行执行图元装配处理;
所述多个图元装配模块,经配置为针对各自的调度指令执行图元装配并输出装配完毕后的图元。
第三方面,本发明实施例提供了一种GPU,所述GPU包括第二方面所述的图元装配装置。
第四方面,本发明实施例提供了一种计算机存储介质,所述计算机可读介质存储有图元装配程序,所述图元装配程序被至少一个处理器执行时实现上述第一方面所述的图元装配方法的步骤。
本发明实施例提供了一种图元装配的方法、装置及计算机存储介质,通过增加图元装配模块的数量,实现多图元装配并行处理顶点数据,从而提高了图元装配的效率。
附图说明
图1为可实施本发明实施例一个或多个方面的计算装置的框图。
图2为说明图1中处理器、GPU和系统存储器的实例实施方案的框图。
图3为更加详细地说明由图2的GPU结构所形成的图形处理管线的框图。
图4为图形处理管线中一种图元装配级的组成框图。
图5为图形处理管线中另一种图元装配级的组成框图。
图6为本发明实施例提供的LINE_LOOP图元拆分方法示意图。
图7为图形处理管线中又一种图元装配级的组成框图。
图8为本发明实施例提供的一种图元装配的方法流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
一般来说,GPU在对图形或图像进行渲染的过程中,均需要经过图元装配过程,即在获得顶点之后,将顶点按照原始连接关系还原出图形的网格结构,即图元,但目前而当前图形渲染管线中仅有一个图元装配模块进行图元装配,上述单一图元装配模块进行图元装配的处理方式极大限制了图元装配的效率。而本发明实施例期望描述一种用于进行高效图元装配的技术,通过增加图元装配模块数量的方式来提高图元装配效率。
图1为本发明实施例提供的一种能够实施用于进行高效图元装配技术的计算装置1,该计算装置1的实例包括但不限于:无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器、固定或移动媒体播放器等。在图1的实例中,该计算装置1可以包括:处理器6、系统存储器10和GPU12。计算装置1还可包含显示处理器14、收发器模块3、用户接口4和显示器8。收发器模块3和显示处理器14两者可为与处理器6和/或GPU 12相同的集成电路(IC)的部分,两者可在包含处理器6和/或GPU 12的一或多个IC的外部,或可形成于在包含处理器6和/或GPU 12的IC外部的IC中。
为清楚起见,计算装置1可包含图1中未图示的额外模块或单元。举例来说,计算装置1可在其为移动无线电话或的实例中包含扬声器和麦克风(两者均未在图1中示出)来实现电话通信,或在计算装置1为媒体播放器的情况下包含扬声器。计算装置1还可包含摄像机。此外,计算装置1中所示的各种模块和单元可能不是在计算装置1的每个实例中都是必需的。举例来说,在计算装置1为桌上型计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口4和显示器8可在计算装置1外部。
用户接口4的实例包含(但不限于)轨迹球、鼠标、键盘和其它类型的输入装置。用户接口4还可为触摸屏,并且可作为显示器8的部分并入。收发器模块3可包含电路以允许计算装置1与另一装置或网络之间的无线或有线通信。收发器模块3可包含调制器、解调器、放大器和用于有线或无线通信的其它此类电路。
处理器6可为微处理器,例如中央处理单元(CPU),其经配置以处理供执行的计算机程序的指令。处理器6可包括控制计算装置1的运算的通用或专用处理器。用户可将输入提供到计算装置1,以致使处理器6执行一或多个软件应用程序。在处理器6上执行的软件应用程序可包含(例如)操作系统、文字处理器应用程序、电子邮件应用程序、电子表格应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。另外,处理器6可执行用于控制GPU 12的运算的GPU驱动程序22。用户可经由一或多个输入装置(未图示)(例如,键盘、鼠标、麦克风、触摸垫或经由用户输入接口4耦合到计算装置1的另一输入装置)将输入提供到计算装置1。
在处理器6上执行的软件应用程序可包含一或多个图形渲染指令,其指令处理器6来致使将图形数据渲染到显示器8。在一些实例中,所述软件指令可符合图形应用程序编程接口(API) ,例如开放式图形库API、开放式图形库嵌入系统(OpenGL ES)API、Direct3DAPI、X3D API、RenderMan API、WebGL API、开放式计算语言(OpenCLT M)、RenderScript或任何其它异构计算API,或任何其它公用或专有标准图形或计算API。所述软件指令还可为针对无渲染算法(例如计算摄影、卷积神经网络、视频处理、科学应用程序等)的指令。为了处理图形渲染指令,处理器6可向GPU 12发出一或多个图形渲染命令发(例如,通过GPU驱动程序22),以致使GPU 12执行图形数据的渲染中的一些或全部。在一些实例中,待渲染的图形数据可包含例如点、线、三角形、四边形、三角形带等图形图元的列表。
GPU 12可经配置以执行图形运算,从而将一或多个图形图元渲染到显示器8。因此,当在处理器6上执行的软件应用中的一者需要图形处理时,处理器6可将图形命令和图形数据提供到GPU 12以用于渲染到显示器8。图形数据可包含(例如)绘制命令、状态信息、图元信息、纹理信息等。在一些情况下,GPU 12可内置有高度并行结构,其提供比处理器6高效的对复杂图形相关运算的处理。举例来说,GPU 12可包含经配置来以并行方式对多个顶点或像素进行运算的多个处理元件,例如着色器单元。在一些情况下,GPU 12的高度并行性质允许GPU 12比使用处理器6直接将场景绘制到显示器8更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器8上。
在一些情况下,可将GPU 12集成到计算装置1的母板中。在其它情况下,GPU 12可存在于图形卡上,所述图形卡安装在计算装置1的母板中的端口中,或可以其它方式并入在经配置以与计算装置1互操作的外围装置内。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。GPU 12还可包含一或多个处理器核心,使得GPU 12可被称作多核处理器。
图形存储器40可为GPU 12的一部分。因此,GPU 12可在不使用总线的情况下从图形存储器40读取数据且将数据写入到图形存储器40。换句话说,GPU 12可使用本地存储装置而不是芯片外存储器在本地处理数据。此类图形存储器40可被称作芯片上存储器。这允许GPU 12通过消除GPU 12经由总线读取和写入数据的需要来以更高效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU 12可不包含单独的存储器,而是经由总线利用系统存储器10。图形存储器40可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
在一些实例中,GPU 12可将完全形成的图像存储在系统存储器10中。显示处理器14可从系统存储器10检索图像,且输出致使显示器8的像素照亮以显示所述图像的值。显示器8可为计算装置1的显示器,其显示由GPU 12产生的图像内容。显示器8可为液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。
图2是进一步详细说明图1中处理器6、GPU 12和系统存储器10的实例实施方案的框图。如图2所示,处理器6可执行至少一个软件应用程序18、图形API 20和GPU 驱动程序22,其中的每一者可为一或多个软件应用程序或服务。在一些实例中,图形API 20和GPU驱动程序22可实施为处理器6的硬件单元。
可供处理器6和GPU 12使用的存储器可包含系统存储器10和输出缓冲器16。输出缓冲器16可为系统存储器10的部分或可与系统存储器10分离。输出缓冲器16可存储经渲染图像数据,例如像素数据,以及任何其它数据。输出缓冲器16还可被称为帧缓冲器或显存。
图形存储器40可包含片上存储装置或存储器,其物理上集成到GPU 12的集成电路芯片中。如果图形存储器40是在芯片上,那么与经由系统总线从系统存储器10读取值或将值写入到系统存储器10相比,GPU 12能够更加快速地从图形存储器40读取值或将值写入到图形存储器40。
输出缓冲器16存储GPU 12的目的地像素。每个目的地像素可与唯一屏幕像素位置相关联。在一些实例中,输出缓冲器16可存储每个目的地像素的色彩分量和目的地α值。举例来说,输出缓冲器16可存储每个像素的红色、绿色、蓝色、α(RGBA)分量,其中“RGB”分量对应于色彩值,并且“A”分量对应于目的地α值(例如,用于图像合成的不透明度值)。尽管将输出缓冲器16和系统存储器10说明为单独的存储器单元,但在其它实例中,输出缓冲器16可以是系统存储器10的一部分。此外,输出缓冲器16还可能够存储除像素之外的任何合适的数据。
软件应用程序18可为利用GPU 12的功能性的任何应用程序。举例来说,软件应用程序18可为GUI应用程序、操作系统、便携式制图应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序或使用2D或3D图形的另一类型的软件应用程序。
软件应用程序18可包含指令GPU 12渲染图形用户接口(GUI)和/或图形场景的一或多个绘制指令。举例来说,绘制指令可包含界定将由GPU 12渲染的一组一或多个图形图元的指令。在一些实例中,绘制指令可共同地界定用于GUI中的多个开窗表面的全部或部分。在额外实例中,所述绘制指令可共同地定义图形场景的全部或部分,所述图形场景包含在由应用程序定义的模型空间或世界空间内的一或多个图形对象。
软件应用程序18可经由图形API 20调用GPU驱动程序22,以向GPU 12发出一或多个命令,以用于将一或多个图形图元渲染到可显示的图形图像中。举例来说,软件应用程序18可调用GPU驱动程序22,以向GPU 12提供图元定义。在一些情况下,图元定义可以例如三角形、矩形、三角形扇、三角形带等的绘制图元的列表的形式被提供到GPU 12。图元定义可包含指定与待呈现的图元相关联的一或多个顶点的顶点规格。所述顶点规格可包含每个顶点的位置坐标,且在一些情况下包含与顶点相关联的其它属性,例如色彩属性、法向量和纹理坐标。图元定义还可包含图元类型信息(例如,三角形、矩形、三角形扇、三角形带等)、缩放信息、旋转信息及类似者。
基于由软件应用程序18向GPU驱动程序22发出的指令,GPU驱动程序22可调配指定供GPU 12执行的一或多个运算以便渲染图元的一或多个命令。当GPU 12接收到来自处理器6的命令时,GPU 12可使用处理器集群46执行图形处理管线,以便对命令进行解码,并对图形处理管线进行配置以执行命令中所制定的操作。
处理器集群46可包含一或多个可编程处理单元24和/或一或多个固定功能处理单元26。对于上述两种处理单元,可编程处理单元24可包含例如被配置成执行从处理器6下载到GPU 12上的一或多个着色器程序的可编程着色器单元。在一些实例中,可编程着色器单元可被称为“着色器处理器”或“统一着色器”,且可被配置为能够至少执行顶点和片元着色操作以呈现图形;可选地,可编程着色器单元还可以被配置执行几何或其它着色操作以呈现图形。因此,处理器集群46中的可编程着色器单元可至少包含顶点着色器单元、片元着色器单元,此外,还可以包含几何着色器单元、外壳着色器单元、域着色器单元、计算着色器单元和/或统一着色器单元。在具体实施过程中,可编程着色器单元可各自包含用于提取和解码操作的一或多个组件、用于进行算术计算的一或多个ALU、一或多个存储器、高速缓存和寄存器。
并且,固定功能处理单元26可包含经硬连线以执行某些功能的硬件。尽管固定功能硬件可经由例如一或多个控制信号而配置以执行不同功能,但所述固定功能硬件通常并不包含能够接收用户编译程序的程序存储器。在一些实例中,处理器集群46中的固定功能处理单元26可包含例如执行图元装配的处理单元、执行光栅操作的处理单元,所述光栅操作例如深度测试、剪刀测试、α掺合等。对于执行图元装配的处理单元来说,其能够将通过顶点着色器单元已完成着色的顶点按照原始连接关系还原出图形的网格结构,即图元,从而供后续片元着色器单元进行处理。
一般来说,GPU 12从处理器6所接收到的命令,其示例为,处理器6执行GPU驱动程序22,以使得GPU驱动程序22可基于由软件应用程序18向GPU驱动程序22发出的指令产生定义用于由GPU 12执行的操作集合的命令流。所述命令流能够控制处理器集群46中可编程处理单元24和固定功能处理单元26的操作。
如上所述,GPU 12可包含可从GPU驱动程序22接收命令流的命令处理器30。命令处理器30可以是被配置成接收并处理一或多个命令流的硬件与软件的任意组合。由此,命令处理器30可在本地控制GPU 12的资源而无需处理器6的干预。举例来说,GPU 12的命令处理器30可从处理器6接收一个或一个以上“任务”。命令处理器30可独立地调度所述任务由GPU12的资源(比如一或多个可编程处理单元24和一或多个固定功能处理单元26)执行。在一个实例中,命令处理器30可以是硬件处理器。在图2中所示出的实例中,命令处理器30可包含于GPU 12中。在其它实例中,命令处理器30可以是与处理器6和GPU 12分离的单元。
GPU驱动程序22可向命令处理器30发送包括待由GPU 12执行的单一或者多条绘制命令。命令处理器30可以接收绘制命令,且基于该绘制命令次序依序地生成单一或者多个调度指令,该调度指令可以由处理器集群46中的一或多个处理单元执行。
图3是进一步以图2中所示的GPU结构中由处理器集群46所形成的图形处理管线80示例,需要说明的是,图形处理管线80是利用处理器集群46中所包含的可编程处理单元24和固定功能处理单元26通过级联形成的逻辑结构,相应来说,图形处理管线80通常包含可编程级(如图3中圆角框示意)和固定功能级(如图3中方框示意),举例来说,可编程级可由处理器集群46中的可编程处理单元24来执行,固定功能级可由处理器集群46中的固定功能处理单元26实现。如图3所示,图形处理管线80所包括的各级依次为:输入汇编器级82,在图3的实例中展示为固定功能级且通常负责将图形数据(三角形、线和点)供应到图形处理管线80。举例来说,输入汇编器级82可收集高阶表面、图元等的顶点数据,且将顶点数据和属性输出到顶点着色器级84。
顶点着色器级84,在图3中展示为可编程级,且负责处理所接收顶点数据和属性,并通过每次针对每个顶点实施一组操作来处理顶点数据。
图元装配级86,在图3中展示为固定功能级,负责收集顶点着色器级84输出的顶点并将所述顶点组成几何图元,以由几何着色器级88处理。例如,图元装配级86可以配置为将每三个连续的顶点组成为几何图元(即三角形),以发送到几何着色器级88。在一些实施例中,特定的顶点可以被重复用于连续的几何图元(例如,三角形带中的两个连续的三角形可以共享两个顶点)。图元装配级86发送几何图元(即相关顶点的集合)到几何着色器级88。
几何着色器级88,在图3中展示为可编程级,负责通过对几何图元实施一组操作(即几何着色程序或程序)来处理几何图元。细分曲面操作可以由每个几何图元生成一个或更多几何图元。换句话说,几何着色器级88可以将每个几何图元再分为更细网眼的两个或多个几何图元,用于被剩余的图形处理管线600处理。几何着色器级88发送几何图元到光栅器级90。
光栅器级90通常为负责修剪和准备片元着色器级92的图元的固定功能级。举例来说,光栅器级90可产生若干碎片以供片元着色器级92进行阴影处理。
片元着色器级92,在图3中展示为可编程级从光栅器级90接收碎片且产生例如颜色等每像素数据。片元着色器级92还可执行例如纹理混合和照明模型计算等每像素处理。
输出合并器级94,在图3中展示为固定功能级,通常负责对像素数据实施多种操作,例如实施透明测试(alpha test)、模板测试(stencil test)、以及将像素数据与对应于与该像素相关的其他片段的其他像素数据混合。当输出合并器级94已经完成处理像素数据(即输出数据)时,可以将处理完成的像素数据写入到渲染目标,例如输出缓冲器16以产生最终结果。
而本发明实施例期望能够通过增加图元装配级中图元装配模块的数量,提高图元装配的效率。基于此,参见图4,其为图3中所示的图元装配级86更详细的说明框图,在本发明实施例中,图元装配级86针对多个顶点数据进行装配采用多个图元装配模块并行处理,因此可以并行传入多个顶点数据,并针对该并行传入的多个顶点数据并行进行图元装配。
在一些示例中,如图4所示,图元装配级86中可以包括顶点抓取模块8601、多个图元装配模块8604(8601-1,8601-2,…,8601-N),其中N为自然数,表示图元装配模块的个数,8604-N表示第N个图元装配模块。
顶点抓取模块8601可根据命令处理器30生成的调度指令,经配置从显存中抓取(也可以理解为读取)该调度指令中包括的待装配的顶点数据。需要说明的是,该待装配的顶点数据可以是经过图形处理管线80中的顶点着色器级84完成顶点着色之后的顶点数据。举例来说,该调度指令中可以包括待装配的顶点数据的顶点信息,该顶点信息至少包括以下一项或多项:顶点绘制模式、待装配的顶点数据在显存中的存储地址或索引、待装配的顶点数据格式、待装配的顶点数据数目等信息。
图元装配模块8604可以根据顶点抓取模块8601抓取的待装配的顶点数据,生成并输出装配完毕后的图元。
在另一些示例中,如图5所示,图元装配级86中还可以包括顶点数据缓存8602、顶点发送模块8603和图元数据缓存模块8605。其中,顶点发送模块8603可以在对顶点数据缓存8602中的顶点数据进行读取后,向每一个图元装配模块一次性发送M个有效的顶点数据(M为正整数,M的取值取决于每一个图元装配模块装配顶点的能力),每一个图元装配模块根据图元类型对接收到的顶点数据进行图元装配,然后,每一个图元装配模块将装配完毕后的图元输出给图元数据缓存8605,图元数据缓存8605可以用于存储接收的图元。从而,多个图元装配模块可以并行(同时)处理多个顶点数据,提升图元装配的效率。
在一些示例中,命令处理器30接收由CPU端下发的单条绘制命令(也可以称为draw_call),其中,单条绘制命令中顶点数据的数量大于预设的第一门限值;其次,再通过命令处理器30将该单条绘制命令拆解为多个调度指令(也就是说,用户指定的一条绘制命令中可能包含了过多的顶点数据);接着,命令处理器30再根据图元类型,将该draw_call拆解为多个调度指令;然后,命令处理器30将拆分后的多个调度指令分配给多个图元装配模块。
具体可以实现为:
命令处理器30先判断接收的每一个draw_call中的顶点数据的数量和预设的第一门限值之间的关系,若该顶点数据的数量大于预设的第一门限值,则进一步根据图元类型,对该draw_call进行拆分。
需要说明的是,在本申请实施例中,图元类型通常可以包括:POINT、LINE、LINE_STRIP、LINE_LOOP、TRIANGLE、TRIANGLE_STRIP、TRIANGLE_FAN、TQUAD、QUAD_STRIP以及POLYGON。下面对进一步根据图元类型,对该draw_call进行拆分的方法进行详细说明。
命令处理器30先检测接收的draw_call中是否有图元重启。
若draw_call存在图元重启,则命令处理器30在该图元重启的位置将draw_call拆解为多个一级调度指令(可以简称为draw_1st);然后,再根据图元类型和图元装配模块的数量N,将多个draw_1st继续拆分获得多个终级调度指令draw_2nd。也可理解为,在图元重启位置结束当前图元绘制,并在该位置重新开始绘制。例如,若draw_call图元重启的位置为v4,拆分后所得到的结果(draw_1st)可以如表1所示。
表1
Figure 244610DEST_PATH_IMAGE001
若draw_call不存在图元重启,则命令处理器30根据图元类型和图元装配模块的数量N,直接将draw_call拆分为多个draw_2nd。
以下针对上述每一种图元类型,将draw_call或者draw_1st拆分为多个draw_2nd的方法进行详细说明。为便于描述,将draw_call或者draw_1st统称为draw_SplitSource。
第一种图元类型为点图元:点图元POINT表征单个孤立的点。
具体来说,命令处理器30可以通过多种方法去拆分draw_SplitSource。但是,无论采用何种方法拆分,都需要基于图元装配模块的数量N,尽可能让每一个模块处理相同数量的顶点,以保证图元装配模块的装配效率最高。
可选的,可以采用平均拆分法拆分draw_SplitSource。需要注意的是,若顶点的数量无法被N整除,拆分时还需要考虑每种图元类型的最小顶点数(例如,POINT图元的最小顶点数为1,LINE图元的最小顶点数为2,TRIANGLE图元的最小顶点数为3)。例如,设定N=4,采用平均拆分法拆分draw_SplitSource的结果可以如表2所示。
表2
Figure 362083DEST_PATH_IMAGE002
可选的,还可以采用轮询拆分法拆分draw_SplitSource,也就是说,根据每一个图元装配模块实际的处理能力拆分draw_SplitSource。例如:将第一draw_SplitSource分配给图元装配模块8604-1,将第二个draw_SplitSource分配个图元装配模块8604-2,将第三个draw_SplitSource分配个图元装配模块8604-3,第四个图元分配给图元装配模块8604-4,以此类推;然后轮询检查四个图元装配模块是否完成任务,若完成任务,则将后续的draw_SplitSource分配给空闲的图元装配模块。例如,设定N=4,采用轮询拆分法拆分draw_SplitSource的结果可以为:
图元装配模块8604-1:(v0),(v4),(v8);
图元装配模块8604-2:(v1),(v5),(v9);
图元装配模块8604-3:(v2),(v6);
图元装配模块8604-4:(v3),(v7)。
第二种图元类型为线图元:线图元一般分为三类,分别为LINE图元、LINE_STRIP图元和LINE_LOOP图元三种。
对于LINE图元,具体来说,图元要求顶点是成对(v0,v1)(v1,v2)…(v(n-1),vn)的。因此,结合图元装配模块的数量N,将draw_SplitSource拆分为多个draw_2nd。应当注意的是,拆分时不能破坏在边界上的成对顶点,也就是拆分位置加1可以被2整除。
同样可选的,命令处理器30可以通过平均拆分法或者轮询拆分法拆分draw_SplitSource。
例如,设定N=4,采用平均拆分法拆分draw_SplitSource的结果可以如表3所示。可见,拆分位置为v1、v3、v5和v7,也就是拆分位置加1可以被2整除。需要注意的是,在本示例中,顶点数无法被N整除,因此,可以先根据图元类型所需的最小顶点数(在本示例中为2)进行拆分,然后将剩余的顶点分配给后续的图元装配模块。
表3
Figure 672979DEST_PATH_IMAGE003
又例如,设定N=4,采用轮询拆分法拆分draw_SplitSource的结果可以为:
图元装配模块8604-1:(v0,v1) (v8,v9);
图元装配模块8604-2:(v2,v3);
图元装配模块8604-3:(v4,v5);
图元装配模块8604-4:(v6,v7)。
对于LINE_STRIP图元,具体来说,要求顶点是(v0,v1)(v1,v2)(v2,v3)…(v(n-1),vn)。因此,结合图元装配模块的数量N将draw_SplitSource拆分为多个draw_2nd。应当注意的是,拆分时边界上顶点的复用。
同样可选的,命令处理器30可以通过平均拆分法或者轮询拆分法拆分draw_SplitSource。
例如,设定N=4,采用平均拆分法拆分draw_SplitSource的结果可以如表4所示,此时顶点被复用。
表4
Figure 474713DEST_PATH_IMAGE004
又例如,设定N=4,采用轮询拆分法拆分draw_SplitSource的结果可以为:
图元装配模块8604-1:(v0,v1), (v4,v5), (v8,v9);
图元装配模块8604-2:(v1,v2), (v5,v6);
图元装配模块8604-3:(v2,v3), (v6,v7);
图元装配模块8604-4:(v3,v4), (v7,v8)。
对于LINE_LOOP图元,具体来说,要求顶点是(v0,v1)(v1,v2)(v2,v3)…(v(x-1),v0)和(vx,v(x+1))…(vn,vx)。由该类型图元可知:LINE_LOOP图元与LINE_STRIP图元的区别为LINE_LOOP图元的最后一个顶点和第一个顶点需连接。因此,如图6所示,可以将LINE_LOOP图元转化为两个LINE_STRIP图元,按照LINE_STRIP图元的拆分方法进行拆分,然后结合图元装配模块的数量N,将LINE_LOOP图元顶点序列从中间某个位置拆分。
同样可选的,命令处理器30可以通过平均拆分法或者轮询拆分法拆分draw_SplitSource。
例如,设定N=4,采用平均拆分法拆分draw_SplitSource的结果可以如表7所示,注意顶点的复用。这种情况下,可能存在顶点数不够进行平均分配的情况,因此,可以先根据图元类型所需的最小顶点数(在本示例中为4)进行拆分,然后将剩余的顶点分配给后续的图元装配模块。
表5
Figure 820243DEST_PATH_IMAGE005
又例如,设定N=4,采用轮询拆分法拆分draw_SplitSource的结果可以为:
图元装配模块8604-1:(v0, v1), (v4,v5), (v8,v9);
图元装配模块8604-2:(v1,v2), (v5,v6), (v9, v0);
图元装配模块8604-3:(v2,v3), (v6,v7);
图元装配模块8604-4:(v3,v4), (v7,v8)。
第三种图元类型为三角形图元:三角形图元可以分为三类,TRIANGLE图元、TRIANGLE_STRIP图元和TRIANGLE_FAN图元。
对于TRIANGLE图元,具体来说,图元要求顶点是(v0,v1,v2)(v3,v4,v5)…(v(n-2),v(n-1),vn)。结合图元装配模块的数量N将draw_SplitSource拆分为多个draw_2nd,应当注意的是,不能破坏在边界上的成对顶点,也就是拆分位置加1后能够被3整除。
例如,设定N=4,采用平均拆分法拆分draw_SplitSource的结果如表6所示。可见,拆分位置为v2、v5、v5和v8,也就是拆分位置加1可以被3整除。
表6
Figure 49230DEST_PATH_IMAGE006
又例如,设定N=4,采用轮询拆分法拆分draw_SplitSource的结果可以为:
图元装配模块8604-1:(v0,v1,v2);
图元装配模块8604-2:(v3,v4,v5);
图元装配模块8604-3:(v6,v7,v8);
图元装配模块8604-4:(v9)。
对于TRIANGLE_STRIP图元,具体来说,图元要求顶点是(v0,v1,v2)(v1,v2,v3)(v2,v3,v4)…(v(n-2),v(n-1),vn)。结合图元装配模块的数量N将draw_SplitSource拆分为多个draw2nd。应当注意的是,边界上顶点的复用以及顶点的顺序。
例如,设定N=4,采用平均拆分法拆分draw_SplitSource的结果如表7所示,此时需注意顶点的复用。
表7
Figure 50685DEST_PATH_IMAGE007
又例如,设定N=4,采用轮询拆分法拆分draw_SplitSource的结果可以为:
图元装配模块8604-1:(v0,v1,v2), (v4,v5,v6);
图元装配模块8604-2:(v1,v2,v3), (v5,v6,v7);
图元装配模块8604-3:(v2,v3,v4), (v6,v7,v8);
图元装配模块8604-4:(v3,v4,v5), (v7,v8,v9)。
对于TRIANGLE_FAN图元,要求顶点是(v0,v1,v2)(v0,v2,v3)(v0,v3,v4)…(v0, v(x-2),v(x-1))和(vx,v(x+1),v(x+2))…(vx,v(n-1),vn)。结合图元装配模块的数量N将draw_SplitSource拆分为多个draw2nd,应当注意的是,不能破坏边界成对顶点以及第一个顶点的复用,也就是说,图元顶点顺序不变。
例如,设定N=4,采用平均拆分法拆分draw_SplitSource的结果可以如表8所示,注意图元顶点v0的复用。
表8
Figure 452847DEST_PATH_IMAGE008
又例如,设定N=4,采用轮询拆分法拆分draw_SplitSource的结果可以为:
图元装配模块8604-1:(v0,v1,v2),(v0,v5,v6);
图元装配模块8604-2:(v0,v2,v3),(v0,v6,v7);
图元装配模块8604-3:(v0,v3,v4),(v0,v7,v8);
图元装配模块8604-4:(v0,v4,v5),(v0,v8,v9)。
第四种图元类型为四边形图元:四边形图元可以分为两类,TQUAD图元和QUAD_STRIP图元。
对于QUAD图元,图元要求顶点是(v0,v1,v2,v3) (v4,v5,v6,v7)…(v(n-3),v(n-2),v(n-1),vn )。结合图元装配模块的数量N 将draw_SplitSource拆分为多个draw2nd,应当注意的是,不能破坏边界上成对的顶点,也可以理解为拆分位置加1可以被4整除。
例如,设定N=4,采用平均拆分法拆分draw_SplitSource的结果如表9所示。拆分位置为v3和v7,可见,拆分位置加1可以被4整除。
表9
Figure 652884DEST_PATH_IMAGE009
又例如,设定N=4,采用轮询拆分法拆分draw_SplitSource的结果可以为:
图元装配模块8604-1:(v0,v1,v2,v3);
图元装配模块8604-2:(v4,v5,v6,v7);
图元装配模块8604-3:(v8,v9);
图元装配模块8604-4:无。
对于QUAD_STRIP图元,图元要求顶点是(v0,v1,v2,v3) (v2,v3,v4,v5)…(v(n-1),v(n-2),v(n-1),vn),因此,可以将QUAD_STRIP图元转化为TRIANGLE_STRIP图元,然后按照TRIANGLE_STRIP图元的拆分方法进行拆分。可以结合图元装配模块的数量N以及成对顶点要求,将QUAD_STRIP顶点序列从中间某个位置拆分,也可以理解为满足图元顶点数量要求以及拆分位置加1可以被2整除。
例如,设定N=4,在顶点v3处拆分(至少在顶点v3位置才能满足图元顶点个数要求),采用平均拆分法拆分draw_SplitSource的结果如表10所示,注意边界顶点的复用。
表10
Figure 52773DEST_PATH_IMAGE010
又例如,设定N=4,采用轮询拆分法拆分draw_SplitSource的结果可以为:
图元装配模块8604-1:(v0, v1,v2,v3);
图元装配模块8604-2:(v2,v3,v4,v5);
图元装配模块8604-3:(v4,v5,v6,v7);
图元装配模块8604-4:(v6,v7,v8,v9)。
第五种图元类型为多边形POLYGON图元:
多边形图元顶点要求(v0, v1, v2, … v(x-1), v0) (vx, v(x+1), … vn,vx)。该图元类型可以直接转为LINE_LOOP,使用LINE_LOOP处理方式,因为POLYGON图元可以由LINE_LOOP 图元实现,额外的要求是顶点个数需满足大于3且多边形本身是必须不得相交的凸多边形,否则结果不可预测。具体方法可以参见LINE_LOOP的描述,此处不再赘述。
例如,设定N=4,,采用平均拆分法拆分draw_SplitSource的结果如表11所示,注意顶点复用。
表11
Figure 338260DEST_PATH_IMAGE011
又例如,设定N=4,采用轮询拆分法拆分draw_SplitSource的结果可以为:
图元装配模块8604-1:(v0, v1), (v4,v5), (v8,v9);
图元装配模块8604-2:(v1,v2), (v5,v6), (v9, v0);
图元装配模块8604-3:(v2,v3), (v6,v7);
图元装配模块8604-4:(v3,v4), (v7,v8)。
通过本示例中的实现方式,命令处理器30可以将一个顶点数较多的draw_call拆分为多个draw_2nd,然后,命令处理器30根据多个draw_2nd,调度处理器集群46中的N个图元装配模块对该多个draw_2nd并行处理,从而提高了图元装配的效率。
在另一些示例中,命令处理器30可以接收由CPU端下发的多条draw_call(也就是说,用户指定多个draw_call);接着,命令处理器30根据多条draw_call对应的生成多个调度指令;随后,命令处理器30再将生成得到的多个调度指令分配给多个图元装配模块。也可以理解为,在本示例中,命令处理器30不需要对draw_call进行拆分。
需要注意的是,由于命令处理器接收的不同draw_call存在一定顺序,相应的,多个图元装配模块根据调度指令对相应的顶点数据并行处理的结果就可能存在乱序的情况,因此,图元数据缓存8605需要对接收到图元装配模块的处理结果时,需要进行排序处理。
在一些示例中,命令处理器30可以为多个调度指令中的每一个调度指令配置对应的编号,然后,图元装配模块获得由命令处理器分配的调度指令对应的编号。
具体可以实现为:
命令处理器30将可以根据接收draw_call的顺序对其进行编号,从而每个对应的调度指令(也可以认为是draw_call,因为在本示例中,命令处理器不需要对draw_call进行拆分,所以draw_call和调度指令是一一对应的)都有一个编号与之对应;然后,命令处理器30将该编号和调度指令分配给相应的图元装配模块,以确保该相应的图元装配模块可以获知接收的调度指令和编号的对应关系。例如,如表12所示,命令处理器30可以按照从小到大的顺序,为T时刻和T+1时刻接收的draw_call配置对应的编号,该编号为自然数。
表12
Figure 481797DEST_PATH_IMAGE012
相应的,图元数据缓存8605接收到图元和该图元对应的编号后,首先判断该图元对应的编号(第一编号)和图元数据缓存8605中存储的多边形链表的图元编号(第二编号),如果第一编号小于第二编号,则无需调整存储顺序,直接将该图元存储;若如第一编号大于第二编号,则图元数据缓存8605根据该第一编号,将该第一编号对应的图元插入到存储中的多边形链表中的相应位置,以确保该图元存储顺序正确。
需要注意的是,图元数据缓存8605可以根据多种实现方式将该第一编号对应的图元插入到存储中的多边形链表中的相应位置,本申请实施例对此不作限制。
需要说明的是,在本示例中,图元装配级86中的其他模块也可以进行相应调整,例如顶点抓取模块8601,需要能够一次抓取到不同draw_call,或者,需要相应的配置N个顶点抓取模块8601,使之与N个图元装配模块8604对应。
通过本示例中的实现方式,命令处理器30可以将多个draw_call分配给多个图元装配模块并行处理,从而提高了图元装配的效率。
在另一些示例中,当用户指定了多个draw_call,其中存在至少一个draw_call包含过多顶点(也可以理解为,多个draw_call中的一部分draw_call包含的顶点数据的数量大于第一门限值,另一部分draw_call的顶点数据的数量小于或者等于第一门限值)。此时,命令处理器30需要先判断多每个draw_call包含的顶点数据的数量和第一门限值的关系,其次,将包含的顶点数据的数量大于第一门限值的draw_call拆分,然后,再将拆分后的draw_call和不需要拆分的draw_call生成相应的多个调度指令分配给多个图元装配模块,最后,多个图元装配模块输出装配完毕后的图元。
在本示例中,由于命令处理器接收的不同draw_call存在一定顺序,相应的,多个图元装配模块根据调度指令对相应的顶点数据并行处理的结果就可能存在乱序的情况,因此,图元数据缓存8605需要对接收到图元装配模块的处理结果时,需要进行排序处理。
需要注意的是,命令处理器30将拆分后的draw_call和不需要拆分的draw_call生成对应的多个调度指令后,为根据同一个draw_call拆分后生成的调度指令各自分配编号,为不同draw_call命令生成的调度指令各自分配不同编号。
图元数据缓存8605接收到图元和该图元对应的编号后的具体实现方式,可以参见上述示例中的详细描述,此处不再赘述。
通过本示例中的实现方式,命令处理器30可以将多个draw_call分配给多个图元装配模块并行处理,从而提高了图元装配的效率。
需要说明的是,在本示例中,图元装配级86中的其他模块也可以进行相应调整,例如,顶点抓取模块8601,需要能够一次抓取到不同draw_call,或者,如图7所示,需要相应的配置N个顶点抓取模块8601(8601-1,8601-2,…,8601-N),使之与N个图元装配模块8604(8604-1,8601-4,…,8604-N)对应。
还需要说明的是,本申请实施例中的每一个图元装配模块的图元装配过程可以采用多种方式,例如,图元装配模块可以一次处理一个顶点数据,或者一次处理多个顶点数据,本申请实施例对此不做限定。但无论每一个图元装配模块采用何种方式处理顶点数据,相比于仅采用一个图元装配模块进行图元装配的实现方式,本申请实施例采用多个图元装配模块并行进行图元装配实现方式,可以大大提高图元装配的效率。
图8为本发明实施例提供的一种图元装配的方法,该方法应用图3或者图4所示的设置于GPU12内图形处理管线80中的图元装配级86部分,如图8所示该方法可以包括:
S801:根据接收到的绘制命令生成多个调度指令。
S802:将所述多个调度指令分配给多个图元装配模块并行执行图元装配处理。
S803:输出装配完毕后的图元。
对于图8来说,在一些示例中,根据接收到的绘制命令生成多个调度指令指令,包括:
通过命令处理器接收由CPU端下发的单条绘制命令,其中,所述单条绘制命令中顶点数据的数量大于预设的第一门限值;
通过所述命令处理器将所述单条绘制命令拆解为多个调度指令。
对于图8来说,在一些示例中,根据接收到的绘制命令生成多个调度指令,包括:
通过命令处理器接收由CPU端下发的多条绘制命令;
通过所述命令处理器将多条绘制命令对应生成多个调度指令。
对于图8来说,在一些示例中,通过命令处理器将所述单条绘制命令拆解为多个调度指令,包括:
基于所述单条绘制命令包含的顶点数据的图元类型和所述图元装配模块的数量,将所述单条绘制命令拆解为多个调度指令。
对于图8来说,该方法还包括:
命令处理器为所述多个调度指令中的每一个调度指令配置编号;
图元装配模块获得由命令处理器分配的调度指令对应的编号。
对于图8来说,在一些示例中,命令处理器为所述多个调度指令中的每一个调度指令配置对应的编号,包括:
为所述单条绘制命令拆分后得到的多个调度指令各自分配编号;
或者,为不同的所述绘制命令对应生成的调度指令各自分配编号
对于图8来说,在一些示例中,输出装配完毕后的图元,包括:
按照所述编号的顺序输出装配完毕后的图元。
在上述一或多个实例或示例中,所描述功能可实施于硬件、软件、固件或其任何组合中。如果实施于软件中,那么可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输。计算机可读媒体可包含计算机数据存储媒体或通信媒体,通信媒体包含促进将计算机程序从一处传递到另一处的任何媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。举例来说且非限制,此类计算机可读媒体可包括U盘、移动硬盘、RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于运载或存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,那么同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波等无线技术包含于媒体的定义中。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
代码可由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。。因此,如本文中所使用的术语“处理器”和“处理单元”可指前述结构或适于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可在经配置用于编码和解码的专用硬件和/或软件模块内提供,或者并入在组合式编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
本发明实施例的技术可实施于各种各样的装置或设备中,所述装置或设备包含无线手持机、集成电路(IC)或一组IC(即,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所公开的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已描述了本发明的各种方面。这些和其它实施例在所附权利要求书的范围内。需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种图元装配的方法,其特征在于,所述方法包括:
根据接收到的绘制命令生成多个调度指令;
将所述多个调度指令分配给多个图元装配模块并行执行图元装配处理;
输出装配完毕后的图元。
2.根据权利要求1所述的方法,其特征在于,所述根据接收到的绘制命令生成多个调度指令,包括:
通过命令处理器接收由CPU端下发的单条绘制命令,其中,所述单条绘制命令中顶点数据的数量大于预设的第一门限值;
通过所述命令处理器将所述单条绘制命令拆解为多个调度指令。
3.根据权利要求2所述的方法,其特征在于,所述通过所述命令处理器将所述单条绘制命令拆解为多个调度指令,包括:
基于所述单条绘制命令包含的顶点数据的图元类型和所述图元装配模块的数量,将所述单条绘制命令拆解为多个调度指令。
4.根据权利要求1所述的方法,其特征在于,所述根据接收到的绘制命令生成多个调度指令,包括:
通过命令处理器接收由CPU端下发的多条绘制命令;
通过所述命令处理器将多条绘制命令对应生成多个调度指令。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
通过单个顶点抓取模块抓取所有绘制命令所需的顶点数据;
或者,通过多个顶点抓取模块各自抓取对应的绘制命令所需的顶点数据;其中,多个顶点抓取模块与多个图元装配模块相对应。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
命令处理器为所述多个调度指令中的每一个调度指令配置对应的编号;
图元装配模块获得由命令处理器分配的调度指令对应的编号。
7.根据权利要求6所述的方法,其特征在于,所述输出装配完毕后的图元,包括:
按照所述编号的顺序输出装配完毕后的图元。
8.一种图元装配装置,其特征在于,所述装置包括:命令处理器以及多个图元装配模块;其中,
所述命令处理器,经配置为根据接收到的绘制命令生成多个调度指令;以及将所述多个调度指令分配给多个图元装配模块并行执行图元装配处理;
所述多个图元装配模块,经配置为针对各自的调度指令执行图元装配并输出装配完毕后的图元。
9.一种GPU,其特征在于,所述GPU包括权利要求8所述的图元装配装置。
10.一种计算机存储介质,其特征在于,所述计算机可读介质存储有图元装配程序,所述图元装配程序被至少一个处理器执行时实现权利要求1至7任一项所述的图元装配方法的步骤。
CN202110488310.2A 2021-05-06 2021-05-06 一种图元装配的方法、装置及计算机存储介质 Pending CN112991143A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110488310.2A CN112991143A (zh) 2021-05-06 2021-05-06 一种图元装配的方法、装置及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110488310.2A CN112991143A (zh) 2021-05-06 2021-05-06 一种图元装配的方法、装置及计算机存储介质

Publications (1)

Publication Number Publication Date
CN112991143A true CN112991143A (zh) 2021-06-18

Family

ID=76337013

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110488310.2A Pending CN112991143A (zh) 2021-05-06 2021-05-06 一种图元装配的方法、装置及计算机存储介质

Country Status (1)

Country Link
CN (1) CN112991143A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116385253A (zh) * 2023-01-06 2023-07-04 格兰菲智能科技有限公司 图元绘制方法、装置、计算机设备和存储介质
CN117350915A (zh) * 2023-12-04 2024-01-05 深流微智能科技(深圳)有限公司 一种图元装配调度方法、系统及设备
CN118229507A (zh) * 2024-05-22 2024-06-21 芯瞳半导体技术(山东)有限公司 一种图像处理方法、装置、系统、设备及计算机存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040263520A1 (en) * 2003-06-30 2004-12-30 Wasserman Michael A. Early primitive assembly and screen-space culling for multiple chip graphics system
CN101553847A (zh) * 2006-09-12 2009-10-07 高通股份有限公司 用于在对象空间中执行用户定义剪辑的方法和装置
US7701459B1 (en) * 2006-11-03 2010-04-20 Nvidia Corporation Primitive oriented assembly for parallel vertex/geometry processing
US20130293546A1 (en) * 2012-05-03 2013-11-07 Samsung Electronics Co., Ltd. Dynamic load balancing apparatus and method for graphic processing unit (gpu)
CN108986014A (zh) * 2018-07-19 2018-12-11 芯视图(常州)微电子有限公司 适用乱序顶点染色的图元装配单元
CN111080505A (zh) * 2019-12-27 2020-04-28 西安芯瞳半导体技术有限公司 一种提高图元装配效率的方法、装置及计算机存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040263520A1 (en) * 2003-06-30 2004-12-30 Wasserman Michael A. Early primitive assembly and screen-space culling for multiple chip graphics system
CN101553847A (zh) * 2006-09-12 2009-10-07 高通股份有限公司 用于在对象空间中执行用户定义剪辑的方法和装置
US7701459B1 (en) * 2006-11-03 2010-04-20 Nvidia Corporation Primitive oriented assembly for parallel vertex/geometry processing
US20130293546A1 (en) * 2012-05-03 2013-11-07 Samsung Electronics Co., Ltd. Dynamic load balancing apparatus and method for graphic processing unit (gpu)
CN108986014A (zh) * 2018-07-19 2018-12-11 芯视图(常州)微电子有限公司 适用乱序顶点染色的图元装配单元
CN111080505A (zh) * 2019-12-27 2020-04-28 西安芯瞳半导体技术有限公司 一种提高图元装配效率的方法、装置及计算机存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116385253A (zh) * 2023-01-06 2023-07-04 格兰菲智能科技有限公司 图元绘制方法、装置、计算机设备和存储介质
CN117350915A (zh) * 2023-12-04 2024-01-05 深流微智能科技(深圳)有限公司 一种图元装配调度方法、系统及设备
CN117350915B (zh) * 2023-12-04 2024-03-26 深流微智能科技(深圳)有限公司 一种图元装配调度方法、系统及设备
CN118229507A (zh) * 2024-05-22 2024-06-21 芯瞳半导体技术(山东)有限公司 一种图像处理方法、装置、系统、设备及计算机存储介质

Similar Documents

Publication Publication Date Title
JP6504212B2 (ja) 装置、方法およびシステム
KR102140387B1 (ko) 대역폭-압축된 그래픽스 데이터의 저장
CN112991143A (zh) 一种图元装配的方法、装置及计算机存储介质
CN111737019B (zh) 一种显存资源的调度方法、装置及计算机存储介质
CN109564694B (zh) 用于基于入库的图形处理的顶点着色器
KR102006584B1 (ko) 레이트 심도 테스팅과 컨서버티브 심도 테스팅 간의 동적 스위칭
US9280956B2 (en) Graphics memory load mask for graphics processing
CN114972607B (zh) 加速图像显示的数据传输方法、装置及介质
CN111080505B (zh) 一种提高图元装配效率的方法、装置及计算机存储介质
CN113256764A (zh) 一种光栅化装置、方法及计算机存储介质
CN111406277A (zh) 以微砖为基础的低分辨率深度存储
CN111311478B (zh) 一种gpu渲染核数据的预读取方法、装置及计算机存储介质
US10445902B2 (en) Fetch reduction for fixed color and pattern sub-frames
US9262841B2 (en) Front to back compositing
CN113467959A (zh) 应用于gpu的确定任务复杂度的方法、装置及介质
CN116909511A (zh) 提升gpu双缓冲显示效率的方法、装置及存储介质
CN112988364B (zh) 一种动态的任务调度方法、装置及存储介质
CN118229507A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210618