CN116188244A - 图块分发方法、装置、设备及存储介质 - Google Patents
图块分发方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116188244A CN116188244A CN202310457192.8A CN202310457192A CN116188244A CN 116188244 A CN116188244 A CN 116188244A CN 202310457192 A CN202310457192 A CN 202310457192A CN 116188244 A CN116188244 A CN 116188244A
- Authority
- CN
- China
- Prior art keywords
- block
- tile
- load level
- tbr
- end module
- 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.)
- Granted
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer And Data Communications (AREA)
- Image Generation (AREA)
Abstract
本申请实施例公开了一种图块分发方法、装置、设备及存储介质,其中,所述方法包括:通过所述TBR架构的前端模块确定多个图块中每一所述图块对应的负载等级;所述负载等级用于表征所述图块中存在的图元数量;将每一所述图块对应的负载等级传递至所述TBR架构的后端模块;针对每一所述图块,通过所述TBR架构的后端模块基于所述图块对应的状态指示器组中每一所述处理器核心对应的状态指示器,从所述至少两个处理器核心中确定所述图块对应的目标处理器核心;其中,所述图块对应的状态指示器组的状态指示器的排列顺序与所述图块的负载等级相关。
Description
技术领域
本申请涉及但不限于图像处理技术领域,尤其涉及一种图块分发方法、装置、设备及存储介质。
背景技术
图形处理器(Graphics Processing Unit,GPU)是用于处理并显示计算机化的图形的专用图形再现装置。以高度并行的结构来建构GPU,所述结构针对一系列复杂算法提供比典型通用中央处理单元(Central Processing Unit,CPU)更有效的处理。举例来说,所述复杂算法可对应于二维或三维计算机化的图形的表示。
但是在GPU针对图形进行再现的过程中,特别是在受到电力和系统带宽限制的条件下,通常会采用基于图块渲染(Tile Based Rendering,TBR)方案,该方案会将画面拆分为图像块(tile,也可称为图块、瓦片),使得每个tile均能够适应片上缓存。举例来说,如果片上缓存能够存储512kB的数据,那么画面可划分为tile使得每个tile中包含的像素数据小于或等于512kB。以此方式,可通过将画面划分为可渲染到片上缓存中的tile且将场景的每个tile个别地渲染到片上缓存中,将来自片上缓存的经渲染tile存储到帧缓冲器,以及针对画面的每个tile重复所述渲染和存储,来渲染所述场景。因此,可以逐tile地渲染画面以渲染所述场景的每个tile。可以理解地,TBR方案属于一种延迟再现图形的模式,由于其功耗低的特点,被广泛地应用于移动装置中。
然而,传统TBR架构的渲染过程中,存在处理器核心的工作量分配不均的情况,进而造成整体渲染性能较低。
发明内容
有鉴于此,本申请实施例至少提供一种图块分发方法、装置、设备、存储介质。
本申请实施例的技术方案是这样实现的:
一方面,本申请实施例提供一种图块分发方法,应用于包括至少两个处理器核心的图形处理器,所述图形处理器基于图块渲染TBR架构进行图块分发过程,所述方法包括:通过所述TBR架构的前端模块确定多个图块中每一所述图块对应的负载等级;所述负载等级用于表征所述图块中存在的图元数量;将每一所述图块对应的负载等级传递至所述TBR架构的后端模块;针对每一所述图块,通过所述TBR架构的后端模块基于所述图块对应的状态指示器组中每一所述处理器核心(Core)对应的状态指示器,从所述至少两个处理器核心中确定所述图块对应的目标处理器核心;其中,所述图块对应的状态指示器组的状态指示器的排列顺序与所述图块的负载等级相关。
在一些实施例中,所述状态指示器的排列顺序包括每一所述处理器核心对应的状态指示器的位序;针对每一所述位序,所述位序对应的处理器核心集合中各所述处理器核心的数量相同,所述位序对应的处理器核心集合包括每一所述负载等级对应的状态指示器组中所述位序对应的处理器核心。
在一些实施例中,所述通过所述TBR架构的前端模块确定多个图块中每一所述图块对应的负载等级,包括:针对每一所述图块,通过所述TBR架构的前端模块基于各图元的位置和所述图块的图块范围,确定落入所述图块范围的图元数量;基于每一所述图块对应的图元数量,确定每一所述图块对应的负载等级。
在一些实施例中,所述基于每一所述图块对应的图元数量,确定每一所述图块对应的负载等级,包括:获取多个预设等级和每一所述预设等级对应的数量区间;针对每一所述图块,基于所述图块对应的图元数量落入的数量区间对应的预设等级作为所述图块对应的负载等级。
在一些实施例中,所述获取多个预设等级和每一所述预设等级对应的数量区间,包括:获取当前渲染环境的渲染条件参数;所述渲染条件参数包括以下至少之一:硬件参数和渲染目标参数,所述硬件参数用于表征所述图形处理器的硬件性能,所述渲染目标参数用于表征渲染对象的计算量;基于所述渲染条件参数,确定所述多个预设等级的数量;基于所述多个预设等级的数量,获取所述多个预设等级和每一所述预设等级对应的数量区间。
在一些实施例中,所述硬件参数包括以下至少之一:处理器核心的数量和内存的读写速度;所述渲染目标参数包括以下至少之一:渲染对象的尺寸和图块的数量。
在一些实施例中,所述将每一所述图块对应的负载等级传递至所述TBR架构的后端模块,包括:在所述TBR架构的前端模块将每一所述图块的图块信息写入系统内存的过程中,将每一所述图块对应的负载等级写入对应的图块信息的图块头信息;针对每一所述图块,响应于针对所述图块的渲染事件,通过所述TBR架构的后端模块从所述系统内存中读取所述图块对应的图块信息的图块头信息,并从所述图块头信息中获取所述图块对应的负载等级。
在一些实施例中,所述方法还包括:通过所述TBR架构的前端模块对每一所述图块对应的负载等级进行编码,得到至少一个比特的编码值;所述将每一所述图块对应的负载等级写入对应的图块信息的图块头信息,包括:将每一所述图块对应的至少一个比特的编码值写入对应的图块信息的图块头信息;所述通过所述TBR架构的后端模块从所述系统内存中读取所述图块对应的图块信息的图块头信息,并从所述图块头信息中获取所述图块对应的负载等级,包括:通过所述TBR架构的后端模块从所述系统内存中读取所述图块对应的图块信息的图块头信息,并对所述图块头信息中至少一个比特的编码值进行解码,得到所述图块对应的负载等级。
在一些实施例中,所述通过所述TBR架构的后端模块基于所述图块对应的状态指示器组中每一所述处理器核心对应的状态指示器,从所述至少两个处理器核心中确定所述图块对应的目标处理器核心,包括:通过所述TBR架构的后端模块按照所述图块对应的各所述状态指示器的排列顺序,遍历各所述状态指示器;将首个为第一值的状态指示器对应的处理器核心作为所述目标处理器核心。
在一些实施例中,所述方法还包括:将所述图块对应的渲染任务分配至所述目标处理器核心;响应于将所述图块对应的渲染任务分配至所述目标处理器核心,将所述图块对应的状态指示器组中所述目标处理器核心对应的状态指示器更新为所述第二值。
在一些实施例中,所述方法还包括:响应于所述图块对应的状态指示器组中各所述状态指示器均为所述第二值,将所述图块对应的状态指示器组中各所述状态指示器重置为所述第一值。
在一些实施例中,所述方法还包括:通过所述TBR架构的后端模块基于每一所述图块对应的负载等级,获取状态机;所述状态机包括每一所述负载等级对应的状态指示器组。
在一些实施例中,所述基于每一所述图块对应的图元数量,确定每一所述图块对应的负载等级,包括:获取第一预设等级和对应的第一数量区间、第二预设等级和对应的第二数量区间、第三预设等级和对应的第三数量区间、第四预设等级和对应的第四数量区间;针对每一所述图块,基于所述图块对应的图元数量,在所述第一预设等级、所述第二预设等级、所述第三预设等级和所述第四预设等级中确定目标预设等级作为所述图块对应的负载等级;所述目标预设等级为所述图块对应的图元数量落入的数量区间对应的预设等级。
在一些实施例中,所述将每一所述图块对应的负载等级传递至所述TBR架构的后端模块,包括:通过所述TBR架构的前端模块对每一所述图块对应的负载等级进行编码,得到两个比特的编码值;将每一所述图块对应的两个比特的编码值写入每一所述图块的图块信息的图块头信息中的预留位;针对每一所述图块,通过所述TBR架构的后端模块从所述系统内存中读取所述图块的图块信息的图块头信息,并对所述图块头信息中的预留位的两个比特的编码值进行解码,得到所述图块对应的负载等级。
另一方面,本申请实施例提供一种图块分发装置,应用于包括至少两个处理器核心的图形处理器,所述图形处理器基于图块渲染TBR架构进行图块分发过程,所述装置包括:
前端模块,用于确定多个图块中每一所述图块对应的负载等级;所述负载等级用于表征所述图块中存在的图元数量;
所述前端模块,用于将每一所述图块对应的负载等级传递至所述TBR架构的后端模块;
后端模块,用于针对每一所述图块,基于所述图块对应的状态指示器组中每一所述处理器核心对应的状态指示器,从所述至少两个处理器核心中确定所述图块对应的目标处理器核心;
其中,所述图块对应的状态指示器组的状态指示器的排列顺序与所述图块的负载等级相关。
再一方面,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
又一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。
本申请实施例中,由于在基于TBR架构的图形处理器的分发过程统计了各个图块的负载等级,并将各个图块的负载等级传递至后端模块,进而基于该负载等级在至少两个处理器核心中确定用于处理当前图块的目标处理器核心。这样,相较于相关技术中利用图块位置为分发依据的方案、或以图块数量为分发依据的方案,可以实现针对性的图块分发过程,进而可以使图形处理器中各个处理器核心的负载均衡;同时,在基于负载等级确定当前图块的目标处理器核心的过程中,图块对应的状态指示器组的状态指示器的排列顺序与所述图块的负载等级相关,这样,可以保证各个处理器核心被调用的概率是大致相同的,从而进一步提升了负载均衡能力,也从整体上增强了图形处理器的渲染性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请的技术方案。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1为本申请实施例提供的一种典型的TBR管线流程示意图;
图2为本申请实施例提供的一种图块分发方法的实现流程示意图一;
图3为本申请实施例提供的一种图块分发方法的实现流程示意图二;
图4为本申请实施例提供的一种图块分发方法的实现流程示意图三;
图5A为本申请实施例提供的一种图块分发方法的实现流程示意图四;
图5B为本申请实施例提供的一种图块分发方法的实现流程示意图五;
图6为本申请实施例提供的一种图块分发方法的实现流程示意图六;
图7为本申请实施例提供的一种图块分发方法的实现流程示意图七;
图8为本申请实施例提供的一种传统TBR架构示意图;
图9为本申请实施例提供的相关技术中图块分发过程的示意图;
图10为本申请实施例提供的一种的实际渲染场景示意图;
图11为本申请实施例提供的实际渲染场景下各处理器核心的执行时间示意图;
图12为本申请实施例提供的图元覆盖示意图;
图13为本申请实施例提供的负载区间划分示意图;
图14为本申请实施例提供的状态机的结构图;
图15为本申请实施例提供的图块分发过程示意图;
图16为本申请实施例提供的一种图块分发装置的组成结构示意图;
图17为本申请实施例提供的一种计算机设备的硬件实体示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请的目的,不是旨在限制本申请。
基于图块渲染是一种在光学空间中通过规则的网格细分计算机图形图像并分别渲染网格(grid)或图块(tile)各部分的过程。这种设计的优点在于,与立即绘制整个帧的立即模式渲染系统相比,它减少了对内存和带宽的消耗。这使图块渲染系统在低功耗硬件设备中普遍使用。图块渲染有时也被称为中置排序(sortmiddle)架构,因为它在绘图管线中间而不是接近结束时进行几何排序。TBR是移动GPU的最常用架构,对降低功耗有显著优势。
典型的TBR管线流程如图1所示,TBR管线流程分为前端模块110和后端模块120,其中,前端模块110包括顶点处理模块111、图形处理模块112和分块(Tiling)模块113;后端模块120包括光栅化模块121、隐藏表面去除(Hidden Surface Removal,HSR)模块122、像素着色模块123和输出合并模块124。
前端模块110可以执行顶点和图元的变换(Vertex processing)、图形处理(包括clip/cull等),然后在Tiling阶段完成屏幕的切分、记录覆盖到tile的图形数据,将上述生成信息写入到系统内存130中。这样,该系统内存130中可以存储图块信息(PrimitiveList)和顶点信息(Vertex Data),其中,PrimitiveList为长度为tile的固定长度数组,该数组中,每个元素是一个linked list,存的是和当前tile相交的所有三角形的指针,指针指向VertexData;Vertex Data存放顶点和顶点属性数据。
后端模块120主要执行光栅化(Raster)、Depth Test、像素着色等操作,最后输出到渲染目标(Render target)上。对于每个tile来说,由于其数据量不大,可以将其所需的深度数据(depth)、纹理数据(texture)或者色彩数据(color)加载到GPU存储在片上的静态随机存取存储器(StaticRandom-Access Memory,SRAM)中,即图中的片载内存140中;例如,隐藏表面去除模块122可以将深度数据(depth)存储到片载内存140中的深度数据缓存(depth buffer)中,像素着色模块123可以将纹理数据(texture)存储到片载内存140中的纹理数据缓存中,输出合并模块124可以将色彩数据(color)存储到片载内存140中的色彩数据缓存(color buffer)中。
在渲染流程中,渲染对象(画面)会被分割为多个图块(tile),这样,上述片载内存140可以容纳这个图块的所有数据。在至少一个绘图指令到达GPU后,前端模块110依次处理每一绘图指令,并将对应的图块信息和顶点信息存储至系统内存130中,直至系统内存130中存储的数据达到预设阈值或者至少一个绘图指令均已处理完毕。后端模块120将以图块为单位从系统内存130中读取对应的顶点信息,并进行后续处理。这样,由于将后端模块120对系统内存130的访问变化为后端模块120对片载内存140的访问,可以提升渲染效率。
针对TBR架构的GPU来说,通常采用通用渲染核进行片元着色阶段的相关处理,具体来说,每个通用渲染核各自负责屏幕上一个小方块(tile)的片元着色渲染任务,由于每个tile均对应构建一个图元列表以记录画面中有哪些图元覆盖了该tile的区域,由此可知,每个tile对应的图元列表的大小决定了该tile渲染任务的工作量的大小。但是在一个完整的画面中,各tile之间所对应的图元列表尺寸不一,从而导致各通用渲染核之间的工作量的不均衡。
基于此,本申请实施例提供一种图块分发方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、移动设备(例如移动电话、便携式视频播放器、个人数字助理、专用消息设备、便携式游戏设备)等具备数据处理能力的设备。
图2为本申请实施例提供的一种图块分发方法的实现流程示意图一,该方法可以由计算机设备的处理器执行,将结合图2示出的步骤进行说明。
步骤S201、通过所述TBR架构的前端模块确定多个图块中每一所述图块对应的负载等级;所述负载等级用于表征所述图块中存在的图元数量。
在一些实施例中,该TBR架构的前端模块可以包括图1中的顶点处理模块111、图形处理模块112和分块模块113。其中,上述多个图块为前端模块对屏幕进行分块后得到的,一般来说,各个图块在屏幕中的图块范围相同,且图块的尺寸需要满足片载内存的存储条件。
在一些实施例中,针对每一图块,该图块对应的负载等级用于表征述图块中存在的图元数量。其中,由于前端模块可以确定每一图元在屏幕中的位置,同时,在完成分块后,也可以得到每一图块对应的图块范围,进而可以确定每一图块中存在的图元数量,由此,可以基于图块对应的图元数量得到该图块对应的负载等级。
在一些实施例中,可以直接将落入图块的图元数量作为该负载等级,如第一图块中落入了2个图元,第二图块中落入了5个图元,则可以直接将第一图块的负载等级设置为2,将第二图块的负载等级设置为5,以此类推。在另一些实施例中,可以为每一负载等级设置一个数量区间,将落入图块的图元数量属于的数量区间对应的负载等级作为该图块的负载等级。
步骤S202、将每一所述图块对应的负载等级传递至所述TBR架构的后端模块。
在一些实施例中,可以通过TBR架构的前端模块将上述每一图块对应的负载等级存储于系统内存中,进而,TBR架构的后端模块可以从该系统内存中获取该每一图块对应的负载等级。
步骤S203、针对每一所述图块,通过所述TBR架构的后端模块基于所述图块对应的状态指示器组中每一所述处理器核心对应的状态指示器,从所述至少两个处理器核心中确定所述图块对应的目标处理器核心。
在一些实施例中,针对每一所述图块,该图块对应的状态指示器组包括每一个处理器核心对应的状态指示器,各处理器核心对应的状态指示器的指示码用于表征该处理器核心的运行状态。示例性的,该处理器核心的运行状态可以包括空闲状态、忙碌状态。在从至少两个处理器核心中确定目标处理器核心的过程中,可以基于各处理器核心的运行状态从中选择空闲状态的处理器核心作为目标处理器核心。
在另一些实施例中,针对每一所述区块,所述区块对应的状态指示器组内,多个状态指示器存在固定的排列顺序。在从至少两个处理器核心中确定目标处理器核心的过程中,可以按照上述多个状态指示器存在固定的排列顺序依次遍历各个状态指示器,将首个运行状态为空闲状态的处理器核心作为目标处理器核心。
在一些实施例中,该目标处理器核心用于处理该图块对应的渲染任务。
其中,所述图块对应的状态指示器组的状态指示器的排列顺序与所述图块的负载等级相关。
在一些实施例中,不同负载等级对应的状态指示器组,状态指示器组内各个处理器核心对应的状态指示器的排列顺序不同。示例性的,请参阅表1,其示出了多个状态指示器组对应的状态指示器的排列顺序。
表1
其中,负载等级1对应的状态指示器组中各个处理器核心的排列顺序为“1432”、负载等级2对应的状态指示器组中各个处理器核心的排列顺序为“2143”、负载等级3对应的状态指示器组中各个处理器核心的排列顺序为“3214”、负载等级4对应的状态指示器组中各个处理器核心的排列顺序为“4321”。可以看出,各个负载等级的状态指示器组内各个处理器核心对应的状态指示器的排列顺序不同。
在另一些实施例中,不同负载等级对应的状态指示器组,状态指示器组内各个处理器核心对应的状态指示器的排列顺序可以相同,也可以不同。示例性的,请参阅表2,其示出了多个状态指示器组对应的状态指示器的排列顺序。
表2
其中,负载等级1和负载等级3对应的状态指示器组中各个处理器核心的排列顺序为“12”、负载等级2和负载等级4对应的状态指示器组中各个处理器核心的排列顺序为“21”。可以看出,各个负载等级的状态指示器组内各个处理器核心对应的状态指示器的排列顺序可以相同,也可以不同。
在一些实施例中,所述方法还包括:通过所述TBR架构的后端模块基于每一所述图块对应的负载等级,获取状态机;所述状态机包括每一所述负载等级对应的状态指示器组。
其中,后端模块中预设有多个状态机,每一状态机对应的负载等级的数量存在差异。在所述TBR架构的后端模块确定每一图块对应的负载等级之后,可以基于负载等级的数量,从上述预设的多个状态机中获取与当前负载等级数量对应的状态机。
示例性的,可以存在第一状态机、第二状态机和第三状态机;其中,该第一状态机对应2个负载等级,第二状态机对应4个负载等级和第三状态机对应8个负载等级。在获取到8个图块的情况下,其中,各个图块分别对应的负载等级分别为(2、3、1、2、4、2、3、4),可以看出,图块的负载等级的数量为4,因此,可以选择第二状态机,即4个负载等级和这4个负载等级中每一负载等级分别对应的状态指示器组。
需要说明的是,不同的状态机中,每一负载等级对应的状态指示器组可以是相同的,也可以是不同的。也就是说,负载等级1在第一状态机中对应的状态指示器组、负载等级1在第二状态机中对应的状态指示器组和负载等级1在第三状态机中对应的状态指示器组可以是相同的,也可以是不同的。
本申请实施例中,由于在基于TBR架构的图形处理器的分发过程统计了各个图块的负载等级,并将各个图块的负载等级传递至后端模块,进而基于该负载等级在至少两个处理器核心中确定用于处理当前图块的目标处理器核心。这样,相较于相关技术中利用图块位置为分发依据的方案、或以图块数量为分发依据的方案,可以实现针对性的图块分发过程,进而可以使图形处理器中各个处理器核心的负载均衡;同时,在基于负载等级确定当前图块的目标处理器核心的过程中,图块对应的状态指示器组的状态指示器的排列顺序与所述图块的负载等级相关,这样,可以保证各个处理器核心被调用的概率是大致相同的,从而进一步提升了负载均衡能力,也从整体上增强了图形处理器的渲染性能。
在一些实施例中,所述状态指示器的排列顺序包括每一所述处理器核心对应的状态指示器的位序。针对每一所述位序,所述位序对应的处理器核心集合中各所述处理器核心的数量相同,所述位序对应的处理器核心集合包括每一所述负载等级对应的状态指示器组中所述位序对应的处理器核心。
示例性的,请参阅表2,虽然负载等级1和负载等级3对应的状态指示器组中各个处理器核心的排列顺序为“12”、负载等级2和负载等级4对应的状态指示器组中各个处理器核心的排列顺序为“21”,即,存在状态指示器组中各个处理器核心的排列顺序相同的情况,但是,对于存在的两个位序(包括“1”和“2”),位序“1”对应的处理器核心集合(处理器核心1、处理器核心2),处理器核心1和处理器核心2的数量均为2;位序“2”对应的处理器核心集合(处理器核心1、处理器核心2),处理器核心1和处理器核心2的数量均为2。这样,在执行步骤S203的过程中,各个处理器核心被调用的概率是相同的,从一定程度上提升了图像处理器的负载均衡能力。
图3是本申请实施例提供的图块分发方法的一个可选的流程示意图二,该方法可以由计算机设备的处理器执行。基于图2,图2中的步骤S201可以更新为S301至S302,将结合图3示出的步骤进行说明。
步骤S301、针对每一所述图块,通过所述TBR架构的前端模块基于各图元的位置和所述图块的图块范围,确定落入所述图块范围的图元数量。
在一些实施例中,在前端模块对几何数据(Geometry Data)进行处理,得到对应的图元数据之后,可以获取各个图元的位置;同时,在前端模块进行分块处理后,也可以得到各个图块对应的图块范围。之后,针对每一图块,基于各个图元的位置和该图块的图块范围,可以得到落入所述图块范围的图元数量。其中,图元的位置以三边方程的形式体现。
步骤S302、基于每一所述图块对应的图元数量,确定每一所述图块对应的负载等级。
在一些实施例中,可以直接落入图块的图元数量作为该图块的负载等级。
在一些实施例中,可以通过步骤S3021至步骤S3022实现上述基于每一所述图块对应的图元数量,确定每一所述图块对应的负载等级。
步骤S3021、获取多个预设等级和每一所述预设等级对应的数量区间。
在一些实施例中,该多个预设等级的等级数量是固定设置的。在另一些实施例中,该多个预设等级的等级数量是动态变化的,且与当前渲染环境的渲染条件参数相关,请参阅图4实施例提供的实施过程。
步骤S3022、针对每一所述图块,基于所述图块对应的图元数量落入的数量区间对应的预设等级作为所述图块对应的负载等级。
示例性的,获取到的多个预设等级包括第一预设等级和第二预设等级,其中,第一预设等级对应的数量区间为[0,4]、第二预设等级对应的数量区间为(4,+∞],在第一图块中落入了2个图元,第二图块中落入了5个图元的情况下,则可以直接将第一图块的负载等级设置为第一预设等级,将第二图块的负载等级设置为第二预设等级。
本申请实施例中,在得到各个图块中的图元数量之后,即确定了各个图块承担的渲染工作量之后,基于图元数量对各个图块的负载情况进行分级,进而在后续分发图块至处理器核心的过程中,可以考虑到各个图块的工作负载情况,提升了图形处理器的负载均衡能力。
图4是本申请实施例提供的图块分发方法的一个可选的流程示意图三,该方法可以由计算机设备的处理器执行。基于图3,图3中的步骤S3021可以更新为S401至S403,将结合图4示出的步骤进行说明。
步骤S401、获取当前渲染环境的渲染条件参数。
在一些实施例中,所述渲染条件参数包括以下至少之一:硬件参数和渲染目标参数,所述硬件参数用于表征所述图形处理器的硬件性能,所述渲染目标参数用于表征渲染对象的计算量。
在一些实施例中,所述硬件参数包括以下至少之一:处理器核心的数量和内存的读写速度。
在一些实施例中,所述渲染目标参数包括以下至少之一:渲染对象的尺寸和图块的数量。
步骤S402、基于所述渲染条件参数,确定所述多个预设等级的数量。
在一些实施例中,在所述硬件参数表征图形处理器的硬件性能越好的情况下,该多个预设等级的数量越多;在所述硬件参数表征图形处理器的硬件性能越差的情况下,该多个预设等级的数量越少。
其中,该处理器核心的数量越多,图形处理器的硬件性能越好;内存的读写速度越快,图形处理器的硬件性能越好,相应地,该多个预设等级的数量越多。此时,相较于较少的等级数量,增加了预设等级的数量虽然会带来一定程度的硬件负载,但是,由于图形处理器的硬件性能较好,可以在不影响其他渲染任务的情况下,提升图块负载划分的细致程度,进而可以更加均衡的分发图块至图形处理器的处理器核心。
在一些实施例中,在所述硬件参数表征渲染对象的计算量越多的情况下,该多个预设等级的数量越多;在所述硬件参数表征图形处理器的硬件性能越少的情况下,该多个预设等级的数量越少。
其中,该图块的数量越多,渲染对象的计算量越多;渲染对象的尺寸越大,渲染对象的计算量越多,相应地,该多个预设等级的数量越多。此时,相较于采用较少的等级数量的方案,可以避免由于渲染对象的整体计算量较大,较少的等级数量无法对大量图块/图元进行有效的区分,进而导致的负载无法均衡的情况,即,上述实施例可以提升图块负载划分的细致程度,进而可以更加均衡的分发图块至图形处理器的处理器核心。
步骤S403、基于所述多个预设等级的数量,获取所述多个预设等级和每一所述预设等级对应的数量区间。
在一些实施例中,该预设等级的数量可以为2的n次方个,n为正整数。示例性的,该预设等级的数量可以为2、4、8、…,以此类推。
其中,针对每一个预设等级的数量,可以预设每一预设等级的数量对应的数量区间集合,该数量区间集合包括每一预设等级对应的数量区间。示例性的,针对预设等级的数量为“2”的情况,可以预设该数量“2”对应的第一预设等级和第二预设等级,第一预设等级对应的第一数量区间和第二预设等级对应的第二数量区间。示例性的,针对预设等级的数量为“4”的情况,可以预设该数量“2”对应的第一预设等级和对应的第一数量区间、第二预设等级和对应的第二数量区间、第三预设等级和对应的第三数量区间、第四预设等级和对应的第四数量区间。
本申请实施例中,通过获取当前渲染环境的渲染条件参数,结合硬件参数、渲染目标参数,确定多个预设等级的数量,进而动态的变更负载等级的数量,实现了对负载等级划分精度的自适应调整,由此,可以在负载均衡能力和渲染速度上进行权衡,从整体上提升了渲染效率。
图5A是本申请实施例提供的图块分发方法的一个可选的流程示意图四,该方法可以由计算机设备的处理器执行。基于图2,图2中的S202可以更新为S501至S502,将结合图5A示出的步骤进行说明。
步骤S501、在所述TBR架构的前端模块将每一所述图块的图块信息写入系统内存的过程中,将每一所述图块对应的负载等级写入对应的图块信息的图块头信息。
步骤S502、针对每一所述图块,响应于针对所述图块的渲染事件,通过所述TBR架构的后端模块从所述系统内存中读取所述图块对应的图块信息的图块头信息,并从所述图块头信息中获取所述图块对应的负载等级。
在一些实施例中,请参阅图5B,其示出了本申请实施例提供的图块分发方法的一个可选的流程示意图五,基于图5A,在步骤S501之前,所述方法还可以包括步骤S503,相应地,步骤S501至S502可以更新为S504至S505,将结合图5A示出的步骤进行说明。
步骤S503、通过所述TBR架构的前端模块对每一所述图块对应的负载等级进行编码,得到至少一个比特的编码值。
在一些实施例中,可以对该负载等级进行二进制编码,得到该至少一个比特的编码值。示例性的,在负载等级包括1和2的情况下,对负载等级进行编码后,可以分别得到00、01共2个编码值;在负载等级包括1、2、3和4的情况下,对负载等级进行编码后,可以分别得到00、01、10、11共四个编码值,以此类推。
步骤S504、在所述TBR架构的前端模块将每一所述图块的图块信息写入系统内存的过程中,将每一所述图块对应的至少一个比特的编码值写入对应的图块信息的图块头信息。
步骤S505、针对每一所述图块,响应于针对所述图块的渲染事件,通过所述TBR架构的后端模块从所述系统内存中读取所述图块对应的图块信息的图块头信息,并对所述图块头信息中至少一个比特的编码值进行解码,得到所述图块对应的负载等级。
在一些实施例中,对所述图块头信息中至少一个比特的编码值进行解码,得到所述图块对应的负载等级的过程,是上述对负载等级进行编码得到至少一个比特的编码值的逆过程。基于上述示例,在得到编码值为00、01的情况下,对编码值进行解码后,可以分别得到负载等级1和负载等级2;在得到编码值为00、01、10、11的情况下,对编码值进行解码后,可以分别得到负载等级1、负载等级2、负载等级3和负载等级4。
本申请实施例中,通过对负载等级进行编码,在传递负载等级至后端模块的过程中,可以尽可能的减少传输代价,提升传输效率,进而提升了渲染效率。
图6是本申请实施例提供的图块分发方法的一个可选的流程示意图六,该方法可以由计算机设备的处理器执行。基于上述任一实施例,以基于图2为例,图2中的S203可以更新为S601至S602,将结合图6示出的步骤进行说明。
步骤S601、通过所述TBR架构的后端模块按照所述图块对应的各所述状态指示器的排列顺序,遍历各所述状态指示器。
示例性的,请参阅表1示出的多个状态指示器组对应的状态指示器的排列顺序,在该图块属于负载等级2的情况下,可以按照上述处理器核心2、处理器核心1、处理器核心4、处理器核心3的顺序依次遍历这4个处理器核心分别对应的处理器核心。
其中,各个状态指示器可以被配置为第一值,该第一值用于表征该状态指示器对应的处理器核心处于空闲状态(可分发状态);各个状态指示器可以被配置为第二值,该第二值用于表征该状态指示器对应的处理器核心处于忙碌状态(不可分发状态)。在一些实施例中,各状态指示器的初始状态均被配置为第一值。
在一些实施例中,该第一值可以设置为0,该第二值可以设置为1。本申请对此不作限定。
步骤S602、将首个为第一值的状态指示器对应的处理器核心作为所述目标处理器核心。
在一些实施例中,所述方法还包括步骤S603至S604。
步骤S603、将所述图块对应的渲染任务分配至所述目标处理器核心。
步骤S604、响应于将所述图块对应的渲染任务分配至所述目标处理器核心,将所述图块对应的状态指示器组中所述目标处理器核心对应的状态指示器更新为所述第二值。
示例性的,请参阅表3,其示出了一种状态指示器组的状态表,该状态表与表1对应。
表3
在当前图块属于负载等级2的情况下,可以按照上述处理器核心2、处理器核心1、处理器核心4、处理器核心3的顺序依次遍历这4个处理器核心分别对应的处理器核心。此时,首个为第一值的状态指示器为处理器核心1对应的状态指示器,则将该当前图块对应的渲染任务分配至处理器核心1。响应于将该当前图块对应的渲染任务分配至处理器核心1,将所述图块对应的处理器核心1对应的状态指示器更新为第二值。
在一些实施例中,所述方法还包括步骤S605。
步骤S605、响应于所述图块对应的状态指示器组中各所述状态指示器均为所述第二值,将所述图块对应的状态指示器组中各所述状态指示器重置为所述第一值。
在当前图块属于负载等级3的情况下,可以按照上述处理器核心3、处理器核心2、处理器核心1、处理器核心4的顺序依次遍历这4个处理器核心分别对应的状态指示器。此时,首个为第一值的状态指示器为处理器核心4对应的状态指示器,则将该当前图块对应的渲染任务分配至处理器核心4。响应于将该当前图块对应的渲染任务分配至处理器核心4,将所述图块对应的处理器核心4对应的状态指示器更新为第二值。
此时,可以得到如表4示出的一种状态指示器组的状态表。
表4
由于此时负载等级3对应的4个处理器核心分别对应的状态指示器均为所述第二值“1”,则将负载等级3对应的4个处理器核心分别对应的状态指示器重置为所述第一值“0”,得到如表5示出的一种状态指示器组的状态表。
表5
本申请实施例中,通过上述状态指示器组中各个状态指示器的更新方法,可以避免因tile连续分发到某个处理器核心而造成的负载不均衡问题。
考虑到在前端模块存储各图块的图块信息至系统内存的过程中,各图块的图块信息的图块头信息中存在两个比特的预留位,由此,请参阅图7,图7是本申请实施例提供的图块分发方法的一个可选的流程示意图七,该方法可以由计算机设备的处理器执行。将结合图7示出的步骤进行说明。
步骤S301、针对每一所述图块,通过所述TBR架构的前端模块基于各图元的位置和所述图块的图块范围,确定落入所述图块范围的图元数量。
步骤S701、获取第一预设等级和对应的第一数量区间、第二预设等级和对应的第二数量区间、第三预设等级和对应的第三数量区间、第四预设等级和对应的第四数量区间。
步骤S702、针对每一所述图块,基于所述图块对应的图元数量,在所述第一预设等级、所述第二预设等级、所述第三预设等级和所述第四预设等级中确定目标预设等级作为所述图块对应的负载等级。
其中,所述目标预设等级为所述图块对应的图元数量落入的数量区间对应的预设等级。
步骤S703、通过所述TBR架构的前端模块对每一所述图块对应的负载等级进行编码,得到两个比特的编码值。
步骤S704、将每一所述图块对应的两个比特的编码值写入每一所述图块的图块信息的图块头信息中的预留位。
步骤S705、针对每一所述图块,通过所述TBR架构的后端模块从所述系统内存中读取所述图块的图块信息的图块头信息,并对所述图块头信息中的预留位的两个比特的编码值进行解码,得到所述图块对应的负载等级。
步骤S203、针对每一所述图块,通过所述TBR架构的后端模块基于所述图块对应的状态指示器组中每一所述处理器核心对应的状态指示器,从所述至少两个处理器核心中确定所述图块对应的目标处理器核心。
这里,上述步骤S301和步骤203分别对应于前述图3实施例中的步骤S301和前述图2实施例中的步骤203,在实施时可以参照前述实施例中的具体实施方式。
本申请实施例中,由于考虑到在前端模块存储各图块的图块信息至系统内存的过程中,各图块的图块信息的图块头信息中存在两个比特的预留位,将负载等级的数量设置为4,并对负载等级进行编码后得到2比特的编码值,进而可以有效的利用上述预留位,相对于现有的TBR架构,本申请实施例不会对系统内存的读写过程造成影响。
下面说明本申请实施例提供的图块分发方法在实际场景中的应用,主要涉及包括四个处理器核心的图像处理器。当然,本申请实施例不对图像处理器的处理器核心数量进行限定,以下实施例仅是为了更清楚的表述本申请的实施过程。
传统TBR架构下,前端(FrontEnd)810生成图元渲染数据并写出到内存840(memory),后端820(BackEnd)拆分出图块(tile)然后将其分发到不同的图形处理器核心(GPU core)里,在每个GPU core中针对相应的tile从memory中读出图元数据,如图8所示。不同GPU core负载均衡与否和Tile的分发策略密切相关,图块分发器830不仅应该尽可能地将tile相对平均地分发到不同的GPU core,而且应当能够通过tile分发控制每个GPUcore工作时间的长短,避免有的GPU core工作时间过长、有的GPU core工作时间过短而引起GPU性能下降。
对于tile的分发,现存的设计通常是先将屏幕以tile划分,然后将屏幕上某块固定区域(包含若干个tile)分配给一个GPU core处理,实际上就是建立屏幕划分出的各个区域和各个GPU core的映射关系并以此作为tile分发的依据。
请参阅图9,图9为相关技术中图块分发过程的示意图。首先,将屏幕以tile进行拆分,整个屏幕被拆成了t0至t15这16个tile,然后将这些tile分组,以图9所示,每4个tile分成一组,划分为同一组的tile将被分发到同一个GPU core,因此针对图9示出的分发过程,Tile的划分结果如表6:
表6
以上tile的分发结果保证了每个GPU core处理相同的tile数量,冀以此来平衡每个GPU core的工作负载(workload)。但是这种方式存在很大的局限性,因为该种分发算法只考虑到了空间上的平均性而未兼顾到时间(或负载)的影响因素。
以图10示出的实际渲染场景为例,图10中给出了每个tile应当渲染的三角形情况,不同的tile负载各不相同,其中,t0至t3拥有较大负载,t4至t15的负载相对稀疏,而根据上述的分发算法,t0至t3被送进了同一个GPU core(即GPU 0)中,导致GPU0的整体负载比其它的GPU core大很多,由此导致GPU core的执行时间极不均衡,性能问题突出。
请参阅图11示出的实际渲染场景下各处理器核心的执行时间示意图。其中,GPU0执行时间远远超出GPU1、GPU2和GPU3的执行时间。
本申请实施例对相关技术中以屏幕为基础做tile分发的算法进行改进,提出一种基于tile负载的分发算法,该算法设计引入tile的负载因子的计算,并在tile分发处理中作为影响因素从而调整tile的分发策略,进而在TBR架构上提升多个GPU core的负载均衡度,从而达到整体性能的提升。
本申请实施例以TBR架构为基础,通过在TBR前端增加负载统计模块,利用现有的tile header传输机制,从而将负载信息从TBR前端送至TBR后端,然后在tile分发阶段利用负载信息使tile合理分配到各个GPU core上执行。
在一些实施例中,前端在做分块时统计每个tile被图元(primitive)覆盖到的次数。如图12所示,根据图形的三边方程计算出每个图元覆盖到了哪些tile,从而统计出T0至T8的负载,其中,T0的负载为1(包括P3),T1的负载为2(包括P0、P3),T2的负载为2(包括P0、P3),T3的负载为2(包括P0、P3),T4的负载为4(包括P0、P1、P2、P3),T5的负载为2(包括P1、P2),T6的负载为1(包括P0),T7的负载为3(包括P0、P1、P2),T8的负载为2(包括P1、P2)。
在一些实施例中,对于tile的负载并非简单的记录一个值向后端传输,因为如果这个负载值很大将占用比较多的bits,这样不仅需要考虑增加存储空间的大小,而且读写memory的带宽也要做相应的扩展。为了减小不必要的硬件开销,在统计完tile的最后一个图元后,即对tile的负载进行编码。
通过对大量的基准点(benchmark)进行测试统计,提取了4个负载区间(对应上述实施例中的数量区间),请参阅图13,图13为负载区间划分示意图。其中,负载小于或等于阈值1和负载大于阈值3这两种情况属于稀少情况,大部分tile的负载处于中间两个负载区间内。相应地,4个负载区间对应的编码如表7。
表7
如表7所示,编码过后的tile负载只占2bits,这样可以轻易的塞入到tile的头信息(header)里再写出到memory。
在一些实施例中,TBR后端从内存中读出每个tile header,然后解码出这个tile的workload,并以此为基础执行向不同GPU core进行分配。
基于上述实施场景,以下仍以4个GPU core的系统作为测试平台,在tile分发器中以tile的工作负载(简写为TWL)为基础构造一个状态机,该状态机中包含若4个4bits的0-1状态指示器组(group),4组表示TWL的编码数量为4,其中,(包括状态指示器组0:TWL_00,状态指示器组1:TWL_01,状态指示器组2:TWL_10,状态指示器组3:TWL_11),而4bits表示系统中有几个core,状态指示器组之间core的排布做了重排(swizzle)操作,以尽量保证发到每个core上tile的数量相同。该状态机的结构图14所示。
在读取一个tile的header并解析出它的workload编码值后,根据编码值找到对应的group,然后从左往右往遍历每个core的指示位,如果该core的指示器是0,则可将该tile向这个core分发,然后将core的指示器置为1;当一个group的所有core的指示器都已被置1后,再全部reset成0,准备做下一轮的分发。
请参阅图15示出的图块分发过程示意图。图15中的屏幕包括16个tile(t0至t15),如果简单地将tile0至tile3送给core0,tile4至tile7送给core1,tile8至tile9送给core2,tile10至tile15送给core3,那么core0和core3的负载过轻,而core1和core2的负载又过重,导致渲染任务分配极不均衡。在采用上述实施例提供的图块分发方法,t0至t15的分发过程可以包括:
T0: TWL=TWL_00,检查状态指示器组0的指示码(group0_core_mask),选择core0作为分发对象,设置group0_core_mask=1000b;
T1: TWL=TWL_01,检查状态指示器组1的指示码(group1_core_mask),选择core1作为分发对象,设置group1_core_mask=1000b;
T2: TWL=TWL_01,检查状态指示器组1的指示码(group1_core_mask),选择core2作为分发对象,设置group1_core_mask=1100b;
T3: TWL=TWL_01,检查状态指示器组1的指示码(group1_core_mask),选择core3作为分发对象,设置group0_core_mask=1110b;
T4: TWL=TWL_10,检查状态指示器组2的指示码(group2_core_mask),选择core2作为分发对象,设置group2_core_mask=1000b;
T5: TWL=TWL_11,检查状态指示器组3的指示码(group3_core_mask),选择core3作为分发对象,设置group3_core_mask=1000b;
T6: TWL=TWL_11,检查状态指示器组3的指示码(group3_core_mask),选择core0作为分发对象,设置group3_core_mask=1100b;
T7: TWL=TWL_10,检查状态指示器组2的指示码(group2_core_mask),选择core3作为分发对象,设置group2_core_mask=1100b;
T8: TWL=TWL_10,检查状态指示器组2的指示码(group2_core_mask),选择core0作为分发对象,设置group2_core_mask=1110b;
T9: TWL=TWL_10,检查状态指示器组2的指示码(group2_core_mask),选择core1作为分发对象,设置group2_core_mask=1111b,复位group2_core_mask=0000b;
T10: TWL=TWL_10,检查状态指示器组3的指示码(group3_core_mask),选择core1作为分发对象,设置group3_core_mask=1110b;
T11: TWL=TWL_11,检查状态指示器组2的指示码(group2_core_mask),选择core3作为分发对象,设置group2_core_mask=1111b;
T12: TWL=TWL_01,检查状态指示器组1的指示码(group1_core_mask),选择core0作为分发对象,设置group1_core_mask=1111b,复位group1_core_mask=0000b;
T13: TWL=TWL_00,检查状态指示器组0的指示码(group0_core_mask),选择core1作为分发对象,设置group0_core_mask=1100b;
T14: TWL=TWL_01,检查状态指示器组1的指示码(group1_core_mask),选择core1作为分发对象,设置group1_core_mask=1000b;
T15: TWL=TWL_01,检查状态指示器组1的指示码(group1_core_mask),选择core2作为分发对象,设置group1_core_mask=1100b。
最终4个core分到tile数量数相同,而且经过比较可以得出,4个core的负载相差也不大。
在实际的应用测试中可以发现,渲染目标(render target)越大和/或图块数量越多,在增加TWL编码的数量的情况下,tile负载划分地更加细致,可以更均衡地进行tile的分发。编码的增加同样带来一定的内存开销以及分发器调度的变化,在实际硬件中可根据内存的读写、core的数量等因素加以权衡。
本申请实施例围绕均衡所有GPU core的运行时间为核心,通过在tiler阶段增加负载统计功能对每个core在本帧内的TWL负载进行统计且编码,送至后端,后端以此负载信息为基础做tile分发。该算法规避了传统的以tile数量为分发依据算法的弊端,以极小的代价让tile分发器识别tile的负载量从而有针对性的分发,基本实现了各个GPU core的负载均衡,从而整体上增强了GPU的渲染性能。
与相关技术方案相比,本申请实施例以极小的代价实现了每个tile负载的统计和传输;同时,引入负载作为tile分发时的影响因素,不至于使有的GPU core的工作时间过长或过短,从而提升硬件的利用效率;同时,提出一种新的group-core的分发排布,从而进一步避免因tile连续分发到某个core而造成的负载不均衡问题。
基于前述的实施例,本申请实施例提供一种图块分发装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现。
图16为本申请实施例提供的一种图块分发装置的组成结构示意图,如图16所示,图块分发装置1600包括:前端模块1610、后端模块1620,其中:
前端模块1610,用于确定多个图块中每一所述图块对应的负载等级;所述负载等级用于表征所述图块中存在的图元数量;
所述前端模块1610,用于将每一所述图块对应的负载等级传递至所述TBR架构的后端模块;
后端模块1620,用于针对每一所述图块,基于所述图块对应的状态指示器组中每一所述处理器核心对应的状态指示器,从所述至少两个处理器核心中确定所述图块对应的目标处理器核心;其中,所述图块对应的状态指示器组的状态指示器的排列顺序与所述图块的负载等级相关。
在一些实施例中,所述状态指示器的排列顺序包括每一所述处理器核心对应的状态指示器的位序;针对每一所述位序,所述位序对应的处理器核心集合中各所述处理器核心的数量相同,所述位序对应的处理器核心集合包括每一所述负载等级对应的状态指示器组中所述位序对应的处理器核心。
在一些实施例中,所述前端模块1610,还用于:针对每一所述图块,基于各图元的位置和所述图块的图块范围,确定落入所述图块范围的图元数量;基于每一所述图块对应的图元数量,确定每一所述图块对应的负载等级。
在一些实施例中,所述前端模块1610,还用于:获取多个预设等级和每一所述预设等级对应的数量区间;针对每一所述图块,基于所述图块对应的图元数量落入的数量区间对应的预设等级作为所述图块对应的负载等级。
在一些实施例中,所述前端模块1610,还用于:获取当前渲染环境的渲染条件参数;所述渲染条件参数包括以下至少之一:硬件参数和渲染目标参数,所述硬件参数用于表征所述图形处理器的硬件性能,所述渲染目标参数用于表征渲染对象的计算量;基于所述渲染条件参数,确定所述多个预设等级的数量;基于所述多个预设等级的数量,获取所述多个预设等级和每一所述预设等级对应的数量区间。
在一些实施例中,所述硬件参数包括以下至少之一:处理器核心的数量和内存的读写速度;所述渲染目标参数包括以下至少之一:渲染对象的尺寸和图块的数量。
在一些实施例中,所述前端模块1610,还用于:将每一所述图块的图块信息写入系统内存的过程中,将每一所述图块对应的负载等级写入对应的图块信息的图块头信息;所述后端模块1620,还用于:针对每一所述图块,响应于针对所述图块的渲染事件,从所述系统内存中读取所述图块对应的图块信息的图块头信息,并从所述图块头信息中获取所述图块对应的负载等级。
在一些实施例中,所述前端模块1610,还用于:对每一所述图块对应的负载等级进行编码,得到至少一个比特的编码值;将每一所述图块对应的至少一个比特的编码值写入对应的图块信息的图块头信息;所述后端模块1620,还用于:从所述系统内存中读取所述图块对应的图块信息的图块头信息,并对所述图块头信息中至少一个比特的编码值进行解码,得到所述图块对应的负载等级。
在一些实施例中,所述后端模块1620,还用于:按照所述图块对应的各所述状态指示器的排列顺序,遍历各所述状态指示器;将首个为第一值的状态指示器对应的处理器核心作为所述目标处理器核心。
在一些实施例中,所述后端模块1620,还用于:将所述图块对应的渲染任务分配至所述目标处理器核心;响应于将所述图块对应的渲染任务分配至所述目标处理器核心,将所述图块对应的状态指示器组中所述目标处理器核心对应的状态指示器更新为所述第二值。
在一些实施例中,所述后端模块1620,还用于:响应于所述图块对应的状态指示器组中各所述状态指示器均为所述第二值,将所述图块对应的状态指示器组中各所述状态指示器重置为所述第一值。
在一些实施例中,所述后端模块1620,还用于:基于每一所述图块对应的负载等级,获取状态机;所述状态机包括每一所述负载等级对应的状态指示器组。
在一些实施例中,所述前端模块1610,还用于:获取第一预设等级和对应的第一数量区间、第二预设等级和对应的第二数量区间、第三预设等级和对应的第三数量区间、第四预设等级和对应的第四数量区间;针对每一所述图块,基于所述图块对应的图元数量,在所述第一预设等级、所述第二预设等级、所述第三预设等级和所述第四预设等级中确定目标预设等级作为所述图块对应的负载等级;所述目标预设等级为所述图块对应的图元数量落入的数量区间对应的预设等级。
在一些实施例中,所述前端模块1610,还用于:对每一所述图块对应的负载等级进行编码,得到两个比特的编码值;将每一所述图块对应的两个比特的编码值写入每一所述图块的图块信息的图块头信息中的预留位。后端模块1620,还用于针对每一所述图块,从所述系统内存中读取所述图块的图块信息的图块头信息,并对所述图块头信息中的预留位的两个比特的编码值进行解码,得到所述图块对应的负载等级。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本申请实施例提供的装置具有的功能或包含的模块可以用于执行上述方法实施例描述的方法,对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的图块分发,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
本申请实施例提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。
本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请设备、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
图17为本申请实施例提供的一种计算机设备的硬件实体示意图,如图17所示,该计算机设备1700的硬件实体包括:处理器1701和存储器1702,其中,存储器1702存储有可在处理器1701上运行的计算机程序,处理器1701执行程序时实现上述任一实施例的方法中的步骤。
存储器1702存储有可在处理器上运行的计算机程序,存储器1702配置为存储由处理器1701可执行的指令和应用,还可以缓存待处理器1701以及计算机设备1700中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。
处理器1701执行程序时实现上述任一项的图块分发方法的步骤。处理器1701通常控制计算机设备1700的总体操作。
本申请实施例提供一种计算机存储介质,计算机存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如上任一实施例的图块分发方法的步骤。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
上述处理器可以为目标用途集成电路(Application Specific IntegratedCircuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(DigitalSignal Processing Device,DSPD)、可编程逻辑装置(Programmable LogicDevice,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。
上述计算机存储介质/存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ReadOnly Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (17)
1.一种图块分发方法,其特征在于,应用于包括至少两个处理器核心的图形处理器,所述图形处理器基于图块渲染TBR架构进行图块分发过程,所述方法包括:
通过所述TBR架构的前端模块确定多个图块中每一所述图块对应的负载等级;所述负载等级用于表征所述图块中存在的图元数量;
将每一所述图块对应的负载等级传递至所述TBR架构的后端模块;
针对每一所述图块,通过所述TBR架构的后端模块基于所述图块对应的状态指示器组中每一所述处理器核心对应的状态指示器,从所述至少两个处理器核心中确定所述图块对应的目标处理器核心;
其中,所述图块对应的状态指示器组的状态指示器的排列顺序与所述图块的负载等级相关。
2.根据权利要求1所述的方法,其特征在于,所述状态指示器的排列顺序包括每一所述处理器核心对应的状态指示器的位序;针对每一所述位序,所述位序对应的处理器核心集合中各所述处理器核心的数量相同,所述位序对应的处理器核心集合包括每一所述负载等级对应的状态指示器组中所述位序对应的处理器核心。
3.根据权利要求1所述的方法,其特征在于,所述通过所述TBR架构的前端模块确定多个图块中每一所述图块对应的负载等级,包括:
针对每一所述图块,通过所述TBR架构的前端模块基于各图元的位置和所述图块的图块范围,确定落入所述图块范围的图元数量;
基于每一所述图块对应的图元数量,确定每一所述图块对应的负载等级。
4.根据权利要求3所述的方法,其特征在于,所述基于每一所述图块对应的图元数量,确定每一所述图块对应的负载等级,包括:
获取多个预设等级和每一所述预设等级对应的数量区间;
针对每一所述图块,基于所述图块对应的图元数量落入的数量区间对应的预设等级作为所述图块对应的负载等级。
5.根据权利要求4所述的方法,其特征在于,所述获取多个预设等级和每一所述预设等级对应的数量区间,包括:
获取当前渲染环境的渲染条件参数;所述渲染条件参数包括以下至少之一:硬件参数和渲染目标参数,所述硬件参数用于表征所述图形处理器的硬件性能,所述渲染目标参数用于表征渲染对象的计算量;
基于所述渲染条件参数,确定所述多个预设等级的数量;
基于所述多个预设等级的数量,获取所述多个预设等级和每一所述预设等级对应的数量区间。
6.根据权利要求5所述的方法,其特征在于,所述硬件参数包括以下至少之一:处理器核心的数量和内存的读写速度;所述渲染目标参数包括以下至少之一:渲染对象的尺寸和图块的数量。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述将每一所述图块对应的负载等级传递至所述TBR架构的后端模块,包括:
在所述TBR架构的前端模块将每一所述图块的图块信息写入系统内存的过程中,将每一所述图块对应的负载等级写入对应的图块信息的图块头信息;
针对每一所述图块,响应于针对所述图块的渲染事件,通过所述TBR架构的后端模块从所述系统内存中读取所述图块对应的图块信息的图块头信息,并从所述图块头信息中获取所述图块对应的负载等级。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:通过所述TBR架构的前端模块对每一所述图块对应的负载等级进行编码,得到至少一个比特的编码值;
所述将每一所述图块对应的负载等级写入对应的图块信息的图块头信息,包括:将每一所述图块对应的至少一个比特的编码值写入对应的图块信息的图块头信息;
所述通过所述TBR架构的后端模块从所述系统内存中读取所述图块对应的图块信息的图块头信息,并从所述图块头信息中获取所述图块对应的负载等级,包括:通过所述TBR架构的后端模块从所述系统内存中读取所述图块对应的图块信息的图块头信息,并对所述图块头信息中至少一个比特的编码值进行解码,得到所述图块对应的负载等级。
9.根据权利要求1至6任一项所述的方法,其特征在于,所述通过所述TBR架构的后端模块基于所述图块对应的状态指示器组中每一所述处理器核心对应的状态指示器,从所述至少两个处理器核心中确定所述图块对应的目标处理器核心,包括:
通过所述TBR架构的后端模块按照所述图块对应的各所述状态指示器的排列顺序,遍历各所述状态指示器;
将首个为第一值的状态指示器对应的处理器核心作为所述目标处理器核心。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
将所述图块对应的渲染任务分配至所述目标处理器核心;
响应于将所述图块对应的渲染任务分配至所述目标处理器核心,将所述图块对应的状态指示器组中所述目标处理器核心对应的状态指示器更新为第二值。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
响应于所述图块对应的状态指示器组中各所述状态指示器均为所述第二值,将所述图块对应的状态指示器组中各所述状态指示器重置为所述第一值。
12.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
通过所述TBR架构的后端模块基于每一所述图块对应的负载等级,获取状态机;所述状态机包括每一所述负载等级对应的状态指示器组。
13.根据权利要求3所述的方法,其特征在于,所述基于每一所述图块对应的图元数量,确定每一所述图块对应的负载等级,包括:
获取第一预设等级和对应的第一数量区间、第二预设等级和对应的第二数量区间、第三预设等级和对应的第三数量区间、第四预设等级和对应的第四数量区间;
针对每一所述图块,基于所述图块对应的图元数量,在所述第一预设等级、所述第二预设等级、所述第三预设等级和所述第四预设等级中确定目标预设等级作为所述图块对应的负载等级;所述目标预设等级为所述图块对应的图元数量落入的数量区间对应的预设等级。
14.根据权利要求13所述的方法,其特征在于,所述将每一所述图块对应的负载等级传递至所述TBR架构的后端模块,包括:
通过所述TBR架构的前端模块对每一所述图块对应的负载等级进行编码,得到两个比特的编码值;
将每一所述图块对应的两个比特的编码值写入每一所述图块的图块信息的图块头信息中的预留位;
针对每一所述图块,通过所述TBR架构的后端模块从系统内存中读取所述图块的图块信息的图块头信息,并对所述图块头信息中的预留位的两个比特的编码值进行解码,得到所述图块对应的负载等级。
15.一种图块分发装置,其特征在于,应用于包括至少两个处理器核心的图形处理器,所述图形处理器基于图块渲染TBR架构进行图块分发过程,所述装置包括:
前端模块,用于确定多个图块中每一所述图块对应的负载等级;所述负载等级用于表征所述图块中存在的图元数量;
所述前端模块,用于将每一所述图块对应的负载等级传递至所述TBR架构的后端模块;
后端模块,用于针对每一所述图块,基于所述图块对应的状态指示器组中每一所述处理器核心对应的状态指示器,从所述至少两个处理器核心中确定所述图块对应的目标处理器核心;
其中,所述图块对应的状态指示器组的状态指示器的排列顺序与所述图块的负载等级相关。
16.一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至14任一项所述方法中的步骤。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至14任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310457192.8A CN116188244B (zh) | 2023-04-25 | 2023-04-25 | 图块分发方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310457192.8A CN116188244B (zh) | 2023-04-25 | 2023-04-25 | 图块分发方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116188244A true CN116188244A (zh) | 2023-05-30 |
CN116188244B CN116188244B (zh) | 2023-07-25 |
Family
ID=86452553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310457192.8A Active CN116188244B (zh) | 2023-04-25 | 2023-04-25 | 图块分发方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116188244B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116740248A (zh) * | 2023-08-08 | 2023-09-12 | 摩尔线程智能科技(北京)有限责任公司 | 图块分发的控制方法、芯片及装置、控制器、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180137677A1 (en) * | 2016-11-17 | 2018-05-17 | Samsung Electronics Co., Ltd. | Tile-based rendering method and apparatus |
US20180197271A1 (en) * | 2017-01-12 | 2018-07-12 | Imagination Technologies Limited | Graphics processing units and methods using cost indications for sets of tiles of a rendering space |
CN111062858A (zh) * | 2019-12-27 | 2020-04-24 | 西安芯瞳半导体技术有限公司 | 高效的提前渲染方法、装置及计算机存储介质 |
CN114463160A (zh) * | 2022-01-30 | 2022-05-10 | 摩尔线程智能科技(北京)有限责任公司 | 一种图形流水线的并行处理方法、装置及可读存储介质 |
CN115100022A (zh) * | 2022-08-23 | 2022-09-23 | 芯动微电子科技(珠海)有限公司 | 图形处理方法及系统 |
-
2023
- 2023-04-25 CN CN202310457192.8A patent/CN116188244B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180137677A1 (en) * | 2016-11-17 | 2018-05-17 | Samsung Electronics Co., Ltd. | Tile-based rendering method and apparatus |
US20180197271A1 (en) * | 2017-01-12 | 2018-07-12 | Imagination Technologies Limited | Graphics processing units and methods using cost indications for sets of tiles of a rendering space |
CN111062858A (zh) * | 2019-12-27 | 2020-04-24 | 西安芯瞳半导体技术有限公司 | 高效的提前渲染方法、装置及计算机存储介质 |
CN114463160A (zh) * | 2022-01-30 | 2022-05-10 | 摩尔线程智能科技(北京)有限责任公司 | 一种图形流水线的并行处理方法、装置及可读存储介质 |
CN115100022A (zh) * | 2022-08-23 | 2022-09-23 | 芯动微电子科技(珠海)有限公司 | 图形处理方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116740248A (zh) * | 2023-08-08 | 2023-09-12 | 摩尔线程智能科技(北京)有限责任公司 | 图块分发的控制方法、芯片及装置、控制器、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116188244B (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10223122B2 (en) | Managing event count reports in a tile-based architecture | |
US10991152B2 (en) | Adaptive shading in a graphics processing pipeline | |
US10733794B2 (en) | Adaptive shading in a graphics processing pipeline | |
EP2380138B1 (en) | Multi level display control list in tile based 3d computer graphics system | |
US7928990B2 (en) | Graphics processing unit with unified vertex cache and shader register file | |
US8072460B2 (en) | System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture | |
EP3108452B1 (en) | Shader pipeline with shared data channels | |
US10055883B2 (en) | Frustum tests for sub-pixel shadows | |
US20140354666A1 (en) | Vertex parameter data compression | |
CN116188244B (zh) | 图块分发方法、装置、设备及存储介质 | |
CN111062858A (zh) | 高效的提前渲染方法、装置及计算机存储介质 | |
CN112801855B (zh) | 基于图元的渲染任务调度的方法、装置及存储介质 | |
CN116740248A (zh) | 图块分发的控制方法、芯片及装置、控制器、设备和介质 | |
US20230048839A1 (en) | Compressing texture data on a per-channel basis | |
CN115049531B (zh) | 图像渲染方法、装置、图形处理设备及存储介质 | |
US20150228113A1 (en) | Graphic data rendering method and apparatus, and recording medium | |
CN116820580B (zh) | 指令的执行方法、系统及装置、图形处理器及电子设备 | |
CN117252751B (zh) | 几何处理方法、装置、设备及存储介质 | |
US11625225B2 (en) | Applications of and techniques for quickly computing a modulo operation by a Mersenne or a Fermat number | |
KR102111740B1 (ko) | 영상 데이터를 처리하는 방법 및 디바이스. | |
US20220366631A1 (en) | Accelerated processing via a physically based rendering engine | |
Kim et al. | A memory-efficient unified early z-test | |
CN116438577A (zh) | 用于选择渲染模式的方法和装置 | |
CN116957899A (zh) | 图形处理器、系统、装置、设备及方法 | |
CN111078158A (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 |