CN117008924A - 编译处理方法及装置、通信设备 - Google Patents
编译处理方法及装置、通信设备 Download PDFInfo
- Publication number
- CN117008924A CN117008924A CN202311278668.8A CN202311278668A CN117008924A CN 117008924 A CN117008924 A CN 117008924A CN 202311278668 A CN202311278668 A CN 202311278668A CN 117008924 A CN117008924 A CN 117008924A
- Authority
- CN
- China
- Prior art keywords
- shader
- compiling
- disk cache
- file
- cache
- 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.)
- Withdrawn
Links
- 238000004891 communication Methods 0.000 title claims abstract description 8
- 238000003672 processing method Methods 0.000 title claims description 21
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 17
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000009877 rendering Methods 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 5
- 230000006978 adaptation Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及数据处理技术领域,具体而言,涉及编译处理方法及装置、通信设备,其中,编译处理方法应用于云端服务器,包括:在需要通过着色器对第一应用程序中的画面进行渲染时,确定需要对着色器进行编译,其中,第一应用程序运行在容器安卓中;查询磁盘缓存中是否存储有着色器的编译结果,其中,若磁盘缓存中存储有着色器的编译结果,从所述磁盘缓存中加载编译结果;若磁盘缓存中未存储有着色器的编译结果,对着色器进行编译,将编译得到的编译结果存储至磁盘缓存。相对于现有技术,本公开减少了每次渲染图形时编译着色器的数量,从而减少了编译着色器的耗时,有利于降低云应用画面显示的延迟。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及编译处理方法、编译处理装置和通信设备。
背景技术
在云应用技术领域(比如云游戏领域)中,云端服务器的构架主要存在两种:构架#1是基于片上系统(System on Chip,SoC)的ARM阵列,构架#2是基于ARM服务器并外挂PCI(Pedpherd Component Interconnect,周边元件扩展接口)显卡。
基于构架#2,操作系统一般是Linux,可以在Linux系统中使用容器化技术(例如基于Docker实现)来运行安卓(Android)系统,并在安卓系统中使用Mesa 3D图形库,从而直接访问外挂PCI显卡设备,为安卓系统提供图形显示服务。
Mesa 3D图形库对OpenGL ES(Open Graphics Library for Embedded Systems,嵌入式系统开放式图形库)有着完整实现,其中包括对着色器(shader)的glCompileShader(编译着色器语言)的实现。而在安卓的云应用中存在大量的着色器,如果在每个着色器使用时都进行编译,受限于构架#2中glCompileShader性能相对于构架#1较弱,会存在编译耗时较大的问题,进而会影响云应用的流畅度。
发明内容
本公开提供编译处理方法及装置、通信设备,以解决相关技术中的不足。
根据本公开实施例的第一方面,提出一种编译处理方法,应用于云端服务器,所述方法包括:在需要通过着色器对第一应用程序中的画面进行渲染时,确定需要对着色器进行编译,其中,所述第一应用程序运行在容器安卓中;查询磁盘缓存中是否存储有所述着色器的编译结果,其中,若所述磁盘缓存中存储有所述着色器的编译结果,从所述磁盘缓存中加载所述编译结果;若所述磁盘缓存中未存储有所述着色器的编译结果,对所述着色器进行编译,将编译得到的编译结果存储至所述磁盘缓存。
根据本公开实施例的第二方面,提出一种编译处理装置,应用于云端服务器,所述装置包括:处理模块,被配置为在需要通过着色器对第一应用程序中的画面进行渲染时,确定需要对着色器进行编译,其中,所述第一应用程序运行在容器安卓中;查询模块,被配置为查询磁盘缓存中是否存储有所述着色器的编译结果;加载模块,被配置为在所述磁盘缓存中存储有所述着色器的编译结果的情况下,从所述磁盘缓存中加载所述编译结果;编译模块,被配置为在所述磁盘缓存中未存储有所述着色器的编译结果的情况下,对所述着色器进行编译;存储模块,被配置为将编译得到的编译结果存储至所述磁盘缓存。
根据本公开实施例的第三方面,提出一种通信设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为实现上述编译处理方法。
根据本公开实施例的第四方面,提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述编译处理方法。
本公开的实施例提供的技术方案可以包括以下有益效果:
由上述实施例可知,云端服务器在确定需要对某个着色器进行编译时,可以先查询磁盘缓存中是否存储有该着色器的编译结果。如果存储有编译结果,那么可以直接从磁盘缓存加载着色器的编译结果,以通过该编译结果实现着色器对应的渲染功能,而不必再重新编译该着色器。而在磁盘缓存未存储有编译结果的情况下,才对着色器进行编译,并将编译结果存储在磁盘缓存中,以便后续在需要对该着色器进行编译时,能够从磁盘缓存中读取到编译结果并加载。
相对于现有技术,本公开调整了着色器编译语言的逻辑,每次在基于着色器渲染图形时,可以不必对所有需要使用的着色器进行编译,对于已通过磁盘缓存存储了编译结果的着色器,可以直接从存盘缓存中加载编译结果,仅对于未通过磁盘缓存存储编译结果的着色器才进行编译,并存储编译结果。据此,减少了每次渲染图形时编译着色器的数量,从而减少了编译着色器的耗时,有利于降低云应用画面显示的延迟,例如第一应用程序为云游戏应用,则可以有效提高云游戏运行的流畅度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本公开的实施例示出的一种编译处理方法的示意流程图。
图2是根据本公开的实施例示出的另一种编译处理方法的示意流程图。
图3是根据本公开的实施例示出的又一种编译处理方法的示意流程图。
图4是根据本公开的实施例示出的又一种编译处理方法的示意流程图。
图5是根据本公开的实施例示出的又一种编译处理方法的示意流程图。
图6是根据本公开的实施例示出的一种编译处理装置的示意框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
图1是根据本公开的实施例示出的一种编译处理方法的示意流程图。
在一些实施例中,本实施例所示的编译处理方法可以由云端服务器(也可以简称为云服务器或服务器)执行。
在一些实施例中,云端服务器的构架包括:基于ARM服务器并外挂PCI(PedpherdComponent Interconnect,周边元件扩展接口)显卡。
在一些实施例中,云端服务器可以通过Mesa 3D图形库为容器安卓提供图形显示服务,例如通过Mesa 3D图形库中的着色器(shader)对容器安卓中运行的应用程序在运行过程中产生的应用画面(即云应用画面)进行渲染。也即后续实施例中的着色器,可以包括Mesa 3D图形库中的着色器。
如图1所示,编译处理方法可以包括以下步骤:
在步骤S101中,在需要通过着色器对第一应用程序中的画面进行渲染时,确定需要对着色器进行编译,其中,第一应用程序运行在容器安卓中;
在步骤S102中,查询磁盘缓存中是否存储有着色器的编译结果,其中,若磁盘缓存中存储有着色器的编译结果,从磁盘缓存中加载编译结果;若磁盘缓存中未存储有着色器的编译结果,对着色器进行编译,将编译得到的编译结果存储至磁盘缓存。
其中,对着色器进行编译,是指将着色器的源码转换为可执行程序,也即着色器的编译结果,可以包括对着色器的源码编译得到的可执行程序。
在本公开的实施例中,云端服务器在运行第一应用程序的过程中,在需要对第一应用程序的云应用画面进行渲染时,可以通过Mesa 3D图形库中的着色器实现,在这种情况下,可以确定需要通过着色器对第一应用程序中的画面进行渲染,那么也就需要对着色器进行编译。
为了实现对画面的渲染,需要大量着色器(例如不同着色器可以实现不同的渲染功能)。在现有技术中,每当确定需要对着色器进行编译时,就会执行对着色器的编译操作,但是由于大量着色器的存在,每次渲染画面都需要编译大量的着色器,导致编译过程耗时较长,进而导致画面的显示延迟较大。
而根据本公开的实施例,云端服务器在确定需要对某个着色器进行编译时,可以先查询磁盘缓存中是否存储有该着色器的编译结果。如果存储有编译结果,那么可以直接从磁盘缓存加载着色器的编译结果,以通过该编译结果实现着色器对应的渲染功能,而不必再重新编译该着色器。而在磁盘缓存未存储有编译结果的情况下,才对着色器进行编译,并将编译结果存储在磁盘缓存中,以便后续在需要对该着色器进行编译时,能够从磁盘缓存中读取到编译结果并加载。
相对于现有技术,本公开修改了Mesa 3D的磁盘缓存逻辑,具体来说调整了着色器编译语言(例如glCompileShader)的逻辑,每次在基于着色器渲染图形时,可以不必对所有需要使用的着色器进行编译,对于磁盘缓存中已存储了编译结果的着色器,可以直接从存盘缓存中加载编译结果,仅对于磁盘缓存中未存储编译结果的着色器才进行编译,并存储编译结果。据此,减少了每次渲染图形时编译着色器的数量,从而减少了编译着色器的耗时,有利于降低云应用画面显示的延迟,例如第一应用程序为云应用,例如云应用包括云游戏应用,则可以有效提高云游戏运行的流畅度。
以第一应用程序包括云游戏应用为例,由于画面不同,渲染画面所需用到的着色器也可以不同。例如,云端服务器在需要渲染云游戏应用中画面#1时,需要用到着色器#1和着色器#2,在需要渲染云游戏应用中画面#2时,需要用到着色器#2和着色器#3。
云端服务器在对画面#1渲染时,可以查询磁盘缓存中是否存储有着色器#1的编译结果,以及着色器#2的编译结果,若并未存储有这两个着色器的编译结果,可以对着色器#1进行编译得到编译结果#1,以及对着色器#2进行编译得到编译结果#2,然后将编译结果#1和编译结果#2存储在磁盘缓存中。
后续云端服务器在对画面#2渲染时,可以查询磁盘缓存中是否存储有着色器#2的编译结果,以及着色器#3的编译结果,由于着色器#2的编译结果#2已存储在磁盘缓存中,所以可以直接加载编译结果#2。而若并未存储有着色器#3的编译结果,可以对着色器#3进行编译得到编译结果#3,然后将编译结果#3存储在磁盘缓存中。
可见,对画面#2进行渲染时,由于着色器#2的编译结果#2在渲染画面#1的过程中已存储在磁盘缓存中,从而不必再编译着色器#2,而是可以直接加载编译结果#2,据此,缩短了渲染画面#2时编译着色器的耗时,有利于降低显示画面#2的延迟。
图2是根据本公开的实施例示出的另一种编译处理方法的示意流程图。本实施例所示的方法可以由云端服务器执行,如图2所示,编译处理方法还包括:
在步骤S201中,获取第一应用程序的标识;
在步骤S202中,根据标识设置环境变量的值,以设置第一应用程序的目录的子目录作为缓存目录(例如上述磁盘缓存的目录),其中,值为第一应用程序的目录。
在一些实施例中,为了缩短显示第一应用程序中画面的时延,云端服务器可以执行图1所示实施例中的步骤。而在通过着色器渲染第一应用程序中的画面的过程中,对着色器的编译结果主要适用于第一应用程序中画面的渲染,所以本实施例在将编译结果存储至磁盘缓存之前,可以先构建磁盘缓存与第一应用程序的关联关系。
例如,云端服务器首先可以获取第一应用程序的标识,例如应用程序的标识可以包括应用程序的包名,云端服务器可以通过函数getprogname()获取第一应用程序的包名。
然后,云端服务器可以根据第一应用程序的标识设置环境变量的值,其中,环境变量包括着色器缓存目录文件(MESA_SHADER_CACHE_DIR),环境变量的值可以为第一应用程序的目录,例如/sdcard/Android/data/<包名>。
通过对上述环境变量的值进行设置,可以在第一应用程序的目录/sdcard/Android/data/<包名>中构建子目录作为磁盘缓存的缓存目录,例如缓存文件名为mesa_shader_cache,那么缓存目录为/sdcard/Android/data/<包名>/mesa_shader_cache。据此构建了磁盘缓存与第一应用程序的关联关系。那么在将对第一应用程序中画面进行渲染的着色器的编译结果存储到磁盘缓存中时,就可以将编译结果存储在第一应用程序的目录的缓存目录中,以便图1所示实施例中查询操作的执行。
图3是根据本公开的实施例示出的又一种编译处理方法的示意流程图。本实施例所示的方法可以由云端服务器执行,如图3所示,编译处理方法还包括:
在步骤S301中,计算着色器的源码的MD5值;
在步骤S302中,以MD5值作为第一文件的文件名,设置缓存目录的子目录作为第一文件的目录;
其中,将编译得到的编译结果存储至磁盘缓存,包括:
在步骤S303中,将编译结果存储至第一文件。
在一些实施例中,为了在通过着色器对第一应用程序中的画面进行渲染时,准确查询是否已存储着色器的编译结果,还需要构建着色器与第一应用程序的关联关系。
首先,云端服务器可以计算着色器的源码的MD5值,然后以MD5值作为第一文件的文件名,进而可以在磁盘缓存的缓存目录中设置第一文件目录。由于MD5值与着色器是相对应的,因此,在缓存目录中设置文件名为MD5值的第一文件,构建了着色器与第一应用程序的关联关系,以便准确查询是否已存储着色器的编译结果。
例如,在缓存目录为/sdcard/Android/data/<包名>/mesa_shader_cache的情况下,那么第一文件目录为/sdcard/Android/data/<包名>/mesa_shader_cache/<MD5>,进而可以将编译结果存储在/sdcard/Android/data/<包名>/mesa_shader_cache/<MD5>中,以便后续查询。
图4是根据本公开的实施例示出的又一种编译处理方法的示意流程图。本实施例所示的方法可以由云端服务器执行,如图4所示,查询磁盘缓存中是否存储有着色器的编译结果,包括:
在步骤S401中,查询缓存目录中是否存在第一文件,其中,若存在第一文件,确定磁盘缓存中存储有着色器的编译结果,若不存在第一文件,确定磁盘缓存中未存储有着色器的编译结果。
在一些实施例中,以第一文件目录为/sdcard/Android/data/<包名>/mesa_shader_cache/<MD5>进行示例。
云端服务器在查询磁盘缓存中是否存储有着色器的编译结果时,可以先确定着色器的源码的MD5值,然后查询/sdcard/Android/data/<包名>/mesa_shader_cache中是否存在文件名为MD5值的第一文件,若存在第一文件,可以确定着色器的编译结果已经存储在第一文件中了,那么不必再对着色器进行编译,而是直接从第一文件中读取着色器的编译结果;若不存在第一文件,那么可以对着色器进行编译,并在/sdcard/Android/data/<包名>/mesa_shader_cache中设置文件名为MD5值的第一文件,然后将着色器的编译结果存储在第一文件中,以便后续查询。
图5是根据本公开的实施例示出的又一种编译处理方法的示意流程图。本实施例所示的方法可以由云端服务器执行,如图5所示,方法还包括:
在步骤S501中,禁止应用程序接口(Application Programming Interface,API):eglSetBlobCacheFuncsANDROID。
在一些实施例中,在安卓系统中,可以设置有硬件加速用户图形界面(HardWareaccelerated User Interface,HWUI)模块,该模块可以通过OpenGL ES加速图形界面,并且也可以将着色器的编译结果存储至磁盘缓存中。
但是,HWUI模块只是将渲染UI的部分着色器的编译结果存储在磁盘缓存中,而对于渲染其他画面的着色器的编译结果则并没有存储在磁盘缓存中,本公开则是在通过着色器对第一应用程序中的画面进行渲染时,只要尚未将着色器的编译结果存储到磁盘缓存中,就可以对着色器进行编译,并将编译结果存储到磁盘缓存中,并不限于渲染UI的部分着色器。因此,本公开的实施例相对于HWUI模块仅将渲染UI的部分着色器的编译结果存储在磁盘缓存中,可以将所有用到的着色器的编译结果都存储在磁盘缓存中,从而可以更为有效地降低显示画面的延迟。
其中,HWUI模块将着色器的编译结果存储至磁盘缓存中,实现逻辑如下:
例如OpenGL ES基于Mesa 3D图形库实现,在OpenGL ES初始化阶段,可以查询Mesa3D图形库的图形驱动是否支持eglSetBlobCacheFuncsANDROID这个API,若支持该API,那么容器安卓的图形驱动可以调用该API,其中,该API可以提供两个接口,一个接口为android::setBlob(),该接口用于将着色器的编译结果存储在磁盘缓存中,另一个接口为android::getBlob(),该接口用于从磁盘缓存中读取着色器的编译结果。
然而,基于前述分析可知,HWUI模块存储着色器的编译结果的逻辑,与本公开中存储着色器的编译结果的逻辑存在差异,如果按照HWUI模块存储着色器的编译结果的逻辑执行操作,就不会按照本公开中存储着色器的编译结果的逻辑执行操作,从而导致仅将渲染UI的部分着色器的编译结果存储在磁盘缓存。而且对于安卓云应用来说,除了少量UI之外,绝大部分图形画面都是通过OpenGL ES直接绘制的,这些OpenGL ES不会调用到HWUI模块中的逻辑,因而不能使用到HWUI提供的着色器缓存功能。
现在的逻辑是,如果容器安卓通过eglSetBlobCacheFuncsANDROID设置过磁盘缓存逻辑,Mesa 3D中的磁盘逻辑将被忽略,所以,需要禁止eglSetBlobCacheFuncsANDROID,以将HWUI中的磁盘缓存逻辑转移到Mesa 3D中。
与前述的编译处理方法的实施例相对应,本公开还提供了编译处理装置的实施例。
图6是根据本公开的实施例示出的一种编译处理装置的示意框图。
在一些实施例中,本实施例所示的编译处理装置可以设置于云端服务器(也可以简称为云服务器或服务器)执行。
如图6所示,编译处理装置可以包括以下模块:处理模块601、查询模块602、加载模块603、编译模块604、存储模块605。
在一些实施例中,处理模块,被配置为在需要通过着色器对第一应用程序中的画面进行渲染时,确定需要对着色器进行编译,其中,第一应用程序运行在容器安卓中;
查询模块,被配置为查询磁盘缓存中是否存储有着色器的编译结果;
加载模块,被配置为在磁盘缓存中存储有着色器的编译结果的情况下,从磁盘缓存中加载编译结果;
编译模块,被配置为在磁盘缓存中未存储有着色器的编译结果的情况下,对着色器进行编译;
存储模块,被配置为将编译得到的编译结果存储至磁盘缓存。
在一些实施例中,编译处理装置还包括:
获取模块,被配置为获取第一应用程序的标识;
设置模块,被配置为根据标识设置环境变量的值,以设置第一应用程序的目录的子目录作为缓存目录,其中,值为第一应用程序的目录。
在一些实施例中,编译处理装置还包括:
计算模块,被配置为计算着色器的源码的MD5值;
其中,设置模块还被配置为,以MD5值作为第一文件的文件名,设置缓存目录的子目录作为第一文件的目录;以及,存储模块,被配置为将编译结果存储至第一文件。
在一些实施例中,查询模块,被配置为查询缓存目录中是否存在第一文件,其中,若存在第一文件,确定磁盘缓存中存储有着色器的编译结果,若不存在第一文件,确定磁盘缓存中未存储有着色器的编译结果。
在一些实施例中,编译处理装置还包括:
禁止模块,被配置为禁止应用程序接口:eglSetBlobCacheFuncsANDROID。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在相关方法的实施例中进行了详细描述,此处将不做详细阐述说明。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本公开的实施例还提出一种通信设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为实现上述任一实施例所述的方法。
本公开的实施例还提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述方法中的步骤。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种编译处理方法,应用于云端服务器,其特征在于,包括:
在需要通过着色器对第一应用程序中的画面进行渲染时,确定需要对着色器进行编译,其中,所述第一应用程序运行在容器安卓中;
查询磁盘缓存中是否存储有所述着色器的编译结果,其中,若所述磁盘缓存中存储有所述着色器的编译结果,从所述磁盘缓存中加载所述编译结果;若所述磁盘缓存中未存储有所述着色器的编译结果,对所述着色器进行编译,将编译得到的编译结果存储至所述磁盘缓存。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述第一应用程序的标识;
根据所述标识设置环境变量的值,以设置所述第一应用程序的目录的子目录作为缓存目录,其中,所述值为所述第一应用程序的目录。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
计算所述着色器的源码的MD5值;
以所述MD5值作为第一文件的文件名,设置所述缓存目录的子目录作为第一文件的目录;
其中,所述将编译得到的编译结果存储至所述磁盘缓存,包括:
将所述编译结果存储至所述第一文件。
4.根据权利要求3所述的方法,其特征在于,所述查询磁盘缓存中是否存储有所述着色器的编译结果,包括:
查询所述缓存目录中是否存在所述第一文件,其中,若存在所述第一文件,确定所述磁盘缓存中存储有所述着色器的编译结果,若不存在所述第一文件,确定所述磁盘缓存中未存储有所述着色器的编译结果。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
禁止应用程序接口:eglSetBlobCacheFuncsANDROID。
6.一种编译处理装置,应用于云端服务器,其特征在于,包括:
处理模块,被配置为在需要通过着色器对第一应用程序中的画面进行渲染时,确定需要对着色器进行编译,其中,所述第一应用程序运行在容器安卓中;
查询模块,被配置为查询磁盘缓存中是否存储有所述着色器的编译结果;
加载模块,被配置为在所述磁盘缓存中存储有所述着色器的编译结果的情况下,从所述磁盘缓存中加载所述编译结果;
编译模块,被配置为在所述磁盘缓存中未存储有所述着色器的编译结果的情况下,对所述着色器进行编译;
存储模块,被配置为将编译得到的编译结果存储至所述磁盘缓存。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
获取模块,被配置为获取所述第一应用程序的标识;
设置模块,被配置为根据所述标识设置环境变量的值,以设置所述第一应用程序的目录的子目录作为缓存目录,其中,所述值为所述第一应用程序的目录。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
计算模块,被配置为计算所述着色器的源码的MD5值;
其中,所述设置模块还被配置为,以所述MD5值作为第一文件的文件名,设置所述缓存目录的子目录作为第一文件的目录;以及,所述存储模块,被配置为将所述编译结果存储至所述第一文件。
9.根据权利要求8所述的装置,其特征在于,所述查询模块,被配置为查询所述缓存目录中是否存在所述第一文件,其中,若存在所述第一文件,确定所述磁盘缓存中存储有所述着色器的编译结果,若不存在所述第一文件,确定所述磁盘缓存中未存储有所述着色器的编译结果。
10.一种通信设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为实现权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311278668.8A CN117008924A (zh) | 2023-10-07 | 2023-10-07 | 编译处理方法及装置、通信设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311278668.8A CN117008924A (zh) | 2023-10-07 | 2023-10-07 | 编译处理方法及装置、通信设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117008924A true CN117008924A (zh) | 2023-11-07 |
Family
ID=88576581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311278668.8A Withdrawn CN117008924A (zh) | 2023-10-07 | 2023-10-07 | 编译处理方法及装置、通信设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117008924A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1821981A (zh) * | 2005-02-18 | 2006-08-23 | 国际商业机器公司 | 识别对数据存储设备某些部分的未授权访问的系统和方法 |
CN109240743A (zh) * | 2018-08-03 | 2019-01-18 | 挖财网络技术有限公司 | 一种利用特定标签来进行代码切换的方法 |
CN110263275A (zh) * | 2019-06-14 | 2019-09-20 | 深圳前海桔子信息技术有限公司 | 一种访问网页的方法、装置、移动终端和存储介质 |
CN110609688A (zh) * | 2019-09-19 | 2019-12-24 | 网易(杭州)网络有限公司 | 着色器的处理方法及处理装置、储存介质和处理器 |
CN111736850A (zh) * | 2020-07-21 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、服务器及介质 |
CN113868188A (zh) * | 2021-08-25 | 2021-12-31 | 苏州浪潮智能科技有限公司 | 一种修改数据库文件存储位置的方法、系统、设备和介质 |
CN116257706A (zh) * | 2023-01-03 | 2023-06-13 | 北京小米移动软件有限公司 | 应用加载方法、装置及存储介质 |
-
2023
- 2023-10-07 CN CN202311278668.8A patent/CN117008924A/zh not_active Withdrawn
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1821981A (zh) * | 2005-02-18 | 2006-08-23 | 国际商业机器公司 | 识别对数据存储设备某些部分的未授权访问的系统和方法 |
CN109240743A (zh) * | 2018-08-03 | 2019-01-18 | 挖财网络技术有限公司 | 一种利用特定标签来进行代码切换的方法 |
CN110263275A (zh) * | 2019-06-14 | 2019-09-20 | 深圳前海桔子信息技术有限公司 | 一种访问网页的方法、装置、移动终端和存储介质 |
CN110609688A (zh) * | 2019-09-19 | 2019-12-24 | 网易(杭州)网络有限公司 | 着色器的处理方法及处理装置、储存介质和处理器 |
CN111736850A (zh) * | 2020-07-21 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、服务器及介质 |
CN113868188A (zh) * | 2021-08-25 | 2021-12-31 | 苏州浪潮智能科技有限公司 | 一种修改数据库文件存储位置的方法、系统、设备和介质 |
CN116257706A (zh) * | 2023-01-03 | 2023-06-13 | 北京小米移动软件有限公司 | 应用加载方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109697060B (zh) | 视频特效系统及其生成方法、装置、设备和存储介质 | |
EP2359247B1 (en) | Transforming user script code for debugging | |
US8561045B2 (en) | Constructing runtime state for inlined code | |
CN114580344B (zh) | 测试激励生成方法、验证方法、验证系统及相关设备 | |
US20140351804A1 (en) | Generating and applying patches to computer program code concurrently with its execution | |
US11474810B2 (en) | Run-time application modification | |
US8539506B2 (en) | Dynamic injection of code into running process | |
GB2476360A (en) | Passing data from a CPU to a graphics processor by writing multiple versions of the data in a shared memory | |
CN112948024B (zh) | 动态链接库的加载方法、装置、存储介质及电子设备 | |
EP3137985A1 (en) | Graphics pipeline state object and model | |
US20130198325A1 (en) | Provision and running a download script | |
US20200159461A1 (en) | Data accessing method, device, and storage medium | |
CN112882694A (zh) | 一种程序编译方法、装置、电子设备及可读存储介质 | |
US20130176320A1 (en) | Machine processor | |
EP3719645A1 (en) | Extension application mechanisms through intra-process operation systems | |
US20130103931A1 (en) | Machine processor | |
US10552135B1 (en) | Reducing a size of an application package | |
US9448823B2 (en) | Provision of a download script | |
CN110688320B (zh) | 全局变量的检测方法、装置及终端设备 | |
CN116954824A (zh) | 一种支持多种扩展现实 (xr) 技术规范应用程序与2d应用程序多进程混合运行的运行时系统、数据交互方法、设备及介质 | |
US7401178B1 (en) | Expanded memory space in environments including virtual machines | |
CN111625225A (zh) | 一种程序指定数据输出方法和装置 | |
CN103744667A (zh) | 一种基于Silverlight实现组态功能的系统 | |
CN114092590B (zh) | 电子设备及其图像渲染性能的评估方法、介质 | |
CN117008924A (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20231107 |
|
WW01 | Invention patent application withdrawn after publication |