CN116758175B - 图元块压缩装置、方法、图形处理器及电子设备 - Google Patents
图元块压缩装置、方法、图形处理器及电子设备 Download PDFInfo
- Publication number
- CN116758175B CN116758175B CN202311056236.2A CN202311056236A CN116758175B CN 116758175 B CN116758175 B CN 116758175B CN 202311056236 A CN202311056236 A CN 202311056236A CN 116758175 B CN116758175 B CN 116758175B
- Authority
- CN
- China
- Prior art keywords
- primitive
- primitive block
- compression
- block
- 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
- 238000007906 compression Methods 0.000 title claims abstract description 407
- 230000006835 compression Effects 0.000 title claims abstract description 407
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000013144 data compression Methods 0.000 claims abstract description 47
- 230000000903 blocking effect Effects 0.000 claims description 71
- 238000000638 solvent extraction Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 9
- 238000005457 optimization Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开涉及芯片领域,提出一种图元块压缩装置、方法、图形处理器及电子设备,所述装置包括:图元块生成模块,用于对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略;图元块存储模块,用于存储多个图元块以及压缩策略;图元块压缩模块,用于对多个图元块依次进行压缩,在压缩任意图元块时,从图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩,输出压缩后的图元块到图形处理器外部的缓存模块。本公开实施例的图元块压缩装置,在进行图元块压缩时,向图元块存储模块读取一次即可同时读取到图元块及其压缩策略,节约数据传输带宽,提高数据压缩的效率。
Description
技术领域
本公开涉及芯片领域,尤其涉及一种图元块压缩装置、方法、图形处理器及电子设备。
背景技术
图形处理器(graphics processing unit,GPU)通常具备多种图形处理引擎,其中几何处理引擎用来将输入几何顶点的坐标及拓扑结构等描述进行空间变换,生成一个个图元块,用于后续像素处理。GPU几何处理引擎所实现的功能包括坐标变换、曲面细分、剪裁、视口变换、图元块的生成及输出等。其中,在图元块生成后,为了提升图元块向缓存模块传输的传输性能,往往会在图元块输出前先对图元块进行数据压缩。
现有技术在进行图元块压缩时至少需读取图元块两次,第一次读取时根据读取的图元块确定压缩策略,第二次读取时才根据压缩策略对读取的图元块进行压缩,不仅浪费带宽,还极大降低了数据压缩的效率。
发明内容
有鉴于此,本公开提出了一种图元块压缩装置、方法、图形处理器及电子设备,根据本公开实施例的图元块压缩装置,在对图元数据进行分块的同时进行图元块的压缩策略的探索,由此,在进行图元块压缩时,向图元块存储模块读取一次即可同时读取到图元块及其压缩策略,节约数据传输带宽,提高数据压缩的效率。
根据本公开的一方面,提供了一种图元块压缩装置,所述装置设置在图形处理器中,所述装置包括:图元块生成模块,用于对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略;图元块存储模块,用于存储所述多个图元块以及所述压缩策略;图元块压缩模块,用于对所述多个图元块依次进行压缩,其中,在压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩,输出压缩后的图元块到所述图形处理器外部的缓存模块。
在一种可能的实现方式中,所述图元块生成模块具体用于:对所述图元数据进行分析,判断最近一次分块位置到当前位置之间的图元数据是否达到分块条件;在达到所述分块条件时,根据最近一次分块位置和当前位置之间的图元数据得到一个图元块;将当前位置作为分块位置,重新执行对所述图元数据进行分析及之后的步骤。
在一种可能的实现方式中,所述图元块生成模块包括分析单元,所述分析单元用于:在达到所述分块条件前,分析最近一次分块位置到当前位置之间的图元数据的压缩策略;在达到所述分块条件时,停止压缩策略的分析,将当前得到的压缩策略作为最近一次分块位置到当前位置之间的图元数据对应的图元块的压缩策略。
在一种可能的实现方式中,所述在达到所述分块条件前,分析最近一次分块位置到当前位置之间的图元数据的压缩策略,包括:查找最近一次分块位置到当前位置之间的图元数据的极值,根据所述极值确定最近一次分块位置到当前位置之间的图元数据的压缩策略。
在一种可能的实现方式中,所述图元块包括多个图元,每个图元包括多个顶点,所述存储所述多个图元块以及所述压缩策略,包括:在存储任意图元块时,存储该图元块包括的图元的顶点坐标和该图元块的顶点索引,其中,在该图元块包括的任意顶点坐标未存储过时,存储该顶点坐标,存储的每个顶点坐标对应一个索引值;在该图元块包括的顶点坐标全部存储过时,根据存储的各图元的顶点坐标对应的索引值的组合,得到该图元块的顶点索引。
在一种可能的实现方式中,所述图元块压缩模块包括压缩单元和输出单元,所述压缩单元用于,在所述图元块压缩模块压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,并根据读取的压缩策略对读取的图元块进行压缩,输出压缩后的图元块到所述输出单元;所述输出单元用于,输出压缩后的图元块到所述图形处理器外部的缓存模块。
在一种可能的实现方式中,所述压缩单元包括数据读取子单元、数据压缩子单元、数据拼接子单元,所述数据读取子单元用于,在所述图元块压缩模块压缩任意图元块时,从所述图元块存储模块处读取该图元块包括的图元的顶点坐标、该图元块的顶点索引及该图元块的压缩策略,并输出至所述数据压缩子单元;所述数据压缩子单元用于,根据该图元块的压缩策略对该图元块包括的图元的顶点坐标进行压缩,将压缩结果和该图元块的顶点索引输出至所述数据拼接子单元;所述数据拼接子单元用于,拼接所述压缩结果和该图元块的顶点索引,作为压缩后的图元块输出到所述输出单元。
在一种可能的实现方式中,所述图元块压缩模块包括压缩单元、几何处理单元和输出单元,所述压缩单元用于,在所述图元块压缩模块压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的图元块,得到该图元块包括的各图元的顶点坐标的组合,并分别输出至所述几何处理单元;所述几何处理单元用于,对该图元块包括的各图元的顶点坐标的组合进行几何处理,将几何处理结果输出到所述压缩单元;所述压缩单元还用于,根据所述几何处理结果更新该图元块,并根据该图元块的压缩策略对更新后的图元块进行压缩,输出压缩后的图元块到所述输出单元;所述输出单元用于,输出压缩后的图元块到所述图形处理器外部的缓存模块。
在一种可能的实现方式中,所述压缩单元包括数据读取子单元、顶点坐标缓存子单元、数据压缩子单元、数据拼接子单元,所述数据读取子单元用于,在所述图元块压缩模块压缩任意图元块时,从所述图元块存储模块处读取该图元块包括的图元的顶点坐标、该图元块的顶点索引及该图元块的压缩策略,并输出至所述数据压缩子单元;所述数据读取子单元还用于,将读取的顶点坐标存储至所述顶点坐标缓存子单元;根据读取的顶点索引,从所述顶点坐标缓存子单元处读取各图元的顶点坐标的组合并输出至所述几何处理单元;所述数据压缩子单元用于,根据所述几何处理结果更新该图元块的顶点索引,根据该图元块的压缩策略对该图元块包括的图元的顶点坐标进行压缩,将压缩结果和更新后的顶点索引输出至所述数据拼接子单元;所述数据拼接子单元用于,拼接所述压缩结果和更新后的顶点索引,作为压缩后的图元块输出到所述输出单元。
根据本公开的另一方面,提供了一种图元块压缩方法,所述方法应用于图元块压缩装置,所述装置设置在图形处理器中,所述装置包括图元块生成模块、图元块存储模块、图元块压缩模块,所述方法包括:图元块生成模块对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略;图元块存储模块存储所述多个图元块以及所述压缩策略;图元块压缩模块对所述多个图元块依次进行压缩,其中,在压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩,输出压缩后的图元块到所述图形处理器外部的缓存模块。
在一种可能的实现方式中,所述对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略,包括:对所述图元数据进行分析,判断最近一次分块位置到当前位置之间的图元数据是否达到分块条件;在达到所述分块条件时,根据最近一次分块位置和当前位置之间的图元数据得到一个图元块;将当前位置作为分块位置,重新执行对所述图元数据进行分析及之后的步骤。
在一种可能的实现方式中,所述对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略,还包括:在达到所述分块条件前,分析最近一次分块位置到当前位置之间的图元数据的压缩策略;在达到所述分块条件时,停止压缩策略的分析,将当前得到的压缩策略作为最近一次分块位置到当前位置之间的图元数据对应的图元块的压缩策略。
在一种可能的实现方式中,所述在达到所述分块条件前,分析最近一次分块位置到当前位置之间的图元数据的压缩策略,包括:查找最近一次分块位置到当前位置之间的图元数据的极值,根据所述极值确定最近一次分块位置到当前位置之间的图元数据的压缩策略。
在一种可能的实现方式中,所述图元块包括多个图元,每个图元包括多个顶点,所述存储所述多个图元块以及所述压缩策略,包括:在存储任意图元块时,存储该图元块包括的图元的顶点坐标和该图元块的顶点索引,其中,在该图元块包括的任意顶点坐标未存储过时,存储该顶点坐标,存储的每个顶点坐标对应一个索引值;在该图元块包括的顶点坐标全部存储过时,根据存储的各图元的顶点坐标对应的索引值的组合,得到该图元块的顶点索引。
在一种可能的实现方式中,所述图元块压缩模块包括压缩单元和输出单元,所述从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩,输出压缩后的图元块到所述图形处理器外部的缓存模块,包括:在所述图元块压缩模块压缩任意图元块时,所述压缩单元从所述图元块存储模块读取该图元块及该图元块的压缩策略,并根据读取的压缩策略对读取的图元块进行压缩,输出压缩后的图元块到所述输出单元;所述输出单元输出压缩后的图元块到所述图形处理器外部的缓存模块。
在一种可能的实现方式中,所述压缩单元包括数据读取子单元、数据压缩子单元、数据拼接子单元,所述从所述图元块存储模块读取该图元块及该图元块的压缩策略,并根据读取的压缩策略对读取的图元块进行压缩,输出压缩后的图元块到所述输出单元,包括:所述数据读取子单元从所述图元块存储模块处读取该图元块包括的图元的顶点坐标、该图元块的顶点索引及该图元块的压缩策略,并输出至所述数据压缩子单元;所述数据压缩子单元根据该图元块的压缩策略对该图元块包括的图元的顶点坐标进行压缩,将压缩结果和该图元块的顶点索引输出至所述数据拼接子单元;所述数据拼接子单元拼接所述压缩结果和该图元块的顶点索引,作为压缩后的图元块输出到所述输出单元。
在一种可能的实现方式中,所述图元块压缩模块包括压缩单元、几何处理单元和输出单元,所述在压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩,输出压缩后的图元块到所述图形处理器外部的缓存模块,包括:
所述压缩单元在所述图元块压缩模块压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的图元块,得到该图元块包括的各图元的顶点坐标的组合,并分别输出至所述几何处理单元;所述几何处理单元对该图元块包括的各图元的顶点坐标的组合进行几何处理,将几何处理结果输出到所述压缩单元;所述压缩单元根据所述几何处理结果更新该图元块,并根据该图元块的压缩策略对更新后的图元块进行压缩,输出压缩后的图元块到所述输出单元;所述输出单元输出压缩后的图元块到所述图形处理器外部的缓存模块。
在一种可能的实现方式中,所述压缩单元包括数据读取子单元、顶点坐标缓存子单元、数据压缩子单元、数据拼接子单元,所述从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的图元块,得到该图元块包括的各图元的顶点坐标的组合,并分别输出至所述几何处理单元,包括:所述数据读取子单元从所述图元块存储模块处读取该图元块包括的图元的顶点坐标、该图元块的顶点索引及该图元块的压缩策略,并输出至所述数据压缩子单元;所述数据读取子单元将读取的顶点坐标存储至所述顶点坐标缓存子单元,根据读取的顶点索引,从所述顶点坐标缓存子单元处读取各图元的顶点坐标的组合并输出至所述几何处理单元;所述数据压缩子单元根据所述几何处理结果更新该图元块的顶点索引,根据该图元块的压缩策略对该图元块包括的图元的顶点坐标进行压缩,将压缩结果和更新后的顶点索引输出至所述数据拼接子单元;所述数据拼接子单元拼接所述压缩结果和更新后的顶点索引,作为压缩后的图元块输出到所述输出单元。
根据本公开的另一方面,提供了一种图形处理器,包括以上任一项所述的图元块压缩装置。
根据本公开的另一方面,提供了一种电子设备,包括以上所述的图形处理器。
根据本公开实施例的图元块生成装置,图元块生成模块在完成对图元数据进行处理生成多个图元块的功能之余,还能够分析得到各图元块的压缩策略,并将多个图元块以及压缩策略存储在图元块存储模块,使得图元块压缩模块压缩任意图元块时,可以直接从图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩。对于图元块压缩模块而言,在压缩单个图元块时,只需从图元块存储模块读取图元块一次,而同时读取的压缩策略数据量较小,因此,相比现有技术的方案,本公开实施例的图元块存储模块传输到图元块压缩模块的数据量大大降低,极大地节约了传输带宽。并且由于传输数据量小,使得数据传输效率也提高,因此图元块压缩的整体效率也提高,实现了图元块压缩性能的优化。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出现有技术的图元块压缩方案的示意图。
图2示出根据本公开实施例的图元块压缩装置的结构示意图。
图3示出根据本公开实施例的图元块生成模块的结构的示意图。
图4示出根据本公开实施例的分析单元分析确定压缩策略的方法的示意图。
图5示出根据本公开实施例存储图元块的示例。
图6示出根据本公开实施例的图元块压缩模块的结构的示意图。
图7示出根据本公开实施例的压缩单元的示例性结构示意图。
图8示出根据本公开实施例的图元块压缩模块的结构的示意图。
图9示出根据本公开实施例的压缩单元的示例性结构示意图。
图10示出根据本公开实施例的图元块压缩装置的示例性应用场景。
图11示出根据本公开实施例的图元块压缩方法的流程的示意图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出现有技术的图元块压缩方案的示意图。
传统的数据压缩流程通常分为两个阶段,分析阶段和压缩阶段。其中,分析阶段会先将待压缩的数据完整读取一遍,在读取过程中以预设算法探索数据的压缩策略,如基准值、压缩位宽等。随后,压缩阶段会再次读取待压缩的数据,根据分析阶段得到的压缩策略对数据进行压缩,将压缩后的数据写入到外部缓存。
对于GPU的几何处理引擎来说,其数据压缩的粒度通常是以图元块为单位,数据量可达到千字节(Kbyte)量级,因此无法通过一次数据读取来同时完成分析和压缩两阶段的操作。对此,如图1所示,传统的面向GPU几何处理引擎的图元块压缩装置往往包含分析模块、策略存储模块、压缩模块、输出模块几个部分。几何处理引擎的图元块生成模块接收图元数据并生成图元块数据,图元块数据由图元块存储模块存储。图元块压缩模块中,分析模块用于从图元块存储模块处读取图元块数据并分析得到压缩策略结果、几何处理结果,策略存储模块用于缓存得到的压缩策略结果。压缩模块用于从图元块存储模块处读取图元块数据,从策略存储模块处读取压缩策略结果,从分析模块处读取几何处理结果,根据压缩策略结果和几何处理结果对图元块数据进行压缩。输出模块用于将数据压缩结果向外部的缓存模块(未示出)输出。
综上所述,现有技术在进行图元块压缩时至少需读取图元块两次,第一次读取时根据读取的图元块确定压缩策略结果,第二次读取时才根据压缩策略结果对读取的图元块进行压缩,不仅浪费带宽,还极大降低了数据压缩的效率。
有鉴于此,本公开提出了一种图元块压缩装置、方法、图形处理器及电子设备,根据本公开实施例的图元块压缩装置,在对图元数据进行分块的同时进行图元块的压缩策略的探索,由此,在进行图元块压缩时,向图元块存储模块读取一次即可同时读取到图元块及其压缩策略,节约数据传输带宽,提高数据压缩的效率。
图2示出根据本公开实施例的图元块压缩装置的结构示意图。
如图2所示,在一种可能的实现方式中,所述装置设置在图形处理器中,所述装置包括:
图元块生成模块,用于对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略;
图元块存储模块,用于存储多个图元块以及压缩策略;
图元块压缩模块,用于对多个图元块依次进行压缩,其中,在压缩任意图元块时,从图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩,输出压缩后的图元块到图形处理器外部的缓存模块。
举例来说,图元块压缩装置可以设置在图形处理器中,并服务于GPU几何处理引擎。该装置可包括三个模块:图元块生成模块、图元块存储模块和图元块压缩模块。
其中,图元块生成模块可接收来自上游的其他装置或器件的图元数据,本公开实施例所记载的图元数据指的是尚未分块的完整图元数据。
图元块生成模块,用于对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略。其中,图元数据的接收和处理、压缩策略的分析可以同时进行。也即,在生成某一图元块的同时,也得到该图元块的压缩策略。其示例性实现方式可以参见下文对图元块生成模块的用途的进一步描述。
图元块生成模块每生成一个图元块及该图元块的压缩策略,可存储至图元块存储模块。且图元块及该图元块的压缩策略可以在图元块存储模块中对应存储,使得读取图元块时,可以准确找到该图元块的压缩策略并读取。
图元块压缩模块,用于对多个图元块依次进行压缩,其中,在压缩任意图元块时,从图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩,输出压缩后的图元块到图形处理器外部的缓存模块。可以设置为在对前一图元块进行压缩并输出压缩后的图元块后,再读取下一图元块及下一图元块的压缩策略。
根据本公开实施例的图元块生成装置,图元块生成模块在完成对图元数据进行处理生成多个图元块的功能之余,还能够分析得到各图元块的压缩策略,并将多个图元块以及压缩策略存储在图元块存储模块,使得图元块压缩模块压缩任意图元块时,可以直接从图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩。对于图元块压缩模块而言,在压缩单个图元块时,只需从图元块存储模块读取图元块一次,而同时读取的压缩策略数据量较小,因此,相比现有技术的方案,本公开实施例的图元块存储模块传输到图元块压缩模块的数据量大大降低,极大地节约了传输带宽。并且由于传输数据量小,使得数据传输效率也提高,因此图元块压缩的整体效率也提高,实现了图元块压缩性能的优化。
下面介绍本公开实施例的图元块生成模块对图元数据进行分块的示例性方式。
在一种可能的实现方式中,图元块生成模块具体用于:
对图元数据进行分析,判断最近一次分块位置到当前位置之间的图元数据是否达到分块条件;
在达到分块条件时,根据最近一次分块位置和当前位置之间的图元数据得到一个图元块;
将当前位置作为分块位置,重新执行对图元数据进行分析及之后的步骤。
举例来说,参见上文所述,图元数据的接收和处理可以同时进行。示例性地,图元块生成模块可以对图元数据进行分析,判断最近一次分块位置到当前位置之间的图元数据是否达到分块条件。其中,分块条件可以预先设置,例如设置为数据量大于预设阈值,或者设置为图元数据的形状符合预设形状等等。本公开实施例对于分块条件不作限制。
在达到分块条件时,图元块生成模块可根据最近一次分块位置和当前位置之间的图元数据得到一个图元块。并将当前位置作为分块位置,重新执行对图元数据进行分析及之后的步骤。在此情况下,即可陆续对接收到的图元数据进行处理,得到多个图元块。
本领域技术人员应理解,在图元数据刚开始接收时,可能尚未得到第一个图元块,此时也不存在最近一次分块位置。则图元块生成模块可以对图元数据进行分析,判断图元块的开始位置到当前位置之间的图元数据是否达到分块条件。在达到分块条件时,根据开始位置和当前位置之间的图元数据得到第一个图元块,将当前位置作为分块位置。
通过这种方式,使得图元块生成模块可以生成应用场景所需的图元块。分块条件可以根据用户需求调整,使得图元块的生成方式更灵活。
图3示出根据本公开实施例的图元块生成模块的结构的示意图。
如图3所示,在一种可能的实现方式中,图元块生成模块包括分析单元,分析单元用于:
在达到分块条件前,分析最近一次分块位置到当前位置之间的图元数据的压缩策略;
在达到分块条件时,停止压缩策略的分析,将当前得到的压缩策略作为最近一次分块位置到当前位置之间的图元数据对应的图元块的压缩策略。
举例来说,图元块生成模块中可包括分析单元,用于分析图元块的压缩策略。参见上文所述,图元数据的处理和压缩策略的探索可以同时进行。对此,可以是在达到分块条件前,分析最近一次分块位置到当前位置之间的图元数据的压缩策略。随着最近一次分块位置到当前位置之间的图元数据的增多,压缩策略可能会产生变化。参见上文所述,在达到分块条件时,当前位置即为分块位置,此时图元块的最终大小已确定,因此可停止压缩策略的分析,将当前得到的压缩策略作为最近一次分块位置到当前位置之间的图元数据对应的图元块的压缩策略。
通过这种方式,使得压缩策略可以和图元块同时得到,在压缩图元块时可以直接输出,节约压缩时间。
图4示出根据本公开实施例的分析单元分析确定压缩策略的方法的示意图。
如图4所示,在一种可能的实现方式中,在达到分块条件前,分析最近一次分块位置到当前位置之间的图元数据的压缩策略,包括:
查找最近一次分块位置到当前位置之间的图元数据的极值,根据极值确定最近一次分块位置到当前位置之间的图元数据的压缩策略。
举例来说,图元数据可以包括多个图元,图元块的压缩策略,可以根据图元块中所有的图元的极值确定。从最近一次分块位置开始,在接收第一个图元时,分析模块可以记录该图元的数值;之后接收下一图元时,比较新接收的图元的数值与记录的图元的数值,如果新接收的图元的数值大于已记录的数值,则将记录的数值替换为新接收的图元的数值;如果新接收的图元的数值小于或等于已记录的数值,则记录的数值不变。
在此情况下,记录的数值将成为从最近一次分块位置开始已接收的全部图元的极值。以此类推,将达到分块条件前,接收的每一图元都与记录的数值进行比较,则达到分块条件时,记录的数值即成为最近一次分块位置到当前位置之间的图元数据对应的图元块的极值。
图元块的极值可指示图元块的压缩策略。因此,本公开实施例的图元块存储模块存储压缩策略,可以是存储各图元块的极值。图元块压缩模块读取压缩策略,也可以是读取图元块的极值。在图元块存储模块中,各图元块的极值可以按顺序存储,如图4所示,根据图元块1确定的图元块1的极值的存储位置,可以在图元块0的极值的存储位置之后,以便图元块压缩模块可以准确读取。
通过这种方式,可以准确确定图元块的压缩策略。
本领域技术人员应理解,分析最近一次分块位置到当前位置之间的图元数据的压缩策略还可以采用其他方式,例如,还可以采用现有技术的霍夫曼编码、基于字典的压缩算法、差分编码等方式实现图元数据的压缩策略分析,本公开实施例对此不作限制。
在一种可能的实现方式中,图元块包括多个图元,每个图元包括多个顶点,存储所述多个图元块以及所述压缩策略,包括:
在存储任意图元块时,存储该图元块包括的图元的顶点坐标和该图元块的顶点索引,其中,
在该图元块包括的任意顶点坐标未存储过时,存储该顶点坐标,存储的每个顶点坐标对应一个索引值;
在该图元块包括的顶点坐标全部存储过时,根据存储的各图元的顶点坐标对应的索引值的组合,得到该图元块的顶点索引。
举例来说,图元块包括多个图元,图元可包括顶点,在存储图元块时,主要存储的是图元的顶点坐标。不同图元的顶点坐标可能出现重复,如果直接存储各图元包括的顶点坐标的组合可能会导致存储成本过大,后续进行数据压缩的压缩成本也过大。为降低存储成本和压缩成本,本公开在存储图元块时,可以分别存储该图元块包括的图元的顶点坐标和该图元块的顶点索引。其中,在该图元块包括的任意顶点坐标未存储过时,存储该顶点坐标,存储的每个顶点坐标对应一个索引值;在某个顶点坐标已经存储过时,不再重复存储,从而降低存储成本和压缩成本。在该图元块包括的顶点坐标全部存储过时,根据存储的各图元的顶点坐标对应的索引值的组合,得到该图元块的顶点索引。在此情况下,后续需要还原完整图元块时,根据顶点索引即可在存储的顶点坐标中找到每个图元对应的顶点坐标并还原图元块。
图5示出根据本公开实施例存储图元块的示例。
如图5所示,假设图元块包括图元0、图元1、图元2,其中图元0包括的顶点的坐标分别是(x0,y0,z0)、(x1,y1,z1)、(x0,y0,z0),图元1包括的顶点的坐标分别是(x1,y1,z1)、(x2,y2,z2)、(x0,y0,z0),图元2包括的顶点的坐标分别是(x0,y0,z0)、(x2,y2,z2)、(x2,y2,z2)。
则存储图元块时,针对每个顶点坐标,在顶点坐标未存储过时,存储该顶点坐标。在某个顶点坐标已经存储过时,不再重复存储。则最终被存储的顶点坐标可以有三个,分别是(x0,y0,z0)、(x1,y1,z1)、(x2,y2,z2)。存储的每个顶点坐标对应一个索引值,在图5的示例中,(x0,y0,z0)对应于索引值0,(x1,y1,z1)对应于索引值1,(x2,y2,z2)对应于索引值2。
图元块包括的顶点坐标全部存储过时,根据存储的各图元的顶点坐标对应的索引值的组合,可得到该图元块的顶点索引。例如图元0的顶点坐标对应的索引值的组合可以是(0,1,0),图元1的顶点坐标对应的索引值的组合可以是(1,2,0),图元2的顶点坐标对应的索引值的组合可以是(0,2,2)。
进一步地,图元块的顶点索引还可以包括各图元的标记值,一些场景中可通过标记值记录图元的属性(如形状等),本公开实施例对于顶点索引所包括的具体内容不作限制。
本公开实施例的图元块压缩装置适用于有几何处理需求和无几何处理需求的场景。几何处理(geometry processing),通常包括曲面细分、曲面简化、裁剪等处理方式,作用是改变图元的形状使得模型更加光滑。在有无几何处理需求的不同场景下,图元块压缩模块的结构可不同。
下面介绍无几何处理需求场景下,图元块压缩模块的示例性结构。图6示出根据本公开实施例的图元块压缩模块的结构的示意图。
如图6所示,在一种可能的实现方式中,图元块压缩模块包括压缩单元和输出单元,
压缩单元用于,在图元块压缩模块压缩任意图元块时,从图元块存储模块读取该图元块及该图元块的压缩策略,并根据读取的压缩策略对读取的图元块进行压缩,输出压缩后的图元块到输出单元;
输出单元用于,输出压缩后的图元块到图形处理器外部的缓存模块。
举例来说,在无几何处理需求场景下,本公开实施例的图元块压缩模块可包括压缩单元和输出单元,其中,压缩单元负责读取图元块及图元块的压缩策略,读取的图元块可以是图元块包括的图元的顶点坐标和该图元块的顶点索引。压缩单元根据图元块的压缩策略对图元块进行压缩,这一步主要压缩的是压缩单元读取的顶点坐标。压缩后的图元块输出至输出单元。输出单元用于确定图元块的输出地址,再将图元块与输出地址匹配后输出。确定输出地址的方式可以参见下文及图10的相关描述。
下面介绍无几何处理需求场景下压缩单元的一种示例性结构,以及压缩单元实现图元块压缩的一种示例性方式。
图7示出根据本公开实施例的压缩单元的示例性结构示意图。
如图7所示,在一种可能的实现方式中,压缩单元包括数据读取子单元、数据压缩子单元、数据拼接子单元,
数据读取子单元用于,在图元块压缩模块压缩任意图元块时,从图元块存储模块处读取该图元块包括的图元的顶点坐标、该图元块的顶点索引及该图元块的压缩策略,并输出至数据压缩子单元;
数据压缩子单元用于,根据该图元块的压缩策略对该图元块包括的图元的顶点坐标进行压缩,将压缩结果和该图元块的顶点索引输出至数据拼接子单元;
数据拼接子单元用于,拼接压缩结果和该图元块的顶点索引,作为压缩后的图元块输出到所述输出单元。
首先,在想要压缩某一图元块时,可先由数据读取子单元从图元块存储模块处读取该图元块包括的图元的顶点坐标、该图元块的顶点索引及该图元块的压缩策略。读取的信息可以直接传输至数据压缩子单元,由数据压缩子单元进行压缩。
其中,压缩的对象可以是该图元块包括的图元的顶点坐标,并且是基于读取的压缩策略对读取的顶点坐标进行压缩。该图元块的顶点索引可以不压缩。
由于不需几何处理,因此压缩结果和该图元块的顶点索引可以直接输出至数据拼接子单元,由数据拼接子单元完成拼接后,再作为压缩后的图元块输出到输出单元,由输出单元输出到图形处理器外部的缓存模块。
本领域技术人员应理解,无几何处理需求场景下压缩单元的结构应不止上述示例,例如,无几何处理需求场景下,数据读取子单元、数据压缩子单元、数据拼接子单元中的任意两个也可以集成为一个更大的单元,或者,每个子单元也可以进一步细化为多个单独的部分,或者,某个子单元中的部分功能也可以设置为由其他子单元实现,只要能够实现上文所述压缩单元的功能即可,本公开实施例对无几何处理需求场景下压缩单元的具体结构不作限制。
通过这种方式,使得图元块压缩模块在无几何处理需求的场景下,可以迅速完成图元块的压缩和输出,提高工作效率。
下面介绍有几何处理需求场景下,图元块压缩模块的示例性结构。图8示出根据本公开实施例的图元块压缩模块的结构的示意图。
如图8所示,在一种可能的实现方式中,图元块压缩模块包括压缩单元、几何处理单元和输出单元,
压缩单元用于,在图元块压缩模块压缩任意图元块时,从图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的图元块,得到该图元块包括的各图元的顶点坐标的组合,并分别输出至所述几何处理单元;
几何处理单元用于,对该图元块包括的各图元的顶点坐标的组合进行几何处理,将几何处理结果输出到压缩单元;
压缩单元还用于,根据几何处理结果更新该图元块,并根据该图元块的压缩策略对更新后的图元块进行压缩,输出压缩后的图元块到输出单元;
输出单元用于,输出压缩后的图元块到图形处理器外部的缓存模块。
举例来说,在有几何处理需求场景下,本公开实施例的图元块压缩模块可包括压缩单元、几何处理单元和输出单元,其中,压缩单元负责读取图元块及图元块的压缩策略,读取的图元块可以是图元块包括的图元的顶点坐标和该图元块的顶点索引。压缩单元还负责根据读取的顶点坐标和顶点索引还原出该图元块包括的各图元的顶点坐标的组合,并输出至几何处理单元。几何处理单元负责对每个图元的顶点坐标的组合依次进行几何处理,使用剪裁、曲面细分等等处理方式,确定各图元的几何处理结果,再依次输出到压缩单元。压缩单元还负责根据几何处理结果更新图元块,这一步主要更新的是顶点索引。示例性的更新方式可以参见下文对压缩单元的结构及功能的进一步描述。
压缩单元还根据图元块的压缩策略对更新后的图元块进行压缩,这一步主要压缩的是压缩单元读取的顶点坐标。压缩单元将压缩后的图元块输出至输出单元。输出单元用于确定图元块的输出地址,再将图元块与输出地址匹配后输出。
下面介绍有几何处理需求场景下压缩单元的一种示例性结构,以及压缩单元实现图元块压缩的一种示例性方式。
图9示出根据本公开实施例的压缩单元的示例性结构示意图。
如图9所示,在一种可能的实现方式中,压缩单元包括数据读取子单元、顶点坐标缓存子单元、数据压缩子单元、数据拼接子单元,
数据读取子单元用于,在图元块压缩模块压缩任意图元块时,从图元块存储模块处读取该图元块包括的图元的顶点坐标、该图元块的顶点索引及该图元块的压缩策略,并输出至数据压缩子单元;
数据读取子单元还用于,将读取的顶点坐标存储至顶点坐标缓存子单元,根据读取的顶点索引,从顶点坐标缓存子单元处读取各图元的顶点坐标的组合并输出至几何处理单元;
数据压缩子单元用于,根据几何处理结果更新该图元块的顶点索引,根据该图元块的压缩策略对该图元块包括的图元的顶点坐标进行压缩,将压缩结果和更新后的顶点索引输出至数据拼接子单元;
数据拼接子单元用于,拼接压缩结果和更新后的顶点索引,作为压缩后的图元块输出到输出单元。
首先,在想要压缩某一图元块时,可先由数据读取子单元从图元块存储模块处读取该图元块包括的图元的顶点坐标、该图元块的顶点索引及该图元块的压缩策略。读取的信息可以直接传输至数据压缩子单元,由数据压缩子单元进行压缩。
其中,压缩的对象可以是该图元块包括的图元的顶点坐标,并且是基于读取的压缩策略对读取的顶点坐标进行压缩。压缩结果可以直接输出至数据拼接子单元。该图元块的顶点索引可以不压缩。
几何处理是针对每个图元的顶点坐标分别进行几何处理。因此,数据读取子单元还用于将读取的顶点坐标存储至顶点坐标缓存子单元,根据读取的顶点索引,从顶点坐标缓存子单元处读取各图元的顶点坐标的组合并输出至几何处理单元。例如在读取的顶点坐标和顶点索引如图5所示时,还原出图元0的顶点坐标的组合(x0,y0,z0)、(x1,y1,z1)、(x0,y0,z0),图元1的顶点坐标的组合(x1,y1,z1)、(x2,y2,z2)、(x0,y0,z0),图元2的顶点坐标的组合(x0,y0,z0)、(x2,y2,z2)、(x2,y2,z2)。
几何处理单元针对每个图元的顶点坐标的组合进行几何处理,得到该图元对应的几何处理结果并输出到数据压缩子单元。其中,几何处理结果可以指示图元的每条边是否可见、图元的几何属性,图元是正面还是反面等等。
数据压缩子单元可根据图元的几何处理结果更新该图元块的顶点索引中对应图元的标记值。之后,再将更新后的顶点索引输出至数据拼接子单元。
数据拼接子单元可以将压缩结果和更新后的顶点索引拼接在一起,再作为压缩后的图元块输出到输出单元,再由输出单元输出至图形处理器外部的缓存模块。
本领域技术人员应理解,有几何处理需求场景下压缩单元的结构应不止上述示例,例如,有几何处理需求场景下,数据读取子单元、数据压缩子单元、顶点坐标缓存子单元、数据拼接子单元中的任意两个或三个也可以集成为一个更大的单元,或者,每个子单元也可以进一步细化为多个单独的部分,或者,某个子单元中的部分功能也可以设置为由其他子单元实现,只要能够实现上文所述压缩单元的功能即可,本公开实施例对有几何处理需求场景下压缩单元的具体结构不作限制。
通过这种方式,使得图元块压缩模块输出的数据中包括更详细的信息,且图元块压缩装置的能力更全面。
图10示出根据本公开实施例的图元块压缩装置的示例性应用场景。
如图10所示,本公开实施例的图元块压缩装置可以设置在图形处理器中,图形处理器中还可设置有页表管理装置,用于为图元块压缩装置提供页表地址,作为图元块的输出地址。
图元块压缩装置用于接收图元数据,根据图元数据生成图元块及图元块的压缩策略,并根据压缩策略压缩图元块,根据页表管理装置提供的页表地址,将压缩后的图元块与页表地址匹配后输出。其中。为降低存储成本和压缩成本,还可针对图元的顶点坐标构建顶点索引,顶点索引指示每个图元对应的顶点坐标的索引值组合,使得同一顶点坐标仅压缩一次,顶点坐标的索引可以不压缩。后续解压缩时根据索引值即可找到每个图元对应的顶点坐标并还原图元块。
其中,图元块压缩装置包括几何处理单元时,可以应用于有几何处理需求的场景,也可以应用于无几何处理需求的场景。图元块压缩装置不包括几何处理单元时,可以应用于无几何处理需求的场景。
页表管理装置可以与图形处理器外部的处理器通信,将页表申请信号/关闭信号输出至处理器,由处理器根据页表申请信号/关闭信号完成页表的申请/关闭。
页表管理装置用于为图元块压缩装置提供可用的页表以确定压缩后的图元块的存储位置,在读取到包括初始标识的图元块的参数时开始申请页表,并缓存申请到的页表。在可用的页表数量不足时,页表管理装置可以向处理器发出页表申请信号进行页表申请,并存储新产生的页表,使得可用的页表数目满足需求;在页表不可用时,页表管理装置可向处理器发出页表关闭信号进行页表关闭,并将缓存的不可用的页表出栈。在读取到包括结束标识的图元块的参数时关闭未用的页表,并将缓存的未用的页表出栈。
页表管理装置还负责为图元块分配页表。页表管理装置可以采用现有技术的方法分配页表,此时申请到的相邻页表的页表地址可以是连续的,并且属于缓存模块上的预分配地址段。在一个页表的可用数据量不足以存储整个图元块时,如果该页表不是预分配地址段的最后一个页表,那么可以为该图元块分配该页表和该页表的下一页表用于存储该图元块。如果该页表是预分配地址段的最后一个页表,那么该页表及之后产生所有页表均成为不可用的页表,可以关闭不可用的页表并重新申请页表,同时发出有效的数据阻塞信号给图元块压缩装置,使得图元块压缩装置停止输出压缩后的图元块。在页表重新申请完成、也重新缓存完成后,再发出无效的数据阻塞信号给图元块压缩装置,继续页表的分配以及压缩后的图元块的输出。
页表管理装置也可以设置为在分配页表时,为一个图元块仅分配一个页表,则申请到的相邻页表的页表地址可以不连续,并且不必属于缓存模块上的预分配地址段。在一个页表的可用数据量不足以存储整个图元块时,可以为该图元块分配该页表的下一页表用于存储该图元块。同时该页表成为不可用的页表,可以关闭该页表,重新申请一个页表用于补齐可用的页表总数。在此情况下压缩后的图元块的输出和页表的分配可以流水化进行,不必因数据阻塞信号而停止进行。
本公开实施例的图元块压缩装置,将压缩策略分析步骤提前,与图元块的生成一并进行,有效减少了图元块压缩模块向图元块存储模块的数据读取次数,并可较早得到压缩策略,避免压缩策略的多次迭代。同时压缩策略也在图元块存储模块存储,减少了图元块压缩模块的缓存面积。
图11示出根据本公开实施例的图元块压缩方法的流程的示意图。
如图11所示,在一种可能的实现方式中,本公开提供了一种图元块压缩方法,所述方法应用于图元块压缩装置,所述装置设置在图形处理器中,所述装置包括图元块生成模块、图元块存储模块、图元块压缩模块,所述方法包括步骤S11-步骤S13:
步骤S11,图元块生成模块对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略;
步骤S12,图元块存储模块存储所述多个图元块以及所述压缩策略;
步骤S13,图元块压缩模块对所述多个图元块依次进行压缩,其中,在压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩,输出压缩后的图元块到所述图形处理器外部的缓存模块。
在一种可能的实现方式中,所述对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略,包括:对所述图元数据进行分析,判断最近一次分块位置到当前位置之间的图元数据是否达到分块条件;在达到所述分块条件时,根据最近一次分块位置和当前位置之间的图元数据得到一个图元块;将当前位置作为分块位置,重新执行对所述图元数据进行分析及之后的步骤。
在一种可能的实现方式中,所述对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略,还包括:在达到所述分块条件前,分析最近一次分块位置到当前位置之间的图元数据的压缩策略;在达到所述分块条件时,停止压缩策略的分析,将当前得到的压缩策略作为最近一次分块位置到当前位置之间的图元数据对应的图元块的压缩策略。
在一种可能的实现方式中,所述在达到所述分块条件前,分析最近一次分块位置到当前位置之间的图元数据的压缩策略,包括:查找最近一次分块位置到当前位置之间的图元数据的极值,根据所述极值确定最近一次分块位置到当前位置之间的图元数据的压缩策略。
在一种可能的实现方式中,所述图元块包括多个图元,每个图元包括多个顶点,所述存储所述多个图元块以及所述压缩策略,包括:在存储任意图元块时,存储该图元块包括的图元的顶点坐标和该图元块的顶点索引,其中,在该图元块包括的任意顶点坐标未存储过时,存储该顶点坐标,存储的每个顶点坐标对应一个索引值;在该图元块包括的顶点坐标全部存储过时,根据存储的各图元的顶点坐标对应的索引值的组合,得到该图元块的顶点索引。
在一种可能的实现方式中,所述图元块压缩模块包括压缩单元和输出单元,所述从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩,输出压缩后的图元块到所述图形处理器外部的缓存模块,包括:在所述图元块压缩模块压缩任意图元块时,所述压缩单元从所述图元块存储模块读取该图元块及该图元块的压缩策略,并根据读取的压缩策略对读取的图元块进行压缩,输出压缩后的图元块到所述输出单元;所述输出单元输出压缩后的图元块到所述图形处理器外部的缓存模块。
在一种可能的实现方式中,所述压缩单元包括数据读取子单元、数据压缩子单元、数据拼接子单元,所述从所述图元块存储模块读取该图元块及该图元块的压缩策略,并根据读取的压缩策略对读取的图元块进行压缩,输出压缩后的图元块到所述输出单元,包括:所述数据读取子单元从所述图元块存储模块处读取该图元块包括的图元的顶点坐标、该图元块的顶点索引及该图元块的压缩策略,并输出至所述数据压缩子单元;所述数据压缩子单元根据该图元块的压缩策略对该图元块包括的图元的顶点坐标进行压缩,将压缩结果和该图元块的顶点索引输出至所述数据拼接子单元;所述数据拼接子单元拼接所述压缩结果和该图元块的顶点索引,作为压缩后的图元块输出到所述输出单元。
在一种可能的实现方式中,所述图元块压缩模块包括压缩单元、几何处理单元和输出单元,所述在压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩,输出压缩后的图元块到所述图形处理器外部的缓存模块,包括:所述压缩单元在所述图元块压缩模块压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的图元块,得到该图元块包括的各图元的顶点坐标的组合,并分别输出至所述几何处理单元;所述几何处理单元对该图元块包括的各图元的顶点坐标的组合进行几何处理,将几何处理结果输出到所述压缩单元;所述压缩单元根据所述几何处理结果更新该图元块,并根据该图元块的压缩策略对更新后的图元块进行压缩,输出压缩后的图元块到所述输出单元;所述输出单元输出压缩后的图元块到所述图形处理器外部的缓存模块。
在一种可能的实现方式中,所述压缩单元包括数据读取子单元、顶点坐标缓存子单元、数据压缩子单元、数据拼接子单元,所述从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的图元块,得到该图元块包括的各图元的顶点坐标的组合,并分别输出至所述几何处理单元,包括:所述数据读取子单元从所述图元块存储模块处读取该图元块包括的图元的顶点坐标、该图元块的顶点索引及该图元块的压缩策略,并输出至所述数据压缩子单元;所述数据读取子单元将读取的顶点坐标存储至所述顶点坐标缓存子单元,根据读取的顶点索引,从所述顶点坐标缓存子单元处读取各图元的顶点坐标的组合并输出至所述几何处理单元;所述数据压缩子单元根据所述几何处理结果更新该图元块的顶点索引,根据该图元块的压缩策略对该图元块包括的图元的顶点坐标进行压缩,将压缩结果和更新后的顶点索引输出至所述数据拼接子单元;所述数据拼接子单元拼接所述压缩结果和更新后的顶点索引,作为压缩后的图元块输出到所述输出单元。
在一种可能的实现方式中,本公开提供了一种图形处理器,包括以上所述的图元块压缩装置。
在一种可能的实现方式中,本公开提供了一种电子设备,包括以上所述的图形处理器。
电子设备可以是智能手机、上网本、平板电脑、笔记本电脑、可穿戴电子设备、TV、虚拟现实设备等等,只要电子设备可包括图形处理器即可,本公开实施例对于电子设备的具体类型不作限制。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (11)
1.一种图元块压缩装置,其特征在于,所述装置设置在图形处理器中,所述装置包括:
图元块生成模块,用于对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略;
图元块存储模块,用于存储所述多个图元块以及所述压缩策略;
图元块压缩模块,用于对所述多个图元块依次进行压缩,其中,在压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩,输出压缩后的图元块到所述图形处理器外部的缓存模块;
其中,所述图元块生成模块具体用于:
对所述图元数据进行分析,在达到分块条件时,得到一个图元块;
所述图元块生成模块包括分析单元,所述分析单元用于,在达到所述分块条件前,分析最近一次分块位置到当前位置之间的图元数据的压缩策略;在达到所述分块条件时,停止压缩策略的分析,将当前得到的压缩策略作为最近一次分块位置到当前位置之间的图元数据对应的图元块的压缩策略。
2.根据权利要求1所述的装置,其特征在于,所述图元块生成模块具体用于:
对所述图元数据进行分析,判断最近一次分块位置到当前位置之间的图元数据是否达到所述分块条件;
在达到所述分块条件时,根据最近一次分块位置和当前位置之间的图元数据得到一个图元块;
将当前位置作为分块位置,重新执行对所述图元数据进行分析及之后的步骤。
3.根据权利要求2所述的装置,其特征在于,所述在达到所述分块条件前,分析最近一次分块位置到当前位置之间的图元数据的压缩策略,包括:
查找最近一次分块位置到当前位置之间的图元数据的极值,根据所述极值确定最近一次分块位置到当前位置之间的图元数据的压缩策略。
4.根据权利要求1所述的装置,其特征在于,所述图元块包括多个图元,每个图元包括多个顶点,所述存储所述多个图元块以及所述压缩策略,包括:
在存储任意图元块时,存储该图元块包括的图元的顶点坐标和该图元块的顶点索引,其中,
在该图元块包括的任意顶点坐标未存储过时,存储该顶点坐标,存储的每个顶点坐标对应一个索引值;
在该图元块包括的顶点坐标全部存储过时,根据存储的各图元的顶点坐标对应的索引值的组合,得到该图元块的顶点索引。
5.根据权利要求4所述的装置,其特征在于,所述图元块压缩模块包括压缩单元和输出单元,
所述压缩单元用于,在所述图元块压缩模块压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,并根据读取的压缩策略对读取的图元块进行压缩,输出压缩后的图元块到所述输出单元;
所述输出单元用于,输出压缩后的图元块到所述图形处理器外部的缓存模块。
6.根据权利要求5所述的装置,其特征在于,所述压缩单元包括数据读取子单元、数据压缩子单元、数据拼接子单元,
所述数据读取子单元用于,在所述图元块压缩模块压缩任意图元块时,从所述图元块存储模块处读取该图元块包括的图元的顶点坐标、该图元块的顶点索引及该图元块的压缩策略,并输出至所述数据压缩子单元;
所述数据压缩子单元用于,根据该图元块的压缩策略对该图元块包括的图元的顶点坐标进行压缩,将压缩结果和该图元块的顶点索引输出至所述数据拼接子单元;
所述数据拼接子单元用于,拼接所述压缩结果和该图元块的顶点索引,作为压缩后的图元块输出到所述输出单元。
7.根据权利要求4所述的装置,其特征在于,所述图元块压缩模块包括压缩单元、几何处理单元和输出单元,
所述压缩单元用于,在所述图元块压缩模块压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的图元块,得到该图元块包括的各图元的顶点坐标的组合,并分别输出至所述几何处理单元;
所述几何处理单元用于,对该图元块包括的各图元的顶点坐标的组合进行几何处理,将几何处理结果输出到所述压缩单元;
所述压缩单元还用于,根据所述几何处理结果更新该图元块,并根据该图元块的压缩策略对更新后的图元块进行压缩,输出压缩后的图元块到所述输出单元;
所述输出单元用于,输出压缩后的图元块到所述图形处理器外部的缓存模块。
8.根据权利要求7所述的装置,其特征在于,所述压缩单元包括数据读取子单元、顶点坐标缓存子单元、数据压缩子单元、数据拼接子单元,
所述数据读取子单元用于,在所述图元块压缩模块压缩任意图元块时,从所述图元块存储模块处读取该图元块包括的图元的顶点坐标、该图元块的顶点索引及该图元块的压缩策略,并输出至所述数据压缩子单元;
所述数据读取子单元还用于,将读取的顶点坐标存储至所述顶点坐标缓存子单元,根据读取的顶点索引,从所述顶点坐标缓存子单元处读取各图元的顶点坐标的组合并输出至所述几何处理单元;
所述数据压缩子单元用于,根据所述几何处理结果更新该图元块的顶点索引,根据该图元块的压缩策略对该图元块包括的图元的顶点坐标进行压缩,将压缩结果和更新后的顶点索引输出至所述数据拼接子单元;
所述数据拼接子单元用于,拼接所述压缩结果和更新后的顶点索引,作为压缩后的图元块输出到所述输出单元。
9.一种图元块压缩方法,其特征在于,所述方法应用于图元块压缩装置,所述装置设置在图形处理器中,所述装置包括图元块生成模块、图元块存储模块、图元块压缩模块,所述方法包括:
图元块生成模块对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略;
图元块存储模块存储所述多个图元块以及所述压缩策略;
图元块压缩模块对所述多个图元块依次进行压缩,其中,在压缩任意图元块时,从所述图元块存储模块读取该图元块及该图元块的压缩策略,根据读取的压缩策略对该图元块进行压缩,输出压缩后的图元块到所述图形处理器外部的缓存模块;
其中,所述对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略,包括:对所述图元数据进行分析,在达到分块条件时,得到一个图元块;
所述对图元数据进行处理生成多个图元块,并分析得到各图元块的压缩策略,还包括:在达到所述分块条件前,分析最近一次分块位置到当前位置之间的图元数据的压缩策略;在达到所述分块条件时,停止压缩策略的分析,将当前得到的压缩策略作为最近一次分块位置到当前位置之间的图元数据对应的图元块的压缩策略。
10.一种图形处理器,其特征在于,包括权利要求1-8中任一项所述的图元块压缩装置。
11.一种电子设备,其特征在于,包括权利要求10所述的图形处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311056236.2A CN116758175B (zh) | 2023-08-22 | 2023-08-22 | 图元块压缩装置、方法、图形处理器及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311056236.2A CN116758175B (zh) | 2023-08-22 | 2023-08-22 | 图元块压缩装置、方法、图形处理器及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116758175A CN116758175A (zh) | 2023-09-15 |
CN116758175B true CN116758175B (zh) | 2024-01-26 |
Family
ID=87955607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311056236.2A Active CN116758175B (zh) | 2023-08-22 | 2023-08-22 | 图元块压缩装置、方法、图形处理器及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116758175B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109643443A (zh) * | 2016-09-26 | 2019-04-16 | 英特尔公司 | 图形处理器流水线中的高速缓存和压缩互操作性 |
CN109658492A (zh) * | 2017-10-10 | 2019-04-19 | 畅想科技有限公司 | 用于基于拼贴的渲染系统的几何形状至平铺仲裁器 |
CN110291562A (zh) * | 2017-02-10 | 2019-09-27 | 微软技术许可有限责任公司 | 缓冲器索引格式和压缩 |
CN111489282A (zh) * | 2019-01-29 | 2020-08-04 | 畅想科技有限公司 | 用于存储未变换图元块的存储器 |
CN112862664A (zh) * | 2019-11-27 | 2021-05-28 | Arm有限公司 | 处理图形图元的方法、图形处理系统和存储介质 |
CN113256478A (zh) * | 2020-02-13 | 2021-08-13 | 畅想科技有限公司 | 用于在图形处理系统中存储图元的方法和图元块生成器 |
CN114072777A (zh) * | 2019-07-02 | 2022-02-18 | 微软技术许可有限责任公司 | 基于硬件的存储器压缩 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210149811A1 (en) * | 2019-11-15 | 2021-05-20 | Intel Corporation | Parallel decompression mechanism |
EP4113447A1 (en) * | 2021-06-30 | 2023-01-04 | Imagination Technologies Limited | Graphics processing system and method of rendering |
-
2023
- 2023-08-22 CN CN202311056236.2A patent/CN116758175B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109643443A (zh) * | 2016-09-26 | 2019-04-16 | 英特尔公司 | 图形处理器流水线中的高速缓存和压缩互操作性 |
CN110291562A (zh) * | 2017-02-10 | 2019-09-27 | 微软技术许可有限责任公司 | 缓冲器索引格式和压缩 |
CN109658492A (zh) * | 2017-10-10 | 2019-04-19 | 畅想科技有限公司 | 用于基于拼贴的渲染系统的几何形状至平铺仲裁器 |
CN111489282A (zh) * | 2019-01-29 | 2020-08-04 | 畅想科技有限公司 | 用于存储未变换图元块的存储器 |
CN114072777A (zh) * | 2019-07-02 | 2022-02-18 | 微软技术许可有限责任公司 | 基于硬件的存储器压缩 |
CN112862664A (zh) * | 2019-11-27 | 2021-05-28 | Arm有限公司 | 处理图形图元的方法、图形处理系统和存储介质 |
CN113256478A (zh) * | 2020-02-13 | 2021-08-13 | 畅想科技有限公司 | 用于在图形处理系统中存储图元的方法和图元块生成器 |
Non-Patent Citations (1)
Title |
---|
基于OpenCL的JPEG压缩算法并行化设计与实现;张敏华;张剑贤;裘雪红;周端;;计算机工程与科学(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116758175A (zh) | 2023-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022062537A1 (zh) | 数据压缩方法、装置及计算机可读存储介质 | |
EP2225729B1 (en) | Unified compression/decompression graphics architecture | |
JP3490346B2 (ja) | テクスチャ・データ取り出し方法 | |
KR102381944B1 (ko) | 주파수 압축과 텍스처 파이프라인 | |
US6492991B1 (en) | Method and apparatus for controlling compressed Z information in a video graphics system | |
JP3453088B2 (ja) | 圧縮テクスチャ・データ構造 | |
US7385611B1 (en) | Decompression of block encoded texture data | |
US7898550B2 (en) | System and method for memory bandwidth compressor | |
US7804499B1 (en) | Variable performance rasterization with constant effort | |
US20160124683A1 (en) | In-memory data compression complementary to host data compression | |
CN111597003B (zh) | 一种画面渲染方法、装置、计算机设备和介质 | |
US10824357B2 (en) | Updating data stored in a memory | |
CN104881367A (zh) | 处理分布式缓存组织结构中的已压缩数据 | |
US8254701B1 (en) | Data compression using a geometry shading unit | |
CN111491169A (zh) | 一种数字图像压缩方法、装置、设备、介质 | |
US8295621B1 (en) | Data decompression using a geometry shading unit | |
CN108389153B (zh) | 一种视图加载的方法及终端设备 | |
CN114037795A (zh) | 一种不可见像素的剔除方法、装置及存储介质 | |
CN116758175B (zh) | 图元块压缩装置、方法、图形处理器及电子设备 | |
US11978234B2 (en) | Method and apparatus of data compression | |
CN108234552B (zh) | 一种数据存储方法及装置 | |
CN115495020A (zh) | 文件处理方法、装置、电子设备和可读存储介质 | |
CN111639055B (zh) | 差分包计算方法、装置、设备及存储介质 | |
CN112419463B (zh) | 一种模型数据处理方法、装置、设备及可读存储介质 | |
CN107436848A (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 |