CN111028127B - 一种gpu子纹理替换存储方法 - Google Patents

一种gpu子纹理替换存储方法 Download PDF

Info

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
Application number
CN201911125559.6A
Other languages
English (en)
Other versions
CN111028127A (zh
Inventor
陈佳
田泽
赵彬
张亮
任向隆
姜丽云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Aeronautics Computing Technique Research Institute of AVIC
Original Assignee
Xian Aeronautics Computing Technique Research Institute of AVIC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian Aeronautics Computing Technique Research Institute of AVIC filed Critical Xian Aeronautics Computing Technique Research Institute of AVIC
Priority to CN201911125559.6A priority Critical patent/CN111028127B/zh
Publication of CN111028127A publication Critical patent/CN111028127A/zh
Application granted granted Critical
Publication of CN111028127B publication Critical patent/CN111028127B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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子纹理替换存储方法。
背景技术
在图形处理器芯片(下简称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行的划分完成。
CN201911125559.6A 2019-11-18 2019-11-18 一种gpu子纹理替换存储方法 Active CN111028127B (zh)

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)

* Cited by examiner, † Cited by third party
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的建模结构

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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