CN109727183B - 一种图形渲染缓冲区压缩表的调度方法及装置 - Google Patents
一种图形渲染缓冲区压缩表的调度方法及装置 Download PDFInfo
- Publication number
- CN109727183B CN109727183B CN201811511168.3A CN201811511168A CN109727183B CN 109727183 B CN109727183 B CN 109727183B CN 201811511168 A CN201811511168 A CN 201811511168A CN 109727183 B CN109727183 B CN 109727183B
- Authority
- CN
- China
- Prior art keywords
- compression
- rendering buffer
- gpu
- buffer
- data
- 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
-
- 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
- Image Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了一种图形渲染缓冲区压缩表的调度方法及装置,当GPU需要使用渲染缓冲区数据时,将预先由CPU维护的第一渲染缓冲区压缩映射表,加载到GPU硬件寄存器中;根据所述GPU的渲染缓冲区的写操作,执行压缩,并更新渲染缓冲区压缩映射表;根据所述GPU的渲染缓冲区的读操作,使用渲染缓冲区压缩映射表数据进行解压缩;当GPU需要切换渲染缓冲区时,更新CPU驱动端维护的第二渲染缓冲区压缩映射表,并将所述第二渲染缓冲区压缩映射表加载到GPU硬件寄存器中,实现了无限个渲染缓冲区数据的压缩解压缩及快速清除功能。
Description
技术领域
本发明涉及计算机硬件技术领域,尤其涉及一种图形渲染缓冲区压缩表的调度方法及装置。
背景技术
现代GPU支持的绘制分辨率非常大,用于保存帧缓冲区压缩格式及清除标记的压缩表相应也非常大,GPU中采用多种压缩算法时,一个颜色分块(Tile)至少需要2bit表示来表示压缩算法1、压缩算法2、非压缩、清除4种状态。一幅3180*2160分辨率的缓冲区需要存储空间为32Kbyte。而GPU芯片内部需要支持的渲染缓冲区的数量是无限的,所以必须将这些RBO对应的压缩表存储在DDR中。
同时在GPU对渲染缓冲区访问时又必须实时的访问这些压缩表以获取压缩模式或更新压缩数据,所以压缩表的调度是GPU多渲染缓冲区支持的一个亟待解决的问题。
发明内容
本发明提供了一种渲染缓冲区压缩表的调度方法及装置,提高了GPU硬件对渲染缓冲区的访问性能。
第一方面,本发明提供了一种图形渲染缓冲区压缩表的调度方法,包括:
当GPU需要使用渲染缓冲区数据时,将预先由CPU维护的第一渲染缓冲区压缩映射表,加载到GPU硬件寄存器中;
根据所述GPU的渲染缓冲区的写操作,执行压缩,并更新渲染缓冲区压缩映射表;
根据所述GPU的渲染缓冲区的读操作,使用渲染缓冲区压缩映射表数据进行解压缩;
当GPU需要切换渲染缓冲区时,更新CPU驱动端维护的第二渲染缓冲区压缩映射表,并将所述第二渲染缓冲区压缩映射表加载到GPU硬件寄存器中。
可选的,所述渲染缓冲区压缩映射表,由CPU通过编号对用户在定义渲染缓冲区时生成的无符号标识符进行管理,将所述无符号标识符映射为渲染缓冲区及渲染缓冲区压缩表存储地址空间。
可选的,所述根据所述GPU的渲染缓冲区的写操作执行压缩,具体包括:
采用DDPCM算法对GPU的片段数据进行压缩,如果DDPCM压缩成功,则按照DDPCM的压缩格式存储;
如果DDPCM压缩不成功,则采用DO算法对GPU的片段数据进行压缩,如果DO压缩成功,则按照DO的压缩格式存储;
如果DDPCM算法和DO算法都压缩不成功,则按照原始未压缩格式存储,并进行渲染缓冲区压缩表的更新。
可选的,所述第一渲染缓冲区压缩映射表和所述第二渲染缓冲区压缩映射表的内容,具体包括:
所述渲染缓冲区中每个Tile数据的压缩格式,所述压缩格式包括四种格式:用于表示缓冲区中数据为原始的未压缩数据的第一格式、用于表示缓冲区数据采用DDPCM压缩格式存放的第二格式,用于表示缓冲区数据采用DO压缩格式存放的第三格式,用于表示缓冲区数据为执行缓冲区清除后的值的第四格式。
第二方面,本发明提供了一种图形渲染缓冲区压缩表的调度装置,所述装置包括加载单元、写操作单元、读操作单元、切换单元,其中:
所述加载单元,用于当GPU需要使用渲染缓冲区数据时,将预先由CPU维护的第一渲染缓冲区压缩映射表,加载到GPU硬件寄存器中;
所述写操作单元,用于根据所述GPU的渲染缓冲区的写操作,执行压缩,并更新渲染缓冲区压缩映射表;
所述读操作单元,用于根据所述GPU的渲染缓冲区的读操作,使用渲染缓冲区压缩映射表数据进行解压缩;
所述切换单元,用于当GPU需要切换渲染缓冲区时,更新CPU驱动端维护的第二渲染缓冲区压缩映射表,并将所述第二渲染缓冲区压缩映射表加载到GPU硬件寄存器中。
发明提供的一种渲染缓冲区压缩表的调度方法及装置,通过使用一组位于图形处理器(GPU)硬件的寄存器和位于主机(CPU)内存的渲染缓冲区压缩映射关系表对系统的渲染缓冲区压缩表进行管理,由CPU上运行的驱动程序负责维护渲染缓冲区压缩映射关系表,并在某个渲染缓冲区被使用时将其加载到GPU硬件。本发明使用一套压缩表实现了无限个渲染缓冲区数据的压缩解压缩及快速清除功能。能够实现动态的渲染缓冲区压缩表的加载和更新,提高了GPU硬件对渲染缓冲区的访问性能。
附图说明
图1是本发明中一种渲染缓冲区压缩标的调度方法的总体框图;
图2是本发明中压缩解压缩单元框图;
图3是本发明中渲染缓冲区压缩表读取解压缩流程图;
图4是本发明中渲染缓冲区压缩表更新流程图。
具体实施方式
下面结合附图和具体实施例,对本发明的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其他实施例,都属于本发明的保护范围。
实施例一
本发明提供了一种图形渲染缓冲区压缩表的调度方法,包括:
步骤101:当GPU需要使用渲染缓冲区数据时,将预先由CPU维护的第一渲染缓冲区压缩映射表,加载到GPU硬件寄存器中;
步骤102:根据所述GPU的渲染缓冲区的写操作,执行压缩,并更新渲染缓冲区压缩映射表;
步骤103:根据所述GPU的渲染缓冲区的读操作,使用渲染缓冲区压缩映射表数据进行解压缩;
步骤104:当GPU需要切换渲染缓冲区时,更新CPU驱动端维护的第二渲染缓冲区压缩映射表,并将所述第二渲染缓冲区压缩映射表加载到GPU硬件寄存器中。
可选的,所述渲染缓冲区压缩映射表,由CPU通过编号对用户在定义渲染缓冲区时生成的无符号标识符进行管理,将所述无符号标识符映射为渲染缓冲区及渲染缓冲区压缩表存储地址空间。
可选的,所述根据所述GPU的渲染缓冲区的写操作执行压缩,具体包括:
采用DDPCM算法对GPU的片段数据进行压缩,如果DDPCM压缩成功,则按照DDPCM的压缩格式存储;
如果DDPCM压缩不成功,则采用DO算法对GPU的片段数据进行压缩,如果DO压缩成功,则按照DO的压缩格式存储;
如果DDPCM算法和DO算法都压缩不成功,则按照原始未压缩格式存储,并进行渲染缓冲区压缩表的更新。
可选的,所述第一渲染缓冲区压缩映射表和所述第二渲染缓冲区压缩映射表的内容,具体包括:
所述渲染缓冲区中每个Tile数据的压缩格式,所述压缩格式包括四种格式:用于表示缓冲区中数据为原始的未压缩数据的第一格式、用于表示缓冲区数据采用DDPCM压缩格式存放的第二格式,用于表示缓冲区数据采用DO压缩格式存放的第三格式,用于表示缓冲区数据为执行缓冲区清除后的值的第四格式。
实施例二
本发明提供了一种图形渲染缓冲区压缩表的调度装置,所述装置包括加载单元、写操作单元、读操作单元、切换单元,其中:
所述加载单元,用于当GPU需要使用渲染缓冲区数据时,将预先由CPU维护的第一渲染缓冲区压缩映射表,加载到GPU硬件寄存器中;
所述写操作单元,用于根据所述GPU的渲染缓冲区的写操作,执行压缩,并更新渲染缓冲区压缩映射表;
所述读操作单元,用于根据所述GPU的渲染缓冲区的读操作,使用渲染缓冲区压缩映射表数据进行解压缩;
所述切换单元,用于当GPU需要切换渲染缓冲区时,更新CPU驱动端维护的第二渲染缓冲区压缩映射表,并将所述第二渲染缓冲区压缩映射表加载到GPU硬件寄存器中。
发明提供的一种渲染缓冲区压缩表的调度方法及装置,通过使用一组位于图形处理器(GPU)硬件的寄存器和位于主机(CPU)内存的渲染缓冲区压缩映射关系表对系统的渲染缓冲区压缩表进行管理,由CPU上运行的驱动程序负责维护渲染缓冲区压缩映射关系表,并在某个渲染缓冲区被使用时将其加载到GPU硬件。本发明使用一套压缩表实现了无限个渲染缓冲区数据的压缩解压缩及快速清除功能。能够实现动态的渲染缓冲区压缩表的加载和更新,提高了GPU硬件对渲染缓冲区的访问性能。
以下通过附图对本发明实施例进行详细说明:
如图1所示,一种渲染缓冲区压缩标的调度方法,包括:主机端维护的缓冲区压缩映射表(1)、渲染缓冲区压缩解压缩单元(2)、和GPU硬件上的渲染缓冲区压缩表。OpenGL在使用API创建渲染缓冲区时主机端申请渲染缓冲区空间的同时建立并维护一个渲染缓冲区压缩表,并统一由缓冲区压缩映射表(1)维护;当OpenGL使用API切换渲染缓冲区时,主机先从GPU硬件中将当前的渲染缓冲区压缩表(3)取回并更新到渲染缓冲区压缩映射表中,然后从渲染缓冲区压缩映射表中调度新的渲染缓冲区压缩表到GPU硬件;渲染缓冲区压缩映射表(3)加载到GPU硬件中之后,解压缩模块(2)利用该表完成数据的读取和解压缩,压缩模块(2)压缩数据时会更新该渲染缓冲区压缩表。
如图2所示,GPU压缩解压缩单元采用DDPCM和DO两种压缩算法,压缩模块接收GPU流水线数据对数据进行压缩后按照压缩解过更新缓冲区压缩表,并将压缩后数据由总线接口单元(BIU)通过AXI总线写入到DDR存储器中。解压缩模块接收GPU流水线的读取数据请求,查找压缩表获取当前数据的压缩模式,并根据压缩模式发起AXI总线的读数据请求,将读回的数据按照压缩表要求格式解压缩并返回给GPU。
如图3所示,GPU加载渲染缓冲区压缩表完成后,GPU硬件流水线发起读渲染缓冲区的操作,首先读取当前渲染缓冲区的压缩表,查找当前访问的Tile数据的压缩格式,如果是原始压缩格式(2’b00),则直接从DDR读取并返回给GPU流水线;如果是DDPCM压缩格式(2’b01),则按照DDPCM格式要求读取DDR数据并将数据解压缩后返回给GPU流水线;如果是DO压缩格式(2’b10),则按照DO格式要求读取DDR数据并将数据解压缩后返回给GPU流水线;如果是快速清除格式(2’b11),则读取Default寄存器的值并组装返回给GPU流水线。
如图4所示,GPU加载渲染缓冲区压缩表完成后,GPU硬件流水线发起写渲染缓冲区的操作,数据先使用DDPCM进行压缩,如果压缩成功则向压缩表写入该Tile的压缩标记2’b01,并将数据按照DDPCM格式存储到DDR中;否则使用DO进行压缩,如果压缩成功则向压缩表写入该Tile的压缩标记2’b10,并将数据按照DO格式存储到DDR中;如果DDPCM和DO压缩都失败,则设置该Tile标记为原始数据格式(2’b00),并将数据存储到DDR中。
最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (4)
1.一种图形渲染缓冲区压缩表的调度方法,其特征在于:
当GPU需要使用渲染缓冲区数据时,将预先由CPU维护的第一渲染缓冲区压缩映射表,加载到GPU硬件寄存器中;
根据所述GPU的渲染缓冲区的写操作,执行压缩,并更新渲染缓冲区压缩映射表;
根据所述GPU的渲染缓冲区的读操作,使用渲染缓冲区压缩映射表数据进行解压缩;
当GPU需要切换渲染缓冲区时,更新CPU驱动端维护的第二渲染缓冲区压缩映射表,并将所述第二渲染缓冲区压缩映射表加载到GPU硬件寄存器中;
所述根据所述GPU的渲染缓冲区的写操作执行压缩,具体包括:
采用DDPCM算法对GPU的片段数据进行压缩,如果DDPCM压缩成功,则按照DDPCM的压缩格式存储;
如果DDPCM压缩不成功,则采用DO算法对GPU的片段数据进行压缩,如果DO压缩成功,则按照DO的压缩格式存储;
如果DDPCM算法和DO算法都压缩不成功,则按照原始未压缩格式存储,并进行渲染缓冲区压缩表的更新。
2.根据权利要求1所述的调度方法,其特征在于:所述渲染缓冲区压缩映射表,由CPU通过编号对用户在定义渲染缓冲区时生成的无符号标识符进行管理,将所述无符号标识符映射为渲染缓冲区及渲染缓冲区压缩表存储地址空间。
3.根据权利要求1所述的调度方法,其特征在于:所述第一渲染缓冲区压缩映射表和所述第二渲染缓冲区压缩映射表的内容,具体包括:
所述渲染缓冲区中每个Tile数据的压缩格式,所述压缩格式包括四种格式:用于表示缓冲区中数据为原始的未压缩数据的第一格式、用于表示缓冲区数据采用DDPCM压缩格式存放的第二格式,用于表示缓冲区数据采用DO压缩格式存放的第三格式,用于表示缓冲区数据为执行缓冲区清除后的值的第四格式。
4.一种图形渲染缓冲区压缩表的调度装置,其特征在于:所述装置包括加载单元、写操作单元、读操作单元、切换单元,其中:
所述加载单元,用于当GPU需要使用渲染缓冲区数据时,将预先由CPU维护的第一渲染缓冲区压缩映射表,加载到GPU硬件寄存器中;
所述写操作单元,用于根据所述GPU的渲染缓冲区的写操作,执行压缩,并更新渲染缓冲区压缩映射表;具体包括:采用DDPCM算法对GPU的片段数据进行压缩,如果DDPCM压缩成功,则按照DDPCM的压缩格式存储;如果DDPCM压缩不成功,则采用DO算法对GPU的片段数据进行压缩,如果DO压缩成功,则按照DO的压缩格式存储;如果DDPCM算法和DO算法都压缩不成功,则按照原始未压缩格式存储,并进行渲染缓冲区压缩表的更新;
所述读操作单元,用于根据所述GPU的渲染缓冲区的读操作,使用渲染缓冲区压缩映射表数据进行解压缩;
所述切换单元,用于当GPU需要切换渲染缓冲区时,更新CPU驱动端维护的第二渲染缓冲区压缩映射表,并将所述第二渲染缓冲区压缩映射表加载到GPU硬件寄存器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811511168.3A CN109727183B (zh) | 2018-12-11 | 2018-12-11 | 一种图形渲染缓冲区压缩表的调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811511168.3A CN109727183B (zh) | 2018-12-11 | 2018-12-11 | 一种图形渲染缓冲区压缩表的调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109727183A CN109727183A (zh) | 2019-05-07 |
CN109727183B true CN109727183B (zh) | 2023-06-23 |
Family
ID=66295238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811511168.3A Active CN109727183B (zh) | 2018-12-11 | 2018-12-11 | 一种图形渲染缓冲区压缩表的调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109727183B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111882480B (zh) * | 2020-07-10 | 2024-07-19 | 长沙景嘉微电子股份有限公司 | 分块数据处理方法、装置、系统及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3319432B2 (ja) * | 1999-05-07 | 2002-09-03 | 日本電気株式会社 | 図形処理システムとグラフィックアクセラレータ(ga)間におけるテクスチャデータ管理方式 |
US6952217B1 (en) * | 2003-07-24 | 2005-10-04 | Nvidia Corporation | Graphics processing unit self-programming |
US7460032B2 (en) * | 2005-10-27 | 2008-12-02 | Evault, Inc. | Methods and apparatus for performing adaptive compression |
CN101356510B (zh) * | 2005-11-15 | 2013-04-03 | 太阳微系统有限公司 | 当处理器处于低功率状态时可为后台dma装置提供数据的小型高功效高速缓冲存储器 |
US7516274B2 (en) * | 2005-11-15 | 2009-04-07 | Sun Microsystems, Inc. | Power conservation via DRAM access reduction |
US8441491B2 (en) * | 2008-07-18 | 2013-05-14 | Autodesk, Inc. | Method for performing undo and redo operations on a graphics processing unit |
US10699361B2 (en) * | 2012-11-21 | 2020-06-30 | Ati Technologies Ulc | Method and apparatus for enhanced processing of three dimensional (3D) graphics data |
US20160293134A1 (en) * | 2013-12-26 | 2016-10-06 | Square Enix Holdings Co., Ltd. | Rendering system, control method and storage medium |
US9600317B2 (en) * | 2014-04-16 | 2017-03-21 | Vmware, Inc. | Page compressibility checker |
CN106651971B (zh) * | 2015-11-04 | 2020-06-05 | 上海兆芯集成电路有限公司 | 图形数据压缩装置与图形数据压缩方法 |
-
2018
- 2018-12-11 CN CN201811511168.3A patent/CN109727183B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109727183A (zh) | 2019-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170177497A1 (en) | Compressed caching of a logical-to-physical address table for nand-type flash memory | |
US6658549B2 (en) | Method and system allowing a single entity to manage memory comprising compressed and uncompressed data | |
CN107250991B (zh) | 透明硬件辅助存储器解压缩 | |
US6879266B1 (en) | Memory module including scalable embedded parallel data compression and decompression engines | |
US6944740B2 (en) | Method for performing compressed I/O with memory expansion technology | |
US6208273B1 (en) | System and method for performing scalable embedded parallel data compression | |
US6349372B1 (en) | Virtual uncompressed cache for compressed main memory | |
US6332172B1 (en) | Method and system for virtual memory compression in an embedded system | |
JP6768928B2 (ja) | アドレスを圧縮するための方法及び装置 | |
US20090327621A1 (en) | Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager | |
CN101346883A (zh) | 用于块模式访问存储的数据压缩的方法和系统 | |
US6195107B1 (en) | Method and system for utilizing virtual memory in an embedded system | |
CN105393228B (zh) | 读写闪存中数据的方法、装置及用户设备 | |
KR102287677B1 (ko) | 데이터 액세스 방법, 장치, 기기 및 저장 매체 | |
JP2002140227A (ja) | メモリ圧縮管理デバイス | |
CN107548491B (zh) | 用于管理存储器的设备和方法以及存储介质 | |
KR20070086846A (ko) | 동적 코드 갱신을 지원하기 위한 페이징 사용 | |
US8300704B2 (en) | Picture processing via a shared decoded picture pool | |
CN103229150B (zh) | 数据控制方法及系统 | |
CN109727183B (zh) | 一种图形渲染缓冲区压缩表的调度方法及装置 | |
US9471246B2 (en) | Data sharing using difference-on-write | |
US20180246657A1 (en) | Data compression with inline compression metadata | |
US20030097523A1 (en) | External storage device within a computer network | |
US9471584B2 (en) | Demand paging method for mobile terminal, controller and mobile terminal | |
CN111639055B (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 |