CN115237599A - 一种渲染任务处理方法和装置 - Google Patents
一种渲染任务处理方法和装置 Download PDFInfo
- Publication number
- CN115237599A CN115237599A CN202210891993.0A CN202210891993A CN115237599A CN 115237599 A CN115237599 A CN 115237599A CN 202210891993 A CN202210891993 A CN 202210891993A CN 115237599 A CN115237599 A CN 115237599A
- Authority
- CN
- China
- Prior art keywords
- rendering
- command
- commands
- target
- driver
- 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
- 238000009877 rendering Methods 0.000 title claims abstract description 309
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 230000008520 organization Effects 0.000 claims abstract description 38
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
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
技术领域
本申请涉及计算机技术领域,特别是涉及一种渲染任务处理方法和装置。
背景技术
CPU擅长串行计算,GPU擅长并行计算。在计算机图形学中,CPU绘图一次只能画一个像素,而GPU绘图一次能够绘制大量的像素,如果二者需要交互,对CPU来说代价非常大。
实际上,传统技术中的CPU在调用GPU提供的图形绘制接口(如,Draw)之前,CPU往往需要做大量的工作。例如,传统CPU在利用直接命令来绘制内容时,传统CPU往往需要多次准备每个Draw的命令以及资源,这也使得CPU与GPU需要频繁进行交互,不利于提高终端设备的图形绘制性能。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高终端设备的图形绘制性能的渲染任务处理方法和装置。
一种渲染任务处理方法,所述方法应用于终端设备,所述终端设备包括图形处理器,所述终端设备安装有应用程序和驱动程序,所述方法包括:
所述应用程序针对渲染任务创建至少一个绘制调用的渲染准备数据和目标数据组织方式;所述渲染准备数据包括实际参数缓冲区;所述实际参数缓冲区记录有执行各绘制调用所指定的实际参数;所述目标数据组织方式用于确定各所述绘制调用所绑定的数据资源的组织方式;
所述驱动程序根据各所述实际参数的类型,计算渲染命令数量以及创建记录有前置命令的前置命令缓冲区;所述渲染命令数量用于表征所述图形处理器实现所述渲染任务所执行的渲染命令的数量;所述前置命令为所述图形处理器在执行所述渲染命令之前需要执行的命令;
当所述应用程序针对所述渲染任务调用渲染任务执行函数时,所述驱动程序则根据渲染命令数量创建渲染命令缓冲区,并根据所述渲染准备数据在所述渲染命令缓冲区中生成可被所述图形处理器执行的目标渲染命令;各所述目标渲染命令包括用于读取所述实际参数缓冲区的寄存器地址;所述寄存器地址为根据所述目标数据组织方式确定得到的;
所述驱动程序根据所述前置命令缓冲区中的前置命令和所述渲染命令缓冲区中的目标渲染命令,触发所述图形处理器实现所述渲染任务。
在其中一个实施例中,所述驱动程序根据所述前置命令缓冲区中的前置命令和所述渲染命令缓冲区中的目标渲染命令,触发所述图形处理器实现所述渲染任务,包括:所述驱动程序将所述前置命令缓冲区中的前置命令和所述渲染命令缓冲区中的目标渲染命令写入DMA控制器;所述DMA控制器用于将所述前置命令和所述目标渲染命令传输至所述图形处理器;所述图形处理器用于执行所述前置命令和所述目标渲染命令,以实现所述渲染任务。
在其中一个实施例中,所述驱动程序根据各所述实际参数的类型,计算渲染命令数量以及创建记录有前置命令的前置命令缓冲区,包括:所述驱动程序根据各所述实际参数的类型,基于预先通过宏的方式定义好每种所述类型对应的前置命令的数量,确定前置命令数量;所述前置命令数量用于表征所述图形处理器在执行所述渲染命令之前需要执行的所述前置命令的数量;所述驱动程序根据所述前置命令数量,创建所述前置命令缓冲区,并在所述前置命令缓冲区中生成所述前置命令。
在其中一个实施例中,所述驱动程序根据各所述实际参数的类型,计算渲染命令数量以及创建记录有前置命令的前置命令缓冲区,包括:所述驱动程序根据各所述实际参数的类型,基于预先通过宏的方式定义好每种所述类型对应的渲染命令的数量,计算出所述渲染命令数量大小。
在其中一个实施例中,所述应用程序针对渲染任务创建至少一个绘制调用的渲染准备数据和目标数据组织方式,包括:所述应用程序针对所述渲染任务创建所述渲染准备数据;所述渲染准备数据包括所述实际参数缓冲区的格式、每个所述绘制调用绑定的数据资源集合和每个所述绘制调用的类型;所述数据资源集合中各类数据资源的数据结构根据所述目标数据组织方式确定得到。
在其中一个实施例中,所述方法还包括:所述驱动程序计算各个着色器阶段所访问的寄存器的起始地址;所述驱动程序根据所述寄存器的起始地址,初始化读取所述实际参数缓冲区中各实际参数的寄存器地址。
在其中一个实施例中,所述实际参数缓冲区为具有将至少一个结构体作为一元素的数组;每个所述结构体对应一个所述绘制调用,且一个所结构体包括执行对应所述绘制调用指定的实际参数;所述实际参数包括绘制参数。
一种渲染任务处理装置,所述装置应用于终端设备,所述终端设备包括图形处理器,所述终端设备安装有应用程序和驱动程序,所述装置包括:
创建模块,用于实现所述应用程序针对渲染任务创建至少一个绘制调用的渲染准备数据和目标数据组织方式;所述渲染准备数据包括实际参数缓冲区;所述实际参数缓冲区记录有执行各绘制调用所指定的实际参数;所述目标数据组织方式用于确定各所述绘制调用所绑定的数据资源的组织方式;
预计算模块,用于实现所述驱动程序根据各所述实际参数的类型,计算渲染命令数量以及创建记录有前置命令的前置命令缓冲区;所述渲染命令数量用于表征所述图形处理器实现所述渲染任务所执行的渲染命令的数量;所述前置命令为所述图形处理器在执行所述渲染命令之前需要执行的命令;
生成模块,用于实现当所述应用程序针对所述渲染任务调用渲染任务执行函数时,所述驱动程序则根据渲染命令数量创建渲染命令缓冲区,并根据所述渲染准备数据在所述渲染命令缓冲区中生成可被所述图形处理器执行的目标渲染命令;各所述目标渲染命令包括用于读取所述实际参数缓冲区的寄存器地址;所述寄存器地址为根据所述目标数据组织方式确定得到的;
触发模块,用于实现所述驱动程序根据所述前置命令缓冲区中的前置命令和所述渲染命令缓冲区中的目标渲染命令,触发所述图形处理器实现所述渲染任务。
在其中一个实施例中,所述触发模块,具体用于实现所述驱动程序将所述前置命令缓冲区中的前置命令和所述渲染命令缓冲区中的目标渲染命令写入DMA控制器;所述DMA控制器用于将所述前置命令和所述目标渲染命令传输至所述图形处理器;所述图形处理器用于执行所述前置命令和所述目标渲染命令,以实现所述渲染任务。
在其中一个实施例中,所述预计算模块,具体用于实现所述驱动程序根据各所述实际参数的类型,基于预先通过宏的方式定义好每种所述类型对应的前置命令的数量,确定前置命令数量;所述前置命令数量用于表征所述图形处理器在执行所述渲染命令之前需要执行的所述前置命令的数量;所述驱动程序根据所述前置命令数量,创建所述前置命令缓冲区,并在所述前置命令缓冲区中生成所述前置命令。
在其中一个实施例中,所述预计算模块,具体用于实现所述驱动程序各所述实际参数的类型,基于预先通过宏的方式定义好每种所述类型对应的渲染命令的数量,计算出所述渲染命令数量大小。
在其中一个实施例中,所述创建模块,具体用于实现所述应用程序针对所述渲染任务创建所述渲染准备数据;所述渲染准备数据包括所述实际参数缓冲区的格式、每个所述绘制调用绑定的数据资源集合和每个所述绘制调用的类型;所述数据资源集合中各类数据资源的数据结构根据所述目标数据组织方式确定得到。
在其中一个实施例中,所述装置还用于实现所述驱动程序计算各个着色器阶段所访问的寄存器的起始地址;所述驱动程序根据所述寄存器的起始地址,初始化读取所述实际参数缓冲区中各实际参数的寄存器地址。
在其中一个实施例中,所述实际参数缓冲区为具有将至少一个结构体作为一元素的数组;每个所述结构体对应一个所述绘制调用,且一个所结构体包括执行对应所述绘制调用指定的实际参数;所述实际参数包括绘制参数。
上述渲染任务处理方法和装置,通过应用程序针对渲染任务创建至少一个绘制调用的渲染准备数据和用于确定各绘制调用所绑定的数据资源的组织方式的目标数据组织方式,其中,该渲染准备数据包括记录有执行各绘制调用所指定的实际参数的实际参数缓冲区。通过驱动程序预先根据实际参数缓冲区中各实际参数对应的类型,预先计算用于表征图形处理器实现渲染任务所执行的渲染命令的数量和创建记录有前置命令的前置命令缓冲区;使得在应用程序针对渲染任务调用渲染任务执行函数时,驱动程序可以一次性且快速地根据渲染准备数据在渲染命令缓冲区中生成可被图形处理器执行的目标渲染命令,且该目标渲染命令包括用于实际参数缓冲区的寄存器地址,进而用于供触发图形处理器实现渲染任务,进而使得CPU无需多次准备每个绘制调用的命令以及资源,从而避免CPU与GPU之间的频繁交互,有利于提高终端设备的图形绘制性能。
附图说明
图1为一个实施例中一种渲染任务处理方法的流程示意图;
图2为一个实施例中一种目标数据组织方式的示意图;
图3为一个实施例中一种用于描述渲染准备数据的变量的组成示意图;
图4为一个实施例中一种渲染命令缓冲区的示意图;
图5为一个实施例中一种渲染任务处理方法的处理流程图;
图6为一个实施例中渲染任务处理装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种渲染任务处理方法,以该方法应用于终端设备进行说明,终端设备包括图形处理器(GPU),终端设备安装有应用程序(APP)和驱动程序(Driver),该包括以下步骤:
为了便于本领域技术人员的理解,下面先分别对Pipeline Layout、CommandSignature、Command Layout和Argument Buffer这个概念进行具体说明。
一:Pipeline Layout
Pipeline Layout是Root Signature在驱动程序中的表述,它规定了Shader(着色器)需要访问的数据类型。
其中,Root Signature可以是指用于确定各Draw Call(绘制调用,一种图形绘制接口的调用命令)所绑定的数据资源的组织方式。本申请中,Root Signature可以被称为目标数据组织方式。
其中,Root Signature规定了着色器需要访问的数据类型,这类数据叫做RootParameter。Root Signature由一个或者多个Root Parameter组成。Root Parameter由三种类型构成,分别是Root Constant(根常量),Root Descriptor(根描述符),DescriptorTable(描述符表)。
为了便于本领域技术人员的理解,图2提供了一种目标数据组织方式的示意图;其中,该Root Signature由3个Root Parameter构成的Root Signature,Parameter 0的类型是Root Constant,一个float4类型的数,绑定到shader的b0 slot。Parameter 1的类型是Descriptor Table,由三个Descriptor组成,两个SRV(shader resource view,着色器资源视图)和一个CBV(constant buffer view,常量缓冲区视图),分别绑定到Shader(着色器)的t0,t1和b1。Parameter 2的类型是Root Descriptor,一个UAV(unordered access view,无序访问视图),绑定到shader的u0。
二:Command Signature
实际应用中,通过Command Signature指示在执行绘制调用时GPU需要接收什么信息,以及每个模型绘制时分别需要什么信息。换句话说,Command Signature应用程序执行间接绘制时指定的参数。本申请中,Command Signature又被称为渲染准备数据。
实际应用中,Command Signature可以包括至少以下3个方面内容:
1:Argument buffer(实际参数缓冲区)的格式。
其中,该实际参数缓冲区记录有执行各绘制调用所指定的实际参数Argument。
其中,实际参数缓冲区为具有将至少一个结构体(Structure)作为一元素的数组。每个结构体对应一个Draw Call,且一个结构体包括执行对应DrawCall指定的实际参数;实际参数至少包括绘制参数。
2:Draw Call的类型,绘制调用的类型可以包括DrawInstanced类型,DrawIndexdInstanced类型和Disptch类型等。
3:各Draw Call需要绑定的资源集合,这个集合继承于Root Signature,即采用该Root Signature来管理当前管道(Pipeline)中各类数据资源Resource(CBV(constantbuffer view),SRV(shader resource view),UAV(unordered access view)等)的数据结构。
为了便于本领域技术人员的理解,下面采用举例方式对Command Signature加以说明:
假设APP对每一个Draw Call都要求绑定一个不同的根常量,那么APP在创建Command Signature时指定会Argument Buffer的格式,使Argument Buffer为每个DrawCall指定参数即为每个Draw Call指定根常量和绘制参数。
此时APP所生成的Argument Buffer是以Structure为元素的数组,这个数组的大小由ExecuteIndirect函数(渲染任务执行函数)的参数指定,每个Structure对应一次DrawCall,这个Structure的成员就是上面指定的参数,即根常量和绘制参数。Argument Buffer的布局如表1所示。
表1
三:Command Layout
Command Layout是由driver定义私有类型,在应用程序创建Command Signature时被初始化,用来描述Command Signature。Driver为该结构定义了如图3所示的几个关键变量。
其中,Command Layout包括IndirectCommandDwc,、CommonCommandDwc、pCommonCommands、pRegRangeStart、numArgmentDescs、pArgumentDescs和pPipelineLayout。
其中,IndirectCommandDwc为上文中的渲染命令数量即硬件(HW,图形处理器)需要解析间接命令的数量大小。具体实现中,驱动程序可以各实际参数的类型(ArgumentType),计算出每种类型需要占用的HW的命令数量。
其中,CommonCommandDwc可以是指前置命令(Common Command)的数量,可理解为GPU解析间接命令之前需要执行的命令,该命令由CPU产生,存放在pCommonCommands中。
其中,pRegRangeStart可以是指一个数组,该数组用于存放每种Type的HWRegister(寄存器)的起始位置。
另外,上述的numArgmentDescs,pArgumentDescs,pPipelineLayout,这三个变量是应用程序在创建Command Signature时的传入参数,供驱动程序进行保存备用。
其中,pPipelineLayout可以是指driver描述Root Signature的数据结构。
其中,numArgmentDescs描述pArgumentDescs数组的大小。numArgmentDescs用于表征实际参数缓冲区中的结构体(Structure)中成员的个数。其中,pArgumentDescss用于描述Structure中的每个成员的参数。
举例来说,已知实际参数缓冲区中包括一个绘制调用对应的实际参数;该实际参数包括根常量和绘制参数。可以看出,numArgmentDescs等于2,pArgumentDescs中的pArgumentDescs[0]描述根常量,pArgumentDescs[1]描述绘制参数。
需要说明的是,pArgumentDescs数组中每个元素都会被指定一种Indirect Type(间接绘制类型),如表2。
表2
Type(类型) | Comment(备注) |
DRAW | Indicates the type is a Draw call |
DRAW_INDEXED | Indicates the type is a DrawIndexed call. |
DISPATCH | Indicates the type is a Dispatch call. |
VERTEX_BUFFER_VIEW | Indicates the type is a vertex buffer view. |
INDEX_BUFFER_VIEW | Indicates the type is an index buffer view. |
CONSTANT | Indicates the type is a constant. |
CONSTANT_BUFFER_VIEW | Indicates the type is a constant buffer view(CBV). |
SHADER_RESOURCE_VIEW | Indicates the type is a shader resource view(SRV). |
UNORDERED_ACCESS_VIEW | Indicates the type is an unordered access view(UAV). |
DISPATCH_RAYS | Indicates the type is a Dispatch Rays call. |
DISPATCH_MESH | Indicates the type is a Dispatch Mesh call. |
下表将Indirect Type更新到表1,得到表3:
表3
如此,可以通过表3来表征出各实际参数对应的间接绘制类型。例如,表3中的RootConstant所对应的类型(typr)为CONSTANT。
四:Argument Buffer
Argument Buffer是App初始化的Buffer,存放着pArgumentDescs所描述的数据,上位已经详细说明,在此不再赘述。应用程序在执行ExecuteIndirect时,结合GPU硬件的设计,根据IndirectCommandDwc大小,驱动程序Driver会分配一块allocation,命名为IndirectCommandBuffer,用来记录GPU可执行的命令,该命令中同时也包含ArgumentBuffer的地址,如图4。
步骤S110,应用程序针对渲染任务创建至少一个绘制调用的渲染准备数据和目标数据组织方式。
其中,渲染任务可以是指应用程序指示图形处理器执行的图形绘制任务。例如,渲染任务可以是视椎体剔除任务。
其中,绘制调用可以是指调用图形处理器提供的图形绘制接口。实际应用中,绘制调用也可以命名为Draw Call。
实际应用中,该渲染任务为可以通过间接绘制(Indirect Draw)实现的任务。
其中,间接绘制就是指利用间接命令来绘制内容。与直接绘制不同,间接绘制是将多个Draw Call的命令(Command),资源(Resource)放到缓冲区(buffer)中,交给GPU去解析,摒弃了传统的由CPU多次准备每个Draw的Command以及Resource,因此大大减少了Draw的调用。
具体实现中,应用程序针对渲染任务创建目标数据组织方式(即Create RootSignature)和针对渲染任务创建至少一个绘制调用的渲染准备数据(即CreateCommandSignature)。
步骤S120,驱动程序根据各实际参数的类型,计算渲染命令数量以及创建记录有前置命令的前置命令缓冲区。
其中,渲染命令数量用于表征图形处理器实现渲染任务所执行的渲染命令的数量。实际应用中,渲染命令数量可以采用上文中的变量Indirect CommandDwc进行记录。
其中,前置命令为图形处理器在执行渲染命令之前需要执行的命令。
具体实现中,驱动程序根据各实际参数的类型(Argument Type),计算图形处理器实现渲染任务所执行的渲染命令的数量,得到渲染命令数量。以及,驱动程序根据各实际参数的类型(Argument Type),创建记录有前置命令的前置命令缓冲区。
具体来说,驱动程序可以根据各实际参数的类型计算出图形处理器在执行渲染命令前需要先执行的命令的数量即前置命令数量CommonCommandDwc;然后,驱动程序根据前置命令数量,创建一前置命令缓冲区,并在该前置命令缓冲区中生成前置命令。
步骤S130,当应用程序针对渲染任务调用渲染任务执行函数时,驱动程序则根据渲染命令数量创建渲染命令缓冲区Indirect,并根据渲染准备数据在渲染命令缓冲区中生成可被图形处理器执行的目标渲染命令;各目标渲染命令包括用于读取实际参数缓冲区的寄存器地址。
其中,寄存器地址为根据目标数据组织方式确定得到的。
其中,渲染任务执行函数可以称为ExecuteIndirect函数。
具体实现中,当应用程序针对渲染任务调用ExecuteIndirect函数,驱动程序则根据渲染命令数量创建渲染命令缓冲区IndirectCommandBuffer,用来记录GPU可执行的命令,并根据渲染准备数据在渲染命令缓冲区中生成可被图形处理器执行的目标渲染命令(即IndirectCommand,间接命令);其中,各目标渲染命令还包括用于读取实际参数缓冲区的寄存器地址。
步骤S140,驱动程序根据前置命令缓冲区中的前置命令和渲染命令缓冲区中的目标渲染命令,触发图形处理器实现渲染任务。
具体实现中,驱动程序可以采用DMA(直接存储器访问)的方式向硬件HW即图形处理器发送前置命令缓冲区中的前置命令和渲染命令缓冲区中的目标渲染命令,进而供图形处理器解析并执行前置命令缓冲区中的前置命令和渲染命令缓冲区中的目标渲染命令,进而使图形处理器实现上述的渲染任务。
上述的渲染任务处理方法,通过应用程序针对渲染任务创建至少一个绘制调用的渲染准备数据和用于确定各绘制调用所绑定的数据资源的组织方式的目标数据组织方式,其中,该渲染准备数据包括记录有执行各绘制调用所指定的实际参数的实际参数缓冲区。通过驱动程序预先根据实际参数缓冲区中各实际参数对应的类型,预先计算用于表征图形处理器实现渲染任务所执行的渲染命令的数量和创建记录有前置命令的前置命令缓冲区;使得在应用程序针对渲染任务调用渲染任务执行函数时,驱动程序可以一次性且快速地根据渲染准备数据在渲染命令缓冲区中生成可被图形处理器执行的目标渲染命令,且该目标渲染命令包括用于实际参数缓冲区的寄存器地址,进而用于供触发图形处理器实现渲染任务,进而使得CPU无需多次准备每个绘制调用的命令以及资源,从而避免CPU与GPU之间的频繁交互,有利于提高终端设备的图形绘制性能。
在另一个实施例中,驱动程序根据前置命令缓冲区中的前置命令和渲染命令缓冲区中的目标渲染命令以触发图形处理器实现渲染任务,包括:驱动程序将前置命令缓冲区中的前置命令和渲染命令缓冲区中的目标渲染命令写入DMA控制器;DMA控制器用于将前置命令和目标渲染命令传输至图形处理器;图形处理器用于执行前置命令和目标渲染命令,以实现渲染任务。
具体实现中,驱动程序根据前置命令缓冲区中的前置命令和渲染命令缓冲区中的目标渲染命令以触发图形处理器实现渲染任务的过程中,驱动程序可以将前置命令缓冲区中的前置命令和渲染命令缓冲区中的目标渲染命令写入DMA控制器。
DMA控制器在接收到前置命令和目标渲染命令后,DMA控制器则将前置命令和目标渲染命令传输至图形处理器,以供图形处理器执行前置命令和目标渲染命令,以实现渲染任务。
本实施例的技术方案,驱动程序通过采用DMA来向图形处理器下发前置命令和渲染命令,可以实现CPU与GPU之间的有效交互,并使终端设备可以允许不同速度的硬件装置之间的沟通,而不需要依赖于CPU的大量中断负载。
在另一个实施例中,驱动程序根据各实际参数的类型,计算渲染命令数量以及创建记录有前置命令的前置命令缓冲区,包括:驱动程序根据各实际参数的类型,基于预先通过宏的方式定义好每种类型对应的渲染命令的数量,计算出渲染命令数量。
具体实现中,驱动程序根据各实际参数的类型,计算渲染命令数量以及创建记录有前置命令的前置命令缓冲区的过程中,驱动程序可以利用在Command Layout过程中确定的各实际参数Argument与Indirect Type的对应关系(如,表3所示),基于预先通过宏的方式定义好每种Indirect Type对应的渲染命令(IndirectCommand)的数量,计算出渲染命令数量,并把它们都累加到IndirectCommandDwc。
具体来说,前置命令缓冲区Argument Buffer是App初始化的Buffer,存放着实际参数。在应用程序执行ExecuteIndirect时,结合GPU硬件的设计,驱动程序会根据渲染命令数量分配一块allocation,命名为IndirectCommandBuffer,用来记录GPU可执行的命令,该命令中同时也包含Argument Buffer的地址,如图4。
在另一个实施例中,驱动程序根据各实际参数的类型,基于预先通过宏的方式定义好每种类型对应的前置命令的数量,确定前置命令数量;驱动程序根据前置命令数量,创建前置命令缓冲区,并在前置命令缓冲区中生成前置命令。
其中,前置命令数量用于表征图形处理器在执行渲染命令之前需要执行的前置命令的数量。实际应用中,前置命令也可以被称为Common Command。
具体实现中,驱动程序利用在Command Layout过程中确定的各实际参数Argument与Indirect Type的对应关系,基于预先通过宏的方式定义好每种Indirect Type对应的前置命令的数量,得到Common Command的大小(即前置命令数量)。然后,Runtime在调用Driver的CalcPrivateCommandSignatureSize函数时,让Runtime为driver分配存放CommonCommand的内存,赋值给指针pCommonCommands。接下来,驱动程序则会在pCommonCommands中生成Common Command,如果Command Signature中有多个Argument,则所有的CommonCommand都会存到pCommonCommands,并将Common Command的数量累加进CommonCommandDwc中。
在另一个实施例中,方法还包括:驱动程序计算各个着色器阶段所访问的寄存器的起始地址(即Pipeline Layout中所记录的寄存器起始地址);驱动程序根据PipelineLayout中所记录的寄存器起始地址,初始化用于读取实际参数缓冲区中各实际参数的寄存器地址。
具体实现中,驱动程序计算Root Parameter在各个着色器(shader,一种计算程序)阶段所访问的寄存器的起始地址,得到Pipeline Layout中所记录的寄存器起始地址;驱动程序通过该寄存器起始地址,初始化pRegRangeStart,即计算pArgumentDescs中各实际参数类型所对应的HW寄存器的起始位置,进而实现确定用于读取实际参数缓冲区中各实际参数的寄存器地址。
本实施例的技术方案,驱动程序根据Pipeline Layout中所记录的寄存器起始地址初始化用于读取实际参数缓冲区中各实际参数的寄存器地址,从而有利于在应用程序调用ExecuteIndirect函数时驱动程序可以快速准确生成图形处理器所需要的命令。
为了便于本领域技术人员的理解,图5示例性地提供了一种渲染任务处理方法的处理流程图;其中,应用程序针对渲染任务执行资源创建和绑定操作(Resources Createand Bind)、创建RootSignature(Create RootSignature)和创建Command Signature。
Pipeline Layout阶段
驱动程序在该阶段的主要工作是计算RootSignature中RootParameter在各个shader阶段所访问的寄存器的起始地址。
Command Layout阶段
驱动程序针对Argumentbuffer中的各Argument对应的Indirect Type,基于预先通过宏的方式定义好每种Indirect Type需要的Common Command的大小。在Runtime调用驱动程序的CalcPrivateCommandSignatureSize函数时,让Runtime为驱动程序分配存放Common Command的内存,赋值给指针pCommonCommands。
接下来驱动程序会在pCommonCommands中生成Common Command,如果CommandSignature有多个Argument,则所有的Common Command都会存到pCommonCommands,这些Command的大小会累加进CommonCommandDwc。
驱动程序针对Argumentbuffer中的各Argument对应的Indirect Type,基于预先通过宏的方式定义好每种Indirect Type需要的IndirectCommand的大小,并把它们都累加到IndirectCommandDwc。
驱动程序通过Pipeline Layout阶段中确定的寄存器地址初始化pRegRangeStart。
ExecuteIndirect阶段
驱动程序在这一阶段,驱动程序首先将pCommonCommands中记录的CommonCommand填入DMA(Direct Memory Access)。驱动程序根据IndirectCommandDwc的大小,驱动程序向系统申请一块allocation,赋值给指针pIndirectCommandBuffer,在这块allocation中生成间接命令Indirect Command。
Indirec tDraw Command阶段
生成IndirectDraw Command,并将该Command写入DMA。其结构如表4:
表4
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的渲染任务处理方法的渲染任务处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个渲染任务处理装置实施例中的具体限定可以参见上文中对于渲染任务处理方法的限定,在此不再赘述。
在一个实施例中,如图6所示,提供了一种渲染任务处理装置,所述装置应用于终端设备,所述终端设备包括图形处理器,所述终端设备安装有应用程序和驱动程序,所述装置包括:
创建模块610,用于实现所述应用程序针对渲染任务创建至少一个绘制调用的渲染准备数据和目标数据组织方式;所述渲染准备数据包括实际参数缓冲区的格式;所述实际参数缓冲区记录有执行各绘制调用所指定的实际参数;所述目标数据组织方式用于确定各所述绘制调用所绑定的数据资源的组织方式;
预计算模块620,用于实现所述驱动程序根据各所述实际参数的类型,计算渲染命令数量以及创建记录有前置命令的前置命令缓冲区;所述渲染命令数量用于表征所述图形处理器实现所述渲染任务所执行的渲染命令的数量;所述前置命令为所述图形处理器在执行所述渲染命令之前需要执行的命令;
生成模块630,用于实现当所述应用程序针对所述渲染任务调用渲染任务执行函数时,所述驱动程序则根据渲染命令数量创建渲染命令缓冲区,并根据所述渲染准备数据在所述渲染命令缓冲区中生成可被所述图形处理器执行的目标渲染命令;各所述目标渲染命令包括用于读取所述实际参数缓冲区的寄存器地址;所述寄存器地址为根据所述目标数据组织方式确定得到的;
触发模块640,用于实现所述驱动程序根据所述前置命令缓冲区中的前置命令和所述渲染命令缓冲区中的目标渲染命令,触发所述图形处理器实现所述渲染任务。
在其中一个实施例中,所述触发模块640,具体用于实现所述驱动程序将所述前置命令缓冲区中的前置命令和所述渲染命令缓冲区中的目标渲染命令写入DMA控制器;所述DMA控制器用于将所述前置命令和所述目标渲染命令传输至所述图形处理器;所述图形处理器用于执行所述前置命令和所述目标渲染命令,以实现所述渲染任务。
在其中一个实施例中,所述预计算模块620,具体用于实现所述驱动程序根据各所述实际参数的类型,基于预先通过宏的方式定义好每种所述类型对应的前置命令的数量,确定前置命令数量;所述前置命令数量用于表征所述图形处理器在执行所述渲染命令之前需要执行的所述前置命令的数量;所述驱动程序根据所述前置命令数量,创建所述前置命令缓冲区,并在所述前置命令缓冲区中生成所述前置命令。
在其中一个实施例中,所述预计算模块620,具体用于实现所述驱动程序各所述实际参数的类型,基于预先通过宏的方式定义好每种所述类型对应的渲染命令的数量,计算出所述渲染命令数量。
在其中一个实施例中,所述创建模块610,具体用于实现所述应用程序针对所述渲染任务创建所述渲染准备数据;所述渲染准备数据包括所述实际参数缓冲区的格式、每个所述绘制调用绑定的数据资源集合和每个所述绘制调用的类型;所述数据资源集合中各类数据资源的数据结构根据所述目标数据组织方式确定得到。
在其中一个实施例中,所述装置还用于实现所述驱动程序计算各个着色器阶段所访问的寄存器的起始地址;所述驱动程序根据所述寄存器的起始地址,初始化用于读取所述实际参数缓冲区中各实际参数的寄存器地址。
在其中一个实施例中,所述实际参数缓冲区为具有将至少一个结构体作为一元素的数组;每个所述结构体对应一个所述绘制调用,且一个所述结构体包括执行对应所述绘制调用指定的实际参数;所述实际参数包括绘制参数。
上述渲染任务处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (14)
1.一种渲染任务处理方法,所述方法应用于终端设备,所述终端设备包括图形处理器,所述终端设备安装有应用程序和驱动程序,其特征在于,所述方法包括:
所述应用程序针对渲染任务创建至少一个绘制调用的渲染准备数据和目标数据组织方式;所述渲染准备数据包括实际参数缓冲区;所述实际参数缓冲区记录有执行各绘制调用所指定的实际参数;所述目标数据组织方式用于确定各所述绘制调用所绑定的数据资源的组织方式;
所述驱动程序根据各所述实际参数的类型,计算渲染命令数量以及创建记录有前置命令的前置命令缓冲区;所述渲染命令数量用于表征所述图形处理器实现所述渲染任务所执行的渲染命令的数量;所述前置命令为所述图形处理器在执行所述渲染命令之前需要执行的命令;
当所述应用程序针对所述渲染任务调用渲染任务执行函数时,所述驱动程序则根据渲染命令数量创建渲染命令缓冲区,并根据所述渲染准备数据在所述渲染命令缓冲区中生成可被所述图形处理器执行的目标渲染命令;各所述目标渲染命令包括用于读取所述实际参数缓冲区的寄存器地址;所述寄存器地址为根据所述目标数据组织方式确定得到的;
所述驱动程序根据所述前置命令缓冲区中的前置命令和所述渲染命令缓冲区中的目标渲染命令,触发所述图形处理器实现所述渲染任务。
2.根据权利要求1所述的方法,其特征在于,所述驱动程序根据所述前置命令缓冲区中的前置命令和所述渲染命令缓冲区中的目标渲染命令,触发所述图形处理器实现所述渲染任务,包括:
所述驱动程序将所述前置命令缓冲区中的前置命令和所述渲染命令缓冲区中的目标渲染命令写入DMA控制器;所述DMA控制器用于将所述前置命令和所述目标渲染命令传输至所述图形处理器;所述图形处理器用于执行所述前置命令和所述目标渲染命令,以实现所述渲染任务。
3.根据权利要求1所述的方法,其特征在于,所述驱动程序根据各所述实际参数的类型,计算渲染命令数量以及创建记录有前置命令的前置命令缓冲区,包括:
所述驱动程序根据各所述实际参数的类型,基于预先通过宏的方式定义好每种所述类型对应的前置命令的数量,确定前置命令数量;所述前置命令数量用于表征所述图形处理器在执行所述渲染命令之前需要执行的所述前置命令的数量;
所述驱动程序根据所述前置命令数量,创建所述前置命令缓冲区,并在所述前置命令缓冲区中生成所述前置命令。
4.根据权利要求3所述的方法,其特征在于,所述驱动程序根据各所述实际参数的类型,计算渲染命令数量以及创建记录有前置命令的前置命令缓冲区,包括:
所述驱动程序根据各所述实际参数的类型,基于预先通过宏的方式定义好每种所述类型对应的渲染命令的数量,计算出所述渲染命令数量。
5.根据权利要求1所述的方法,其特征在于,所述应用程序针对渲染任务创建至少一个绘制调用的渲染准备数据和目标数据组织方式,包括:
所述应用程序针对所述渲染任务创建所述渲染准备数据;所述渲染准备数据包括所述实际参数缓冲区的格式、每个所述绘制调用绑定的数据资源集合和每个所述绘制调用的类型;所述数据资源集合中各类数据资源的数据结构根据所述目标数据组织方式确定得到。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述驱动程序计算各个着色器阶段所访问的寄存器的起始地址;
所述驱动程序根据所述寄存器的起始地址,初始化用于读取所述实际参数缓冲区中各实际参数的寄存器地址。
7.根据权利要求1所述的方法,其特征在于,所述实际参数缓冲区为具有将至少一个结构体作为一元素的数组;每个所述结构体对应一个所述绘制调用,且一个所结构体包括执行对应所述绘制调用指定的实际参数;所述实际参数包括绘制参数。
8.一种渲染任务处理装置,所述装置应用于终端设备,所述终端设备包括图形处理器,所述终端设备安装有应用程序和驱动程序,其特征在于,所述装置包括:
创建模块,用于实现所述应用程序针对渲染任务创建至少一个绘制调用的渲染准备数据和目标数据组织方式;所述渲染准备数据包括实际参数缓冲区;所述实际参数缓冲区记录有执行各绘制调用所指定的实际参数;所述目标数据组织方式用于确定各所述绘制调用所绑定的数据资源的组织方式;
预计算模块,用于实现所述驱动程序根据各所述实际参数的类型,计算渲染命令数量以及创建记录有前置命令的前置命令缓冲区;所述渲染命令数量用于表征所述图形处理器实现所述渲染任务所执行的渲染命令的数量;所述前置命令为所述图形处理器在执行所述渲染命令之前需要执行的命令;
生成模块,用于实现当所述应用程序针对所述渲染任务调用渲染任务执行函数时,所述驱动程序则根据渲染命令数量创建渲染命令缓冲区,并根据所述渲染准备数据在所述渲染命令缓冲区中生成可被所述图形处理器执行的目标渲染命令;各所述目标渲染命令包括用于读取所述实际参数缓冲区的寄存器地址;所述寄存器地址为根据所述目标数据组织方式确定得到的;
触发模块,用于实现所述驱动程序根据所述前置命令缓冲区中的前置命令和所述渲染命令缓冲区中的目标渲染命令,触发所述图形处理器实现所述渲染任务。
9.根据权利要求8所述的装置,其特征在于,所述触发模块,具体用于实现所述驱动程序将所述前置命令缓冲区中的前置命令和所述渲染命令缓冲区中的目标渲染命令写入DMA控制器;所述DMA控制器用于将所述前置命令和所述目标渲染命令传输至所述图形处理器;所述图形处理器用于执行所述前置命令和所述目标渲染命令,以实现所述渲染任务。
10.根据权利要求8所述的装置,其特征在于,所述预计算模块,具体用于实现所述驱动程序根据各所述实际参数的类型,基于预先通过宏的方式定义好每种所述类型对应的前置命令的数量,确定前置命令数量;所述前置命令数量用于表征所述图形处理器在执行所述渲染命令之前需要执行的所述前置命令的数量;所述驱动程序根据所述前置命令数量,创建所述前置命令缓冲区,并在所述前置命令缓冲区中生成所述前置命令。
11.根据权利要求10所述的装置,其特征在于,所述预计算模块,具体用于实现所述驱动程序各所述实际参数的类型,基于预先通过宏的方式定义好每种所述类型对应的渲染命令的数量,计算出所述渲染命令数量。
12.根据权利要求8所述的装置,其特征在于,所述创建模块,具体用于实现所述应用程序针对所述渲染任务创建所述渲染准备数据;所述渲染准备数据包括所述实际参数缓冲区的格式、每个所述绘制调用绑定的数据资源集合和每个所述绘制调用的类型;所述数据资源集合中各类数据资源的数据结构根据所述目标数据组织方式确定得到。
13.根据权利要求8所述的装置,其特征在于,所述装置还用于实现所述驱动程序计算各个着色器阶段所访问的寄存器的起始地址;所述驱动程序根据所述寄存器的起始地址,初始化用于读取所述实际参数缓冲区中各实际参数的寄存器地址。
14.根据权利要求8所述的装置,其特征在于,所述实际参数缓冲区为具有将至少一个结构体作为一元素的数组;每个所述结构体对应一个所述绘制调用,且一个所结构体包括执行对应所述绘制调用指定的实际参数;所述实际参数包括绘制参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210891993.0A CN115237599B (zh) | 2022-07-27 | 2022-07-27 | 一种渲染任务处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210891993.0A CN115237599B (zh) | 2022-07-27 | 2022-07-27 | 一种渲染任务处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115237599A true CN115237599A (zh) | 2022-10-25 |
CN115237599B CN115237599B (zh) | 2023-10-24 |
Family
ID=83676981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210891993.0A Active CN115237599B (zh) | 2022-07-27 | 2022-07-27 | 一种渲染任务处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115237599B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115861511A (zh) * | 2022-12-30 | 2023-03-28 | 格兰菲智能科技有限公司 | 绘制命令的处理方法、装置、系统和计算机设备 |
CN116188247A (zh) * | 2023-02-06 | 2023-05-30 | 格兰菲智能科技有限公司 | 寄存器信息处理方法、装置、计算机设备、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108986013A (zh) * | 2017-06-02 | 2018-12-11 | 苹果公司 | 间接参数缓冲区 |
US20210241411A1 (en) * | 2020-02-03 | 2021-08-05 | Sony Interactive Entertainment Inc. | System and method for efficient multi-gpu rendering of geometry by generating information in one rendering phase for use in another rendering phase |
-
2022
- 2022-07-27 CN CN202210891993.0A patent/CN115237599B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108986013A (zh) * | 2017-06-02 | 2018-12-11 | 苹果公司 | 间接参数缓冲区 |
US20210241411A1 (en) * | 2020-02-03 | 2021-08-05 | Sony Interactive Entertainment Inc. | System and method for efficient multi-gpu rendering of geometry by generating information in one rendering phase for use in another rendering phase |
Non-Patent Citations (1)
Title |
---|
JOHN KESSENICH / GRAHAM SELLERS / DAVE SHREINER 著,王锐 等译: "OpenGL编程指南(原书第9版)", vol. 9, CRC PRESS, pages: 70 - 110 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115861511A (zh) * | 2022-12-30 | 2023-03-28 | 格兰菲智能科技有限公司 | 绘制命令的处理方法、装置、系统和计算机设备 |
CN115861511B (zh) * | 2022-12-30 | 2024-02-02 | 格兰菲智能科技有限公司 | 绘制命令的处理方法、装置、系统和计算机设备 |
CN116188247A (zh) * | 2023-02-06 | 2023-05-30 | 格兰菲智能科技有限公司 | 寄存器信息处理方法、装置、计算机设备、存储介质 |
CN116188247B (zh) * | 2023-02-06 | 2024-04-12 | 格兰菲智能科技有限公司 | 寄存器信息处理方法、装置、计算机设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115237599B (zh) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115237599B (zh) | 一种渲染任务处理方法和装置 | |
US8849753B2 (en) | Automating asynchronous programming in single threaded systems | |
US10261796B2 (en) | Processor and method for executing in-memory copy instructions indicating on-chip or off-chip memory | |
CN110941395B (zh) | 动态随机存取存储器、内存管理方法、系统及存储介质 | |
US9058197B2 (en) | Method for sharing memory of virtual machine and computer system using the same | |
US11409798B2 (en) | Graph processing system including different kinds of memory devices, and operation method thereof | |
CN107632779B (zh) | 数据处理方法和装置、服务器 | |
CN115657946A (zh) | Raid顺序写场景下的片外ddr带宽卸载方法、终端及存储介质 | |
CN116541336B (zh) | 多核芯片、协处理器的软件运行方法 | |
CN109189505B (zh) | 一种减少对象序列化占用存储空间的方法及系统 | |
CN110222123A (zh) | 用于教育平台的Hive动态分区加载的方法及电子设备 | |
CN109558073A (zh) | 一种基于教育系统的磁盘延长寿命的方法及电子设备 | |
CN114490041A (zh) | 数组计算方法、装置、设备、介质和计算机程序产品 | |
US11500632B2 (en) | Processor device for executing SIMD instructions | |
CN116303135B (zh) | 任务数据的装载方法、装置和计算机设备 | |
CN116185497B (zh) | 命令解析方法、装置、计算机设备和存储介质 | |
CN117806709B (zh) | 系统级芯片的性能优化方法、装置、设备和存储介质 | |
EP4049142B1 (en) | Near-memory data reduction | |
CN118012895A (zh) | Sql语句的处理方法及装置、电子设备和存储介质 | |
CN107547648A (zh) | 一种内部数据复制方法及装置 | |
CN116010057A (zh) | 导数据方法、装置、计算机设备、存储介质和产品 | |
CN111796806A (zh) | 生成对象的方法、装置、电子设备及可读存储介质 | |
CN118312100A (zh) | 数据处理方法、装置、计算机设备、存储介质和程序产品 | |
CN115309341A (zh) | 基于分级存储的小文件处理方法、系统、终端及介质 | |
CN116893982A (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 |