CN114494546A - 一种数据处理方法、装置和电子设备 - Google Patents
一种数据处理方法、装置和电子设备 Download PDFInfo
- Publication number
- CN114494546A CN114494546A CN202011270909.0A CN202011270909A CN114494546A CN 114494546 A CN114494546 A CN 114494546A CN 202011270909 A CN202011270909 A CN 202011270909A CN 114494546 A CN114494546 A CN 114494546A
- Authority
- CN
- China
- Prior art keywords
- rendering
- instruction
- rendering instruction
- electronic device
- instructions
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- 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/44—Arrangements for executing specific programs
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- 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
-
- 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/546—Message passing systems or structures, e.g. queues
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本申请实施例公开了一种数据处理方法、装置和电子设备,涉及图像处理领域,使得在提高指令转换效率的同时,使得电子设备可以在只维护Vulkan驱动的情况下,具备对多种不同渲染指令的渲染能力。具体方案为:电子设备根据第一图形API,配置至少两个资源组,然后电子设备可以利用该至少两个资源组并行对第一图形API对应的多个渲染指令进行转换。
Description
技术领域
本申请实施例涉及图像处理领域,尤其涉及一种数据处理方法、装置和电子设备。
背景技术
应用程序在电子设备中运行时,需要调用各种应用程序接口(ApplicationProgramming Interface,API)实现其功能。比如,在需要显示图像时,应用程序就需要调用图形API,以便根据应用程序下发的渲染指令,对各个帧图像的数据进行渲染处理。由此获取渲染之后的图像数据在显示屏上进行显示。
在不同的操作系统(比如安卓,或者Windows等)中,图形API可能不同。比如,在安卓系统中,嵌入式系统的开放图形库(Open Graphics Library for Embedded Systems,OpenGL ES)的使用最为广泛。又如,在Windows系统中,与Open GL ES对应的Open GL也得到了广泛的应用。以操作系统为安卓为例,随着电子设备对图形处理的要求越来越高,Vulkan由于能够为开发者提供更多的控制权及更透明的程序设计,由此大幅降低处理器在提供重要特性、性能和影像质量时的“API开销”,同时能够通过给予开发者访问硬件底层的能力而大幅提升3D应用的性能。因此Vulkan可能会逐步替代OpenGL ES。而在两种API替代的过程中,Vulkan和OpenGL ES将会长期共存。与安卓系统类似,Vulkan由于能够同时支持Windows系统,并且具备上述优势,因此也会逐步地替代OpenGL。而在Windows系统中,对于Vulkan和OpenGL的图像渲染需求也会长期共存下去。以下以操作系统为安卓系统进行说明。
Vulkan和OpenGL ES的运行需要各自对应的底层驱动的支持。因此为了能够同时支持Vulkan和OpenGL ES,电子设备就需要同时维护Vulkan和OpenGL ES各自对对应的底层驱动,其代码量超过70万行,这将为电子设备带来巨大的负担。
为了降低电子设备维护大量底层驱动带来的负担,目前,可以在电子设备中维护代码量较少(约15万行)的Vulkan对应的底层驱动。在需要进行OpenGL ES的图像渲染时,将OpenGL ES的指令转换为Vulkan的指令,以便能够在Vulkan对应的底层驱动中进行处理。这样也就使得电子设备在不需维护OpenGL ES对应的底层驱动的同时,也能够实现对OpenGLES的图像渲染。然而,目前方案中的指令转换过程效率较低,由此导致对于OpenGL ES的图像渲染效率低下。
发明内容
本申请实施例提供一种数据处理方法、装置和电子设备,可以通过并行转换渲染指令,实现同时对多个OpenGL指令或者OpenGL ES指令向Vulkan指令的转换,由此在提高指令转换效率的同时,使得电子设备可以在只维护Vulkan驱动的情况下,具备对多种不同渲染指令的渲染能力。由于多个渲染指令的转换可以是并行执行的,因此能够提高对于包括OpenGL ES指令在内的渲染指令的渲染效率。
为了达到上述目的,本申请实施例采用如下技术方案:
第一方面,提供一种数据处理方法,应用于电子设备,电子设备维护有第一驱动,第一驱动对应第一图形应用程序接口API。该方法包括:电子设备根据第一图形API,配置至少两个资源组,资源组用于转换渲染指令。电子设备通过第一资源组对第一渲染指令进行转换,获取第二渲染指令,第一渲染指令是第二图形API对应的渲染指令,第二渲染指令是第一图形API对应的渲染指令,第一资源组包括在配置的至少两个资源组中。电子设备通过第一驱动,执行第二渲染指令。
基于该方案,提供了一种本申请所述数据处理方法的具体示例。在该示例中,电子设备可以通过配置的多个资源组,对一个或多个渲染指令进行并行转换,由此提高渲染指令转换的效率。使得电子设备在只维护有一个图形API对应的驱动的情况下,具备对多种不同的图形API对应的渲染指令进行处理的能力。可以理解的是,由于后一个渲染指令的转换不需要等待前一个渲染指令的完成,而是多个渲染指令可以并行进行转换,并且在合理的时机下被处理,因此能够显著地提升渲染指令的处理效率,特别是对需要指令转换的渲染指令,提升效果尤为明显。
在一种可能的设计中,该方法还包括:电子设备通过第二资源组对第三渲染指令进行转换,获取第四渲染指令,第三渲染指令是第二图形API对应的渲染指令,第四渲染指令是第一图形API对应的渲染指令,第二资源组包括在配置的至少两个资源组中。电子设备通过第一驱动,执行第四渲染指令。基于该方案,提供了本方案中的另一种示例,在该示例中,电子设备配置的多个资源组还可用于对除第一渲染指令之外的其他渲染指令,如第三渲染指令进行指令转换。
在一种可能的设计中,对第一渲染指令的转换,和对第三渲染指令的转换,是并行执行的。基于该方案,明确了在该方案中,当存在多个指令需要被转换时,比如第一渲染指令和第三渲染指令的转换,电子设备可以通过多个不同的资源组,分别对不同的指令进行转换,由此避免串行执行引入的效率低下的问题。
在一种可能的设计中,电子设备根据第一图形API,配置至少两个资源组,包括:电子设备根据第一图形API支持的最大帧缓存数量M,配置N个资源组,N为大于1且小于或等于M的整数。基于该方案,提出了一种配置资源组的方案。可以理解的是,不同的图形API所能够支持的最大帧缓存数量是不同的,因此,在本示例中,电子设备可以根据第一图形API所能够支持的最大帧缓存数量M(如M可以为3),来配置对应数量的资源组。以便于通过N(如N可以设置为等于M的3)个资源组并行进行指令转换后获取的N个渲染指令能够被缓存在第一图形API对应的缓存中。
在一种可能的设计中,第一渲染指令所指示渲染的数据为第P帧图像的数据,第三渲染指令所指示渲染的数据为第P+1帧图像的数据,P为大于或等于1的整数。基于该方案,示出了一种第一渲染指令和第三渲染指令的相对关系的示例。比如,第一渲染指令可以是电子设备中应用下发的多个连续的针对不同帧图像的渲染指令中的一个,而第三渲染指令可以是该连续的针对不同帧图像的渲染指令中的另一个。这两个渲染指令可以是相邻的。当然,这两个渲染指令也可以是不相邻的。对于不同的渲染指令,均可根据本申请所述方法并行地进行指令的转换。
在一种可能的设计中,电子设备中设置有渲染执行模块,渲染执行模块用于根据渲染指令执行渲染操作。电子设备通过第一驱动,执行第四渲染指令,包括:电子设备在第二渲染指令的指令数量小于第一阈值时,将第四渲染指令提交给渲染执行模块,以便于渲染执行模块执行第四渲染指令。基于该方案,提供了一种根据转换后的渲染指令执行渲染操作的方案。可以理解的是,在提交当前帧图像对应的渲染指令时,渲染执行模块可能会由于前一帧图像对应的渲染指令数量过大,导致渲染执行模块的压力较大。为了避免提交当前帧图像对应的渲染指令使得渲染执行模块的处理压力过大的情况发生,在本示例中,可以在提交当前帧图像的渲染指令之前,判断前一帧图像的渲染指令的数量是否小于第一阈值,如果是,则认为渲染执行模块的压力并不大,此时,可以直接提交当前渲染指令以便快速执行。对应的,如果前一帧图像的渲染指令数量大于第一阈值时,则认为当前渲染执行模块的处理压力较大,此时可以暂停当前帧图像对应的渲染指令的提交,转而在渲染执行模块的处理压力较小的情况下再提交,由此达到根据渲染执行模块的处理压力灵活调整当前帧图像的渲染指令的提交时机的效果。
应理解的是,本申请中的渲染执行模块从硬件角度理解可以是图形处理器GPU,从软件角度理解可以是GPU要读取并实现的计算机程序。
在一种可能的设计中,电子设备中设置有渲染执行模块,渲染执行模块用于根据渲染指令执行渲染操作。电子设备通过第一驱动,执行第四渲染指令,包括:电子设备在第二渲染指令的指令数量大于第一阈值,并且第四渲染指令的指令数量小于第二阈值时,将第四渲染指令提交给渲染执行模块,以便于渲染执行模块执行第四渲染指令。基于该方案,电子设备可以在基于前一帧图像的渲染指令数量的基础上,参考当前帧图像的渲染指令数量,确定当前帧图像的渲染指令的提交时机。比如,以第一阈值和第二阈值均为100为例。前一帧图像的渲染指令少于100,那么可以直接提交当前帧图像的渲染指令。而如果前一帧图像的渲染指令多于100,那么在当前帧图像的渲染指令少于100的情况下,可以认为当前帧图像的提交不会为渲染执行模块带来较大的执行压力,因此可以直接提交当前帧图像的渲染指令。如果前一帧图像的指令数量多于100,并且当前帧图像的指令数量也多于100,那么,当前帧图像的渲染指令的提交,可能会导致渲染执行模块的压力过大,因此,在该情况下,电子设备可以在等待一段时间(比如预设时长,该预设时长可以是预先设置的,也可以是根据当前帧图像的指令数量,和/或前一帧图像的指令数量确定的)。在该时间过后,电子设备再执行对当前帧图像的渲染指令的提交,由此可以使得渲染执行模块不会由于当前帧图像的提交导致处理压力过大的情况发生。需要说明的是,上述第一阈值和第二阈值也可不同,阈值的配置可以是预先设置好的,也可以是电子设备自行确定的。
在一种可能的设计中,电子设备中设置有渲染执行模块,渲染执行模块用于根据渲染指令执行渲染操作。该方法还包括:电子设备根据通过第三资源组对第五渲染指令进行转换,获取第六渲染指令,第五渲染指令是第二图形API对应的渲染指令,第六渲染指令是第一图形API对应的渲染指令,第三资源组包括在配置的至少两个资源组中。第五渲染指令所指示渲染的数据为第P+2帧图像的数据。电子设备通过第一驱动,执行第四渲染指令,包括:电子设备在二渲染指令的指令数量大于第一阈值,并且第四渲染指令的指令数量大于第二阈值,并且第六渲染指令的指令数量大于第三阈值时,将第四渲染指令提交给渲染执行模块,以便于渲染执行模块执行第四渲染指令。基于该方案,电子设备还可以结合前一帧图像的渲染指令的数量,当前帧图像的渲染指令的数量,以及后一帧图像的渲染指令的数量,综合判断当前帧图像的渲染指令的提交时机。比如,依然以第一阈值、第二阈值和第三阈值均为100为例。当前一帧图像的渲染指令数量小于100,则可以直接提交当前帧图像的渲染指令。当前一帧图像的渲染指令数量大于100,并且当前帧图像的渲染指令数量小于100,则可以直接提交当前帧图像的渲染指令。而如果当前帧图像和前一帧图像的指令数量都大于100,那么电子设备就可以根据后一帧图像的指令数量确定是否直接提交当前帧图像的渲染指令。可以理解的是,如果后一帧图像的指令数量较多,比如大于100,那么当前帧图像的延迟提交就可能会导致下一帧图像的渲染处理不及时,由此影响后续的显示。因此,在本示例中,如果当前帧图像和前一帧图像的指令数量都大于100时,那么如果后一帧图像的指令数量也大于100,则直接提交当前帧图像的渲染指令。而如果当前帧图像和前一帧图像的指令数量都大于100时,那么如果后一帧图像的指令数量小于100,则可以等待渲染执行模块处理压力较小后再提交当前帧图像的渲染指令。需要说明的是,上述第一阈值和第二阈值以及第三阈值也可不同或部分不同,阈值的配置可以是预先设置好的,也可以是电子设备自行确定的。
在一种可能的设计中,第一图形API为Vulkan。第二图形API为开放图形库OpenGL,或者,第二图形API为嵌入式的开放图形库OpenGL ES。基于该方案,明确了当前方案的一种实现场景。比如,电子设备中维护有Vulkan的驱动,又需要处理OpenGL或者OpenGL ES的渲染指令时,可以通过上述方案实现渲染指令的高效转换以及后续执行。
第二方面,提供一种数据处理装置,应用于电子设备,电子设备维护有第一驱动,第一驱动对应第一图形应用程序接口API。该装置包括:配置单元,用于根据第一图形API,配置至少两个资源组,资源组用于转换渲染指令。转换单元,用于通过第一资源组对第一渲染指令进行转换,获取第二渲染指令,第一渲染指令是第二图形API对应的渲染指令,第二渲染指令是第一图形API对应的渲染指令,第一资源组包括在配置的至少两个资源组中。执行单元,用于通过第一驱动,执行第二渲染指令。
在一种可能的设计中,转换单元,还用于通过第二资源组对第三渲染指令进行转换,获取第四渲染指令,第三渲染指令是第二图形API对应的渲染指令,第四渲染指令是第一图形API对应的渲染指令,第二资源组包括在配置的至少两个资源组中。执行单元,还用于通过第一驱动,执行第四渲染指令。
在一种可能的设计中,转换单元对于对第一渲染指令的转换,和对第三渲染指令的转换,是并行执行的。
在一种可能的设计中,配置单元,用于根据第一图形API支持的最大帧缓存数量M,配置N个资源组,N为大于1且小于或等于M的整数。
在一种可能的设计中,第一渲染指令所指示渲染的数据为第P帧图像的数据,第三渲染指令所指示渲染的数据为第P+1帧图像的数据,P为大于或等于1的整数。
在一种可能的设计中,该设备中还包括:提交单元,用于在第二渲染指令的指令数量小于第一阈值时,将第四渲染指令提交给执行单元,以便于执行单元执行第四渲染指令。
在一种可能的设计中,该设备中还包括:提交单元,用于在第二渲染指令的指令数量大于第一阈值,并且第四渲染指令的指令数量小于第二阈值时,将第四渲染指令提交给执行单元,以便于执行单元执行第四渲染指令。
在一种可能的设计中,转换单元,还用于根据通过第三资源组对第五渲染指令进行转换,获取第六渲染指令,第五渲染指令是第二图形API对应的渲染指令,第六渲染指令是第一图形API对应的渲染指令,第三资源组包括在配置的至少两个资源组中。第五渲染指令所指示渲染的数据为第P+2帧图像的数据。该设备中还包括:提交单元,用于第二渲染指令的指令数量大于第一阈值,并且第四渲染指令的指令数量大于第二阈值,并且第六渲染指令的指令数量大于第三阈值时,将第四渲染指令提交给执行单元,以便于执行单元执行第四渲染指令。
在一种可能的设计中,第一图形API为Vulkan。第二图形API为开放图形库OpenGL,或者,第二图形API为嵌入式的开放图形库OpenGL ES。
第三方面,提供一种电子设备,电子设备维护有第一图形API的驱动。电子设备包括一个或多个处理器和一个或多个存储器;一个或多个存储器与一个或多个处理器耦合,一个或多个存储器存储有计算机指令;当一个或多个处理器执行计算机指令时,使得电子设备执行如上述第一方面以及各种可能的设计中任一种所述的数据处理方法。
第四方面,提供一种芯片系统,芯片系统包括接口电路和处理器;接口电路和处理器通过线路互联;接口电路用于从存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,芯片系统执行如上述第一方面以及各种可能的设计中任一种所述的数据处理方法。
第五方面,提供一种计算机可读存储介质,计算机可读存储介质包括计算机指令,当计算机指令运行时,执行如上述第一方面以及各种可能的设计中任一种所述的数据处理方法。
第六方面,提供一种计算机程序产品,计算机程序产品中包括指令,当计算机程序产品在计算机上运行时,使得计算机可以根据指令执行如上述第一方面以及各种可能的设计中任一种所述的数据处理方法。
应当理解的是,上述第二方面,第三方面,第四方面,第五方面以及第六方面提供的技术方案,其技术特征均可对应到第一方面及其可能的设计中提供的数据处理方法,因此能够达到的有益效果类似,此处不再赘述。
附图说明
图1为一种指令转换方法的流程示意图;
图2为一种指令转换机制的示意图;
图3为本申请实施例提供的一种电子设备的组成示意图;
图4为本申请实施例提供的又一种电子设备的组成示意图;
图5为本申请实施例提供的一种GL2VK系统的组成示意图;
图6为本申请实施例提供的一种GL模块的组成示意图;
图7为本申请实施例提供的一种转换层的组成示意图;
图8为本申请实施例提供的一种数据处理方法的流程示意图;
图9为本申请实施例提供的又一种数据处理方法的流程示意图;
图10为本申请实施例提供的又一种数据处理方法的流程示意图;
图11为本申请实施例提供的又一种数据处理方法的流程示意图;
图12为本申请实施例提供的一种数据处理装置的组成示意图;
图13为本申请实施例提供的又一种电子设备的组成示意图;
图14为本申请实施例提供的一种芯片系统的组成示意图。
具体实施方式
为了能够使得电子设备能够同时支持Vulkan和OpenGL(或者OpenGL ES),电子设备中可以同时维护Vulkan以及OpenGL(或者OpenGL ES)对应的底层驱动,这样会导致电子设备的维护负担过重。
目前,有一种解决方案,能够使得电子设备在需要对OpenGL或者OpenGL ES进行渲染处理时,可以将该OpenGL或者OpenGL ES对应的指令转换为Vulkan对应的指令,并通过运行Vulkan对应的底层驱动执行该指令,由此实现对OpenGL或者OpenGL ES的渲染处理。这样,电子设备中只需维护Vulkan对应的底层驱动即可。结合前述说明,由于Vulkan对应的底层驱动的代码数量远小于OpenGL(或者OpenGL ES)对应的底层驱动的代码数量,因此,该方案能够显著地降低由于维护代码数量过大导致的电子设备维护负担过重的问题。在本申请中,用于实现上述方案的部件也可称为Angle组件。
示例性的,结合图1,示出了该方案的流程示意图。其中,以电子设备的操作系统为安卓系统,需要对OpenGL ES进行渲染为例。应用(Application)可以将OpenGL ES的渲染指令下发给Angle组件。该组件能够对该渲染指令进行转换,以获取对应于Vulkan的渲染指令。该Vulkan的渲染指令可以通过Vulkan驱动模块,被传输给图形处理器(GraphicsProcessing Unit,GPU)以执行对应的渲染处理。如图1所示,Angle组件中可以包括多个模块实现上述指令转换的功能。其中,指令拦截模块(EGL Entry)可以用于接收应用下发的OpenGL ES渲染指令。GL鉴权模块(GL Validation)可以结合OpenGL ES的渲染指令的GL上下文(GL Context),对该OpenGL ES渲染指令进行鉴权,确定该指令的可行性以及合法性。在鉴权完成后,该OpenGL ES渲染指令就可以被存入前端存储模块(Front-End)。在该前端存储模块中,可以对OpenGL ES对应的渲染指令进行转换,以获取对应的Vulkan渲染指令。接着,该Vulkan渲染指令可以被存入Vulkan指令存储模块(Back-End),并经由Vulkan驱动模块(Vulkan Driver)传输给GPU执行对应的渲染处理。
上述示例中,是以待进行的渲染指令为OpenGL ES为例进行说明的。在电子设备的操作系统为Windows时,该Angle组件还可以在前端存储模块中,将输入的OpenGL指令转换为对应的Vulkan渲染指令,并存入Vulkan指令存储模块,以便经由Vulkan驱动模块传输给GPU执行对应的渲染处理。另外,在Windows系统中,Direct3D(简称为D3D)也是经常被使用的图形API。在电子设备中维护有D3D对应的底层驱动时,结合图1,该Angle组件还可用于将OpenGL渲染指令转换为D3D渲染指令以实现对应的渲染处理。其具体过程与前述过程类似,此处不再赘述。
需要说明的是,在基于Angle组件的渲染处理过程中,指令的转化和向GPU的提交可以是以帧图像为单位进行的。比如,参考图2,在对一个帧图像对应的渲染指令流进行渲染处理时,Angle组件可以分别将该渲染指令流对应的多个绘制指令(Draw Call)进行转换,以将OpenGL ES对应的多个绘制指令(如图2所示的绘制指令1-绘制指令N)分别转换为Vulkan对应的多个绘制指令。接着,GPU就可以根据Angle组件提交的Vulkan对应的绘制指令1-绘制指令N进行渲染并在前台显示各个帧图像。
应当理解的是,电子设备在对各个帧图像进行渲染后,需要按照一定的次序显示各个帧图像。因此,在Angle组件完成指令的转换后,可以将获取的Vulkan对应的绘制指令1-绘制指令N分别存储在交换缓冲区(SwapBuffer)中。在SwapBuffer中可以设置有Vulkan等待队列(vkQueueWaitidle),这些不同帧图像对应的Vulkan绘制指令可以在该Vulkan等待队列中依次按照帧图像的先后顺序分别被Vulkan驱动获取。比如,Vulkan驱动可以在完成一帧图像的显示,需要显示下一帧图像时,从Vulkan等待队列中获取(Acquire)对应帧图像的绘制指令,并将这些绘制指令传输给GPU进行渲染,以便获取对应的帧图像在前台进行显示。
可以看到,目前基于Angle组件的指令转换方案中,能够使得电子设备在只需要维护Vulkan应的底层驱动的同时,实现对OpenGL ES(Open GL)的兼容处理。但是,出于对多平台渲染的支持需求,该Angle组件没有对Vulkan框架进行优化,由此导致在该方案的执行过程中,在应用下发多个帧图像的渲染指令时,Angle组件会在第一帧对应的指令(如第一帧图像对应的绘制指令)完成转换后,才会对接下来的第二针对应的指令进行转换。也就是说,后一帧图像的指令转换需要等待前一帧图像的指令转换完成后才能进行。由此使得Angle组件对于指令转换流程的执行效率低下。通过对比实验可以验证,目前,该方案的性能只有原生OpenGL ES的一半左右。
另外,在目前的Angle组件提供的方案中,在需要显示下一帧图像时,GPU才能获取该帧图像对应的绘制指令,由此使得GPU得不到充分的利用。另外,由于GPU还可能会需要执行其他处理工作,因此,下一帧图像对应的绘制指令被传输给GPU时,GPU可能处于高负载状态。如果此时强制GPU执行绘制指令绘制该帧图像,会使得GPU的工作负担过重的问题。
对此,本申请实施例提供一种数据处理方法,能够使得电子设备能够利用Vulkan框架中的缓存机制,实现多帧并发的指令转换,由此提高指令的转换效率。另外,在一些实现方式中,本申请实施例提供的数据处理方法,还能够根据与需要提交给GPU处理的当前帧图像相邻的其他帧图像(如前一帧图像,和/或后一帧图像)包括的绘制指令的数量大小,灵活调整当前帧图像的提交时机,由此达到根据GPU负载情况自适应地调整绘制指令的提交的效果,由此使得GPU不会由于执行渲染工作导致负载过重。
以下结合附图对本申请实施例提供的方案进行详细说明。
请参考图3,为本申请实施例提供的一种电子设备300的组成示意图。如图3所示,该电子设备300可以包括处理器310,外部存储器接口320,内部存储器321,通用串行总线(universal serial bus,USB)接口330,充电管理模块340,电源管理模块341,电池342,天线1,天线2,移动通信模块350,无线通信模块360,音频模块370,传感器模块380,按键390,马达391,指示器392,摄像头393,显示屏394,以及用户标识模块(subscriberidentification module,SIM)卡接口395等。其中,传感器模块380可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。在一些实施例中,该电子设备300还可以包括扬声器,受话器,麦克风,耳机接口等器件用于实现电子设备的音频相关功能。
可以理解的是,本实施例示意的结构并不构成对电子设备300的具体限定。在另一些实施例中,电子设备300可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器310可以包括一个或多个处理单元,例如:处理器310可以包括中央处理器(Central Processing Unit/Processor,CPU)应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(imagesignal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digitalsignal processor,DSP),基带处理器,和/或神经网络处理器(neural-networkprocessing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以是电子设备300的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器310中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器310中的存储器为高速缓冲存储器。该存储器可以保存处理器310刚用过或循环使用的指令或数据。如果处理器310需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器310的等待时间,因而提高了系统的效率。
在一些实施例中,处理器310可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
作为一种示例,以处理器310中包括CPU和GPU为例。CPU可以用于执行以下操作中的一个或多个:接收应用下发的渲染指令,拦截渲染指令中OpenGL ES(OpenGL ES)对应的渲染指令,将该渲染指令转换为Vulkan对应的渲染指令,将该Vulkan对应的渲染指令按照预设的规则,通过Vulkan驱动器,提交给GPU进行渲染操作。
电子设备300可以通过ISP,摄像头393,视频编解码器,GPU,显示屏394以及应用处理器310等实现拍摄功能。
ISP用于处理摄像头393反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头393感光元件上,光信号转换为电信号,摄像头393感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头393中。
摄像头393用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备300可以包括1个或N个摄像头393,N为大于1的正整数。
数字信号处理器310用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备300在频点选择时,数字信号处理器310用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备300可以支持一种或多种视频编解码器。这样,电子设备300可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器310,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备300的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
充电管理模块340用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块340可以通过USB接口330接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块340可以通过电子设备300的无线充电线圈接收无线充电输入。充电管理模块340为电池342充电的同时,还可以通过电源管理模块341为电子设备300供电。电源管理模块341用于连接电池342,充电管理模块340与处理器310。电源管理模块341接收电池342和/或充电管理模块340的输入,为处理器310,内部存储器321,外部存储器,显示屏394,摄像头393,和无线通信模块360等供电。电源管理模块341还可以用于监测电池342容量,电池342循环次数,电池342健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块341也可以设置于处理器310中。在另一些实施例中,电源管理模块341和充电管理模块340也可以设置于同一个器件中。
电子设备300的无线通信功能可以通过天线1,天线2,移动通信模块350,无线通信模块360,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备300中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块350可以提供应用在电子设备300上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块350可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块350可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块350还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块350的至少部分功能模块可以被设置于处理器310中。在一些实施例中,移动通信模块350的至少部分功能模块可以与处理器310的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器,受话器等)输出声音信号,或通过显示屏394显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器310,与移动通信模块350或其他功能模块设置在同一个器件中。
无线通信模块360可以提供应用在电子设备300上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块360可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块360经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器310。无线通信模块360还可以从处理器310接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备300的天线1和移动通信模块350耦合,天线2和无线通信模块360耦合,使得电子设备300可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备300通过GPU,显示屏394,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏394和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器310可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏394用于显示图像,视频等。显示屏394包括显示面板。显示面板可以采用液晶显示屏394(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备300可以包括1个或N个显示屏394,N为大于1的正整数。
外部存储器接口320可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备300的存储能力。外部存储卡通过外部存储器接口320与处理器310通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器321可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器310通过运行存储在内部存储器321的指令,从而执行电子设备300的各种功能应用以及数据处理。内部存储器321可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备300使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器321可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
在本申请实施例中,内部存储器321可以用于存储缓存的网络视频。当然,在一些实施方式中,该网络视频也可存储在通过外部存储器接口320连接的外部存储介质中。
电子设备300可以通过音频模块370,扬声器,受话器,麦克风,耳机接口,以及应用处理器310等实现音频功能。例如音乐播放,录音等。
音频模块370用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块370还可以用于对音频信号编码和解码。在一些实施例中,音频模块370可以设置于处理器310中,或将音频模块370的部分功能模块设置于处理器310中。扬声器,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备300可以通过扬声器收听音乐,或收听免提通话。受话器,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备300接听电话或语音信息时,可以通过将受话器靠近人耳接听语音。麦克风,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息或需要通过语音助手触发电子设备300执行某些功能时,用户可以通过人嘴靠近麦克风发声,将声音信号输入到麦克风。电子设备300可以设置至少一个麦克风。在另一些实施例中,电子设备300可以设置两个麦克风,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备300还可以设置三个,四个或更多麦克风,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。耳机接口用于连接有线耳机。耳机接口可以是USB接口330,也可以是3.5mm的开放移动电子设备300平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association ofthe USA,CTIA)标准接口。
触摸传感器,也称“触控面板”。触摸传感器可以设置于显示屏394,由触摸传感器与显示屏394组成触摸屏,也称“触控屏”。触摸传感器用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器310,以确定触摸事件类型。在一些实施例中,可以通过显示屏394提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器也可以设置于电子设备300的表面,与显示屏394所处的位置不同。
压力传感器用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器可以设置于显示屏394。压力传感器的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器,电极之间的电容改变。电子设备300根据电容的变化确定压力的强度。当有触摸操作作用于显示屏394,电子设备300根据压力传感器检测所述触摸操作强度。电子设备300也可以根据压力传感器的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器可以用于确定电子设备300的运动姿态。在一些实施例中,可以通过陀螺仪传感器确定电子设备300围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器检测电子设备300抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备300的抖动,实现防抖。陀螺仪传感器还可以用于导航,体感游戏场景。
气压传感器用于测量气压。在一些实施例中,电子设备300通过气压传感器测得的气压值计算海拔高度,辅助定位和导航。
磁传感器包括霍尔传感器。电子设备300可以利用磁传感器检测翻盖皮套的开合。在一些实施例中,当电子设备300是翻盖机时,电子设备300可以根据磁传感器检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器可检测电子设备300在各个方向上(一般为三轴)加速度的大小。当电子设备300静止时可检测出重力的大小及方向。还可以用于识别电子设备300姿态,应用于横竖屏切换,计步器等应用。
距离传感器,用于测量距离。电子设备300可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备300可以利用距离传感器测距以实现快速对焦。
接近光传感器可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备300通过发光二极管向外发射红外光。电子设备300使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备300附近有物体。当检测到不充分的反射光时,电子设备300可以确定电子设备300附近没有物体。电子设备300可以利用接近光传感器检测用户手持电子设备300贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器用于感知环境光亮度。电子设备300可以根据感知的环境光亮度自适应调节显示屏394亮度。环境光传感器也可用于拍照时自动调节白平衡。环境光传感器还可以与接近光传感器配合,检测电子设备300是否在口袋里,以防误触。
指纹传感器用于采集指纹。电子设备300可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器用于检测温度。在一些实施例中,电子设备300利用温度传感器检测的温度,执行温度处理策略。例如,当温度传感器上报的温度超过阈值,电子设备300执行降低位于温度传感器附近的处理器310的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备300对电池342加热,以避免低温导致电子设备300异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备300对电池342的输出电压执行升压,以避免低温导致的异常关机。
骨传导传感器可以获取振动信号。在一些实施例中,骨传导传感器可以获取人体声部振动骨块的振动信号。骨传导传感器也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器也可以设置于耳机中,结合成骨传导耳机。音频模块370可以基于所述骨传导传感器获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器310可以基于所述骨传导传感器获取的血压跳动信号解析心率信息,实现心率检测功能。
按键390包括开机键,音量键等。按键390可以是机械按键390。也可以是触摸式按键390。电子设备300可以接收按键390输入,产生与电子设备300的用户设置以及功能控制有关的键信号输入。
马达391可以产生振动提示。马达391可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏394不同区域的触摸操作,马达391也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器392可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口395用于连接SIM卡。SIM卡可以通过插入SIM卡接口395,或从SIM卡接口395拔出,实现和电子设备300的接触和分离。电子设备300可以支持1个或N个SIM卡接口395,N为大于1的正整数。SIM卡接口395可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口395可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口395也可以兼容不同类型的SIM卡。SIM卡接口395也可以兼容外部存储卡。电子设备300通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备300采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备300中,不能和电子设备300分离。
应当理解的是,上述图3示出了电子设备中的一种硬件结构组成。本申请中,还可以从另一个角度对电子设备300进行划分。比如,参考图4,示出了电子设备300的另一种逻辑组成。
在该示例中,电子设备300可以包括应用层401,框架层402,驱动层403,以及物理层404。
框架层402中可以包括运行基础程序代码以支持基本系统(如安卓(Android),和/或Windows等操作系统)的系统框架。为了便于说明,以下以电子设备中运行有安卓系统,对应的,应用下发的渲染指令为OpenGL ES对应的渲染指令(以下简称为OpenGL ES指令)为例。
在本申请实施例中,系统框架还可以用于拦截OpenGL或者OpenGL ES对应的渲染指令。如图4所示,框架层402中还可以设置有GL2VK系统。该系统可以用于将OpenGL或者OpenGL ES对应的渲染指令转换为Vulkan对应的渲染指令。
作为一种示例,结合图5,GL2VK系统可以包括指令拦截模块501,GL模块502,着色器转换模块503,转换层504,Vulkan后端505等模块。
其中,指令拦截模块501可以作为GL2VK的接收端口,用于接收系统框架拦截的OpenGL ES对应的渲染指令。比如,指令拦截模块501可以用于拦截应用下发的OpenGL ES指令,并转换为能够被GL2VK系统所识别处理的窗口系统指令。可以理解的是,在其他一些实现方式中,该指令拦截模块501还可用于拦截应用下发的OpenGL指令或者EGL指令,并对拦截的指令执行上述类似的操作。其具体实现此处不再赘述。
GL模块502可以用于处理从指令拦截模块501获取的指令。在一些实现方式中,结合图6,GL模块502可以包括资源管理601,状态管理602,以及操作管理603等。其中,资源管理601可以用于维护所有资源的创建、删除、更新等操作。状态管理602可以用于记录所有的状态信息,后续的渲染指令会用的这些状态信息。操作管理603可以用于管理渲染指令中的相关操作信息,比如,渲染指令、清除(Clear)操作、位块传输(Blit)操作等。
着色器转换模块503,可以用于将OpenGL ES指令对应的语言转换为Vulkan驱动对应的语言,以便于后续指令的转换处理。可以理解的是,基于不同框架的渲染指令,所遵循的语言格式等规则是不同的。在本示例中,由于需要将OpenGL ES的指令转换为Vulkan指令,因此,可以在进行指令转换之前,通过该着色器转换模块503将OpenGL ES的语言转换为Vulkan的语言(比如SPIR-V二进制数据),以便于后续处理。
转换层504,可以用于将OpenGL ES指令转换为Vulkan指令。示例性的,结合图7,转换层504中可以包括指令缓存模块701,用于将指令信息和当前的状态信息保存到多个预先配置的无锁队列。其中,该无锁队列可以是先入先出(First In First Out,FIFO)无锁队列。在一些实现方式中,该一个帧图像的可以对应一个无锁队列,无锁队列的数量可以是根据当前Vulkan框架支持的最大帧缓存数确定的。比如,以当前Vulkan框架最大能够支持3帧缓存为例。该指令缓存模块701可以用于分别将三个帧图像对应的指令信息和当前的状态信息分别保存在各自对应的三个无锁队列中。
如图7所示,该转换层504中还可包括指令转换模块702,用于完成具体的OpenGL或OpenGL ES图形API到Vulkan图形API的转换。指令提交模块703,用于提交Vulkan指令给硬件GPU去绘制。
另外,在一些实现方式中,该转换层504中还可包括同步模块704。可以理解的是,由于帧图像的显示存在严格的先后次序,因此,为了满足帧图像的正确显示,需要使得对各个帧图像的渲染也能够与该次序对应。也就需要在提交各个帧图像的渲染指令时,能够对应到上述次序。在本示例中,各个帧图像的指令转换是在各自对应的无锁队列中进行的,由于各自相对独立,也就可能会出现指令转换输出的时刻出现偏差的情况。因此,在该示例中,转换层504可以通过同步模块704,调整各个无锁队列中完成指令转换后的各个渲染指令的输出次序,由此实现对应到帧图像显示次序的效果。
在转换层504完成指令的转换后,可以将这些Vulkan指令传输给Vulkan后端505,以便对这些指令进行封包,进而将这些指令传输给Vulkan驱动。接着,Vulkan驱动可以分别将转换完成的各个帧图像对应的Vulkan指令传输给GPU进行渲染处理。
由此就使得电子设备中只需要维护Vulkan的底层驱动,即可完成对于包括OpenGLES的渲染指令等其他框架下的渲染指令的处理。可以看到,结合上述说明,由于各个帧图像对应的指令可以在不同的无锁队列中并行执行指令的转换,因此能够有效地提高指令的转换效率,进而达到提升整体性能的效果。
结合上述说明,电子设备可以将多个帧图像分别对应的OpenGL ES指令存入各自对应的无锁队列中,以便GL2VK系统中的转换层可以相对独立地对各个无锁队列中的指令进行转换。在本申请实施例中,电子设备可以根据预设的规则,在需要使用无锁队列之前,预先配置各个无锁队列对应的资源。
示例性的,以运行的应用程序为游戏应用为例。参考图8,示出了本申请实施例提供的一种配置资源的方法示意图。如图8所示,该方法可以包括:
S801、游戏开始。
本示例中,电子设备可以游戏应用开始启动为触发,执行以下S802-S803。比如,游戏应用的启动,可以指电子设备接收到用户对该游戏应用的图标输入了触摸或点击的操作后,响应于该操作,调用该游戏应用的API开始运行。电子设备可以通过监测对应API被调用时,知晓游戏开始,并执行以下步骤。
S802、获取Vulkan框架支持的最大帧缓存数量。
电子设备可以在游戏开始时,获取该游戏应用对应的Vulkan框架支持的最大帧缓存数量。可以理解的是,Vulkan框架在支持不同应用的场景下,其对于最大帧缓存数量的支持可能是不同的。因此在本申请中,电子设备可以获取当前游戏应用对应的Vulkan框架能够支持的最大帧缓存数量。比如,Vulkan框架能够支持的最大真缓存数量可以为M个,其中,M为大于或等于1的整数。在一些具体的实现场景中,M可以为3。
S803、创建无锁队列对应的资源。
电子设备可以在确定Vulkan框架支持的最大帧缓存数量(如M个)后,创建对应数量(如N个)的资源。其中,N为小于或等于M的正整数。作为一种示例,以M为3为例。电子设备可以创建3个无锁队列各自对应的资源。其中,无锁队列对应的资源可以包括该无锁队列对应的线程(thread),无锁队列,以及指令缓冲(commandbuffer)。比如,电子设备可以创建3组资源,分别为:第1组资源包括线程1,无锁队列1,以及指令缓冲1。第2组资源包括线程2,无锁队列2,以及指令缓冲2。第3组资源包括线程3,无锁队列3,以及指令缓冲3。在本申请实施例中,一个无锁队列对应的资源也可称为一个资源组。
需要说明的是,上述示例中,是以N=M为例进行说明的。可以理解的是,在资源允许的情况下,配置Vulkan框架支持的最大帧缓存数量的资源组合,能够最大化并行指令转换的效率。
在另一些实现方式中,电子设备还可以根据当前允许被使用的资源数量的多少,灵活调整N的数量。比如,在当前正在队列中的线程较多时,则电子设备可以将N设置为小于M的整数,由此降低CPU并行处理的压力。又如,在当前能能够用于存储指令的缓存空间使用比较紧张时,则电子设备也可将N设置为小于M的整数,由此降低配置资源中对于指令缓冲的需求,进而达到降低缓存空间使用压力的效果。
为了便于说明,以下以N=M=3为例,结合图3到图7中任意一种电子设备的组成说明,对本申请实施例提供的数据处理方法进行详细说明。请参考图9,电子设备中在运行游戏应用的情况下,应用层的应用程序可以下发OpenGL ES渲染指令。结合上述图8所示的方法说明,电子设备还可以在应用程序启动的情况下,加载GL2VK系统,并根据当前Vulkan框架所得能支持的最大帧缓存数量,配置对应数量的资源。比如,配置包括无锁队列1、无锁队列2以及无锁队列3的3组资源。GL2VK系统中的指令拦截模块可以对OpenGL ES指令进行拦截,并将拦截的指令写入3组资源中。这样在GL2VK系统中就可以获取存储有OpenGL ES指令的3组资源。在本申请的一些实现方式中,每组资源可以对应到一个帧图像对应的多个绘制命令。比如,无锁队列1可以存储有第1帧图像的绘制命令。无锁队列2可以存储有第2帧图像的绘制命令。无锁队列3可以存储有第3帧图像的绘制命令。其中,以通过glDrawElements从一个数据数组中提取数据渲染基本图元为例,电子设备可以在对第1帧图像的渲染指令所需的数据状态(管线信息、状态信息等)处理后,将包装后指令写入无锁队列1。类似的,电子设备还可对第2帧图像、第3帧图像执行上述操作,实现指令的写入。
接着,GL2VK系统中的转换层,可以执行指令转换。示例性的,如图9所示,可以分别针对每组资源执行指令读取、指令转换、以及指令录制等步骤,由此获取存储有Vulkan指令的3组资源。比如,GL2VK系统中的转换层,可以读取无锁队列1中存储的第1帧图像对应的绘制指令,将glDrawElements转换为Vulkan对应的vkCmdDrawIndexed,接着通过vkBeginCommandBuffer和vkEndCommandBuffer进行指令录制,并将录制获得的Vulkan框架下的绘制指令存储在无锁队列1中。类似的,转换层还可以对其他两个无锁队列中的指令进行转换,由此即可获得存储有Vulkan指令的资源的3个无锁队列。需要说明的是,由于各个无锁队列分别可以对应到一个独立的线程,因此,GL2VK系统在进行指令转换的过程中,可以是通过CPU分别调用对应的线程完成指令转换的,也就是说,CPU可以通过多线程并发的处理机制,实现多个不同帧图像对应指令转换的并行处理,由此相比于现有技术中的逐一处理的串行机制,能够明显地提升指令转换效率。
在完成指令转换后,对应的指令可以被传输给Vulkan后端,进行封包,以便将封包后的指通过Vulkan驱动提交给GPU执行对应的渲染处理。可以理解的是,每个无锁队列中的指令可以包括对一帧图像的渲染指令,也就是说,通过Vulkan后端封包后,可以获取与帧图像对应数量的渲染指令包。在一些实现方式中,该渲染指令包可以在封包完成后,直接被传输给GPU,以便GPU尽快对该帧图像进行渲染。在另一些实现方式中,渲染指令向GPU的传输,还可以采用其他方式,由此以便能够结合GPU当前进行渲染处理带来的工作负担大小,灵活调整渲染指令的提交时机和/或数量,以达到降低GPU工作负担,提升系统工作稳定性的目的。
示例性的,GL2VK系统可以结合前一帧图像对应渲染指令的数量多少,确定当前帧图像的渲染指令的提交时机。
作为一种示例,请参考图10,为本申请实施例提供的一种渲染指令的提交方法。其中,以当前要提交GPU进行渲染处理的渲染指令对应于帧图像为第N帧图像为例。如图10所示,该方法可以包括:
S1001、第N-1帧图像的渲染指令数量是否小于第一阈值。
可以理解的是,由于第N-1帧图像的渲染指令也是通过GL2VK系统处理后传输给GPU的,因此,GL2VK系统能够知晓第N-1帧图像,也就是当前GPU正在进行渲染处理的渲染指令对应的帧图像,的渲染指令的数量大小。在进行第N帧图像的渲染指令的提交前,GL2VK系统可以确定第N-1帧图像的渲染指令与预设的第一阈值(如100)之间的大小关系,并据此确定是否立即将第N帧图像的渲染指令提交GPU进行处理。比如,当第N-1帧图像的渲染指令数量小于100时,则执行以下S1002。当第N-1帧图像的渲染指令数量大于100时,则执行以下S1003。
S1002、提交第N帧图像的渲染指令。
应当理解的是,第N-1帧图像的渲染指令小于第一阈值,则可以认为GPU当前的渲染压力并不大,因此可以立即将第N帧图像的渲染指令提交给GPU进行渲染处理。
S1003、第N帧图像的渲染指令数量是否小于第二阈值。
如果第N-1帧图像的渲染指令数量大于第一阈值,那么可以认为GPU当前处理第N-1帧图像的渲染压力较大,因此就无法在短时间内处理较多数据量的新提交的渲染指令。在本示例中,GL2VK系统可以在第N-1帧图像的渲染指令数量较大时,确定当前帧图像(如第N帧图像)的渲染指令的数量与第二阈值(如100)的大小关系,确定当前帧图像的提交会不会对GPU的渲染处理造成过大负担,进而确定是否提交当前帧图像对应的渲染指令。比如,当第N帧图像的渲染指令数量大于100时,则认为如果立即提交第N帧图像的渲染指令会给GPU带来较大负担,因此可以执行以下S1004。对应的,当第N帧图像的渲染指令数量小于100时,则认为如果立即提交第N帧图像的渲染指令不会给GPU带来较大负担,因此可以执行S1002。
S1004、第N帧图像的渲染指令的提交进入等待状态。
可以理解的是,在确定当前帧图像的提交会对GPU造成较大的负担时,可以暂时延缓当前帧(如第N帧图像)渲染指令的提交。以避免对于GPU造成过大的处理负担。在一些实现方式中,GPU可以在处理负担较轻时,主动向CPU上报当前状态,以结束第N帧图像的等待状态,指示CPU进行第N帧图像的渲染指令的提交。或者,CPU可以在进入等待状态时触发预设的定时器,在定时器结束时,执行第N帧图像的渲染指令的提交。或者,CPU还可以根据其他信息,确定在GPU处理压力较小时,进行第N帧图像的渲染指令的提交。由此实现基于GPU工作负担的大小,灵活调整渲染指令提交的效果。
这样,对于当前第N帧图像的渲染指令的提交,就可以结合前一帧图像的渲染指令对于GPU造成的负担大小,灵活调整提交时机,以避免当前帧图像的渲染指令的提交为GPU带来过大负担的情况发生。需要说明的是,在本申请的另一些实现方式中,在执行S1001时,如果第N-1帧图像的渲染指令数量大于第一阈值,那么电子设备也可以直接执行S1004,进入等待状态,直到符合上述示例中的任一种说明中的条件时,执行S1002,进行第N帧图像的渲染指令的提交。
以上示例中,是以根据前一帧图像的渲染指令的数量多少,结合当前帧图像的渲染指令的数量,确定提交当前帧图像的渲染指令的时机为例进行说明的。在本申请的另一些示例中,GL2VK系统还可以参考后一帧(如第N+1)帧图像的渲染指令的数量,确定当前帧图像(如第N帧)的渲染指令的提交时机。示例性的,结合图11。相较于图10所示的方法,不同点在于,在执行S1003时,如果第N帧图像的渲染指令数量小于第二阈值,那么,可以执行S1005,即判断第N+1帧图像的渲染指令数量是否大于第三阈值(如设置为100)。如果第N+1帧图像的渲染指令大于100,则认为在需要被渲染的帧图像队列中,后续帧图像的渲染工作量依然较大,因此需要尽快对第N帧图像进行渲染。那么可以执行S1002。反之,如果第N+1帧图像的渲染指令小于100,则执行S1004。这样,为了保证第N+1帧图像能够及时地被渲染处理,GL2VK系统可以立即将第N帧图像的渲染执行提交给GPU,即执行S1002。由此,虽然可能会造成当前GPU处理压力稍大,但是能够保证第N+1帧图像可以被及时处理,因此能够保证所有帧图像渲染处理的平滑性,进而保证前台显示各个帧图像过程中不会出现由于需要等待渲染处理而造成的画面卡顿的情况发生。由此即可在全局角度提升系统的稳定性。
基于上述说明,本领域技术人员应当能够准确清楚地了解本申请实施例提供的方案的具体实施过程。同时,在该方案的实施过程中,相比于现有技术,能够带来的游戏效果非常显著。示例性的,以游戏应用为和平精英为例。在CPU重负载场景下的帧率对比情况如表1所示。
表1
方案 | 分辨率 | FPS |
OpenGL ES原生 | 1080*2068 | 41.4 |
Angle组件 | 1080*2068 | 25.2 |
本发明专利 | 1080*2068 | 45.8 |
基于Angle组件的方案由于只在单一线程中进行指令转换,并没有充分利用Vulkan的多线程特性,导致帧率只有25.2帧,远远劣与原生OpenGL ES的帧率。而由于本发明基于多帧并发、双向帧间预测机制,能够充分利用CPU的多核特性,同时提高了GPU利用率,帧率超越原生OpenGL ES。
上述主要从电子设备的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对其中涉及的设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
请参考图12,为本申请实施例提供的一种数据处理装置1200,可以应用于电子设备,由此实现上述实施例中提供的方法。示例性的,电子设备维护有第一驱动,第一驱动对应第一图形应用程序接口API。
数据处理装置1200可以包括:配置单元1201,用于根据第一图形API,配置至少两个资源组,资源组用于转换渲染指令。转换单元1202,用于通过第一资源组对第一渲染指令进行转换,获取第二渲染指令,第一渲染指令是第二图形API对应的渲染指令,第二渲染指令是第一图形API对应的渲染指令,第一资源组包括在配置的至少两个资源组中。执行单元1203,用于通过第一驱动,执行第二渲染指令。需要说明的是,在本示例中,执行单元1203可以对应上述说明中的渲染执行模块,比如,该执行单元1203可以通过GPU实现其对应的功能。
在一种可能的设计中,转换单元1202,还用于通过第二资源组对第三渲染指令进行转换,获取第四渲染指令,第三渲染指令是第二图形API对应的渲染指令,第四渲染指令是第一图形API对应的渲染指令,第二资源组包括在配置的至少两个资源组中。执行单元1203,还用于通过第一驱动,执行第四渲染指令。
在一种可能的设计中,转换单元1202对于对第一渲染指令的转换,和对第三渲染指令的转换,是并行执行的。
在一种可能的设计中,配置单元1201,用于根据第一图形API支持的最大帧缓存数量M,配置N个资源组,N为大于1且小于或等于M的整数。
在一种可能的设计中,第一渲染指令所指示渲染的数据为第P帧图像的数据,第三渲染指令所指示渲染的数据为第P+1帧图像的数据,P为大于或等于1的整数。
在一种可能的设计中,该设备中还包括:提交单元1204,用于在二渲染指令的指令数量小于第一阈值时,将第四渲染指令提交给执行单元1203,以便于执行单元1203执行第四渲染指令。
在一种可能的设计中,该设备中还包括:提交单元1204,用于在二渲染指令的指令数量大于第一阈值,并且第四渲染指令的指令数量小于第二阈值时,将第四渲染指令提交给执行单元1203,以便于执行单元1203执行第四渲染指令。
在一种可能的设计中,转换单元1202,还用于根据通过第三资源组对第五渲染指令进行转换,获取第六渲染指令,第五渲染指令是第二图形API对应的渲染指令,第六渲染指令是第一图形API对应的渲染指令,第三资源组包括在配置的至少两个资源组中。第五渲染指令所指示渲染的数据为第P+2帧图像的数据。该设备中还包括:提交单元1204,用于第二渲染指令的指令数量大于第一阈值,并且第四渲染指令的指令数量大于第二阈值,并且第六渲染指令的指令数量大于第三阈值时,将第四渲染指令提交给执行单元1203,以便于执行单元1203执行第四渲染指令。
在一种可能的设计中,第一图形API为Vulkan。第二图形API为开放图形库OpenGL,或者,第二图形API为嵌入式的开放图形库OpenGL ES。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
图13示出了的一种电子设备1300的组成示意图。如图13所示,该电子设备1300可以包括:处理器1301和存储器1302。该存储器1302用于存储计算机执行指令。示例性的,在一些实施例中,当该处理器1301执行该存储器1302存储的指令时,可以使得该电子设备1300执行上述实施例中任一种所示的数据处理方法。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
图14示出了的一种芯片系统1400的组成示意图。该芯片系统1400可以包括:处理器1401和通信接口1402,用于支持相关设备实现上述实施例中所涉及的功能。在一种可能的设计中,芯片系统还包括存储器,用于保存终端必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。需要说明的是,在本申请的一些实现方式中,该通信接口1402也可称为接口电路。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在上述实施例中的功能或动作或操作或步骤等,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。
Claims (12)
1.一种数据处理方法,其特征在于,应用于电子设备,所述电子设备维护有第一驱动,所述第一驱动对应第一图形应用程序接口API;
所述方法包括:
所述电子设备根据所述第一图形API,配置至少两个资源组,所述资源组用于转换渲染指令;
所述电子设备通过第一资源组对第一渲染指令进行转换,获取第二渲染指令,所述第一渲染指令是第二图形API对应的渲染指令,所述第二渲染指令是所述第一图形API对应的渲染指令,所述第一资源组包括在配置的至少两个所述资源组中;
所述电子设备通过所述第一驱动,执行所述第二渲染指令。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述电子设备通过第二资源组对第三渲染指令进行转换,获取第四渲染指令,所述第三渲染指令是第二图形API对应的渲染指令,所述第四渲染指令是所述第一图形API对应的渲染指令,所述第二资源组包括在配置的至少两个所述资源组中;
所述电子设备通过所述第一驱动,执行所述第四渲染指令。
3.根据权利要求1或2所述的方法,其特征在于,对所述第一渲染指令的转换,和对所述第三渲染指令的转换,是并行执行的。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述电子设备根据所述第一图形API,配置至少两个资源组,包括:
所述电子设备根据所述第一图形API支持的最大帧缓存数量M,配置N个资源组,N为大于1且小于或等于M的整数。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述第一渲染指令所指示渲染的数据为第P帧图像的数据,所述第三渲染指令所指示渲染的数据为第P+1帧图像的数据,P为大于或等于1的整数。
6.根据权利要求2-5中任一项所述的方法,其特征在于,所述电子设备中设置有渲染执行模块,所述渲染执行模块用于根据渲染指令执行渲染操作;
所述电子设备通过所述第一驱动,执行所述第四渲染指令,包括:
所述电子设备在所述第二渲染指令的指令数量小于第一阈值时,将所述第四渲染指令提交给所述渲染执行模块,以便于所述渲染执行模块执行所述第四渲染指令。
7.根据权利要求2-6中任一项所述的方法,其特征在于,所述电子设备中设置有渲染执行模块,所述渲染执行模块用于根据渲染指令执行渲染操作;
所述电子设备通过所述第一驱动,执行所述第四渲染指令,包括:
所述电子设备在所述第二渲染指令的指令数量大于第一阈值,并且所述第四渲染指令的指令数量小于第二阈值时,将所述第四渲染指令提交给所述渲染执行模块,以便于所述渲染执行模块执行所述第四渲染指令。
8.根据权利要求2-7中任一项所述的方法,其特征在于,所述电子设备中设置有渲染执行模块,所述渲染执行模块用于根据渲染指令执行渲染操作;
所述方法还包括:
所述电子设备根据通过第三资源组对第五渲染指令进行转换,获取第六渲染指令,所述第五渲染指令是第二图形API对应的渲染指令,所述第六渲染指令是所述第一图形API对应的渲染指令,所述第三资源组包括在配置的至少两个所述资源组中;所述第五渲染指令所指示渲染的数据为第P+2帧图像的数据;
所述电子设备通过所述第一驱动,执行所述第四渲染指令,包括:
所述电子设备在所述第二渲染指令的指令数量大于第一阈值,并且所述第四渲染指令的指令数量大于第二阈值,并且所述第六渲染指令的指令数量大于第三阈值时,将所述第四渲染指令提交给所述渲染执行模块,以便于所述渲染执行模块执行所述第四渲染指令。
9.根据权利要求6-8中任一项所述的方法,其特征在于,所述渲染执行模块为图形处理器GPU。
10.根据权利要求1-9中任一项所述的方法,其特征在于,所述第一图形API为Vulkan;所述第二图形API为开放图形库OpenGL,或者,所述第二图形API为嵌入式的开放图形库OpenGL ES。
11.一种电子设备,其特征在于,所述电子设备维护有第一驱动;
所述电子设备包括一个或多个处理器和一个或多个存储器;所述一个或多个存储器与所述一个或多个处理器耦合,所述一个或多个存储器存储有计算机指令;
当所述一个或多个处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-10中任一项所述的数据处理方法。
12.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,当所述计算机指令运行时,执行如权利要求1-10中任一项所述的数据处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011270909.0A CN114494546A (zh) | 2020-11-13 | 2020-11-13 | 一种数据处理方法、装置和电子设备 |
PCT/CN2021/106808 WO2022100132A1 (zh) | 2020-11-13 | 2021-07-16 | 一种数据处理方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011270909.0A CN114494546A (zh) | 2020-11-13 | 2020-11-13 | 一种数据处理方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114494546A true CN114494546A (zh) | 2022-05-13 |
Family
ID=81491492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011270909.0A Pending CN114494546A (zh) | 2020-11-13 | 2020-11-13 | 一种数据处理方法、装置和电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114494546A (zh) |
WO (1) | WO2022100132A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117437451A (zh) * | 2023-12-21 | 2024-01-23 | 芯瞳半导体技术(山东)有限公司 | 图像匹配方法、装置、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018119602A1 (zh) * | 2016-12-26 | 2018-07-05 | 深圳前海达闼云端智能科技有限公司 | 一种渲染方法及装置 |
CN107741863A (zh) * | 2017-10-08 | 2018-02-27 | 深圳市星策网络科技有限公司 | 一种显卡的驱动方法和装置 |
CN108363569B (zh) * | 2018-03-07 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 应用中的图像帧生成方法、装置、设备及存储介质 |
CN111381914B (zh) * | 2018-12-29 | 2021-07-30 | 中兴通讯股份有限公司 | 一种云桌面虚机实现3d能力的方法和系统 |
CN111729293B (zh) * | 2020-08-28 | 2020-12-22 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及存储介质 |
-
2020
- 2020-11-13 CN CN202011270909.0A patent/CN114494546A/zh active Pending
-
2021
- 2021-07-16 WO PCT/CN2021/106808 patent/WO2022100132A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117437451A (zh) * | 2023-12-21 | 2024-01-23 | 芯瞳半导体技术(山东)有限公司 | 图像匹配方法、装置、设备及存储介质 |
CN117437451B (zh) * | 2023-12-21 | 2024-04-16 | 芯瞳半导体技术(山东)有限公司 | 图像匹配方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022100132A1 (zh) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115473957B (zh) | 一种图像处理方法和电子设备 | |
CN109559270B (zh) | 一种图像处理方法及电子设备 | |
CN113362783A (zh) | 刷新率切换方法和电子设备 | |
CN111107292B (zh) | 一种录像帧率的控制方法、移动终端及计算机存储介质 | |
WO2021036770A1 (zh) | 一种分屏处理方法及终端设备 | |
CN116055786B (zh) | 一种显示多个窗口的方法及电子设备 | |
WO2022100685A1 (zh) | 一种绘制命令处理方法及其相关设备 | |
CN115016869B (zh) | 帧率调整方法、终端设备及帧率调整系统 | |
WO2021052070A1 (zh) | 一种帧率识别方法及电子设备 | |
CN110636554B (zh) | 数据传输方法及装置 | |
WO2021190314A1 (zh) | 触控屏的滑动响应控制方法及装置、电子设备 | |
CN115463419A (zh) | 图像的预测方法、电子设备和存储介质 | |
CN114880251A (zh) | 存储单元的访问方法、访问装置和终端设备 | |
CN113126948A (zh) | 一种音频播放方法及相关设备 | |
CN112437341B (zh) | 一种视频流处理方法及电子设备 | |
WO2022100132A1 (zh) | 一种数据处理方法、装置和电子设备 | |
CN111104209A (zh) | 一种处理任务的方法及相关设备 | |
CN114999535A (zh) | 在线翻译过程中的语音数据处理方法及装置 | |
CN116939559A (zh) | 蓝牙音频编码数据分发方法、电子设备及存储介质 | |
CN114173381A (zh) | 数据传输方法和电子设备 | |
CN115019803B (zh) | 音频处理方法、电子设备以及存储介质 | |
CN114125805B (zh) | 蓝牙回连方法及终端设备 | |
CN116700578B (zh) | 图层合成方法、电子设备以及存储介质 | |
WO2024051634A1 (zh) | 一种投屏显示的方法、系统以及电子设备 | |
CN117130952A (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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Zhang Zhibo Inventor after: Shang Qin Inventor after: Li Ting Inventor before: Zhang Zhibo Inventor before: Shang Qingqing Inventor before: Li Ting |
|
CB03 | Change of inventor or designer information |