CN111028127B - 一种gpu子纹理替换存储方法 - Google Patents
一种gpu子纹理替换存储方法 Download PDFInfo
- Publication number
- CN111028127B CN111028127B CN201911125559.6A CN201911125559A CN111028127B CN 111028127 B CN111028127 B CN 111028127B CN 201911125559 A CN201911125559 A CN 201911125559A CN 111028127 B CN111028127 B CN 111028127B
- Authority
- CN
- China
- Prior art keywords
- tile
- texture
- pixel
- replacement
- line
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明提供了一种GPU子纹理替换存储方法,该方法包括如下步骤:1)获取数据并划分tile行;2)每个tile行在y方向的tile标记;3)每个tile在x方向的tile标记;4)根据tile标记读取原始数据;5)tile的逐像素替换以及tile替换;其中,tile表示4x4像素块,最左下角像素的x,y坐标均为4的整数倍,tile行表示4个像素行,起始像素行的y坐标是4的整数倍,tile标记表示是否替换原始纹理的完整tile。本发明解决了GPU子纹理替换问题,支持来源于主机或显存的内部格式为压缩或非压缩的子纹理,支持替换原始纹理的任何位置,并且提升了GPU硬件的替换性能。正确的实现了针对多个OpenGL API(glTexSubImage*D、glCopyTexSubImage*D、glCompressedTexSubImage*D)的子纹理替换功能。
Description
技术领域
本发明属于计算机图形学技术领域,涉及一种GPU子纹理替换存储方法。
背景技术
在图形处理器芯片(下简称GPU)设计中,必须支持OpenGL API定义的子纹理替换功能函数,其中包括glTexSubImage1D、glTexSubImage2D、glTexSubImage3D函数,将主机的数据替换指定纹理的全部或一部分,并且指定了纹理的替换位置;glCopyTexSubImage1D、glCopyTexSubImage2D、glCopyTexSubImage3D函数,从帧缓冲区指定位置拷贝数据并加载到指定纹理的替换位置;glCompressedTexSubImage1D、glCompressedTexSubImage2D、glCompressedTexSubImage3D,将主机中的压缩子纹理加载到指定压缩纹理解压后的原始图像的替换位置。GPU硬件在实现上述功能时,如何提升替换性能,并且支持多种纹理内部格式,是亟需解决的问题。
发明内容
本发明目的是提供一种GPU子纹理替换存储方法,采用以tile为单位进行读写存储,支持压缩和非压缩纹理内部格式,提升GPU子纹理替换性能。
本发明的技术解决方案是:
提供了一种GPU子纹理替换存储方法,所述方法包括如下步骤:
1)获取数据并划分tile行;
2)每个tile行在y方向的tile标记;
3)每个tile在x方向的tile标记;
4)根据tile标记读取原始数据;
5)tile的逐像素替换以及tile替换;
其中,tile表示4x4像素块,最左下角像素的x,y坐标均为4的整数倍,
tile行表示4个像素行,起始像素行的y坐标是4的整数倍,
tile标记表示是否替换原始纹理的完整tile。
进一步的,所述1)包括如下步骤:
1.1) 获取数据:
获取一行新的纹理数据每个位置都设置掩码为1并存储到临时缓冲区;
1.2) 划分tile行:
计算替换纹理的每行数据位于原始纹理的替换位置坐标(x,y),根据替换位置y坐标或者当前行是否为替换纹理的最后一行,判断一个tile行的划分完成。
进一步的,所述2)包括:
若总共获取的行数小于4行,或者当前行为替换纹理的最后一行并且并非位于tile的边界,将y方向的tile标记为true;
否则y方向的tile标记为false。
进一步的,所述3)包括:
若当前tile是tile行的第一个tile并且第一个像素位置非tile的开始,或者当前tile是tile行的最后一个tile并且最后一个像素位置非tile的边界,将x方向的tile标记为true;
否则x方向的tile标记为false。
进一步的,所述4)包括:
4.1) tile标记判断:
如果每个tile行在y方向的tile标记或者每个tile在x方向的tile标记有一个为true时,表示当前tile占用原始纹理的部分数据,因此需要读取原始纹理位置对应的tile数据;
4.2)纹理内部格式判断:
当纹理内部格式为压缩格式时,需要再进行解压缩处理。
进一步的,所述5)包括:
5.1) tile的逐像素替换:
依次判断tile中每个像素的掩码,当掩码为1时,进行像素数据替换;
掩码为0时,用步骤4)读取的原始tile的对应数据;
5.2) tile替换:
首先判断纹理内部格式,当为压缩格式时,需要将tile进行压缩处理;
然后将整个tile写入到原始纹理的替换位置;
当一个tile完成替换后,进行步骤3)处理下一个tile;
当一个tile行完成替换后,进行步骤1)划分下一个tile行;
当所有tile行处理完成,即子纹理替换存储完成。
本发明的有益效果:
本发明解决了GPU子纹理替换问题,支持来源于主机或显存的内部格式为压缩或非压缩的子纹理,支持替换原始纹理的任何位置,并且提升了GPU硬件的替换性能。正确的实现了针对多个OpenGL API(glTexSubImage*D、glCopyTexSubImage*D、glCompressedTexSubImage*D)的子纹理替换功能。
附图说明
图1为本发明的算法流程图;
具体实施方式
下面结合附图和具体实施例,对本发明的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其他实施例,都属于本发明的保护范围。
本发明提供了一种GPU子纹理替换存储方法,该方法包括如下步骤:
1)获取数据并划分tile行:
1.1) 获取数据:
获取一行新的纹理数据每个位置都设置掩码为1并存储到临时缓冲区;
1.2) 划分tile行:
计算替换纹理的每行数据位于原始纹理的替换位置坐标(x,y),根据替换位置y坐标或者当前行是否为替换纹理的最后一行,判断一个tile行的划分完成;
2)每个tile行在y方向的tile标记:
若总共获取的行数小于4行,或者当前行为替换纹理的最后一行并且并非位于tile的边界,将y方向的tile标记为true;
否则y方向的tile标记为false;
3)每个tile在x方向的tile标记:
若当前tile是tile行的第一个tile并且第一个像素位置非tile的开始,或者当前tile是tile行的最后一个tile并且最后一个像素位置非tile的边界,将x方向的tile标记为true;
否则x方向的tile标记为false;
4)根据tile标记读取原始数据:
4.1) tile标记判断:
如果每个tile行在y方向的tile标记或者每个tile在x方向的tile标记有一个为true时,表示当前tile占用原始纹理的部分数据,因此需要读取原始纹理位置对应的tile数据;
4.2)纹理内部格式判断:
当纹理内部格式为压缩格式时,需要再进行解压缩处理;
5)tile的逐像素替换以及tile替换:
5.1) tile的逐像素替换:
依次判断tile中每个像素的掩码,当掩码为1时,进行像素数据替换;
掩码为0时,用步骤4)读取的原始tile的对应数据;
5.2) tile替换:
首先判断纹理内部格式,当为压缩格式时,需要将tile进行压缩处理;
然后将整个tile写入到原始纹理的替换位置;
当一个tile完成替换后,进行步骤3)处理下一个tile;
当一个tile行完成替换后,进行步骤1)划分下一个tile行;
当所有tile行处理完成,即子纹理替换存储完成;
其中,tile表示4x4像素块,最左下角像素的x,y坐标均为4的整数倍,
tile行表示4个像素行,起始像素行的y坐标是4的整数倍,
tile标记表示是否替换原始纹理的完整tile。
实施例:
下面结合附图对本发明做进一步详细描述,请参阅图1。
一种GPU子纹理替换存储方法,包括以下步骤:
步骤1、获取数据并划分tile行,首先获取一行新的纹理数据每个位置都设置掩码为1并存储到临时缓冲区;
再计算替换纹理的每行数据位于原始纹理的替换位置坐标(x,y),根据替换位置y坐标或者当前行是否为替换纹理的最后一行,判断一个tile行的划分完成;如果划分完成,进入到步骤2,否则重新进入到步骤1。
步骤2、每个tile行在y方向的tile标记,如果总共获取的行数是否小于4行,或者当前行为替换纹理的最后一行并且并非位于tile的边界,进行y方向的tile标记为true;否则y方向的tile标记为false。
步骤3、每个tile在x方向的tile标记,如果当前tile是tile行的第一个tile并且第一个像素位置非tile的开始,或者当前tile是tile行的最后一个tile并且最后一个像素位置非tile的边界,进行x方向的tile标记为true;否则x方向的tile标记为false。
步骤4、根据tile标记读取原始数据,如果每个tile行在y方向的tile标记或者每个tile在x方向的tile标记有一个为true时,表示当前tile占用原始纹理的部分数据,因此需要读取原始纹理位置对应的tile数据;
如果纹理内部格式为压缩格式时,需要再进行解压缩处理。
步骤5、tile的逐像素替换以及tile替换,首先依次判断tile中每个像素的掩码,当掩码为为1时,进行像素数据替换;掩码为0时,用步骤4读取的原始tile的对应数据。再判断纹理内部格式,当为压缩格式时,需要将tile进行压缩处理。然后将整个tile写入到原始纹理的替换位置;
当一个tile完成替换后,进行步骤3处理下一个tile;
当一个tile行完成替换后,进行步骤1划分下一个tile行;
当所有tile行处理完成,即子纹理替换存储完成。
Claims (2)
1.一种GPU子纹理替换存储方法,其特征在于:所述方法包括如下步骤:
1)获取数据并划分tile行;
2)每个tile行在y方向的tile标记;
3)每个tile在x方向的tile标记;
4)根据tile标记读取原始数据;
5)tile的逐像素替换以及tile替换;
其中,tile表示4x4像素块,最左下角像素的x,y坐标均为4的整数倍,
tile行表示4个像素行,起始像素行的y坐标是4的整数倍,
tile标记表示是否替换原始纹理的完整tile,
所述2)包括:
若总共获取的行数小于4行,或者当前行为替换纹理的最后一行并且并非位于tile的边界,将y方向的tile标记为true;
否则y方向的tile标记为false,
所述3)包括:
若当前tile是tile行的第一个tile并且第一个像素位置非tile的开始,或者当前tile是tile行的最后一个tile并且最后一个像素位置非tile的边界,将x方向的tile标记为true;
否则x方向的tile标记为false,
所述4)包括:
4.1) tile标记判断:
如果每个tile行在y方向的tile标记或者每个tile在x方向的tile标记有一个为true时,表示当前tile占用原始纹理的部分数据,因此需要读取原始纹理位置对应的tile数据;
4.2)纹理内部格式判断:
当纹理内部格式为压缩格式时,需要再进行解压缩处理,
所述5)包括:
5.1) tile的逐像素替换:
依次判断tile中每个像素的掩码,当掩码为1时,进行像素数据替换;
掩码为0时,用步骤4)读取的原始tile的对应数据;
5.2) tile替换:
首先判断纹理内部格式,当为压缩格式时,需要将tile进行压缩处理;
然后将整个tile写入到原始纹理的替换位置;
当一个tile完成替换后,进行步骤3)处理下一个tile;
当一个tile行完成替换后,进行步骤1)划分下一个tile行;
当所有tile行处理完成,即子纹理替换存储完成。
2.根据权利要求1所述的GPU子纹理替换存储方法,其特征在于:所述1)包括如下步骤:
1.1) 获取数据:
获取一行新的纹理数据每个位置都设置掩码为1并存储到临时缓冲区;
1.2) 划分tile行:
计算替换纹理的每行数据位于原始纹理的替换位置坐标(x,y),根据替换位置y坐标或者当前行是否为替换纹理的最后一行,判断一个tile行的划分完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911125559.6A CN111028127B (zh) | 2019-11-18 | 2019-11-18 | 一种gpu子纹理替换存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911125559.6A CN111028127B (zh) | 2019-11-18 | 2019-11-18 | 一种gpu子纹理替换存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111028127A CN111028127A (zh) | 2020-04-17 |
CN111028127B true CN111028127B (zh) | 2023-06-13 |
Family
ID=70200314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911125559.6A Active CN111028127B (zh) | 2019-11-18 | 2019-11-18 | 一种gpu子纹理替换存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111028127B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6850243B1 (en) * | 2000-12-07 | 2005-02-01 | Nvidia Corporation | System, method and computer program product for texture address operations based on computations involving other textures |
CN101155251A (zh) * | 2006-09-27 | 2008-04-02 | 富士施乐株式会社 | 图像处理装置及方法、图像形成装置和计算机可读介质 |
CN104991827A (zh) * | 2015-06-26 | 2015-10-21 | 季锦诚 | 云游戏中gpu资源共享的方法 |
WO2017045540A1 (zh) * | 2015-09-14 | 2017-03-23 | 阿里巴巴集团控股有限公司 | 用于智能终端的图片处理方法、装置、终端设备及系统 |
CN107886466A (zh) * | 2017-11-24 | 2018-04-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种图形处理器图像处理单元体系结构 |
CN107945239A (zh) * | 2017-11-24 | 2018-04-20 | 中国航空工业集团公司西安航空计算技术研究所 | 一种纹理s3tc压缩解压单元结构 |
CN108022269A (zh) * | 2017-11-24 | 2018-05-11 | 中国航空工业集团公司西安航空计算技术研究所 | 一种GPU压缩纹理存储Cache的建模结构 |
-
2019
- 2019-11-18 CN CN201911125559.6A patent/CN111028127B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6850243B1 (en) * | 2000-12-07 | 2005-02-01 | Nvidia Corporation | System, method and computer program product for texture address operations based on computations involving other textures |
CN101155251A (zh) * | 2006-09-27 | 2008-04-02 | 富士施乐株式会社 | 图像处理装置及方法、图像形成装置和计算机可读介质 |
CN104991827A (zh) * | 2015-06-26 | 2015-10-21 | 季锦诚 | 云游戏中gpu资源共享的方法 |
WO2017045540A1 (zh) * | 2015-09-14 | 2017-03-23 | 阿里巴巴集团控股有限公司 | 用于智能终端的图片处理方法、装置、终端设备及系统 |
CN107886466A (zh) * | 2017-11-24 | 2018-04-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种图形处理器图像处理单元体系结构 |
CN107945239A (zh) * | 2017-11-24 | 2018-04-20 | 中国航空工业集团公司西安航空计算技术研究所 | 一种纹理s3tc压缩解压单元结构 |
CN108022269A (zh) * | 2017-11-24 | 2018-05-11 | 中国航空工业集团公司西安航空计算技术研究所 | 一种GPU压缩纹理存储Cache的建模结构 |
Non-Patent Citations (3)
Title |
---|
郭亚红 ; 胡少军 ; 何东健 ; 耿楠 ; .一种基于OpenGL Performer的实时纹理替换方法.电脑知识与技术(学术交流).2007,(02),546-548. * |
韩孟桥 ; 蒋林 ; 杨博文 ; 山蕊 ; 耿玉荣 ; .移动图形处理器的纹理Cache设计.电子技术应用.2019,(05),17-22. * |
韩立敏 ; 田泽 ; 郑新建 ; 张骏 ; 任向隆 ; .多模式并行处理纹理引擎硬件体系结构设计.无线电工程.2018,(06),457-462. * |
Also Published As
Publication number | Publication date |
---|---|
CN111028127A (zh) | 2020-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9478002B2 (en) | Vertex parameter data compression | |
US8659589B2 (en) | Leveraging graphics processors to optimize rendering 2-D objects | |
CN101802872B (zh) | 深度缓冲器压缩 | |
US20090295816A1 (en) | Video graphics system and method of pixel data compression | |
US9449362B2 (en) | Techniques for reducing accesses for retrieving texture images | |
CN109785417B (zh) | 一种实现OpenGL累积操作的方法及装置 | |
US20210158598A1 (en) | Graphics processing systems | |
CN111062858A (zh) | 高效的提前渲染方法、装置及计算机存储介质 | |
US20060061591A1 (en) | Flexible antialiasing in embedded devices | |
CN109064535B (zh) | Gpu中一种纹理贴图的硬件加速实现方法 | |
US11210821B2 (en) | Graphics processing systems | |
CN110544291A (zh) | 一种图像渲染方法及装置 | |
CN109710227B (zh) | 一种纹理图集调度的方法 | |
CN111028127B (zh) | 一种gpu子纹理替换存储方法 | |
CN110969690A (zh) | 一种基于纹理的顶点动画数据存储方法及其系统 | |
CN116721196B (zh) | 一种压缩纹理的动态转换方法 | |
CN104008565B (zh) | 一种利用cocos2d‑x以及HGE引擎播放Flash位图动画的系统和方法 | |
GB2604266A (en) | Compression techniques for pixel write data | |
CN108492345B (zh) | 一种基于尺度变换的数据块划分方法 | |
CN118043842A (zh) | 一种渲染格式选择方法及其相关设备 | |
CN100483464C (zh) | 私有格式图形文件的实现方法 | |
CN113516738B (zh) | 一种动画处理方法、装置、存储介质及电子设备 | |
CN111028314B (zh) | 一种GPU产生Mipmap多重细节层纹理方法 | |
CN111028126B (zh) | 一种gpu图像处理卷积过滤的实现方法 | |
CN111008515B (zh) | 一种面向gpu硬件子纹理替换存储算法的tlm微结构 |
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 |