CN116862749A - 一种基于自适应解码缓存的压缩纹理渲染优化方法 - Google Patents
一种基于自适应解码缓存的压缩纹理渲染优化方法 Download PDFInfo
- Publication number
- CN116862749A CN116862749A CN202310733005.4A CN202310733005A CN116862749A CN 116862749 A CN116862749 A CN 116862749A CN 202310733005 A CN202310733005 A CN 202310733005A CN 116862749 A CN116862749 A CN 116862749A
- Authority
- CN
- China
- Prior art keywords
- texture
- cache
- current
- textures
- format
- 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
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000009877 rendering Methods 0.000 title claims abstract description 20
- 238000005457 optimization Methods 0.000 title claims abstract description 10
- 230000003044 adaptive effect Effects 0.000 title claims description 6
- 238000012545 processing Methods 0.000 claims abstract description 9
- 230000008569 process Effects 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种基于自适应解码缓存的压缩纹理渲染优化方法,通过在应用程序运行中缓存GPU不支持解码的压缩纹理的解码结果以及与其相关联的纹理,当再次使用该压缩纹理时自适应地加载解码结果及预加载关联纹理完成纹理的渲染,由此实现了压缩纹理的一次解码持续使用,从而显著减少了压缩纹理解码所需的CPU开销,提升了图形渲染的流畅性。
Description
技术领域
本发明属于计算机应用开发技术领域,具体涉及一种基于自适应解码缓存的压缩纹理渲染优化方法。
背景技术
图形应用程序在使用压缩纹理的时候,如果GPU支持此格式的压缩纹理,图形应用程序就可以直接将压缩纹理当作非压缩纹理使用,即直接将压缩纹理传递给GPU进行渲染或变换处理;反之,如果不支持,图形应用程序则需要通过图形模拟库采用CPU将压缩纹理解码成非压缩纹理,再对非压缩纹理执行后续的渲染处理。然而,采用CPU解码压缩纹理的过程非常耗时,一般情况下解码大小为1MB左右的ASTC格式的压缩纹理需要的时长超过100ms,这严重降低了图形应用程序的渲染帧率,影响了用户使用。
发明内容
有鉴于此,本发明提供了一种基于自适应解码缓存的压缩纹理渲染优化方法,实现了应用程序运行中压缩纹理的一次解码持续使用提升了图形渲染的流畅性。
本发明提供的一种基于自适应解码缓存的压缩纹理渲染优化方法,包括以下步骤:
步骤1、获取当前启动的应用程序的标识值,根据该标识值查找纹理缓存元信息,若存在则将纹理缓存元信息读入纹理历史信息列表,执行步骤2;否则以标识值为关键字新建纹理缓存元信息,并将纹理缓存元信息读入纹理历史信息列表,执行步骤2;所述纹理缓存元信息包括应用程序所使用纹理的纹理索引、纹理缓存、纹理缓存格式、纹理缓存文件、纹理缓存历史格式、纹理使用次数及关联纹理列表;
步骤2、在应用程序执行过程中,当纹理被使用时获取纹理的当前纹理索引及当前纹理格式,根据当前纹理索引在纹理历史信息列表中查找对应的纹理,若存在则将该纹理的纹理使用次数自加1;否则在纹理历史信息列表中新建纹理,并将该纹理的纹理索引设置为当前纹理索引且将纹理使用次数设置为1;若当前纹理为压缩纹理则执行步骤3,否则执行步骤4;
步骤3、设定遍历节点数,在纹理历史信息列表中选取与遍历节点数相等数量的纹理,将当前纹理的纹理索引加入到这些纹理的关联纹理列表的尾部;若当前纹理的纹理缓存及纹理缓存文件均为空,则采用CPU解码当前纹理得到解码结果,为解码结果分配内存并将解码结果保存在纹理缓存中,以解码结果的格式更新纹理缓存格式,再将解码结果的格式去重添加到纹理缓存历史格式中;若当前纹理的纹理缓存为空且纹理缓存文件不为空,则将纹理缓存文件读入纹理缓存中;将当前纹理的关联纹理列表的纹理缓存读入内存;根据当前纹理的纹理缓存中的数据为当前纹理创建非压缩纹理对象,且将当前纹理索引绑定到该非压缩纹理对象,执行步骤5;
步骤4、遍历当前纹理的关联纹理列表中的关联纹理,当其存在于纹理历史信息列表中且其纹理缓存为空时,若预加载纹理缓存空间小于阈值则根据其纹理缓存文件的大小分配内存作为纹理缓存,并将纹理缓存文件内容保存到纹理缓存中,采用纹理缓存文件大小与预加载纹理缓存空间的和更新预加载纹理缓存空间;若预加载纹理缓存空间不小于阈值则不处理;
步骤5、当应用程序执行完毕卸载纹理时,以预加载纹理缓存空间的大小减去卸载纹理对应的纹理缓存文件大小的结果更新预加载纹理缓存空间,结束本流程。
进一步地,所述步骤1中所述标识值为应用程序的二进制代码的哈希值。
进一步地,所述步骤2中还包括:根据纹理操作所采用的函数名称判断当前被使用的纹理是否为压缩纹理。
进一步地,所述步骤3中的所述设定遍历节点数的方式为:获取纹理历史信息列表中的纹理数量M及当前纹理的关联纹理列表中纹理的数量N,以M和N的较小值作为遍历节点数。
进一步地,所述步骤3中还包括:若当前纹理的纹理缓存历史格式中格式数量大于1,则对纹理缓存历史格式中的每个历史格式执行以下操作,在纹理历史信息列表中查找纹理索引为当前纹理索引且纹理缓存格式为历史格式的纹理,若不存在则在纹理历史信息列表中增加以当前纹理索引为纹理索引、以历史格式为纹理缓存格式的新纹理,将新纹理的纹理使用次数设置为1,将新纹理的纹理缓存设置为根据当前纹理的纹理缓存转换成的格式为历史格式的纹理内容;若存在则不做处理。
进一步地,所述步骤4中所述遍历当前纹理的关联纹理列表中的关联纹理的方式为:先根据关联纹理列表中所有关联纹理的纹理使用次数由大到小对关联纹理排序形成有序关联纹理列表,再从前到后依次选择所述有序关联纹理列表中的关联纹理。
进一步地,所述步骤4中还包括:当执行纹理合并操作时,若待合并的纹理均为压缩纹理且其中一个具有GPU支持的压缩纹理格式,则采用CPU解码两个待合并压缩纹理后再执行纹理合并操作。
进一步地,所述步骤5中还包括:若当前为应用程序的第一次保存纹理操作,则通过磁盘过滤驱动挂起非系统磁盘的写操作,然后将各纹理的纹理缓存及关联纹理列表中关联纹理的纹理缓存顺序保存到该非系统磁盘中,最后再恢复该非系统磁盘的写操作。
有益效果
本发明通过在应用程序运行中缓存GPU不支持解码的压缩纹理的解码结果以及与其相关联的纹理,当再次使用该压缩纹理时自适应地加载解码结果及预加载关联纹理完成纹理的渲染,由此实现了压缩纹理的一次解码持续使用,从而显著减少了压缩纹理解码所需的CPU开销,提升了图形渲染的流畅性。
具体实施方式
下面列举实施例,对本发明进行详细描述。
本发明提供了一种基于自适应解码缓存的压缩纹理渲染优化方法,其核心思想是:在压缩纹理首次被解码后将解码得到的非压缩纹理保存到内存中,并记录纹理的使用方式、使用频率和相关纹理间的关联关系,再次使用压缩纹理时则直接加载解码结果并预加载其关联纹理完成纹理的渲染。
本发明提供的一种基于自适应解码缓存的压缩纹理渲染优化方法,具体包括以下步骤:
步骤1、获取当前启动的应用程序的标识值,根据该标识值查找纹理缓存元信息,若存在则将纹理缓存元信息读入纹理历史信息列表,执行步骤2;否则以标识值为关键字新建纹理缓存元信息,并将纹理缓存元信息读入纹理历史信息列表,执行步骤2。
其中,纹理缓存元信息由应用程序所使用的纹理的相关信息组成。纹理的相关信息包括纹理索引、纹理缓存、纹理缓存格式、纹理缓存文件、纹理缓存历史格式、纹理使用次数及关联纹理列表。纹理索引是指纹理的标识值,该标识值为全局唯一且与应用程序的启动次数无关;纹理缓存为压缩纹理被解码后的数据,初始值为空,非压缩纹理的纹理缓存也为空;纹理缓存格式是指压缩纹理当前使用的被解码后的格式,例如RGB、RGBA、YUV等;纹理缓存文件是指压缩纹理被解码后保存为文件的文件全路径,非压缩纹理的纹理缓存文件为空;纹理缓存历史格式是指压缩纹理曾使用的被解码后的格式,同一压缩纹理的纹理缓存格式可能会有多个,非压缩纹理的纹理缓存历史格式为空;纹理使用次数是指纹理在应用程序执行过程中被使用的次数,初始值为0;关联纹理列表是指在当前纹理被使用之后被使用的N个压缩纹理索引的列表,初始值为空链表。
本发明中,应用程序的标识值可为应用程序的二进制代码的哈希值。
步骤2、在应用程序执行过程中,当纹理被使用时获取纹理的当前纹理索引以及当前纹理格式,根据当前纹理索引在纹理历史信息列表中查找对应的纹理,若存在则将该纹理的纹理使用次数自加1;否则在纹理历史信息列表中新建纹理,并将该纹理的纹理索引设置为当前纹理索引且将纹理使用次数设置为1;若当前纹理为压缩纹理则执行步骤3,否则执行步骤4。
本发明中,可根据纹理操作所采用的函数名称来判断当前被使用的纹理是否为压缩纹理。
步骤3、获取纹理历史信息列表中的纹理数量M及当前纹理的关联纹理列表中纹理的数量N,以M和N的较小值作为遍历节点数,在纹理历史信息列表中选取与遍历节点数相等数量的纹理,将当前纹理的纹理索引加入到这些纹理的关联纹理列表的尾部;若当前纹理的纹理缓存及纹理缓存文件均为空,说明该压缩纹理未被解码过,则采用CPU解码该压缩纹理,为解码结果分配内存并将解码结果保存在纹理缓存中,并以解码结果的格式更新纹理缓存格式,再将解码结果的格式去重添加到纹理缓存历史格式中;若当前纹理的纹理缓存为空,纹理缓存文件不为空,则将纹理缓存文件读入纹理缓存中;并将当前纹理的关联纹理列表的纹理缓存读入内存;根据当前纹理的纹理缓存中的数据为当前纹理创建非压缩纹理对象,且将当前纹理索引绑定到该非压缩纹理对象;执行步骤5。
为进一步地提高压缩纹理的渲染效率,若当前纹理的纹理缓存历史格式中格式数量大于1,则对于纹理缓存历史格式中的每个历史格式执行:在纹理历史信息列表中查找纹理索引为当前纹理索引且纹理缓存格式为历史格式的纹理,若不存在则在纹理历史信息列表中增加以当前纹理索引为纹理索引、以历史格式为纹理缓存格式的新纹理,将新纹理的纹理使用次数设置为1,将新纹理的纹理缓存设置为根据当前纹理的纹理缓存转换成的格式为历史格式的纹理内容;若存在则不做处理。
步骤4、遍历当前纹理的关联纹理列表,根据关联纹理列表中所有关联纹理的纹理使用次数由大到小对关联纹理排序形成有序关联纹理列表;从前到后依次选择有序关联纹理列表中的关联纹理,当其存在于纹理历史信息列表中且其纹理缓存为空时,若预加载纹理缓存空间小于阈值则根据其纹理缓存文件的大小分配内存作为纹理缓存,并将纹理缓存文件内容保存到纹理缓存中,采用纹理缓存文件大小与预加载纹理缓存空间的和更新预加载纹理缓存空间;若预加载纹理缓存空间不小于阈值则不处理;执行步骤5。
进一步地,当执行纹理合并操作时,若待合并的纹理均为压缩纹理且其中一个具有GPU支持的压缩纹理格式,则采用CPU解码两个待合并压缩纹理后再采用GPU执行纹理合并操作。通过上述操作防止由于GPU中同时出现压缩纹理和非压缩纹理而导致的无法执行纹理合并操作的问题。
步骤5、当应用程序执行完毕卸载纹理时,以预加载纹理缓存空间的大小减去卸载纹理对应的纹理缓存文件大小更新预加载纹理缓存空间;若当前为应用程序的第一次保存纹理操作,则采用非系统磁盘保存纹理历史信息列表中各纹理的纹理缓存数据,再通过磁盘过滤驱动挂起该非系统磁盘的写操作,然后将各纹理的纹理缓存及关联纹理列表中关联纹理的纹理缓存顺序保存到该非系统磁盘中,最后恢复该非系统磁盘的写操作,结束本流程。
实施例
本实施例中采用本发明提供的一种基于自适应解码缓存的压缩纹理渲染优化方法实现压缩纹理的渲染,具体包括以下步骤:
S1、根据当前启动的应用程序二进制文件的哈希值,加载对应的压缩纹理缓存信息,将压缩纹理缓存信息读入textureHistory。
其中,textureHistory为一个列表,列表的每个成员的数据结构为TEX_STAT,TEX_STAT包括纹理索引texIndex、 纹理缓存decodedTexBuffer、纹理缓存格式decodedTexFormat、纹理缓存文件decodedTexFile、纹理缓存历史格式formatList、纹理使用次数texUsageCount、关联纹理列表followedTextures。
S2、应用程序运行中,监视压缩纹理和非压缩纹理的使用,实现对首次解码的压缩纹理的缓存,及压缩纹理缓存结果的自适应加载,并记录纹理使用方式、使用频率和相关纹理的关联(在内存中建立一个关联数据库)。
本实施例,通过修改图形库的实现。如OpenGL或者OpenGL ES中修改glCompressedTexImage1D、glCompressedTexImage2D、glCompressedTexImage3D函数监视压缩纹理的完整解码和加载过程,通过修改 glCompressedTexSubImage2D、glCompressedTexSubImage3D监视压缩纹理的部分解码和加载过程,通过修改glTexImage1D、glTexImage2D、 glTexImage3D监视非压缩纹理的加载过程。
S2.1、根据当前函数名判断当前是1D、2D还是3D纹理,也可以获取当前是压缩纹理还是非压缩纹理,获取当前图形上下文context的活跃1D/2D/3D纹理的Id,将此Id记为activeTextureId。
由glBindTexture设置,任意时刻一个图形线程中仅会有存在一个处于活跃状态的1D/2D/3D纹理。
S2.2、获取activeTextureId对应的索引,记为activeTextureIndex,此索引是全局唯一,仅与纹理的内容相关与应用启动次数无关。
S2.3、在textureHistory中搜索texIndex为activeTextureIndex的节点:
如存在,则将该节点的texUsageCount自加1;否则,新建一个TEX_STAT的变量texStat,将其texIndex设置为activeTextureIndex,将texUsageCount设置为1,将函数参数中的format去重后加入formatList。
S2.4、若当前纹理为压缩纹理,则在textureHistory中遍历Min(N,textureHistory节点个数)个节点,将activeTextureIndex加入到这些节点的followedTextures的尾部;在textureHistory中搜索texIndex为activeTextureIndex的节点,如未解码则执行CPU的压缩纹理解码操作,再根据解码结果分配decodedTexBuffer内存,并将解码内容保存到decodedTexBuffer;
在textureHistory中找到texIndex为activeTextureIndex的节点,此时其decodedTexBuffer如为空,则将其decodedTexFile的内容读入decodedTexBuffer,并读入此节点followedTextures中包含的内容;
如formatList中格式个数大于1,则对于其中的每一个decodedFormat,执行:在textureHistory搜索texIndex为activeTextureIndex、且decodedTexFormat为decodedFormat的节点,如不存在则基于decodedTexFormat为每个decodedFormat新建一个TEX_STAT的变量texStat,将其texIndex设置为activeTextureIndex,将texUsageCount设置为1,将其decodedTexFormat设置为decodedFormat,基于之前的decodedTexBuffer生成格式为decodedFormat的decodedTexBuffer。
根据当前函数的format参数搜索在上一步中找到或者创建的TEX_STAT节点,基于节点的decodedTexBuffer创建非压缩纹理对象image,且将该压缩纹理的Id绑定到非压缩纹理对象image。其中,该压缩纹理的Id为图形加速库内部维护的纹理Id,即glBindTexture的第二个参数。
S2.5、如当前不是压缩纹理,且在textureHistory中存在texIndex为activeTextureIndex的节点,则遍历其followedTextures链表,按照该链表每个节点的texUsageCount进行排序,texUsageCount越大越靠前,排序后的列表记为sortedFollowedTextures。
对于sortedFollowedTextures中的每个节点包含的压缩纹理的compressedTexIndex执行:
在textureHistory中查找compressedTexIndex对应的节点,如存在则判断decodedTexBuffer是否为空,为空则判断preloadedDecodedTexBufferSize的大小是否超过阈值,例如阈值为800MB,如小于阈值则:
a) 、根据decodedTexFile文件大小分配decodedTexBuffer,并将decodedTexFile的内容读入到decodedTexBuffer;
b) 、以preloadedDecodedTexBufferSize加上decodedTexFile文件大小的值更新preloadedDecodedTexBufferSize;
若不小于阈值则不处理。
如不存在,则重新执行上述步骤完成压缩纹理的解码,并分配内存存储。
此外,对followedTextures链表中的节点的排序,也可按照使用时间顺序进行排序。
S3、监视纹理合并的操作,如合并的纹理为两个压缩格式纹理,且其中仅有一个是GPU支持的压缩纹理则将GPU支持的压缩纹理强制使用CPU解码,解码后执行上述操作后再执行纹理合并操作。
S3、纹理卸载时,将textureHistory保存到磁盘文件,若为第一次保存解码后的纹理,则优先将decodedTexBuffer保存到非系统磁盘,以避免后续的挂起非系统磁盘写操作影响系统I/O性能;通过磁盘过滤驱动挂起decodedTexBuffer保存到的非系统磁盘的写操作;再对textureHistory中的每个压缩纹理节点执行以下操作,将其decodedTexBuffer和其followedTextures中的压缩纹理的decodedTexBuffer,顺序依次保存;恢复非系统磁盘写操作;同时,减小preloadedDecodedTexBufferSize的值。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于自适应解码缓存的压缩纹理渲染优化方法,其特征在于,包括以下步骤:
步骤1、获取当前启动的应用程序的标识值,根据该标识值查找纹理缓存元信息,若存在则将纹理缓存元信息读入纹理历史信息列表,执行步骤2;否则以标识值为关键字新建纹理缓存元信息,并将纹理缓存元信息读入纹理历史信息列表,执行步骤2;所述纹理缓存元信息包括应用程序所使用纹理的纹理索引、纹理缓存、纹理缓存格式、纹理缓存文件、纹理缓存历史格式、纹理使用次数及关联纹理列表;
步骤2、在应用程序执行过程中,当纹理被使用时获取纹理的当前纹理索引及当前纹理格式,根据当前纹理索引在纹理历史信息列表中查找对应的纹理,若存在则将该纹理的纹理使用次数自加1;否则在纹理历史信息列表中新建纹理,并将该纹理的纹理索引设置为当前纹理索引且将纹理使用次数设置为1;若当前纹理为压缩纹理则执行步骤3,否则执行步骤4;
步骤3、设定遍历节点数,在纹理历史信息列表中选取与遍历节点数相等数量的纹理,将当前纹理的纹理索引加入到这些纹理的关联纹理列表的尾部;若当前纹理的纹理缓存及纹理缓存文件均为空,则采用CPU解码当前纹理得到解码结果,为解码结果分配内存并将解码结果保存在纹理缓存中,以解码结果的格式更新纹理缓存格式,再将解码结果的格式去重添加到纹理缓存历史格式中;若当前纹理的纹理缓存为空且纹理缓存文件不为空,则将纹理缓存文件读入纹理缓存中;将当前纹理的关联纹理列表的纹理缓存读入内存;根据当前纹理的纹理缓存中的数据为当前纹理创建非压缩纹理对象,且将当前纹理索引绑定到该非压缩纹理对象,执行步骤5;
步骤4、遍历当前纹理的关联纹理列表中的关联纹理,当其存在于纹理历史信息列表中且其纹理缓存为空时,若预加载纹理缓存空间小于阈值则根据其纹理缓存文件的大小分配内存作为纹理缓存,并将纹理缓存文件内容保存到纹理缓存中,采用纹理缓存文件大小与预加载纹理缓存空间的和更新预加载纹理缓存空间;若预加载纹理缓存空间不小于阈值则不处理;
步骤5、当应用程序执行完毕卸载纹理时,以预加载纹理缓存空间的大小减去卸载纹理对应的纹理缓存文件大小的结果更新预加载纹理缓存空间,结束本流程。
2.根据权利要求1所述的压缩纹理渲染优化方法,其特征在于,所述步骤1中所述标识值为应用程序的二进制代码的哈希值。
3.根据权利要求1所述的压缩纹理渲染优化方法,其特征在于,所述步骤2中还包括:根据纹理操作所采用的函数名称判断当前被使用的纹理是否为压缩纹理。
4.根据权利要求1所述的压缩纹理渲染优化方法,其特征在于,所述步骤3中的所述设定遍历节点数的方式为:获取纹理历史信息列表中的纹理数量M及当前纹理的关联纹理列表中纹理的数量N,以M和N的较小值作为遍历节点数。
5.根据权利要求1所述的压缩纹理渲染优化方法,其特征在于,所述步骤3中还包括:若当前纹理的纹理缓存历史格式中格式数量大于1,则对纹理缓存历史格式中的每个历史格式执行以下操作,在纹理历史信息列表中查找纹理索引为当前纹理索引且纹理缓存格式为历史格式的纹理,若不存在则在纹理历史信息列表中增加以当前纹理索引为纹理索引、以历史格式为纹理缓存格式的新纹理,将新纹理的纹理使用次数设置为1,将新纹理的纹理缓存设置为根据当前纹理的纹理缓存转换成的格式为历史格式的纹理内容;若存在则不做处理。
6.根据权利要求1所述的压缩纹理渲染优化方法,其特征在于,所述步骤4中所述遍历当前纹理的关联纹理列表中的关联纹理的方式为:先根据关联纹理列表中所有关联纹理的纹理使用次数由大到小对关联纹理排序形成有序关联纹理列表,再从前到后依次选择所述有序关联纹理列表中的关联纹理。
7.根据权利要求1所述的压缩纹理渲染优化方法,其特征在于,所述步骤4中还包括:当执行纹理合并操作时,若待合并的纹理均为压缩纹理且其中一个具有GPU支持的压缩纹理格式,则采用CPU解码两个待合并压缩纹理后再执行纹理合并操作。
8.根据权利要求1所述的压缩纹理渲染优化方法,其特征在于,所述步骤5中还包括:若当前为应用程序的第一次保存纹理操作,则通过磁盘过滤驱动挂起非系统磁盘的写操作,然后将各纹理的纹理缓存及关联纹理列表中关联纹理的纹理缓存顺序保存到该非系统磁盘中,最后再恢复该非系统磁盘的写操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310733005.4A CN116862749B (zh) | 2023-06-20 | 2023-06-20 | 一种基于自适应解码缓存的压缩纹理渲染优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310733005.4A CN116862749B (zh) | 2023-06-20 | 2023-06-20 | 一种基于自适应解码缓存的压缩纹理渲染优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116862749A true CN116862749A (zh) | 2023-10-10 |
CN116862749B CN116862749B (zh) | 2023-11-21 |
Family
ID=88225954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310733005.4A Active CN116862749B (zh) | 2023-06-20 | 2023-06-20 | 一种基于自适应解码缓存的压缩纹理渲染优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116862749B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090315905A1 (en) * | 2008-06-18 | 2009-12-24 | Microsoft Corporation | Layered texture compression architecture |
US20150262385A1 (en) * | 2014-03-17 | 2015-09-17 | Sony Computer Entertainment Inc. | Image decoder, graphics processor, image decoding method, and graphics processing method |
CN105096367A (zh) * | 2014-04-30 | 2015-11-25 | 广州市动景计算机科技有限公司 | 优化Canvas绘制性能的方法及装置 |
CN107153617A (zh) * | 2016-03-04 | 2017-09-12 | 三星电子株式会社 | 用于利用缓冲器高效访问纹理数据的高速缓存体系结构 |
CN108022269A (zh) * | 2017-11-24 | 2018-05-11 | 中国航空工业集团公司西安航空计算技术研究所 | 一种GPU压缩纹理存储Cache的建模结构 |
CN109949201A (zh) * | 2019-01-29 | 2019-06-28 | 福建多多云科技有限公司 | 一种Linux容器的图像渲染加速方法 |
CN113034629A (zh) * | 2021-05-17 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、计算机设备及存储介质 |
CN115359226A (zh) * | 2022-10-19 | 2022-11-18 | 深圳市明源云客电子商务有限公司 | 鸿蒙系统基于纹理压缩的vr展示方法、电子设备及介质 |
CN115408305A (zh) * | 2022-11-03 | 2022-11-29 | 北京麟卓信息科技有限公司 | 一种基于dma重定向的图形渲染方式检测方法 |
-
2023
- 2023-06-20 CN CN202310733005.4A patent/CN116862749B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090315905A1 (en) * | 2008-06-18 | 2009-12-24 | Microsoft Corporation | Layered texture compression architecture |
US20150262385A1 (en) * | 2014-03-17 | 2015-09-17 | Sony Computer Entertainment Inc. | Image decoder, graphics processor, image decoding method, and graphics processing method |
CN105096367A (zh) * | 2014-04-30 | 2015-11-25 | 广州市动景计算机科技有限公司 | 优化Canvas绘制性能的方法及装置 |
CN107153617A (zh) * | 2016-03-04 | 2017-09-12 | 三星电子株式会社 | 用于利用缓冲器高效访问纹理数据的高速缓存体系结构 |
CN108022269A (zh) * | 2017-11-24 | 2018-05-11 | 中国航空工业集团公司西安航空计算技术研究所 | 一种GPU压缩纹理存储Cache的建模结构 |
CN109949201A (zh) * | 2019-01-29 | 2019-06-28 | 福建多多云科技有限公司 | 一种Linux容器的图像渲染加速方法 |
CN113034629A (zh) * | 2021-05-17 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、计算机设备及存储介质 |
CN115359226A (zh) * | 2022-10-19 | 2022-11-18 | 深圳市明源云客电子商务有限公司 | 鸿蒙系统基于纹理压缩的vr展示方法、电子设备及介质 |
CN115408305A (zh) * | 2022-11-03 | 2022-11-29 | 北京麟卓信息科技有限公司 | 一种基于dma重定向的图形渲染方式检测方法 |
Non-Patent Citations (3)
Title |
---|
SHAO-YI CHIEN 等: "Low-Decoding-Latency Buffer Compression for Graphics Processing Units", IEEE TRANSACTIONS ON MULTIMEDIA, vol. 14, no. 2, pages 250 - 262 * |
汤颖;张宏鑫;张美玉;: "基于图形硬件的纹理图像编码与实时绘制算法", 计算机学报, no. 02, pages 272 - 279 * |
程龙;郭立;史鸿声;: "一种纹理映射算法的FPGA实现", 小型微型计算机系统, no. 09, pages 1855 - 1859 * |
Also Published As
Publication number | Publication date |
---|---|
CN116862749B (zh) | 2023-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7451290B2 (en) | Method and mechanism for on-line data compression and in-place updates | |
US20080172430A1 (en) | Fragmentation Compression Management | |
US10649905B2 (en) | Method and apparatus for storing data | |
US20130124796A1 (en) | Storage method and apparatus which are based on data content identification | |
CN111061434B (zh) | 基因压缩多流数据并行写入及读取方法、系统及介质 | |
US8850148B2 (en) | Data copy management for faster reads | |
EP3937381A1 (en) | Data compression method and apparatus, and computer device | |
CN112070652A (zh) | 数据压缩、解压方法、可读存储介质和电子设备 | |
CN111240765B (zh) | 一种linux压缩应用程序的加载方法 | |
US8909606B2 (en) | Data block compression using coalescion | |
CN107423425B (zh) | 一种对k/v格式的数据快速存储和查询方法 | |
CN117369731B (zh) | 一种数据的缩减处理方法、装置、设备及介质 | |
CN110399371B (zh) | 基于Redis数据库的减少内存消耗的方法、存储介质及设备 | |
CN116862749B (zh) | 一种基于自适应解码缓存的压缩纹理渲染优化方法 | |
US8131918B2 (en) | Method and terminal for demand paging at least one of code and data requiring real-time response | |
US10860472B2 (en) | Dynamically deallocating memory pool subinstances | |
CN115640078B (zh) | 基于虚拟文件系统数据智能预取的安卓应用加载优化方法 | |
CN112395440A (zh) | 一种缓存方法、高效图像语义检索方法和系统 | |
CN102567460B (zh) | 一种文档加载中图像异步解码的方法 | |
US20070220026A1 (en) | Efficient caching for large scale distributed computations | |
CN112579607B (zh) | 数据访问方法和装置、存储介质、电子设备 | |
US20240362122A1 (en) | Inline housekeeping for a deduplication storage system | |
JP2011243134A (ja) | プログラム圧縮装置及びプログラム実行装置及びプログラム | |
CN118861111A (zh) | 数据库的大对象排重处理方法、存储介质及设备 | |
CN118861040A (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 |