CN107273301A - 数据处理系统 - Google Patents
数据处理系统 Download PDFInfo
- Publication number
- CN107273301A CN107273301A CN201710205035.2A CN201710205035A CN107273301A CN 107273301 A CN107273301 A CN 107273301A CN 201710205035 A CN201710205035 A CN 201710205035A CN 107273301 A CN107273301 A CN 107273301A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- piece
- array
- value
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/08—Bandwidth reduction
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/122—Tiling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Generation (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
数据处理系统。要存储的数据阵列(20)首先被分割成多个块(21)。各个块(21)被进一步再分成子块集合(22)。存储表示数据阵列的子块的数据(30)以及数据阵列(20)所分割成的各个块(21)的报头数据块(23)。对于各个块(21),确定所述块的所有数据位置是否与相同数据值关联,并且如果是这样,则所述块内的所有数据位置与相同数据值关联的指示以及与所述块中的各个数据位置关联的所述相同数据值的指示被存储在所述数据阵列的该块的报头数据块(23)中。
Description
技术领域
本发明涉及数据处理系统,特别是涉及一种在数据处理系统中将数据存储在存储器中的方法和设备,特别是涉及一种用于在计算机图形处理系统中存储纹理数据和帧缓冲器数据的方法和设备。
背景技术
作为图形处理的一部分,常见的是执行所谓的“纹理映射(texture mapping)”,即,通过将所谓的纹理或纹理数据应用于待渲染的表面来为渲染输出(例如,用于显示的输出帧)的采样位置生成颜色(或其它数据)。例如,可通过将预定义的“纹理”应用于表示对象的图元(primitive)集合来生成对象上的表面细节。这些纹理通常作为存储的纹理元素或“纹素(texels)”阵列提供,各个纹素表示给定纹理数据(例如,颜色、亮度和/或光/影等值),然后纹素被映射至对应元素(例如(实际上,通常是)正在生成的渲染输出的采样位置的集合)上。所存储的纹理元素(数据)的阵列通常被称作“纹理贴图(texture map)”。
使用纹理和纹理映射可提供更高的图像质量,但是有若干缺点。具体地讲,存储纹理数据并且在使用时访问它可对图形处理装置提出例如高的存储和带宽要求(或者相反,在不满足这些要求的情况下导致性能损失)。这对执行图形处理的移动(便携式)装置尤其显著,因为这些装置的例如存储、带宽和功率资源和能力本来就有限。
因此已知的是尝试以“压缩的”形式存储这种纹理数据以尝试减小可能加到装置的例如存储和带宽负担。
存储用于图形处理的纹理数据(无论是否压缩)时的另一考虑在于,图形处理系统通常将需要能够以随机访问方式访问存储的纹理数据(因为预先不知道在任何特定时间将需要纹理贴图的哪一部分或哪些部分)。这对纹理数据的存储给予了另一约束,因为相应可取的是能够以适合于随机访问所存储的数据(并且效率高)的方式存储纹理数据。
申请人之前在其美国专利US 8542939B2、US 9014496B2、US 8990518B2和US9116790中提出了用于在存储器中存储数据(例如,用于图形处理的纹理数据)的改进布置方式。在该布置方式中,这样存储数据阵列(例如,纹理数据阵列):将数据阵列分割成多个块,将数据阵列的各个相应块分割成多个子块,将表示数据阵列的各个相应子块的数据存储在存储器中,并且针对数据阵列所分割成的各个相应块存储报头数据块,所述报头数据块包含涉及和/或用于报头数据块所涉及的数据阵列的块的子块集合的数据。
尽管有申请人早前的美国专利中所描述的改进布置方式,申请人相信用于在存储器中存储数据(例如,用于图形处理的纹理数据)的布置方式仍存在改进空间。
发明内容
根据本发明的第一方面,提供了一种在数据处理系统中存储数据阵列的方法,所述数据阵列包括多个数据位置,其中:
要存储的数据阵列被分割成多个块,各个块包括数据阵列的多个数据位置;
数据阵列的各个相应块被分割成多个子块,各个子块包括数据阵列的多个数据位置;并且
表示数据阵列的子块的数据被存储在存储器中,并且针对数据阵列所分割成的各个相应块存储报头数据块,所述报头数据块包含与数据阵列的报头数据块所涉及的块的子块有关的数据;
所述方法包括以下步骤:
确定数据阵列所分割成的块的所有数据位置是否与相同数据值关联;以及
当确定数据阵列所分割成的块的所有数据位置与相同数据值关联时:
在数据阵列的该块的报头数据块中存储该块的所有数据位置与相同数据值关联的指示以及与该块中的各个数据位置关联的所述相同数据值的指示。
根据本发明的第二方面,提供了一种用于在存储器中存储数据阵列的设备,该设备包括:
处理电路,该处理电路被配置为:
将要存储的数据阵列分割成多个块,各个块包括数据阵列的多个数据位置;
将数据阵列的各个相应块分割成多个子块,各个子块包括数据阵列的多个数据位置;
将表示数据阵列的子块的数据存储在存储器中;并且
针对数据阵列所分割成的各个相应块存储报头数据块,所述报头数据块包含与数据阵列的报头数据块所涉及的块的子块有关的数据;
其中,所述设备还包括处理电路,该处理电路被配置为:
确定数据阵列所分割成的块的所有数据位置是否与相同数据值关联;并且
当确定数据阵列所分割成的块的所有数据位置与相同数据值关联时:
在数据阵列的该块的报头数据块中存储该块的所有数据位置与相同数据值关联的指示以及与该块中的各个数据位置关联的所述相同数据值的指示。
在本发明中,为了存储数据阵列,要存储在存储器中的数据阵列(如上所述,可以是纹理数据阵列或者帧缓冲器数据阵列)被分割成多个块,然后各个块被再分成多个子块。表示子块的数据然后与报头数据块一起被存储在存储器中,所述报头数据块包含报头数据所涉及的块的各个相应子块的数据。
在本发明中,进一步确定数据阵列所分割成的块(因此,该数据块的所有子块)的所有数据位置是否具有相同数据值。在这种情况下,其指示与该块的各个数据位置所关联的所述相同数据值的指示一起被存储在所谈论的数据阵列的块的报头数据块中。
如下面将进一步讨论的,那么这可方便数据阵列中的这些“相同”数据值块的更好压缩,并且相应地,可降低读取并使用所存储的数据阵列时的处理和带宽要求。
具体地讲,例如,本发明针对具有与其各个数据位置关联的相同数据值的数据块的子块可不再需要生成并存储单独的子块数据。相应地,这可不再需要执行如下的两级串行“查找”:首先提取数据阵列的块的报头数据,然后提取数据阵列的块的子块的子块数据。那么这可改进数据阵列的“相同”数据值块的延迟。
另外,如下面将进一步讨论的,申请人已认识到,数据阵列内的这些相同数据值块以本发明的方式来标识并且相应地编码(因此,压缩)可能相对简单,从而允许以压缩形式存储数据阵列(例如,纹理数据阵列)的更高效和有效的方法和设备。
本发明中要存储的数据阵列可以是任何合适的数据阵列。它应该包括多个数据元素(条目),各个数据元素占据阵列中的不同位置。实施方式中的数据阵列表示图像。
在一个优选实施方式中,数据阵列是图形纹理。
然而,本发明不仅仅适用于图形纹理,可同样用于其它形式的数据阵列。例如,申请人相信本发明可同样用于在例如图形处理系统中存储帧缓冲器数据(作为帧缓冲器格式使用)以及随显示控制器一起使用。因此,在实施方式中,数据阵列是要存储在帧缓冲器中(例如用于显示)的数据帧。
在实施方式中,本发明不仅在存储纹理数据时使用,而且在图形处理系统中作为帧缓冲器格式使用。因此,本发明还扩展至将本发明的布置方式不仅用于存储纹理数据而且作为其帧缓冲器格式使用的图形处理系统和图形处理器。
本发明还可用在例如图像信号处理(图像信号处理器)以及视频编码和解码(视频编码器和解码器)中。
要存储的数据阵列(例如,纹理)所分割成的块可采取任何合适和期望的形式。各个块应该包括阵列中的数据元素(位置)的子集,即,对应于阵列的特定区域(例如,面积或体积)。在实施方式中,阵列被分割成不交叠并且大小和形状规则(优选为矩形(包括正方形))的块。在实施方式中块为正方形,但是如果需要可使用其它布置方式。实施方式中的块对应于将用在所谈论的数据处理系统中的块大小。因此,在基于拼块的图形处理系统的情况下,实施方式中的块对应于图形处理系统的渲染处理所操作的拼块(具有与其相同的大小和配置)。
(在基于拼块的渲染中,渲染处理的二维输出阵列(“渲染目标”)(例如并且通常,将被显示以显示正在渲染的场景)被再分割成或者划分成多个较小的区域(通常被称作“拼块”)以用于渲染处理。拼块(子区域)各自被单独地(通常一个接一个)渲染。所渲染的拼块(子区域)然后被重组以提供完整输出阵列(帧)(渲染目标),例如以用于显示。
通常用于“拼贴(tiling)”和“基于拼块的”渲染的其它术语包括“分块”(子区域被称作“区块”)和“桶(bucket)”渲染。为了方便本文中将使用术语“拼块”和“拼贴”,但是应该理解,这些术语旨在涵盖所有另选和等同术语和技术。)
在实施方式中,数据阵列被分割成8×8、16×4或16×16块(即,8×8、16×4或16×16阵列位置(条目)的块)。在实施方式中,使用16×16块。因此,在纹理贴图的情况下,例如,在实施方式中各个块将对应于16×16(或者8×8或16×4)纹素,在用于帧缓冲器的帧的情况下,在实施方式中各个块将对应于帧的16×16(或者8×8或16×4)像素或采样位置。其它布置方式当然也将是可以的。
数据阵列的各个块可被类似地分割成任何合适和期望的子块集合。同样,子块应该包括块所涉及的数据元素(位置)的子集,在实施方式中是非交叠的并且大小和形状规则,优选为矩形(包括正方形),并且在实施方式中为正方形(至少在数据块本身为正方形的情况下)。其它布置方式当然也将是可以的。在实施方式中,各个数据块被分割成4×4数据位置子块。在使用16×16数据块的情况下,各个数据块可相应地被分割成十六个4×4数据位置(数据元素)子块。
表示数据阵列的子块的数据可以是将允许子块的数据位置的数据值被再现的任何合适和期望的数据。
表示所存储的子块的数据可采取任何合适和期望的形式,并且可例如取决于正存储的数据的本质(例如,它是不是纹理、用于帧缓冲器的帧、它是否以及如何被编码、压缩等)。所存储的子块数据应该是(优选是)子块所对应(表示)的数据阵列位置(条目)的一些或所有数据。
表示子块的数据可直接指示子块所对应的数据阵列元素(位置)的数据阵列值,或者可以是可获得这些数据阵列值的数据(即,要用于确定以及允许确定数据阵列元素(位置)的数据阵列值的数据)。后者将是例如所存储的数据阵列在存储之前被编码和/或压缩的情况。因此,在实施方式中,本发明包括对数据阵列中的原始数据条目进行编码(例如,压缩)以生成那些数据条目的数据值的编码(例如,压缩)的表示,然后将数据值的编码(例如,压缩)的表示存储为表示子块的数据。
在纹理的情况下,例如,表示所存储的子块的数据应该是允许确定子块的适当纹理数据(纹素值)的数据。这种纹理数据应该包括例如颜色值的集合(红、绿、蓝(RGB)、颜色和透明度值的集合(红、绿、蓝、α(RGBa))、亮度和色度值的集合、阴影(光)贴图值的集合、法线贴图(凹凸贴图)值的集合、z值(深度值)、模板值、亮度值(亮度纹理)、亮度-α-纹理和/或光泽贴图等。
在要存储在帧缓冲器中的用于显示的帧的情况下,表示所存储的子块的数据应该是允许确定子块的适当像素和/或采样位置数据(值)的数据。这种像素数据可包括例如适当颜色(RGB)值或者亮度和色度值。
表示子块的数据可按照任何合适和期望的方式来存储和提供。优选地,存储表示数据阵列的各个相应子块(可获得数据阵列的各个子块)的数据。
在尤其优选的实施方式中,对于数据阵列的子块,除了报头数据块中所包含的报头数据之外还可(优选)存储子块数据。在这种情况下,对于数据阵列的块(并且例如,多个块),包含涉及所谈论的数据阵列的块的子块的数据的报头数据块将与所谈论的数据阵列的块所分割成的数据阵列的一个或更多个(例如,各个)子块的单独子块数据集合一起存储。
尽管除了数据阵列所分割成的每一个块的报头数据块之外还可存储数据阵列的块的子块的单独子块数据,在尤其优选的实施方式中,(除了数据阵列的块的报头数据之外)数据阵列的块的子块的附加的单独子块数据的存储取决于所谈论的数据阵列的块的内容(具体地讲,数据位置的数据值)和/或基于所谈论的数据阵列的块的内容(具体地讲,数据位置的数据值)来确定。
因此在优选实施方式中,例如并且优选地,对于数据阵列所分割成的给定块表示数据阵列的子块的数据可被(优选选择性地)存储在所谈论的数据阵列的块的报头数据块中(例如,仅在报头数据块中),或者可被存储为单独子块数据,和/或可被存储在报头数据块中并且存储为单独子块数据。
在尤其优选的实施方式中,如果确定块的所有数据位置与相同数据值关联,则对于数据阵列的该块仅存储报头数据(报头数据块),但是如果确定数据阵列的块的数据位置不是全部与相同数据值关联(具有不同的数据值),则存储数据阵列的该块的报头数据块以及所谈论的块的子块的单独子块数据集合。
因此,在尤其优选的实施方式中,本发明包括(并且处理电路被配置为):
当确定数据阵列所分割成的块的所有数据位置不与相同数据值关联时:
存储数据阵列的该块的报头数据块以及数据阵列所涉及的块的子块的单独子块数据集合二者,该报头数据块包含与数据阵列的报头数据块所涉及的块有关的子块的数据;
并且
当确定数据阵列所分割成的块的所有数据位置与相同数据值关联时:
对于数据阵列的该块存储报头数据块,该报头数据块包含块内的所有数据位置与相同数据值关联的指示以及与块中的各个数据位置关联的相同数据值的指示,而无需另外存储数据阵列的块所涉及的子块的任何另外的单独子块数据。
相应地,在本发明的优选实施方式中,将存在数据阵列的一些块仅存储报头数据块,并且数据阵列的其它块存储报头数据块和单独的附加子块数据二者。
在针对数据阵列的块存储单独子块数据(除了报头数据之外)的情况下,则在优选实施方式中,存在针对数据阵列的块所分割成的各个子块存储的单独子块数据集合(即,将存在与各个子块关联的子块数据集合,(例如并且优选地)从所述子块数据集合可获得所谈论的子块的数据值(例如并且优选地)而无需参考任何其它子块的子块数据集合)。
优选地,对于数据阵列的块所分割成的各个子块可存储子单独块数据集合。
在这种布置方式中,对于数据阵列的块所分割成的各个子块可存储(在实施方式中存储)单独子块数据集合。在这种情况下,为所谈论的数据阵列的块存储的子块数据集合的数量将等于数据阵列的块所分割成的子块的数量。
在其它情况下,数据阵列的块所分割成的子块中的多个子块可共享(共享)相同的子块数据集合。在这种情况下,针对所谈论的多个子块优选地存储一个(以及仅一个)子块集合,使得针对所谈论的数据阵列的块存储的子块数据集合的数量将小于数据阵列的块所分割成的子块的数量。在这些布置方式中,可存在由所谈论的数据阵列的块所分割成的所有子块共享(以使用)的一个子块数据集合,或者子块数据集合可由数据块所分割成的一些而非所有子块共享。
在除了报头数据块之外还存储子块数据的情况下,表示(用于)所述子块的附加数据可按照任何期望且合适的方式和布置方式存储在存储器中。
在实施方式中,给定数据块的子块集合(表示数据块的子块集合中的子块的数据)被一个接一个地存储在存储器中的邻接位置处。
类似地,在实施方式中,给定数据阵列的子块集合(即,数据阵列所分割成的各个块的相应子块集合)被一个接一个地一起存储在存储器中。在实施方式中,数据阵列的子块集合被存储在存储器中的为此指派(留出)的主体缓冲区中。
本发明中所存储的报头数据块可根据期望来配置和布置。针对正在存储的数据阵列所分割成的各个块将存在(优选地存在)单独的报头数据块。在优选实施方式中,各个报头数据块为相同的固定(优选地预定的)大小。更优选地,各个报头数据块具有适合于(优选地针对其优化)在所谈论的数据处理系统中提取和缓存的大小。在优选实施方式中,各个报头数据块的大小为16、32或64字节,优选地为16或32字节。
报头数据块可按照任何期望且合适的方式和布置方式存储在存储器中。在实施方式中,数据阵列的所有报头数据块被一起存储在存储器的给定部分中,其可被相应地认为是所存储的数据阵列的“报头缓冲区”。因此,在实施方式中,给定数据阵列的所有报头数据块被存储在该数据阵列的报头缓冲区中。
报头数据块优选地被存储在可预测的存储器地址(位置)处。在实施方式中,它们被存储在可从阵列中的报头数据块所涉及的数据元素和/或数据块的位置预测(确定)的存储器地址(位置)处。因此,在实施方式中,各个报头数据块的存储位置(存储器地址)(例如,在存储器中具有已知位置的报头缓冲区内)取决于数据阵列的报头数据块所涉及的块在数据阵列内的位置。
数据阵列的给定块的报头数据块的内容可取决于(优选地取决于)该块所对应的数据位置的内容(数据值)。
具体地讲,根据本发明,在确定数据阵列的块的所有数据位置具有相同数据值的情况下,则报头数据块将包含该事实以及用于该块的数据位置的所述相同数据值的指示。
块内的所有数据位置与相同数据值关联的指示可采取任何合适和期望的形式,例如(优选地)报头数据块中的合适标志被预定义为指示这种情况。
相应地,与块中的数据位置关联的所述相同数据值的指示可采取任何合适和期望的形式。因此,例如,它可包括指向“相同”数据值所存储的位置的指针。在优选实施方式中,包括在报头数据块中的指示允许直接从报头数据块中的指示确定所述相同数据值。因此,在尤其优选的实施方式中,与块中的各个数据位置关联的相同数据值被存储在报头数据块中。该数据值可按照压缩(编码)形式被存储,或者可按照未压缩的形式被存储。在优选实施方式中(并且在报头数据块的大小允许的情况下),与块中的各个数据位置关联的相同数据值按照未压缩的形式存储在报头数据块中。
报头数据块中所指示的实际数据值可对应于并且应该对应于存储在数据阵列中的所谈论的数据值。因此,如上所述,例如,报头数据块中所指示的数据值可包括颜色值、亮度和色度值等。
在块的数据位置不是全部具有相同数据值的情况下,则这种块的报头数据块优选地包含针对所谈论的数据阵列的块的与所谈论的子块有关的其它数据和信息。
在针对数据阵列所分割成的块存储单独的子块数据的情况下,则在优选实施方式中,数据阵列的该块的报头数据块包含指示数据阵列的报头数据块所涉及的块的子块的数据在存储器中的位置的指针数据(用于其的字段)。这种指针数据可采取任何期望且合适的形式。例如,它可直接指示子块数据的存储器位置(地址),或者间接地指示它(例如,作为相对于某一其它(已知)存储器位置(地址)的偏移)。
这种报头数据块可包括指向其相应各个子块的单独的指针,但是在实施方式中,这种报头数据块包括指向报头所涉及的子块集合在存储器中所存储的基础(例如,起始)位置(基础(例如,起始)地址)的指针数据(用于其的字段),然后从该基础(例如,起始)存储器位置获得各个子块的位置。这可有助于减小报头数据块中需要存储的指针数据的量。在实施方式中,指向报头所涉及的子块集合在存储器中的基础位置的指针数据指示从所谈论的数据阵列的报头缓冲区在存储器中的起点到所谈论的报头所涉及的存储的子块集合在存储器中的起点的偏移(在实施方式中,按字节)。
优选地,这种报头数据块然后还包括指示报头数据块所涉及的存储的子块(所存储的子块的数据)在存储器中的大小(例如,单位为字节)的数据(用于其的字段)。
因此,在实施方式中,这种报头数据块包括指示报头所对应的子块集合的数据的基础(例如,起始)存储器位置的指针数据(用于其的字段),以及指示子块集合中的一些或所有子块(在实施方式中,各个子块)的数据(在存储器中)的大小的数据。
(各个子块应该被相应地存储在存储器中与所指示的在前子块的大小(即,在它之前存储的子块的大小)对应的位置处(相对于所谈论的子块集合的基础存储器位置)。)
在实施方式中,针对报头所涉及的数据块的子块集合中的各个子块存在单独的大小指示(字段)。在这种情况下,报头数据块将包括报头所涉及的数据块的子块集合中的子块那么多的子块大小指示(字段)。
在一个实施方式中,各个报头数据块包含指针数据以及其它有用数据二者。这在报头数据块被配置为与突发大小(例如,64字节)匹配的情况下尤其会是可能的,因为在这种情况下各个报头数据块将可能有容量以包括比仅仅指针数据更多的数据。在实施方式中,任何这种额外的报头数据块数据容量(至少部分地)由其它有用数据填充。例如,这种其它有用数据可包括(在实施方式中,包括)在对报头数据块所涉及的子块进行解码时要共同用于所述子块的数据。它还或替代包括涉及特定子块的数据,但是在实施方式中,这种数据仅被包括在报头数据块中,如果在报头数据块中已包括任何“公共”(共享)数据之后仍存在空间的话。
在实施方式中,可包括在报头数据块中的一个或更多个子块大小值被预定义为(被留出用于)指示特定的特殊情况(例如,特定类型的数据块或者特定类型的子块,而非“真实”子块大小)。在实施方式中,这些特殊情况子块大小值是子块实际上不会以其存储的大小,例如0或1。
在实施方式中,一个大小指示值被预定义为指示“拷贝块”子块,即,该大小指示所涉及的子块是先前子块(数据阵列中紧挨在前的子块)的拷贝(与其相同),即,用于先前子块的相同数据应该用于所谈论的子块。
如果识别并指示这种“拷贝”子块,则针对该“拷贝”子块不存储单独子块数据集合(并且解码器被配置并触发以使用其它子块的数据)。
在报头数据块包括或者可包括指向存储器中数据阵列的子块的数据所存储的位置的指针数据的布置方式中,则在尤其优选的实施方式中,指针数据的特定(优选地选择的)值用于指示(被预定义为指示)报头数据块所涉及的块的所有数据位置与相同数据值关联。
最优选地,在报头数据块具有上述数据结构的情况下,则“拷贝块”子块大小指示也能够被用于指示块内的所有数据位置与相同数据值关联。在这种情况下,在报头数据块的特定(优选地选择的)位置中存在这种“拷贝块”子块大小指示值被定义为指示并且用于指示块内的所有数据位置与相同数据值关联。优选地,报头数据块所涉及的数据块的子块集合中的第一子块的大小指示(字段)用于此目的,即,如果在报头数据块中的该大小指示字段中存在适当预定义的大小指示值,则这被认为是指示块内的所有数据位置与相同数据值关联。
因此,在尤其优选的实施方式中,在报头数据块中的特定(优选选择的,优选预定义的)位置(例如,字段)中存在特定(优选地选择的,优选地预定义的)数据值用于指示块内的所有数据位置与相同数据值关联。相应地,在报头数据块内在数据阵列的块不是其所有数据位置具有相同数据值的情况下可用于(用于)其它目的的报头数据块内的特定位置(例如,字段)中存在特定数据值优选用于指示块内的所有数据位置与相同数据值关联。
因此,在优选实施方式中,各个报头数据块具有预定义的字段以用于存储指针数据,所述指针数据将用于确定在存储器中将用于再现报头数据块所涉及的数据阵列的子块的数据所存储的位置,可包括在报头数据块中的至少一个指针数据值被预定义为指示块内的所有数据位置与相同数据值关联。最优选地,指针数据值只有在出现在报头数据块内的特定指针数据值字段中时才被解释为指示块内的所有数据位置值与相同数据值关联。因此,最优选地,报头数据块内的特定指针数据值字段中的特定指针数据值的组合被预定义为指示块内的所有数据位置与相同数据值关联。
相应地,对于“相同数据值”块,与块中的各个数据位置关联的所述相同数据值的指示也被存储在报头数据块内的特定(优选地选择的)位置中。因此,最优选地,存在将在数据阵列的块的所有数据位置具有相同数据值时使用的预定义结构的报头数据块。
在尤其优选的实施方式中,除了本文所述的“相同数据值”块的特定处置之外,数据阵列和报头数据以及单独的子块数据(如果存在的话)按照申请人的美国专利US68542939B2、US 9014496B2、US 8990518B2和US 9116790B2中所描述的方式被布置和编码。
将理解,为了存储和编码目的,应该针对数据阵列所分割成的多个块(优选地针对各个块)重复(优选地重复)上述处理。相应地,优选地针对要存储(例如,并且优选地,表示要显示的帧序列)的多个数据阵列执行并重复所述处理。
数据阵列的数据可按照任何合适和期望的方式被处理以生成子块和报头数据块的数据。例如,合适的处理器或处理电路可从存储器读取要存储的原始数据阵列,和/或接收与要存储的原始数据阵列对应的数据流,然后相应地处理数据阵列,即,将它分割成块和子块,并且生成所需的报头数据块以及(例如,编码的)子块的数据,然后将所述数据存储在存储器中。
作为以本发明的方式处理数据阵列的一部分,如上所述,将确定数据阵列所分割成的块的所有数据位置是否均与相同数据值关联,然后相应地对数据阵列的块进行编码。
可按照任何合适和期望的方式确定数据阵列所分割成的块是否具有与块的所有数据位置关联的相同数据值。
在一个优选实施方式中,这通过比较所谈论的数据阵列的块的各个数据位置的数据值来进行。在一个优选实施方式中,这通过从存储器读取数据块的数据位置的数据值并且比较它们以查看它们是否全部相同来进行。
相应地,在作为数据流接收到以本发明的方式处理和编码的数据阵列的情况下,可比较数据位置值的序列(例如,随着它们被接收),以查看它们是否全部相同。
在数据阵列中的各个数据位置与多个数据通道(例如,颜色通道)关联的情况下,则只有当对于块的各个数据位置,各个相应数据通道的数据值相同时,数据阵列的块的数据位置才可被认为全部具有相同数据值。另选地,例如在数据阵列的不同数据通道可被单独地编码和/或被单独地编码的情况下,则所述处理可操作在以例如逐数据通道的基础上识别相同数据值块。
在以本发明的方式处理的数据阵列被生成为在数据阵列被写出到存储器之前被存储在缓冲器中的数据阵列的块的情况下(例如,基于拼块图形的处理系统生成数据阵列和/或通过对编码的视频图像数据流进行解码来生成数据阵列时可能就是这种情况),则在尤其优选的实施方式中,块的所有数据位置与相同数据值关联的数据阵列的块的存在基于在数据被写入缓冲器之前处理数据阵列的块和/或将数据阵列的数据写入缓冲器来进行。
因此,在优选实施方式中,本发明在一种基于块的数据处理系统中实现,该系统包括缓冲器,该缓冲器被配置为在数据阵列被写出到存储器之前存储数据阵列的数据位置的块;并且
所述方法包括(并且所述设备被配置为):
处理数据阵列的块以生成数据阵列的数据的块;
将数据阵列的块写入缓冲器;
基于在数据被写入缓冲器之前数据阵列的块的处理和/或所述数据到缓冲器的写入,识别数据阵列的块是否具有与块的各个数据位置关联的相同数据值。
基于例如将数据到缓冲器的写入来识别具有相同数据值的数据位置的块使得可识别数据阵列的这些块,而无需例如针对所谈论的块读取存储在缓冲器(或者存储器)中的所有数据。
在这些实施方式中,相同数据值位置的块的识别可按照任何合适和期望的方式基于在数据阵列被写入缓冲器之前数据阵列的块的处理和/或基于数据阵列数据到缓冲器的写入来识别。
例如,在视频解码器接收编码的视频图像数据流并对其进行解码(然后可在显示之前将其写入存储器)的视频处理系统中,视频解码器(或者关联的处理电路)可操作以识别具有相同数据(例如,颜色)值的数据位置的块。例如,在编码的视频图像数据中(例如,不存在)针对数据位置的块的变换系数(并且例如,没有其它熵源(熵编码的数据))可指示块的各个采样位置具有相同的数据(例如,颜色)值。
因此,在优选实施方式中,本发明的方法和设备用在视频解码器中,该视频解码器被布置为对编码的视频图像数据的块进行解码,并且该视频解码器能够基于在解码的视频图像数据被写入(例如,帧)缓冲器之前对编码的视频图像数据的块的解码来操作,以(例如,并且优选地)基于例如利用没有其它熵源的块的变换系数对编码的视频图像数据的块的解码来识别与相同数据值关联的采样位置的块。
在尤其优选的实施方式中,本发明的方法和设备用在基于拼块的图形处理流水线中,并且操作以基于针对拼块将渲染的片段数据写入拼块缓冲器来识别拼块内的所有数据(即,采样)位置是否均与相同数据值关联(然后相应地对拼块进行编码)。
因此,在优选实施方式中,本发明在基于拼块的图形处理器中实现,基于拼块的图形处理器包括:
拼块缓冲器,其被配置为在渲染的片段数据被写出到存储器之前将采样位置的渲染的片段数据本地存储到图形处理器;
并且所述方法包括(并且所述设备被配置为):
当渲染图形片段以生成渲染的片段数据时,各个图形片段与拼块中要渲染的一个或更多个采样位置的集合关联,并且将拼块中的采样位置的渲染的片段数据写入拼块缓冲器;
基于渲染的片段数据针对拼块到拼块缓冲器写入,识别包括拼块内的多个采样位置的块是否具有与块中的所述多个采样位置中的每一个关联的相同数据值;并且
当识别出拼块内各自与相同数据值关联的采样位置的块时,针对采样位置的块以本发明的方式存储报头数据块。
在这些实施方式中,可按照任何合适和期望的方式基于渲染的片段数据针对拼块到拼块缓冲器的写入来识别相同数据值数据(采样)位置的块。
在一个实施方式中,这基于当拼块被渲染时拼块缓冲器中的采样位置是否被写入来进行。优选地,基于当拼块被渲染时针对块没有将(渲染的片段数据)写入拼块缓冲器中的采样位置来识别相同数据值数据位置块(这样的“干净”采样位置块然后被识别并当作相同数据值数据位置块)。
将理解,在当渲染拼块时还未被写入的采样位置的块被识别为恒定的相同数据值块的这些布置方式中,则与块中的多个采样位置中的每一个关联的相同(恒定)数据值将不是当渲染拼块时被写入到采样位置的块的数据值,而实际上将是要在当渲染拼块时渲染的片段数据实际上没有被写入到采样位置时使用的数据值(例如,“干净”值)。因此,在这些情况下,例如,采样位置块的恒定数据值将是要在采样位置不存在渲染的片段数据时使用的默认或“干净”数据值(例如,在这种情况下应该用于采样位置的默认(例如,背景)数据值(例如,颜色))。例如,要在采样位置不存在渲染的片段数据时使用的默认或“干净”数据值可通过例如每渲染输出(帧)读取一次的单独的渲染输出(例如,帧)描述符来指示。
当渲染拼块时没有渲染的片段数据将被写入或者已被写入到拼块缓冲器中的采样位置的确定可在处理流水线的任何合适和期望的阶段来确定。
在一个实施方式中,在栅格化(rasterise)级处(即,当输入图元被栅格化以生成要处理的图形片段时)例如(并且优选地)通过识别包括拼块内还未通过栅格化级(处理)生成片段(即,不存在至少部分地覆盖采样位置的图元)的多个采样位置的块来识别在渲染拼块时没有渲染的片段数据将被写入到拼块缓冲器的采样位置的块(即,“干净”块)。
在另一实施方式中,在拼块缓冲器写入级处(基于将拼块的渲染的片段数据写入到拼块缓冲器的操作(当数据正被写入到拼块缓冲器(或没有)时)优选地基于拼块缓冲器的写入端口处的写入事务(不存在)来识别“干净”(未写入的)采样位置的块。
根据针对拼块的渲染的片段数据到拼块缓冲器的写入来识别采样位置的“干净”块可按照任何合适和期望的方式来执行。在优选实施方式中,当数据被写入到拼块缓冲器时(当拼块被渲染时),跟踪针对拼块的渲染的片段数据到拼块缓冲器中的采样位置的写入(因此,例如,没有写入),然后基于对渲染的片段数据到拼块缓冲器的写入的跟踪,来识别包括拼块内的当渲染拼块时没有渲染的片段数据被写入拼块缓冲器中的多个采样位置的块。
渲染的片段数据是否被写入到拼块的采样位置可按照任何合适和期望的方式来跟踪。在优选实施方式中,当数据被写入到拼块缓冲器时,使用(“干净位”)位图来跟踪渲染的片段数据向拼块缓冲器的写入。
在此布置方式中,一旦拼块中的采样位置阵列的(例如,所有)渲染的片段数据被写入到拼块缓冲器(因此,跟踪信息(例如,位图)针对各个采样位置指示渲染的片段数据是否被写入到采样位置的拼块缓冲器),然后优选地使用跟踪信息(例如,位图)来识别包括拼块内的当渲染拼块时还未被写入(即,各自“干净”的)的多个采样位置的任何块(当拼块的渲染的片段数据根本未写入到拼块缓冲器时可以是整个拼块,或者可以是拼块的数据未写入的某一部分)。
在实施方式中,另外或者作为替代(优选地另外),对于当拼块被渲染时数据被写入到拼块缓冲器的采样位置的块(即,对于渲染的片段数据存在于拼块缓冲器中的采样位置的块),可识别采样位置的恒定数据值块。在这种情况下,在拼块被渲染时相同数据值被写入到整个块的采样位置的情况下将识别恒定数据值块。
因此优选地,所述设备和方法能够操作以基于渲染的片段数据针对拼块到拼块缓冲器的写入,将写入有相同数据值或值集合(例如,对于例如RGB颜色通道中的一个或更多个)的采样位置的块(例如,拼块)识别为与块中的多个采样位置中的每一个关联的渲染的片段数据。
可在图形处理流水线的任何合适和期望的级处识别写入有相同渲染的片段数据值的采样位置的块。
在一个实施方式中,优选地基于拼块缓冲器的写入端口处的写入事务,通过当数据被写入(正被写入)拼块缓冲器时跟踪被写入拼块缓冲器的渲染的片段数据来识别采样位置的相同数据(例如,颜色)值块。
因此优选地,当数据被写入到拼块缓冲器时(例如,并且优选地,基于数据值以及出现在拼块缓冲器的写入端口处的写入事务)跟踪多个特定渲染的片段数据值(或数据值集合)针对拼块到拼块缓冲器中的采样位置的写入,然后基于在写入到拼块缓冲器的渲染的片段数据中跟踪特定数据值(或数据值集合)来识别包括拼块内块的各个采样位置与包括相同(特定)数据值(或数据值集合)的渲染的片段数据关联的多个采样位置的块(如果存在的话)。
可按照任何合适和期望的方式通过在渲染的片段数据针对拼块被写入到拼块缓冲器中的采样位置时跟踪数据值来确定渲染的片段数据中与相同数据(例如,颜色)值(或数据(例如,颜色)值集合)关联的多个采样位置的块。
在一个优选实施方式中,在正被渲染时被写入到拼块中的采样位置的各个数据值(或数据值集合)与特定数据值或数据值集合进行比较,以查看它是否与所述特定数据值或数据值集合相同。此处理优选被继续,只要被写入到拼块的数据值与比较数据值或数据值集合匹配即可。
相应地,在此实施方式中,当检测到不同的数据值时,将确定拼块不是将相同数据值写入拼块缓冲器中的各个采样位置。因此,此实施方式便于识别整个拼块将相同数据值写入到拼块缓冲器中的针对拼块的采样位置,而不必还跟踪哪些采样位置被写入数据值。
在此实施方式中,当检测到正被写入到拼块缓冲器中的采样位置的渲染的片段数据中的数据值不同于正在跟踪的特定数据值时,优选地停止当数据针对拼块正被写入到拼块缓冲器时渲染的片段数据中的数据值的比较和跟踪。
在另一优选实施方式中,针对采样位置,优选针对各个采样位置(和/或针对采样位置集合),跟踪特定数据值(或数据值集合)是否被写入到采样位置。这可(优选)按照与跟踪当渲染拼块时渲染的片段数据是否被写入到采样位置的拼块缓冲器的方式相似的方式来操作,(例如,并且优选地)使得维护信息集合(例如并且优选地,位图),其中(例如,并且优选地)针对各个采样位置记录了写入到该采样位置的数据值是否对应于特定数据值(或者对应于特定数据值集合中的一个)。同样,一旦拼块被完全渲染,则优选地使用(评估)这种信息集合(例如,位图),以识别拼块中的写入有相同的特定数据值(或数据值集合)的那些采样位置。
在这些情况下,所跟踪的特定数据值或数据值集合可包括任何合适和期望的数据值或数据值集合。例如,它可包括选择的(例如,预定义的)数据值,例如参考数据值(例如,背景颜色值)。另外地或另选地,例如,所述特定数据值可以是数据值,例如(并且优选地)当拼块正被渲染时被写入到拼块的采样位置的第一数据值(或者当拼块正被渲染时被写入到拼块的数据值之一)。因此在该后一种情况下,将跟踪以查看哪些采样位置具有与已被写入到拼块的另一采样位置(与先前已被写入到拼块中的采样位置的拼块缓冲器的数据值)相同的数据(例如,颜色)值。
特定数据值是否已被写入到采样位置可按照任何合适和期望的方式来跟踪。在尤其优选的实施方式中,当(优选地,当各个)数据值被写入到拼块缓冲器时,将该数据值与所跟踪的特定数据值进行比较,并且相应地更新(或不更新)正写入数据值的采样位置的跟踪信息。这将允许正被写入到采样位置的数据值在它们被写入到拼块缓冲器中时被跟踪。
当比较数据值时,与要写入到拼块缓冲器的新数据值比较的数据值优选地不从拼块缓冲器读取,而是优选地被存储在其它存储装置(例如,触发器集合)中。因此,针对拼块缓冲器写入操作,“比较”数据值优选地被本地存储。
在这些布置方式中,在识别出实际被写入到拼块缓冲器的相同数据值的块的情况下,则与块中的采样位置关联的相同数据值将是实际被写入到拼块缓冲器的数据值(即,渲染的片段数据值)。
单独的“数据值”跟踪位图(例如)可用于此目的。然而,在尤其优选的实施方式中,当“干净位”位图被定义并用于跟踪拼块内未被写入(“干净”)的采样位置时,(例如,并且优选地)当确定了块(例如,拼块)中的所有采样位置均被写入了渲染的片段数据(即,拼块中不存在“干净”的采样位置)时,“干净位”位图可(优选)用于跟踪正被写入到拼块的采样位置阵列的渲染的片段数据的数据值。
因此,在优选实施方式中,确定包括拼块中的多个采样位置的块是否针对块中的各个采样位置均生成了渲染的片段数据(例如并且优选地,块是否完全被不透明图元覆盖),然后,当识别出这种块时,使用先前为了跟踪拼块内的未被写入(“干净”)的采样位置而预留的位图来跟踪正被写入到块(例如,拼块)的拼块缓冲器中的采样位置的渲染的片段数据中的数据值(或数据值集合)。
顺便,可在将图元栅格化期间执行确定块何时完全被不透明图元覆盖的步骤。因此,在优选实施方式中,栅格化处理能够操作以识别包括拼块内的已生成了图形片段的多个采样位置的块以用于渲染块中的所述多个采样位置中的每一个。
例如,栅格化处理可设定拼块何时整个被不透明图元覆盖的标志。响应于所设定的该标志,“干净位”位图然后可被赋予新的用途,以使用它来跟踪针对拼块正被写入到拼块缓冲器中的采样位置的渲染的片段数据中的数据值(或数据值集合)(即,在知道将针对拼块中的各个采样位置生成并渲染片段的情况下(因此相应地,渲染的片段数据将被写入到拼块的拼块缓冲器中的每一个采样位置))。
一旦识别出拼块内的采样位置全部具有相同数据值的块,基于渲染的片段数据针对块中的采样位置到拼块缓冲器的写入,将以本发明的方式生成相同数据值采样位置的块的报头数据块并将其写入到(例如,外部)存储器。
可按照任何合适和期望的方式来触发(引起)报头数据块到存储器的写入。
在一个实施方式中,当识别出拼块内的与相同数据值关联的采样位置的块时用信号通知合适的写出电路,以触发相同数据值采样位置的块的报头数据块到存储器的写入。
要用于所有数据位置(并且相应地,将在所谈论的数据位置的块的报头数据块中指示)的相同数据值可按照任何合适和期望的方式被指示并提供给报头数据块生成和存储处理。例如,数据位置的数据值可从存储有数据位置值的缓冲器(例如,从拼块缓冲器)读取。另外地或另选地,数据值可按照任何其它合适和期望的方式提供。
存储有报头数据块(以及子块数据(如果需要的话))的存储器可包括任何合适的这种存储器,并且可按照任何合适且期望的方式来配置。例如,它可以是片上缓冲器或者可以是外部存储器(实际上,更有可能是外部存储器)。类似地,它可以是用于此目的的专用存储器或者可以是还用于其它数据的存储器的一部分。在实施方式中,此数据被存储在总数据处理系统的主存储器中。
在纹理数据阵列的情况下,在实施方式中存储器是图形处理系统的纹理缓冲器(根据需要,该缓冲器可以例如在片上存储器或者外部存储器中)。类似地,在用于显示器的帧的情况下,在实施方式中存储器是用于数据(图形)处理系统和/或用于图形处理系统的输出所提供给的显示器的帧缓冲器。
在实施方式中报头数据和子块数据被存储在相同的物理存储器中,但这不是必要的。
当然,其它存储器布置方式也将是可能的。
尽管上面具体参照存储数据阵列的数据描述了本发明,本领域技术人员将理解,本发明也扩展至读取(并解码)以本发明的方式存储的数据的对应处理。
因此,根据本发明的另一方面,提供了一种在数据处理系统中确定用于所存储的数据阵列的数据位置的数据值的方法,该方法包括以下步骤:
针对数据阵列的所述数据位置所落入的块读取所存储的报头数据块;
确定所述报头数据块是否包含数据阵列的所述块的所有数据位置的值具有相同数据值的指示;以及
当从所述报头数据块确定数据阵列的所述报头数据块所涉及的所述块的所存储的数据阵列的所有数据位置具有相同数据值时:
从存储在所示报头数据块中的其它数据确定用于所述数据位置的值。
根据本发明的另一方面,提供了一种在数据处理系统中确定用于所存储的数据阵列的数据位置的数据值的设备,该设备包括处理电路,该处理电路被配置为:
针对数据阵列的所述数据位置所落入的块读取所存储的报头数据块;
确定所述报头数据块是否包含数据阵列的所述块的所有数据位置的值具有相同数据值的指示;并且
当从所述报头数据块确定数据阵列的所述报头数据块所涉及的所述块的所存储的数据阵列的所有数据位置具有相同数据值时:
从存储在所示报头数据块中的其它数据确定用于所述数据位置的值。
本领域技术人员将理解,如果适当,则本发明的这些方面可(优选)包括本文所述的本发明的优选和可选特征中的任一个或更多个或全部。
因此,例如,数据处理系统在实施方式中是图形处理系统或显示控制器系统,数据阵列在实施方式中是图形纹理(在这种情况下数据位置(元素)在实施方式中是纹素)或者用于显示的帧(在帧缓冲器中)(在这种情况下数据位置(元素)在实施方式中是像素或采样位置)等。类似地,用于在数据处理系统中确定所存储的数据阵列的数据位置的值的设备在实施方式中被包含在图形处理器或显示控制器中。
相应地,数据阵列的所述数据位置所落入的块的所存储的报头数据块的存储器位置优选按照预定方式优选从所述数据位置在数据阵列内的相对位置来优选确定。
类似地,解码处理和系统优选被配置为将报头数据块中(例如并且优选地,报头数据块中的特定(优选预定义的)数据位置中)的特定(优选预定义的)数据值(例如,子块大小值)识别为指示数据阵列的报头数据块所涉及的块中的所有数据位置具有相同数据值(然后相应地确定数据位置的值)。
用于所谈论的数据位置的数据值可按照任何合适和期望的方式从存储在报头数据块中的其它数据确定。这将取决于在报头数据块中如何指示和编码该值。因此,例如,可简单地包括从报头数据块读取数据值,或者可包括对存储在报头数据块中的数据进行解码(例如,解压缩)以获得数据值本身。
在报头数据块不包含数据阵列的所述块的所有数据位置的值具有相同数据值的指示的情况下,则所谈论的数据位置的数据值可(优选地)按照适合于所使用的编码方案的方式(例如并且优选地,按照根据上面所讨论的申请人早前的美国专利中所描述的技术的方式)来确定。
一旦确定了用于数据位置的值,则该数据值可按照任何适当和期望的方式(例如并且优选地,依据数据阵列表示什么)来使用。因此,例如,在数据阵列表示图形纹理的情况下,数据值优选地用于将纹理值应用于正在渲染的图形片段(例如,采样位置)。相应地,在数据阵列是例如用于显示的输出帧的情况下,数据位置的数据值优选被存储用于帧中的对应数据位置,所述帧然后可例如被显示。
如上所述,至少在本发明的优选实施方式中,报头数据块包括指示报头所对应的子块集合的数据的基础(例如,起始)存储器位置的指针数据,其优选为从所谈论的数据阵列的存储有报头数据块的报头缓冲区在存储器中的起点到所谈论的报头数据块所涉及的所存储的子块集合(子块集合的数据)在存储器中的起点的偏移(在实施方式中,以字节单位)的形式。
尽管该基础存储器位置指针数据可作为整数(使用整数表示)来提供,申请人进一步认识到,尽管针对该指针数据使用整数表示(格式)对于需要编码的大多数数据阵列而言可能足够了,会存在这样的情况:与利用基础地址指针的整数格式可指示的地址跨度(span)相比,可能需要更大的地址跨度。
因此,在尤其优选的实施方式中,基础存储器位置指针数据利用浮点数(利用浮点数表示)来指示。例如,在该数据使用32位字段的情况下,在优选实施方式中,使用具有5位指数和27位尾数(mantissa)的浮点表示。这将有利于例如指示更大的存储器地址范围。与例如仅仅使用这些值的对应整数表示(整数值)的情况相比,这可有利于指针数据(例如,偏移)用于对更大的地址跨度寻址。
在图形处理器能够使用(正在使用)“稀疏”(“部分驻留”)纹理的情况下,即,在纹理太大从而整个(完整)纹理无法被一次存储在存储器中(或者不期望将整个纹理一次存储在存储器中),而是纹理的较小区域(例如,拼块)根据需要被加载到存储器中以及从存储器卸载的情况下,这可能尤其有用。
在这样的布置方式中,“稀疏”纹理通常将使用虚拟地址并且会非常大,覆盖更大范围的存储器地址空间。针对基础存储器位置地址指针使用浮点表示将有利于访问可能用于“稀疏”纹理的更大范围的虚拟地址,同时当不需要大地址跨度时仍允许更紧密的打包(指针压缩)。
据信这种布置方式可为新颖的并且本身是有利的,因此根据本发明的另一方面,提供了一种在数据处理系统中存储数据阵列的方法,所述数据阵列包括多个数据位置,其中:
要存储的数据阵列被分割成多个块,各个块包括数据阵列的多个数据位置;
数据阵列的各个相应块被分割成多个子块,各个子块包括数据阵列的多个数据位置;并且
表示数据阵列的子块的数据被存储在存储器中,并且针对数据阵列所分割成的各个相应块存储报头数据块,所述报头数据块包含与数据阵列的报头数据块所涉及的块的子块有关的数据;
所述方法包括以下步骤:
对于数据阵列所分割成的至少一个块:
存储表示数据阵列的该块的子块的数据;以及
在数据阵列的该块的报头数据块中存储指示所存储的表示报头数据块所涉及的子块的数据的存储器位置的指针数据,其中,指示所存储的表示子块的数据的存储器位置的所述指针数据利用浮点数表示来存储。
根据本发明的另一方面,提供了一种用于在数据处理系统中存储数据阵列的设备,所述数据阵列包括多个数据位置,该设备包括处理电路,该处理电路被配置为:
将要存储的数据阵列分割成多个块,各个块包括数据阵列的多个数据位置;
将数据阵列的各个相应块分割成多个子块,各个子块包括数据阵列的多个数据位置;
将表示数据阵列的子块的数据存储在存储器中;并且
针对数据阵列所分割成的各个相应块存储报头数据块,所述报头数据块包含与数据阵列的报头数据块所涉及的块的子块有关的数据;
其中,所述处理电路还被配置为能够操作以存储:
对于数据阵列所分割成的块:
表示数据阵列的该块的子块的数据;并且
在数据阵列的该块的报头数据块中存储指示所存储的表示报头数据块所涉及的子块的数据的存储器位置的指针数据,其中,指示所存储的表示子块的数据的存储器位置的所述指针数据利用浮点数表示来存储。
本发明的这些方面和实施方式可(优选)包括本文所描述的本发明的优选和可选特征中的任一个或更多个或全部。因此,例如,报头数据块优选包括指示报头数据块所涉及的子块集合中的一些或所有(在实施方式中,各个)子块的数据(在存储器中)的大小的数据,以及指示报头数据块所对应的子块集合的数据的基础存储器位置指针数据。类似地,指示报头数据块所对应的子块集合的数据的基础存储器位置的指针数据优选被存储在报头数据块中的特定(优选预定义的)位置(字段)中,在优选实施方式中包括32位浮点表示(具有5位指数和27位尾数)。
本发明也扩展至以上述方式存储然后读取数据阵列的数据的方法和系统。
本发明的方法和设备可按照任何适当的方式来实现,例如实现于专用硬件或可编程硬件中,以及实现于(并包括在)任何适当的装置或组件中。
例如,用于以本发明的方式存储数据的实际装置或组件将取决于所使用的数据阵列的本质。因此,例如,在图形纹理的情况下,(例如,应用开发人员)可使用诸如个人计算机的适当处理器来以本发明的方式生成并存储纹理,然后将如此存储的纹理作为例如游戏内容的一部分提供。在所存储的数据阵列是用于显示的帧的情况下,则相应地可由图形处理器以所需方式生成并存储数据。
类似地,在操作的数据读取(解码)侧,在纹理数据的情况下,例如,将由图形处理器读取(解码)所存储的数据阵列,在用于显示的帧的情况下,可由显示器的显示控制器读取(解码)所存储的数据阵列。
本发明的数据处理系统可以是任何合适和期望的数据处理系统,并且可包含任何合适和期望的组件、元件等。因此,例如,数据处理系统可(优选)包括CPU、图形处理器、视频处理器、显示控制器和/或图像信号处理器中的任一个或更多个或所有。
数据处理系统优选还具有显示器和/或与显示器通信以用于显示由数据处理系统的组件(例如,由图形处理器等)生成的图像。
在优选实施方式中,数据处理系统包括一个或更多个存储器和/或存储器装置和/或与其通信,其存储本文所描述的数据和/或存储用于执行本文所述的处理的软件。
在优选实施方式中,本发明被实现于图形处理器、显示控制器、图像信号处理器、视频解码器或视频编码器中,因此,本发明还扩展至被配置为使用本发明的方法、或者包括本发明的设备、或者根据本发明的任一个或更多个实施方式的方法操作的图形处理器、显示控制器、图像信号处理器、视频解码器或视频编码器。
根据实现上述特定功能所需的任何硬件,这样的图形处理器、显示控制器、图像信号处理器、视频解码器或视频编码器可包括图形处理器、显示控制器、图像信号处理器、视频解码器或视频编码器所包括的常用功能单元等中的任一个或更多个或所有。在实施方式中,本发明的方法和设备被实现于硬件中(在实施方式中,单个半导体平台上)。
本发明尤其(但是非排他地)适合用于低功率便携式装置。因此,在实施方式中,本发明被实现于诸如移动电话或平板的便携式装置中。
本发明可实现于任何合适的系统中,例如适当配置的基于微处理器的系统。在实施方式中,本发明实现于基于计算机和/或微处理器的系统中。
本发明的各种功能可按照任何期望且合适的方式实现。例如,本发明的功能可根据需要以硬件或软件来实现。因此,例如,本发明的各种功能元件、级等可包括能够操作以执行各种功能等的合适的处理器、控制器、功能单元、电路、处理逻辑、微处理器结构等,例如适当专用的硬件元件(处理电路)和/或可被编程以按照期望的方式操作的可编程硬件元件(处理电路)。
这里还应该注意的是,本领域技术人员将理解,本发明的各种功能等可被复制和/或在给定处理器上并行执行和/或共享处理电路。
本领域技术人员还将理解,如果需要,本发明的所有描述的实施方式可酌情包括本发明的任一个或更多个或全部优选和可选特征。
依据本发明的方法可至少部分地利用软件(例如,计算机程序)来实现。因此将看出,本发明的另外的方面包括在安装在数据处理装置上时具体适于执行本文所述的方法的计算机软件、包括在程序元件在数据处理装置上运行时执行本文所述的方法的计算机软件代码部分的计算机程序元件、以及包括在程序在数据处理系统上运行时适于执行本文所述的方法的所有步骤的代码装置的计算机程序。数据处理系统可以是微处理器、可编程FPGA(现场可编程门阵列)等。
本发明还扩展至包括这种软件的计算机软件载体,其在用于操作图形处理器、渲染器或包括数据处理装置的其它系统时,与所述数据处理装置结合使得所述处理器、渲染器或系统执行本发明的方法的步骤。这种计算机软件载体可以是诸如ROM芯片、RAM、闪存、CD-ROM或盘的物理存储介质。
还将理解,不是本发明的方法的所有步骤需要通过计算机软件来执行,因此本发明的更广泛的实施方式包括计算机软件,这种软件安装在计算机软件载体上以用于执行本文所阐述的方法的至少一个步骤。
本发明因此可被适当地具体实现为用于计算机系统的计算机程序产品。这种实现方式可包括固定于诸如计算机可读介质(例如,磁盘、CD ROM、ROM、RAM、闪存或硬盘)的有形的永久介质上的一系列计算机可读指令。这一系列计算机可读指令具体实现本文先前所述的所有或部分功能。
本领域技术人员将理解,这些计算机可读指令可以用许多计算机架构或操作系统所使用的若干编程语言来编写。另外,这些指令可利用目前或未来的任何存储器技术(包括但不限于半导体、磁或光学)来存储,或者利用目前或未来的任何通信技术(包括但不限于光学、红外或微波)来传输。可以想到,这种计算机程序产品可作为可移除介质随所附的印刷或电子文档一起分发(例如,紧缩套装软件),用计算机系统预先加载到(例如)系统ROM或固定盘上,或者经由网络(例如,互联网或万维网)从服务器或电子公告牌分发。
附图说明
现在将仅作为示例参照附图描述本发明的若干实施方式,附图中:
图1示意性地示出根据本发明的实施方式的数据阵列的存储;
图2示意性地示出在本发明的第一实施方式中存储器中的报头数据块和主体块之间的数据阵列的块的数据的分布;
图3示意性地示出根据本发明的另外的实施方式的数据阵列的存储;
图4和图6示意性地示出在本发明的第二实施方式中存储器中的报头数据块和主体缓冲区中的数据的数据阵列的块的布置;
图5示意性地示出在图4的实施方式中所存储的子块数据的顺序;
图7示意性地示出在图6的实施方式中所存储的子块数据的顺序;
图8示意性地示出在本发明的实施方式中当确定数据块的所有数据位置具有相同数据值时报头数据块的布置;
图9示出根据本发明的实施方式的基于拼块的图形处理流水线的示意图;
图10示出图9所示的基于拼块的图形处理流水线的操作的流程图;
图11示出针对用于图9和图10所示的实施方式的示例拼块使用颜色缓冲器和“干净位”位图的示例;并且
图12示意性地示出可使用根据本发明存储的数据阵列的图形处理系统。
在适当的情况下,贯穿附图相似的标号用于相似的特征。
具体实施方式
现在将描述本发明的若干实施方式。
图1示意性地示出本发明的第一实施方式中的存储原始数据阵列20的方式。
原始数据阵列20是包含多个数据元素(包含在阵列内的多个特定位置处的数据条目)的二维数据阵列。数据阵列20可以是任何合适和期望的数据阵列,但是在图形处理上下文中,它可以是例如纹理贴图(即,纹理元素(纹素)阵列)或者表示要显示的帧的数据阵列(在这种情况下数据阵列可以是要显示的像素阵列)。在纹理贴图的情况下,数据阵列中的各个数据条目(位置)将表示适当纹素值(例如,诸如RGBa的颜色值集合,或者亮度和色度、纹素的值)。在用于显示的帧的情况下,阵列中的各个数据条目(位置)将指示要用于在显示器上显示帧的颜色值集合(例如,RBG值)。
如图1所示,为了将数据阵列20存储在存储器中,数据阵列20首先被分割成多个不交叠的大小相等的均匀块21,各个块对应于数据阵列20的特定区域。在本实施方式中,数据阵列的各个块21对应于数据阵列20内的16×16元素(位置)的块(即,在纹理贴图的情况下,16×16纹素的块)。当然,其它布置方式也将是可能的。
数据阵列20所分割成的各个块21被进一步再分成十六个不交叠的大小相等的均匀子块22的集合。在当前情况下,由于各个块21对应于数据阵列内的16×16元素(位置),所以各个子块22相应地对应于块21内的4×4数据元素区域(例如,在纹理贴图的情况下,4×4纹素)。(为了简单,图1仅示出数据阵列20的几个块21被分割成子块。然而,原始数据阵列20所分割成的每一个块21都被相应地再分成多个子块22的集合。)
为了将数据阵列20存储在存储器中,首先,针对数据阵列20所分割成的各个块21存储报头数据块23。这些报头数据块被存储在存储器中的报头缓冲区24中。报头缓冲区24在存储器中在起始地址A处开始,报头数据块23被各自存储在报头缓冲区24内的可预测存储器地址处。
图1示出了针对数据阵列20所分割成的一些块21的报头数据块23在报头缓冲区24中的位置。数据阵列20所分割成的各个块21在报头缓冲区24中具有对应报头数据块23。
从报头数据块23所涉及的块21在数据阵列内的位置确定(预测)在报头缓冲区24内存储各个报头数据块23的位置。具体地讲,对于数据阵列20内的位置x、y处的数据阵列元素(例如,纹素或像素),报头数据块21在报头缓冲区24中的地址由下式给出:
报头数据块地址=A+32*(x/16+(y*xsize)/16)
其中A是报头缓冲区的起始地址,xsize和ysize分别是数据阵列20的垂直尺寸和水平尺寸,假设数据阵列20被分割成16×16个块,并且各个报头数据块占据32字节。
在本实施方式中,基于要使用所存储的数据阵列的数据处理系统所使用的突发大小(例如,64字节),报头缓冲区24中的各个报头数据块23具有相同的固定的大小。这意味着报头数据块23具有可利用系统友好的突发大小所提取的大小。
除了在报头缓冲区24中针对原始数据20所分割成的各个块21存储相应报头数据块23之外,本实施方式的数据存储布置方式还能够存储给定数据块所分割成的各个子块22的数据。该子块数据在存储器中被存储在子块存储部或主体块25(在本实施方式中包括1024字节的对齐块)中。(主体块将子块数据存储在1024字节子块存储块中使得能够通过各个编码器每次用完空间时经由中央储存器分配新主体块25利用多个不同的编码器并行地对数据阵列进行编码。)在本实施方式中,主体块25被直接存储在报头缓冲区24之后(但是可按照随机顺序出现)。这允许报头数据块中的指针数据是相对于报头缓冲区24的起点或终点的偏移的形式。(这不是必要的,如果需要,主体块25可驻留在存储器中的任何地方。)
各个相应子块集合的数据26的集合被一个接一个地存储在主体块中,如图1所示。则这具有这样的效果:针对给定16×16块21的子块22的集合的数据可跨越两个不同的主体块25(如图1所示,对于子块数据集合27)。
图2更详细地示出了这种情况。如果假设针对与数据阵列的给定16×16块对应的4×4子块集合要存储的“净荷”数据40包括300字节,并且针对该块要存储的报头数据41包括62字节,如图2所示,则如果报头块42具有64字节的容量,则“净荷”数据的前两个字节将被存储在报头块中,然后净荷数据的其余字节分布在一个或两个主体块43、44之间(取决于第一主体块中的可用空间)。(通常,根据该数据的量以及相应报头和主体块中的可用容量,子块“净荷”数据将被存储在报头块和0-2主体块中。)
报头缓冲区24和主体块25可被存储在所谈论的数据处理系统的任何合适的存储器中。因此,例如,它们可被存储在片上存储器中或外部存储器(例如,数据处理系统的主存储器)中。在实施方式中它们被存储在相同的物理存储器中,但是这不是必要的。
如果需要,在使用中报头缓冲区和主体块中的一些或全部也可被拷贝到本地存储器(例如,缓存)。
主体块25中针对各个子块存储的数据可仅包括数据阵列20中的子块所对应的对应数据元素(条目)的数据。然而,在本实施方式中,不是以其完整的原始形式存储数据阵列20,各个数据阵列子块22被编码以给出原始数据的编码表示,该编码表示与原始未编码形式的数据相比大小减小。这压缩了原始数据,从而使其存储和处理更高效。任何合适和期望的编码(压缩)处理可用于该编码。
因此,在本实施方式中,原始数据阵列20在被存储之前被编码并压缩,因此关于各个子块22存储的数据将是可被适当地解码以获得原始数据阵列的数据条目的数据。换言之,关于各个子块22存储的数据将是可从其获得原始数据元素(或者至少那些数据元素的值的期望近似(例如,在使用有损编码(压缩)方案的情况下))的数据。它将是可用于针对所谈论的子块中的数据元素确定原始数据阵列中的数据元素的值(或者至少那些原始数据值的期望近似)的数据。
各个报头数据块包含指针数据,该指针数据指示主体块25内存储有该报头数据块23所涉及的块21的子块的数据的位置。在给定数据块的子块数据跨越两个不同的主体块的情况下(如图1所示),报头数据块23将包含第二指针以指示第二主体块的存储子块集合的数据的位置。在本实施方式中,该指针包括1024字节对齐地址的上面22位。(在本实施方式中,各个报头数据块包含指向第一和第二主体块二者的指针,而不管给定块的子块数据是否将延伸至第二主体块。这是为了顾及这样的事实:当编码处理开始时,在数据被写入到存储器之前可能不知道是否将使用第二主体块。)
在本实施方式中,报头数据块23中的指针数据指示报头数据块所涉及的相应子块的存储的数据26在存储器的主体块25中的起始位置28。为了定位各个4×4子块的数据,解码器相应地需要能够确定各个4×4子块的数据在所谈论的子块的总数据集合26内的位置。这在本实施方式中通过在报头数据块23中包括用于(按字节)存储各个相应4×4子块的数据的存储器大小来实现。
为了在主体块25中定位各个4×4子块的数据,解码器相应地使用报头数据块23中的指针来确定报头数据块23所涉及的十六个4×4子块的集合的数据26在主体块25中的起始位置28,然后使用报头数据块23中的大小信息来对在所关注的4×4子块之前存储的4×4子块的存储的数据的大小求和,以针对所关注的子块确定数据在主体块25中的起始位置。利用所谈论的子块的所指示的存储的数据大小来相应地确定所关注的子块的数据的结束位置。
在报头数据块中包括子块大小信息使得不再为了识别期望的子块数据的存储器位置而必须读取存储器中的多个不同的地方。
在本实施方式中,如果存在可由报头数据块中的大小字段指示所存储的子块数据的一些大小,但是这些大小事实上在使用中不会出现(例如,因为利用所使用的压缩或编码方案无法实现这些大小),则那些大小值被预定义为指示特殊情况,例如未压缩数据块或者单色块。这有利于以高效方式将这些特殊情况用信号通知给解码器。
如果在将指针和子块大小数据包括在报头数据块23中之后,报头数据块中存在任何其余空间,则不是留着该空间不用,而是用另外的有用信息(例如(具体地讲)确定报头数据块所涉及的子块的数据元素的值将需要(或可被使用)的数据(即,用于对子块数据进行解码的数据))填充。
例如,表示原始数据阵列的编码(例如,压缩)数据的将用于报头数据块所涉及的所有子块以用于解码处理的那部分可被包括在报头数据块中的“备用”空间中。如果在报头数据块中包括了将由报头数据块所涉及的所有子块共同使用(共享)的数据之后,报头数据块中存在任何其余空间,则还可以在报头数据块中包括针对给定子块所特定的数据。利用诸如此类的其它有用数据填充报头数据块意味着报头数据块可具有可利用系统友好的突发大小提取的大小,而不会浪费存储器空间。
在本实施方式中,使用32字节报头数据块,并且报头数据块的布局通常为指向主体块(子块存储块)(占据例如32位)的1字节精确指针、指向第二主体块(可为22位,如上所述)的一个主体块大小的对齐指针、16个子块大小数据集合(通常各自占据6位),报头数据块的其余部分利用编码的子块数据填充。
图3示意性地示出本文所述的技术的其它实施方式中的存储原始数据阵列20的方式。
图3所示的这些实施方式中的存储布置方式在许多方面与上面参照图1和图2描述的布置方式相似。因此以下描述将聚焦于两个布置方式之间的差异。
如上所述实施方式中一样,在这些实施方式中,如图3所示,要存储的数据阵列20被分割成多个不交叠的大小相等的均匀块21,各个块对应于数据阵列20的特定区域。同样,在这些实施方式中,数据阵列的各个块21对应于数据阵列20内的16×16元素(位置)的块(即,在纹理贴图的情况下,16×16纹素块)。
数据阵列20所分割成的各个块21然后被进一步再分成大小相等的均匀子块22(未示出),各个子块对应于块21内的4×4数据元素区域(例如,在纹理贴图的情况下,4×4纹素)。
类似地,为了将数据阵列20存储在存储器中,针对数据阵列20所分割成的各个块21将报头数据块23存储在报头缓冲区24中。同样,报头缓冲区24在存储器中的起始地址A处开始,并且报头数据块23各自被存储在报头缓冲区24内的可预测存储器地址处。
在本发明的这些实施方式中,各个报头数据块被配置为仅占据16字节(如下面将进一步讨论的,仅包含指向相关子块的数据的指针数据)。这同样意味着报头数据块23具有可利用系统友好地突发大小所提取的大小。
报头缓冲区24内的存储各个报头数据块23的位置同样从报头数据块23所涉及的块21在数据阵列内的位置确定(预测)。在这些实施方式中,对于数据阵列20内的位置x、y处的数据阵列元素(例如,纹素或像素),报头数据块21在报头缓冲区24中的地址由下式给出:
报头数据块地址=A+32*(x/16+(y*xsize)/16)
其中A是报头缓冲区的起始地址,xsize和ysize分别是数据阵列20的垂直尺寸和水平尺寸(假设数据阵列20被分割成16×16个块,各个报头数据块占据16字节)。
除了针对原始数据阵列20所分割成的各个块21在报头缓冲区24中存储相应报头数据块23之外,本实施方式的数据存储布置方式还在主体缓冲区30中存储给定数据块所分割成的各个子块22的数据。然而,在这些实施方式中,如图3所示,子块的数据仅仅以连续的方式存储在主体缓冲区30中(即,主体缓冲区30未被分割成单独的对齐的“主体块”)。
主体缓冲区30被存储在报头缓冲区24之后。这允许报头数据块中的指针数据是相对于报头缓冲区24的起点或终点的偏移的形式。(同样,这不是必要的,如果需要,主体缓冲区30可驻留在存储器中的任何地方。)
报头缓冲区24和主体缓冲区30同样可被存储在所谈论的数据处理系统的任何合适的存储器中。因此,例如,它们可被存储在片上存储器中或外部存储器(例如,数据处理系统的主存储器)中。在实施方式中它们被存储在相同的物理存储器中,但是这不是必要的。如果需要,在使用中报头缓冲区和主体缓冲区中的一些或全部也可被拷贝到本地存储器(例如,缓存)。
主体缓冲区30中针对子块存储的数据同样可包括未压缩或者压缩(编码)形式的数据阵列20中的数据。在实施方式中,子块数据被编码以给出原始数据的编码表示,其与原始未编码形式的数据相比大小减小。任何合适和期望的编码(压缩)处理可用于该编码。
此实施方式中的各个报头数据块23同样包含指针数据,该指针数据指示主体缓冲区30内存储有该报头数据块23所涉及的块21的子块的数据的位置。
在这些实施方式中,报头数据块23中的指针数据按照相对于报头缓冲区24的起始位置A的偏移的形式与报头数据块所涉及的块被分割成(编码为)的各个子块的“大小”指示值(按字节)一起指示报头数据块所涉及的相应子块的存储的数据在主体缓冲区30中的起始位置。
(因此,如之前一样,为了在主体缓冲区30中定位各个子块的数据,解码器将使用报头数据块23中的指针来确定报头数据块23所涉及的子块集合的数据在主体缓冲区30中的起始位置,然后使用报头数据块23中的大小信息来对在所关注的子块之前存储的子块的存储的数据的大小求和,以确定所关注的子块的数据在主体缓冲区30中的起始位置。利用所谈论的子块的所指示的存储数据大小来相应地确定所关注的子块的数据的结束位置。)
在这些实施方式中,报头数据块23被配置为仅包含(仅存储)报头数据块所涉及的相应子块的存储的数据在主体缓冲区30的起始位置的指示以及报头数据块所涉及的各个子块的相应大小指示值。因此,与先前实施方式中不同,报头数据块不存储任何“净荷”子块数据(即,在对给定子块进行解码时要使用的任何数据)。这具有这样的优点:在对给定子块进行解码时仅需要对子块数据进行解码,而无需对报头数据块中的任何数据进行解码。
当利用多个不同的编码器进行编码时,这些实施方式中的编码处理被配置为确保各个编码器在开始编码之前能够访问大小为数据阵列20的未压缩块的大小的存储器空间的连续集合。这通过将主体缓冲区30分割成可用编码器那么多的不同部分并且向各个编码器分配主体缓冲区30的相应部分之一来实现。然后,当一个编码器已填充它自己的缓冲区部分到没有足够的存储器空间可用于保证数据阵列的编码块将正好嵌入所分配的空间的程度时,编码器被配置为拿走为另一编码器分配的空间的一半(四舍五入为未压缩的主体缓冲区的大小)然后继续其压缩。只要所分配的主体缓冲区部分的粒度和数据阵列的编码块可占据的最大大小一样大,这应该不需要任何额外数据。
在这些实施方式中,可由报头数据块23中的大小字段指示的特定子块大小指示值被预定义为(被留出用于)指示子块的特殊情况,以方便以高效的方式将这些特殊情况用信号通知给解码器。在本实施方式中,用于此目的的大小指示值是在使用中事实上不会出现的大小,即,0或1的大小指示。
大小指示值1用于指示大小指示值所涉及的子块的数据以未压缩的形式存储在主体缓冲区中。
大小指示值0用于指示在对大小指示值0所涉及的子块进行解码时应该被使用与用于在前子块的数据相同的数据(即,在对大小指示值0所涉及的子块n进行解码时应该使用与用于子块n-1的数据相同的数据)。这可有效地用于指示给定子块可被视为另一子块的拷贝(因此在解码时可从另一子块拷贝)的情况。
在编码处理中识别出这种拷贝子块的情况下,则用于拷贝子块的数据不被存储在主体缓冲区30中。这可通过避免存储复制的子块数据来允许以更压缩的形式将子块数据存储在主体缓冲区30中。
为了进一步增强使用“拷贝”子块大小值指示的可能效果,在这些实施方式中,数据阵列的给定块的子块按照遵循空间填充曲线的顺序(例如,Peano曲线、U顺序、Z顺序等)被编码和存储,以确保各个子块总是接着空间上靠近的邻居子块被编码(存储)。这也可有助于增强缓存任何子块数据的效果。
在本实施方式中,如上所述,使用包含指向主体缓冲区30中的子块数据的起点的指针以及各个子块的大小指示值的16字节报头块。各个报头数据块的基本布局是用于指向所谈论的块的子块集合的数据的起点的指针首先出现,然后是各个相应子块的大小指示值(按照子块被编码并存储在主体缓冲区30中的顺序)。然而,指针的实际大小和大小指示值以及主体缓冲区30中的子块的布局可根据正被编码的数据的形式(例如,它是RGB还是YUV数据)而被不同地配置。
图4至图8示出当编码并存储RGB或RGBA数据时数据阵列20的相应块的报头数据块和子块数据的布置。
图4和图5示出不包含任何预定义的“特殊情况”子块的数据阵列的块的布置。
图6和图7示出包括一些预定义的特殊情况子块(即,“拷贝”子块和未压缩子块)的数据阵列的块的布置。
图8示出所谈论的数据阵列块的所有数据元素(位置)具有相同数据值的情况下的报头数据块布置。
在这些示例中,在数据阵列所分割成的各个块表示16×16数据条目的情况下,则对于RGB或RGBA数据,数据阵列的各个块被分割成16个4×4子块并编码。各个子块将相应地作为三或四分量纹理被存储。
如图4和图5所示,报头数据块23包括32位指针40(为相对于主体缓冲区30中的数据块的子块数据的起点的偏移的形式),然后是16个6位大小指示值41,一个大小指示值41用于数据阵列的块所分割成的每个子块以用于编码目的(如上所述),从而总共提供16字节报头数据块。如图4和图5所示,报头数据块23中的各个大小指示值指示用于存储对主体缓冲区30中的大小指示值所涉及的相应子块进行解码所要使用的数据的存储器大小。
例如,指针40可被存储为整数值,或者它可利用浮点表示来存储(指示)(例如,取决于期望能够指示的地址空间的大小)。
图5示出各个数据阵列的块的16个4×4子块被编码并存储的顺序。可从图5看出,编码顺序遵循空间填充曲线(在这种情况下,Peano曲线)。
图6和图7示出在确定第三子块(子块编号2)可被视为第二子块(子块编号1)的拷贝的情况下块的RGB或RGBA数据的数据存储布置。在这种情况下,第三子块的大小指示值S2被设定为值“0”(已被预定义为指示拷贝子块),并且如图6和图7所示,在主体缓冲区30中针对第三子块(子块编号2)没有存储子块数据,而是解码器将重用针对第二子块(子块编号1)存储的数据来对第三子块(子块编号2)进行解码。
图6还示出示例性未压缩子块(子块5),其大小指示值S5相应地被设定为值1(已被预定义为指示未压缩子块),
图8示出在所谈论的块的所有数据元素(位置)被确定为与相同数据值关联的情况下的报头数据块的布置。
在这种情况下,如图8所示,报头数据块23的位37:32中的报头数据块23所涉及的数据块的第一子块的大小指示值(字段)S0被设定为值“0”(已被预定义为指示拷贝子块)。然而,在这种情况下,在报头数据块23中的该位置处存在拷贝子块指示值“0”被当作报头数据块所涉及的数据块中的所有数据元素(数据位置)具有相同数据值(颜色值)的指示。
用于该块的所有数据位置(数据元素)的相同数据值(颜色值)然后以未压缩形成包括在报头数据块的位127:64中,如图8所示。
如图8所示,报头数据块中的其它数据字段(因此,指示相对于子块数据的起点的偏移的32位指针以及任何其余子块大小指示字段)被简单地设定为默认值(例如,“0”)。
也如图8所示,在这种情况下,由于报头数据块中包括了对数据元素(数据位置)块进行解码所需的所有信息,所以不存储对应单独(附加)的子块数据集合。
上述布置方式可用于期望将所有数据分量一起存储在相同编码子块中的数据。在其它情况下(例如,对于YUV数据),不同数据分量(例如,Y平面数据和UV平面数据)可作为单独的编码子块被存储,以方便分别读取和解码该数据,并且还允许不同类型的数据以不同的分辨率被存储。
在以上述实施方式的方式对数据阵列20进行编码的操作中,适当配置和/或编程的处理电路将从存储器接收和/或提取表示原始数据阵列20的数据流,并且如上所述操作以将数据阵列20分割成块和子块,生成并存储适当的报头数据块,并且生成数据阵列的子块的编码数据,并将数据阵列的子块的编码数据存储在存储器中。如果需要,可向输入的数据阵列中添加填充数据以确保它具有能够按照16均匀地分割的宽度和高度(在对数据阵列进行解码时(如果需要),这种填充数据然后可被解码器适当地切除(crop))。
作为编码操作的一部分,假定要编码的数据阵列的给定块将被评估以确定是否该块的所有数据元素(位置)均具有相同数据值,然后这样的数据块(仅)利用图8所示的形式的报头数据块来编码。
例如,可通过从存储器读取数据阵列的块的所有数据位置的数据值并且比较其数据值以确定它们是否相同来识别这样的相同数据位置块。
在优选实施方式中,数据阵列中的相同数据值块的识别在数据阵列的块正被写入到缓冲器时确定,然后它们从缓冲器被存储(写出)到(主)存储器。现在将参照图9至图11来描述在基于拼块的图形处理系统的上下文中该操作的实施方式。
图9示出本发明的该实施方式的基于拼块的图形处理流水线91的示意图。流水线91包括:栅格化器(rasteriser)92,其用于针对与覆盖拼块的图元关联的采样位置生成要渲染的片段;以及片段着色级94,其从栅格化器92接收栅格化的片段。片段着色级94被配置为渲染栅格化的片段,以针对与所述片段关联的采样位置生成渲染的片段数据(例如,针对拼块中的采样位置确定渲染的颜色和透明度(例如,RGBα)值)。
流水线91还包括拼块缓冲器96,其联接至片段着色级94以允许拼块中的采样位置的渲染的片段数据被写入到拼块缓冲器96。拼块缓冲器96还经由写回单元98联接至主存储器中(即,在流水线91外部)的帧缓冲器97。
写回单元98被配置为将针对拼块写入到拼块缓冲器96的渲染的片段数据的压缩表示写出到帧缓冲器97。写回单元98在将拼块缓冲器中的渲染的片段数据的压缩表示写入到帧缓冲器97时使用上面以及申请人的专利US 8,542,939 B2、US 9,014,496 B2、US 8,990,518 B2和US 9,116,790 B2中所描述的压缩方案来表示渲染的片段数据。因此,如上所述,压缩表示包括与采样位置的块(例如,拼块)关联的报头数据块以及与块关联的子块数据。
图9所示的流水线91还包括“纯色检查器”处理级(处理电路)93以用于识别所渲染的拼块中的恒定颜色的块。纯色检查器93联接至栅格化器92和拼块缓冲器96,以使得它可控制写回单元98的操作用于将数据写回到帧缓冲器97的(将在下面描述)。
现在将参照图9、图10和图11描述图9所示的流水线91的操作。图10示出图9所示的基于拼块的图形处理流水线的操作的流程图,图11示出针对用于图9和图10所示的实施方式的示例拼块使用颜色缓冲器和“干净位”位图的示例。
在栅格化器92的栅格化处理(步骤101,图10)之后,基于针对拼块生成的片段(如果有的话),纯色检查器93确定拼块是否包含要渲染的任何图元(多边形)(步骤102,图10)。当针对拼块不存在要渲染的图元(即,甚至没有图元至少部分地覆盖拼块)时,则栅格化器92将不生成片段,因此拼块是完全“干净”的。这也将意味着将不存在要由片段着色级94渲染的片段,因此拼块中的任何采样位置的渲染的片段数据将不被写入到拼块缓冲器96。
在识别出拼块中不存在图元和片段时,纯色检查器93用信号通知写回单元98拼块将不被写入(即,它是完全“干净”的)。写回单元98然后将针对拼块的图8所示的形式的报头数据块写出(表示拼块作为其一部分的所存储的数据阵列中的拼块)。在这种情况下,报头数据块中指示的“相同”颜色值是要用于“干净”采样位置的默认颜色值。
另选地,纯色检查器93将检测正在渲染的拼块不包含要渲染的图元(步骤102,图10)。在这种情况下,栅格化器92将针对拼块生成片段,因此片段着色级94将渲染所述片段以针对拼块中的一个或更多个采样位置生成将被写入到拼块缓冲器96的渲染的片段数据。然后,纯色检查器从栅格化器针对拼块设定的标志确定拼块何时完全被不透明图元覆盖(即,不透明图元是否覆盖整个拼块)(步骤104,图10)。
当拼块没有完全被不透明图元覆盖,即,拼块中存在一个或更多个采样位置是澄清或半透明的(例如,具有小于1的α值)时,则由片段着色级94来渲染拼块中的图元的片段,与这些片段关联的采样位置的渲染的片段数据被写入到拼块缓冲器96。一旦针对拼块的所有渲染的片段数据均被写入到拼块缓冲器96,写回单元98利用上面所描述的(以及如申请人的专利US 8,542,939 B2、US 9,014,496 B2、US 8,990,518 B2和US 9,116,790 B2中所描述的)帧缓冲器压缩技术将渲染的片段数据写出到帧缓冲器97(步骤105,图10)。
当拼块完全被不透明图元覆盖时,则由片段着色级94来渲染拼块中的图元的片段,与这些片段关联的采样位置的渲染的片段数据被写入到拼块缓冲器96。
通常,使用“干净位”位图200(如图11所示)来识别拼块中的没有渲染的片段数据被写入拼块缓冲器96中的采样位置(即,“干净”的采样位置)。以这样的方式跟踪拼块中的这些“干净”采样位置可允许识别其中具有拼块中的在拼块缓冲器96中没有渲染的片段数据被写入的采样位置的拼块或块(例如,如果在栅格化级处没有识别出这种块或拼块)。然而,一旦纯色检查器93确定了整个拼块被不透明多边形覆盖(步骤104,图10),就知道不再需要跟踪拼块中的“干净”采样位置。因此,位图200然后可被赋予新的用途以在渲染的片段数据被写入到拼块缓冲器96时用于比较采样位置的渲染的颜色。
因此,当采样位置的渲染的片段数据被写入到拼块缓冲器96时,使用位图200以跟踪与包括相同颜色值的渲染的片段数据关联的采样位置,即,跟踪拼块中被渲染为相同颜色的采样位置(步骤106,图10)。
图11示出使用“干净位”位图200来跟踪拼块中的被渲染为相同颜色的采样位置(相对于跟踪在拼块缓冲器96中没有渲染的片段数据被写入的采样位置,被赋予新的用途)。图11还示出颜色缓冲器220(作为拼块缓冲器96的一部分),其示出针对拼块中的采样位置的渲染的片段数据的颜色。(为了清晰,颜色以灰度来示出,并且拼块中的采样位置的数量被限制为4×4。实际上,可使用任何颜色,并且拼块可包含诸如16×16或32×8的更多数量的采样位置。)
纯色检查器93针对拼块将当该数据被写入到拼块缓冲器96中的采样位置时渲染的片段数据中的颜色值与写入到拼块缓冲器96的第一采样位置的渲染的片段数据中的颜色值进行比较,即,识别具有相同颜色值的渲染的片段数据被写入到拼块缓冲器96的采样位置(步骤108,图10)。然后,纯色检查器93使用干净位位图200来跟踪相同颜色值被写入到拼块缓冲器96的采样位置。
干净位位图200是与拼块中的采样位置阵列对应的阵列,阵列中的各个位置具有一位。当用于跟踪正被写入到拼块的颜色值时,在此实施方式中,当采样位置的渲染的片段数据中的颜色值与写入到拼块缓冲器96的第一采样位置的颜色值相同时,该采样位置的位被设定为“1”,或者当采样位置的渲染的片段数据中的颜色值不同于写入到拼块缓冲器96的第一采样位置的颜色值时,该采样位置的位被设定为“0”。
首先写入的采样位置221的渲染的片段数据中的颜色值在该采样位置的渲染的片段数据被写入到拼块缓冲器时被存储在拼块(颜色)缓冲器220中,并且值“1”被写入到干净位位图200中的对应位201中。(在此示例中,如图11所示,假设首先写入到拼块缓冲器220的颜色值221代表白色。)
因此,当针对与干净位位图200中的位置对应的采样位置,包括与写入到拼块缓冲器96的第一采样位置的颜色值相同的颜色值的渲染的片段数据正被写入到拼块缓冲器96时,纯色检查器93将“1”写入到干净位位图200中的所述位置(步骤109,图10)。另选地,当针对与干净位位图200中的位置对应的采样位置,包括与写入到拼块缓冲器96的第一采样位置的颜色值不同的颜色值的渲染的片段数据正被写入到拼块缓冲器96时,纯色检查器93将“0”写入到干净位位图200中的所述位置(步骤110,图10)。
因此,在针对拼块中的第一采样位置将渲染的片段数据写入到拼块缓冲器96之后,纯色检查器93然后确定拼块中是否还留有任何另外的采样位置要渲染,即,是否存在拼块的任何另外的渲染的片段数据要被写入到拼块缓冲器96(步骤107,图10)。
如果拼块中还存在采样位置要渲染,则当采样位置的渲染的片段数据被写入到拼块缓冲器96时,将该采样位置的渲染的片段数据中的颜色值与首先写入的采样位置221的渲染的片段数据中的颜色值进行比较(步骤108,图10)。当采样位置的渲染的片段数据中的颜色值与首先写入的采样位置221的渲染的片段数据中的颜色值相等时,值“1”被写入到阵列中与该采样位置对应的位置的干净位位图200中的位(步骤109,图10)。当采样位置的渲染的片段数据中的颜色值不同于首先写入的采样位置221的渲染的片段数据中的颜色值时,值“0”被写入到阵列中与该采样位置对应的位置的干净位位图200中的位(步骤110,图10)。
可从图11看出,在此示例中,拼块中的所有采样位置222在拼块(颜色)缓冲器220中具有代表白色的颜色值,因此干净位位图中的所有对应位置202利用值一来标记。(在拼块中的任何采样位置具有代表与针对拼块写入的第一颜色不相同的颜色的颜色值的情况下,干净位位图200中的对应位置将利用值“0”来标记以指示该情况)。
当拼块的所有渲染的片段数据已被写入到拼块缓冲器96时,纯色检查器93然后确定是否所有采样位置在渲染的片段数据中均与相同的颜色值关联,即,是否位图阵列中的所有值均等于一(步骤111,图10)。(在图11所示的示例中,位图200将指示采样位置全部与相同的渲染颜色关联。)
当纯色检查器93识别出具有与拼块中的各个采样位置关联的相同颜色值的拼块时,纯色检查器93用信号通知写回单元98拼块为恒定颜色。然后,写回单元98针对拼块写出图8所示形式的报头数据块(表示拼块作为其一部分的存储数据阵列中的拼块)。在这种情况下,报头数据块中指示的“相同”颜色值是已被渲染到拼块的所有采样位置的颜色值。
当纯色检查器93没有确定拼块具有与其各个采样位置关联的相同颜色值时,写回单元98利用上面所描述的(以及如申请人的专利US 8,542,939 B2、US 9,014,496 B2、US8,990,518 B2和US 9,116,790 B2中所描述的)帧缓冲器压缩技术将渲染的片段数据写出到帧缓冲器97(步骤105,图10)。
最终写入帧缓冲器97的数据然后可被输出(例如,被显示)。针对帧中的各个拼块重复上面针对一个拼块描述的处理,然后针对通过图形处理流水线91所渲染的后续帧重复所述处理。
在上述示例中,假设数据阵列被分割成的块(为其存储报头数据块(以及可能另外,子块数据))对应于图形处理器正在生成的拼块。然而,为了以本实施方式的方式编码和存储数据阵列,数据阵列所分割成的块也不对应于图形处理器所生成的拼块。例如,各个块可仅包括拼块的部分而非全部(小部分),或者块可由多个拼块构成。
以上主要描述了在本实施方式中数据阵列被处理并存储在存储器中以用于使用的方式。当要使用如此存储的数据阵列(例如,应用于要渲染的片段)时(在所存储的数据阵列是用于图形处理的纹理贴图的情况下),则针对所存储的数据阵列的读取和解码处理将主要包括上述存储和编码处理的逆处理。
因此,诸如图形处理器(例如,在所存储的数据阵列是纹理贴图的情况下)或显示控制器(例如,在所存储的数据阵列是要显示的帧的情况下)的解码装置将首先识别数据阵列中的所关注(即,要确定其值)的特定的一个或多个元素的位置。然后将针对数据阵列确定报头缓冲区的起始地址A(如果需要,这可例如由控制编码器和解码器利用指向报头缓冲区的指针设定控制寄存器的软件被传输给解码器),然后以上述方式使用该起始地址以及所关注的数据阵列元素的位置以确定数据元素位置所落入的数据阵列的块的报头数据块的位置。
然后,解码器将从所识别的存储器位置读取报头数据块,并且从其确定指示再现所谈论的数据元素(位置)应该使用的数据阵列的块的相关子块数据的存储器位置的指针数据和子块大小数据。然后,解码器将例如从所确定的存储器位置读取并使用相关子块数据,并且将该数据解码(如果需要,使用存储在报头数据块中的任何其它编码的数据(如上所述)),以确定所关注的数据元素(位置)的值。
该解码处理还应该考虑任何预定义的“特殊情况”子块大小指示值(如上所述)。因此,如果解码器在报头数据块中识别出指示“拷贝”子块的子块大小值,则解码器应该相应地使用用于(或者将用于)在前块的子块数据以确定所谈论的数据元素(位置)的值。
相应地,如图8中的报头数据块配置所示,在针对所谈论的报头数据块所涉及的子块集合的第一子块,报头数据块在大小指示字段包括拷贝块大小指示值的情况下,则解码器将从包括在报头数据块中的数据值信息确定用于所谈论的数据元素(位置)的数据值,而无需读取或尝试读取所谈论的块的任何单独的子块数据。
然后,可针对所关注(需要其值)的各个数据元素(位置)重复该处理。
图12示意性地示出可存储并使用以本实施方式的方式存储的数据阵列的图形处理系统1的布置方式。
图12示出基于拼块的图形处理系统。然而,将理解,本发明也可被实现于图形处理系统的其它布置方式中(实际上,其它数据处理系统中)。
如图12所示,该系统包括基于拼块的图形处理器(GPU)1。该图形处理器1响应于它所接收的渲染图形对象等的指令生成输出数据阵列(例如,旨在用于显示在诸如屏幕或打印机的显示装置上的输出帧)。
如图12所示,图形处理器1包括顶点着色器2、分选单元3、状态管理单元4、栅格化级5以及渲染流水线形式的渲染级6。
顶点着色器2例如从用于图形处理器1的驱动器(未示出)接收要绘制的图形对象、顶点等的描述,并且对那些对象和顶点等执行适当顶点着色操作,以例如对那些对象和顶点执行适当变换和照明操作。
分选单元3针对要生成的输出所分割成的拼块(因为如上所述,该示例性图形处理系统是基于拼块的图形处理系统)将图形处理器1要生成的输出(例如,要显示的帧)所需的各种图元、对象等挑选(分选)到适当面元(拼块列表)中。
状态管理单元4存储并控制状态数据以及图形处理单元的状态以控制图形处理操作。
栅格化器5以要显示的图元作为其输入,并且将那些图元栅格化为要渲染的采样位置和片段。
渲染流水线6从栅格化器5获得片段并且渲染那些片段以生成输出数据(用于图形处理器1的输出的数据(例如,要显示的帧))。
渲染流水线将包括若干不同的处理单元,例如片段着色器、混合器、纹理映射器等。
具体地讲,如图12所示,除了别的以外,渲染单元6将访问存储在图形处理器1能够访问的存储器9中的纹理贴图10,以能够将相关纹理应用于它正在渲染的片段。存储有纹理贴图10的存储器9可以是图形处理器1能够访问的片上缓冲器或外部存储器(例如,主系统存储器)。
图形处理器1通过生成表示相应输出数据阵列的不同区域的拼块(因为它是基于拼块的图形处理器)来生成其输出数据阵列(例如,输出帧)。因此,来自渲染流水线6的输出(渲染的片段)被输出给拼块缓冲器7。
然后,拼块缓冲器的输出被写入到帧缓冲器8(例如,用于显示)。帧缓冲器8可驻留在例如系统(未示出)的主存储器(该存储器可以是DDR-SDRAM)中。如果需要,来自拼块缓冲器的数据在被写入到帧缓冲器之前可被下采样。
根据需要,纹理贴图10和帧缓冲器8可被存储在相同的物理存储器中,或者它们可被存储在不同的存储器中。
一段时间后,帧缓冲器3中的数据阵列将例如由显示控制器读取并且被输出至用于显示的显示装置(未示出)。
关于存储器9中所存储的纹理贴图10以及当将其输出数据存储在帧缓冲器8中时,图12所示的图形处理系统均使用上述实施方式的数据阵列存储和解码布置方式。
因此,存储在存储器9中以便于渲染单元6使用的各个纹理贴图10以上述实施方式之一的形式被存储。因此,当渲染单元6需要访问纹理贴图时,它将以上述方式来读取纹理贴图数据并对纹理贴图数据解码。
类似地,当从图形处理器1生成的输出数据从拼块缓冲器7被写入到帧缓冲器8时,以上述方式之一来处理该数据,以从拼块缓冲器7获得数据并以上述格式之一将其存储在帧缓冲器8中。然后,可由例如要显示帧的显示器的显示控制器以上述方式从帧缓冲器8读取该数据并对该数据解码。
将理解,如图12所示的图形处理器的级、元件和单元等中的每一个可根据需要来实现,并且将相应地包括例如用于执行所需操作和功能的适当处理电路(例如,处理逻辑、可编程逻辑等),并且将提供用于执行本发明的适当控制和处理电路等。
这里还将理解,图12仅仅示意性地示出了布置方式,因此,例如,本发明的操作中的数据流无需如图12示出并且可能不如图12所示,而是可根据需要例如涉及图12所示的各种单元和级之间的数据的回环。
尽管上面具体参照本发明实施方式的技术与图形处理器和显示控制器一起使用描述了本发明实施方式,本发明的技术可用于其它数据阵列,特别是图像处理布置方式。例如,它们可用在图像信号处理器以及视频解码器和编码器(MPEG/h.264等)中。在这些情况下,例如,本发明的技术可用于存储由正在处理从图像传感器接收的数据以从其形成可观看的图像的图像信号处理器生成的图像。例如,视频编码器/解码器可加载以本发明的形式存储的图像(例如,视频帧),然后利用类似h.264的某些其它标准来压缩图像,并且利用本发明的技术来相应地存储视频数据的帧(例如,用于提供给图形处理器或显示控制器)。
可从上文看出,本发明(至少在其优选实施方式中)提供一种存储数据阵列的方法和设备,其允许所存储的数据占用较少的存储器空间(更高效地存储),减少用于读取所存储的数据的存储器业务量,和/或使得用于读取所存储的数据的存储器业务更高效。由此可相应地降低功耗。
这(至少在其优选实施方式中)通过将要存储的数据阵列分割成多个块,将数据阵列的各个相应块进一步分割成子块集合,并且针对数据阵列所分割成的各个块存储表示子块的数据和报头数据块来实现。
进一步确定数据阵列所分割成的块的所有数据位置是否与相同数据值关联,并且在这种情况下,数据阵列的这种块的报头数据块被配置为存储块内的所有数据位置与相同数据值关联的指示以及与块中的各个数据位置关联的所述相同数据值的指示。
在优选实施方式中,基于针对块中的数据位置向缓冲器写入数据来识别块中的所有数据位置与相同数据值关联的块。
Claims (28)
1.一种在数据处理系统中存储数据阵列的方法,所述数据阵列包括多个数据位置,其中:
要存储的所述数据阵列被分割成多个块,各个块包括所述数据阵列的多个数据位置;
所述数据阵列的各个相应块被分割成多个子块,各个子块包括所述数据阵列的多个数据位置;并且
表示所述数据阵列的子块的数据被存储在存储器中,并且针对所述数据阵列所分割成的各个相应块,存储报头数据块,所述报头数据块包含与所述数据阵列的、所述报头数据块所涉及的块的子块有关的数据;
所述方法包括以下步骤:
确定所述数据阵列所分割成的块的所有数据位置是否与相同数据值关联;以及
当确定所述数据阵列所分割成的块的所有数据位置与相同数据值关联时:
在所述数据阵列的该块的所述报头数据块中存储该块内的所有数据位置与相同数据值关联的指示以及与该块中的各个数据位置关联的所述相同数据值的指示。
2.根据权利要求1所述的方法,该方法包括以下步骤:通过将特定数据值存储在所述报头数据块中的特定位置来提供所述块内的所有数据位置与所述相同数据值关联的所述指示。
3.根据权利要求1或2所述的方法,该方法包括以下步骤:通过将与所述块中的各个数据位置关联的所述数据值以未压缩形式存储在所述报头数据块中来在报头数据块中提供与所述块中的各个数据位置关联的所述相同数据值的所述指示。
4.根据权利要求1或2所述的方法,该方法还包括以下步骤:
当确定所述数据阵列所分割成的块的所有数据位置不与相同数据值关联时:
存储所述数据阵列的该块的报头数据块、以及所述数据阵列的该块所涉及的子块的子块数据的单独集合二者,所述报头数据块包含与所述数据阵列的、所述报头数据块所涉及的该块的子块有关的数据。
5.根据权利要求1或2所述的方法,其中,各个报头数据块包括存储指示与所述报头数据块相对应的子块集合的数据的基础存储器位置的指针数据的数据字段、以及存储与所述报头数据块相对应的子块集合中的各个子块的大小指示值的数据字段。
6.根据权利要求5所述的方法,该方法包括以下步骤:通过针对与所述报头数据块相对应的子块集合中的特定子块在存储大小指示值的所述数据字段中存储特定数据值来提供所述块内的所有数据位置与相同数据值关联的所述指示。
7.根据权利要求5所述的方法,该方法包括以下步骤:在存储指示与所述报头数据块相对应的子块集合的数据的基础存储器位置的指针数据的所述数据字段中利用浮点数表示来存储指示与报头数据块相对应的子块集合的数据的基础存储器位置的指针数据。
8.根据权利要求1或2所述的方法,该方法包括以下步骤:
通过从存储器读取所述数据块的数据位置的数据值并且比较它们以查看它们是否全部相同,来确定所述数据阵列所分割成的块是否具有与所述块的所有数据位置关联的相同数据值。
9.根据权利要求1或2所述的方法,该方法包括以下步骤:
处理数据阵列的块以生成所述数据阵列的数据的块;
将所述数据阵列的所述块写入到缓冲器;以及
通过以下步骤来确定所述数据阵列所分割成的块的所有数据位置是否与相同数据值关联:
基于在所述数据被写入到所述缓冲器之前所述数据阵列的所述块的所述处理和/或基于数据到所述缓冲器的写入,确定所述数据阵列的块是否具有与所述块的各个数据位置关联的相同数据值。
10.根据权利要求9所述的方法,其中,所述数据处理系统包括基于拼块的图形处理器,该基于拼块的图形处理器包括:
拼块缓冲器,该拼块缓冲器被配置为在渲染的片段数据被写出到存储器之前将采样位置的所述渲染的片段数据本地存储到所述图形处理器;
并且所述方法包括通过以下步骤来确定所述数据阵列所分割成的块的所有数据位置是否与相同数据值关联:
当渲染图形片段以生成渲染的片段数据,各个图形片段与拼块中的要渲染的一个或更多个采样位置的集合关联,并且将所述拼块中的采样位置的所述渲染的片段数据写入到所述拼块缓冲器时:
基于渲染的片段数据针对拼块到所述拼块缓冲器的所述写入,确定包括拼块的多个采样位置的块是否具有与所述块中的所述多个采样位置中的每一个关联的相同数据值。
11.根据权利要求10所述的方法,该方法包括以下步骤:通过确定对于所述块中的所述多个采样位置中的任何采样位置,没有渲染的片段数据被写入到所述拼块缓冲器,来识别相同数据值采样位置的块。
12.根据权利要求10所述的方法,该方法包括以下步骤:
当拼块的数据被写入到所述拼块缓冲器时,跟踪特定渲染片段数据值到所述拼块缓冲器中的所述采样位置的写入;以及
基于在将渲染的片段数据写入到所述拼块缓冲器时对所述特定数据值的所述跟踪,识别包括拼块的多个采样位置的块,各个采样位置与包括相同数据值的渲染的片段数据关联。
13.一种在数据处理系统中确定用于所存储的数据阵列的数据位置的数据值的方法,该方法包括以下步骤:
读取针对所述数据阵列的、所述数据位置所落入的块的所存储的报头数据块;
确定所述报头数据块是否包含所述数据阵列的所述块的所有数据位置具有相同数据值的指示;
并且当从所述报头数据块确定针对所述数据阵列的、所述报头数据块所涉及的所述块,所存储的数据阵列的所有数据位置具有相同数据值时:
从存储在所述报头数据块中的其它数据确定用于所述数据位置的值。
14.根据权利要求13所述的方法,该方法包括以下步骤:基于所述报头数据块中的特定位置是否存在特定数据值来确定所述报头数据块是否包含所述数据阵列的所述块的所有数据位置具有相同数据值的指示。
15.一种用于将数据阵列存储在存储器中的设备,该设备包括:
处理电路,该处理电路被配置为:
将要存储的所述数据阵列分割成多个块,各个块包括所述数据阵列的多个数据位置;
将所述数据阵列的各个相应块分割成多个子块,各个子块包括所述数据阵列的多个数据位置;
将表示所述数据阵列的子块的数据存储在存储器中;并且
针对所述数据阵列所分割成的各个相应块存储报头数据块,所述报头数据块包含与所述数据阵列的、所述报头数据块所涉及的所述块的子块有关的数据;
其中,所述设备还包括处理电路,该处理电路被配置为:
确定所述数据阵列所分割成的块的所有数据位置是否与相同数据值关联;并且
当确定所述数据阵列所分割成的块的所有数据位置与相同数据值关联时:
在所述数据阵列的该块的所述报头数据块中存储所述块内的所有数据位置与相同数据值关联的指示以及与所述块中的各个数据位置关联的所述相同数据值的指示。
16.根据权利要求15所述的设备,其中,通过将特定数据值存储在所述报头数据块中的特定位置来提供所述块内的所有数据位置与相同数据值关联的所述指示。
17.根据权利要求15或16所述的设备,其中,通过将与所述块中的各个数据位置关联的所述数据值以未压缩形式存储在所述报头数据块中来提供所述报头数据块中的与所述块中的各个数据位置关联的所述相同数据值的所述指示。
18.根据权利要求15或16所述的设备,其中,所述处理电路还被配置为:
当确定所述数据阵列所分割成的块的所有数据位置不与相同数据值关联时:
存储所述数据阵列的该块的报头数据块、以及所述数据阵列的所述块所涉及的子块的子块数据的单独集合二者,所述报头数据块包含与所述数据阵列的、所述报头数据块所涉及的所述块的子块有关的数据。
19.根据权利要求15或16所述的设备,其中,各个报头数据块包括存储指示与所述报头数据块相对应的子块集合的数据的基础存储器位置的指针数据的数据字段以及存储与所述报头数据块相对应的子块集合中的各个子块的大小指示值的数据字段。
20.根据权利要求19所述的设备,其中,通过针对与所述报头数据块相对应的子块集合中的特定子块在存储大小指示值的所述数据字段中存储特定数据值来提供所述块内的所有数据位置与相同数据值关联的所述指示。
21.根据权利要求19所述的设备,其中,所述处理电路被配置为在存储指示与报头数据块相对应的子块集合的数据的基础存储器位置的指针数据的所述数据字段中利用浮点数表示来存储指示与所述报头数据块相对应的子块集合的数据的基础存储器位置的指针数据。
22.根据权利要求15或16所述的设备,其中,所述处理电路被配置为通过以下操作来确定所述数据阵列所分割成的块是否具有与所述块的所有数据位置关联的相同数据值:
从存储器读取所述数据块的数据位置的数据值并且比较它们以查看它们是否全部相同。
23.根据权利要求15或16所述的设备,该设备还包括处理电路,该处理电路被配置为:
处理数据阵列的块以生成所述数据阵列的数据的块;并且
将所述数据阵列的所述块写入到缓冲器;
并且其中,所述处理电路还被配置为:
通过以下操作来确定所述数据阵列所分割成的块的所有数据位置是否与相同数据值关联:
基于在所述数据被写入到所述缓冲器之前所述数据阵列的所述块的所述处理和/或基于数据到所述缓冲器的所述写入,确定所述数据阵列的块是否具有与所述块的各个数据位置关联的相同数据值。
24.根据权利要求23所述的设备,其中,所述设备被实现在基于拼块的图形处理器中,该基于拼块的图形处理器包括拼块缓冲器,该拼块缓冲器被配置为在渲染的片段数据被写出到存储器之前将采样位置的所述渲染的片段数据本地存储到所述图形处理系统的图形处理器;
并且所述处理电路被配置为通过以下操作来确定所述数据阵列所分割成的块的所有数据位置是否与相同数据值关联:
当渲染图形片段以生成渲染的片段数据,各个图形片段与拼块中的要渲染的一个或更多个采样位置的集合关联,并且将所述拼块中的采样位置的所述渲染的片段数据写入到所述拼块缓冲器时:
基于渲染的片段数据针对拼块到所述拼块缓冲器的所述写入,确定包括拼块的多个采样位置的块是否具有与所述块中的所述多个采样位置中的每一个关联的相同数据值。
25.根据权利要求24所述的设备,其中,所述处理电路被配置为通过确定对于所述块中的所述多个采样位置中的任何采样位置,没有渲染的片段数据被写入到所述拼块缓冲器,来识别相同数据值采样位置的块。
26.根据权利要求24所述的设备,其中,所述处理电路被配置为:
当拼块的数据被写入到所述拼块缓冲器时,跟踪特定渲染片段数据值到所述拼块缓冲器中的所述采样位置的写入;并且
基于在将渲染的片段数据写入到所述拼块缓冲器时对所述特定数据值的所述跟踪,识别包括拼块的多个采样位置的块,各个采样位置与包括相同数据值的渲染的片段数据关联。
27.一种在数据处理系统中确定用于所存储的数据阵列的数据位置的数据值的设备,该设备包括处理电路,该处理电路被配置为:
读取针对所述数据阵列的、所述数据位置所落入的块所存储的报头数据块;
确定所述报头数据块是否包含所述数据阵列的所述块的所有数据位置具有相同数据值的指示;
并且当从所述报头数据块确定针对所述数据阵列的、所述报头数据块所涉及的所述块,所存储的数据阵列的所有数据位置具有相同数据值时:
从存储在所述报头数据块中的其它数据确定用于所述数据位置的值。
28.根据权利要求27所述的设备,其中,所述处理电路被配置为基于报头数据块中的特定位置是否存在特定数据值来确定所述报头数据块是否包含所述数据阵列的所述块的所有数据位置具有相同数据值的指示。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1605348.0 | 2016-03-30 | ||
GB1605348.0A GB2548852B (en) | 2016-03-30 | 2016-03-30 | Method of operating a graphics processing pipeline by compressing a block of sampling positions having the same data value |
GB1608555.7 | 2016-05-16 | ||
GB1608555.7A GB2548928B (en) | 2016-03-30 | 2016-05-16 | Compressing an array based on an indication that blocks of data positions within the array have the same data value |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107273301A true CN107273301A (zh) | 2017-10-20 |
CN107273301B CN107273301B (zh) | 2023-08-29 |
Family
ID=56027595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710205035.2A Active CN107273301B (zh) | 2016-03-30 | 2017-03-30 | 存储阵列的方法和设备、确定数据值的方法和设备、介质 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10001941B2 (zh) |
KR (1) | KR102371799B1 (zh) |
CN (1) | CN107273301B (zh) |
GB (2) | GB2548852B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108492243A (zh) * | 2018-04-13 | 2018-09-04 | 福州新迪微电子有限公司 | 一种基于块处理的图像旋转装置、系统和方法 |
CN111556320A (zh) * | 2019-02-12 | 2020-08-18 | Arm有限公司 | 数据处理系统 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
GB2548852B (en) | 2016-03-30 | 2020-10-28 | Advanced Risc Mach Ltd | Method of operating a graphics processing pipeline by compressing a block of sampling positions having the same data value |
US10735826B2 (en) * | 2017-12-20 | 2020-08-04 | Intel Corporation | Free dimension format and codec |
GB2571979B8 (en) * | 2018-03-15 | 2023-07-12 | Advanced Risc Mach Ltd | Graphics processing |
KR20220010768A (ko) * | 2019-05-20 | 2022-01-26 | 시놉시스, 인크. | 머신 러닝 기반 인코딩을 이용한 전자 회로 레이아웃에서의 패턴들의 분류 |
US20220253236A1 (en) * | 2019-07-02 | 2022-08-11 | Microsoft Technology Licensing, Llc | Hardware-based memory compression |
US11023152B2 (en) * | 2019-07-12 | 2021-06-01 | Arm Limited | Methods and apparatus for storing data in memory in data processing systems |
US11789867B2 (en) | 2020-01-14 | 2023-10-17 | Arm Limited | Cache arrangement for data processing systems |
US11205243B2 (en) * | 2020-01-14 | 2021-12-21 | Arm Limited | Data processing systems |
US11625332B2 (en) | 2020-01-14 | 2023-04-11 | Arm Limited | Cache miss handling for read operations in data processing systems |
US11380042B2 (en) | 2020-06-26 | 2022-07-05 | Imagination Technologies Limited | Intersection testing in ray tracing systems using hierarchical acceleration structures with implicitly represented nodes |
US11335055B2 (en) | 2020-06-26 | 2022-05-17 | Imagination Technologies Limited | Intersection testing in ray tracing systems with skipping of nodes in sub-trees of hierarchical acceleration structures |
US11403803B2 (en) * | 2020-06-26 | 2022-08-02 | Imagination Technologies Limited | Hierarchical acceleration structures for use in ray tracing systems |
US20220100518A1 (en) * | 2020-09-25 | 2022-03-31 | Advanced Micro Devices, Inc. | Compression metadata assisted computation |
US20220206685A1 (en) * | 2020-12-31 | 2022-06-30 | Advanced Micro Devices, Inc. | Reusing remote registers in processing in memory |
US11978156B2 (en) * | 2022-03-18 | 2024-05-07 | Arm Limited | Graphics processing |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6115787A (en) * | 1996-11-05 | 2000-09-05 | Hitachi, Ltd. | Disc storage system having cache memory which stores compressed data |
US20020000988A1 (en) * | 2000-01-11 | 2002-01-03 | Sun Microsystems, Inc. | Rendering lines with sample weighting |
US20020171653A1 (en) * | 2001-05-18 | 2002-11-21 | Lavelle Michael G. | Spltting grouped writes to different memory blocks |
US20030025701A1 (en) * | 2001-07-31 | 2003-02-06 | David Kehlet | Graphics pixel packing for improved fill rate performance |
CN101002226A (zh) * | 2004-08-11 | 2007-07-18 | 皇家飞利浦电子股份有限公司 | 基于条纹的图像数据存储 |
US20080273804A1 (en) * | 2007-05-02 | 2008-11-06 | Motorola, Inc. | Image Transformation |
CN102033809A (zh) * | 2009-09-25 | 2011-04-27 | Arm有限公司 | 控制从存储器中读取数据阵列的方法和装置 |
US20130198485A1 (en) * | 2011-08-04 | 2013-08-01 | Jorn Nystad | Methods of and apparatus for storing data in memory in data processing systems |
CN104424621A (zh) * | 2013-08-30 | 2015-03-18 | Arm有限公司 | 图形处理系统 |
CN105023233A (zh) * | 2014-04-16 | 2015-11-04 | Arm有限公司 | 图形处理系统 |
CN105374005A (zh) * | 2014-08-11 | 2016-03-02 | Arm有限公司 | 数据处理系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6130680A (en) * | 1997-12-01 | 2000-10-10 | Intel Corporation | Method and apparatus for multi-level demand caching of textures in a graphics display device |
US6985903B2 (en) * | 2002-01-25 | 2006-01-10 | Qualcomm, Incorporated | Method and system for storage and fast retrieval of digital terrain model elevations for use in positioning systems |
US6982713B2 (en) * | 2003-01-13 | 2006-01-03 | Xgi Technology Inc. | System and method for clearing depth and color buffers in a real-time graphics rendering system |
US7505043B2 (en) * | 2004-08-30 | 2009-03-17 | Qualcomm Incorporated | Cache efficient rasterization of graphics data |
US8184117B2 (en) * | 2007-05-01 | 2012-05-22 | Advanced Micro Devices, Inc. | Stencil operations |
US8682053B2 (en) * | 2010-01-08 | 2014-03-25 | Siemens Aktiengesellschaft | Method for sampling volume data of an object in an imaging device |
US8990518B2 (en) | 2011-08-04 | 2015-03-24 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
US8542939B2 (en) * | 2011-08-04 | 2013-09-24 | Arm Limited | Methods of and apparatus for using tree representations for representing arrays of data elements for encoding and decoding data in data processing systems |
US9014496B2 (en) | 2011-08-04 | 2015-04-21 | Arm Limited | Methods of and apparatus for encoding and decoding data in data processing systems |
US9899007B2 (en) * | 2012-12-28 | 2018-02-20 | Think Silicon Sa | Adaptive lossy framebuffer compression with controllable error rate |
US9741089B2 (en) * | 2013-05-02 | 2017-08-22 | Arm Limited | Graphics processing systems |
US9607356B2 (en) * | 2013-05-02 | 2017-03-28 | Arm Limited | Graphics processing systems |
US9311743B2 (en) * | 2013-10-23 | 2016-04-12 | Qualcomm Incorporated | Selectively merging partially-covered tiles to perform hierarchical z-culling |
US9916251B2 (en) * | 2014-12-01 | 2018-03-13 | Samsung Electronics Co., Ltd. | Display driving apparatus and cache managing method thereof |
GB2548852B (en) | 2016-03-30 | 2020-10-28 | Advanced Risc Mach Ltd | Method of operating a graphics processing pipeline by compressing a block of sampling positions having the same data value |
-
2016
- 2016-03-30 GB GB1605348.0A patent/GB2548852B/en active Active
- 2016-05-16 GB GB1608555.7A patent/GB2548928B/en active Active
-
2017
- 2017-03-25 US US15/469,503 patent/US10001941B2/en active Active
- 2017-03-29 US US15/472,637 patent/US10430099B2/en active Active
- 2017-03-30 KR KR1020170040416A patent/KR102371799B1/ko active IP Right Grant
- 2017-03-30 CN CN201710205035.2A patent/CN107273301B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6115787A (en) * | 1996-11-05 | 2000-09-05 | Hitachi, Ltd. | Disc storage system having cache memory which stores compressed data |
US20020000988A1 (en) * | 2000-01-11 | 2002-01-03 | Sun Microsystems, Inc. | Rendering lines with sample weighting |
US20020171653A1 (en) * | 2001-05-18 | 2002-11-21 | Lavelle Michael G. | Spltting grouped writes to different memory blocks |
US20030025701A1 (en) * | 2001-07-31 | 2003-02-06 | David Kehlet | Graphics pixel packing for improved fill rate performance |
CN101002226A (zh) * | 2004-08-11 | 2007-07-18 | 皇家飞利浦电子股份有限公司 | 基于条纹的图像数据存储 |
US20080273804A1 (en) * | 2007-05-02 | 2008-11-06 | Motorola, Inc. | Image Transformation |
CN102033809A (zh) * | 2009-09-25 | 2011-04-27 | Arm有限公司 | 控制从存储器中读取数据阵列的方法和装置 |
US20130198485A1 (en) * | 2011-08-04 | 2013-08-01 | Jorn Nystad | Methods of and apparatus for storing data in memory in data processing systems |
CN104424621A (zh) * | 2013-08-30 | 2015-03-18 | Arm有限公司 | 图形处理系统 |
CN105023233A (zh) * | 2014-04-16 | 2015-11-04 | Arm有限公司 | 图形处理系统 |
CN105374005A (zh) * | 2014-08-11 | 2016-03-02 | Arm有限公司 | 数据处理系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108492243A (zh) * | 2018-04-13 | 2018-09-04 | 福州新迪微电子有限公司 | 一种基于块处理的图像旋转装置、系统和方法 |
CN111556320A (zh) * | 2019-02-12 | 2020-08-18 | Arm有限公司 | 数据处理系统 |
Also Published As
Publication number | Publication date |
---|---|
KR102371799B1 (ko) | 2022-03-08 |
CN107273301B (zh) | 2023-08-29 |
GB2548852B (en) | 2020-10-28 |
GB201605348D0 (en) | 2016-05-11 |
KR20170113380A (ko) | 2017-10-12 |
US10001941B2 (en) | 2018-06-19 |
GB2548928B (en) | 2020-09-30 |
US10430099B2 (en) | 2019-10-01 |
US20170285955A1 (en) | 2017-10-05 |
GB2548928A (en) | 2017-10-04 |
US20170287101A1 (en) | 2017-10-05 |
GB2548852A (en) | 2017-10-04 |
GB201608555D0 (en) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107273301A (zh) | 数据处理系统 | |
US9014496B2 (en) | Methods of and apparatus for encoding and decoding data in data processing systems | |
US10748510B2 (en) | Framebuffer compression with controllable error rate | |
US8542939B2 (en) | Methods of and apparatus for using tree representations for representing arrays of data elements for encoding and decoding data in data processing systems | |
US11023152B2 (en) | Methods and apparatus for storing data in memory in data processing systems | |
KR102269905B1 (ko) | 데이터 처리 시스템 | |
US10726519B2 (en) | Cache arrangement for graphics processing systems | |
US9116790B2 (en) | Methods of and apparatus for storing data in memory in data processing systems | |
CN110996105B (zh) | 可变速率压缩的方法和可变速率解压缩的方法 | |
CN106030652B (zh) | 提供输出面的方法、系统和合成显示控制器及计算机介质 | |
US10824357B2 (en) | Updating data stored in a memory | |
US11263786B2 (en) | Decoding data arrays | |
US20180004443A1 (en) | Accessing encoded blocks of data in memory | |
GB2601504A (en) | Data compression and packing | |
CN107241597B (zh) | 一种结合四叉树自适应编码的可逆信息隐藏方法 | |
US9324163B2 (en) | Methods of and apparatus for compressing depth data | |
KR100852958B1 (ko) | 서브픽셀 렌더링과 데이터 압축을 이용한 디스플레이드라이버 장치 및 그 제어방법 | |
EP4009639A1 (en) | Data compression and packing | |
US11327687B2 (en) | Encoding data arrays | |
US11954028B2 (en) | Accessing encoded blocks of data | |
CN102291576B (zh) | 显示及记录彩色图像旋转的方法及装置 | |
KR20200027142A (ko) | 이미지 처리 장치 및 방법 |
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 |