用于图形应用的基于瓦片的压缩与解压缩的制作方法

文档序号:7800762阅读:122来源:国知局
用于图形应用的基于瓦片的压缩与解压缩的制作方法
【专利摘要】本发明涉及用于图形应用的基于瓦片的压缩与解压缩。公开了用于基于瓦片的压缩的系统和方法。图像数据,例如帧,可以被划分成瓦片。瓦片可基于行缓冲器的大小被设计大小。瓦片被单独地压缩和解压缩。当图像帧的部分被更新时,相应的被更新瓦片可被压缩并存储。同样,当瓦片被访问时,它们可被解压缩和流式传输到请求设备。在一些实施方式中,可操作以对瓦片进行解压缩的解码器可以插入在存储设备和请求设备之间。对一个或多个压缩瓦片进行编码的数据可以被分组,以使得能够以每时钟周期四个像素的速率解压缩。公开了用于压缩包含RGB和RGBα分量的图像数据的方法。
【专利说明】用于图形应用的基于瓦片的压缩与解压缩

【技术领域】
[0001] 本发明涉及用于压缩和解压缩图像数据的系统和方法。

【背景技术】
[0002] 现代图形引擎通常将图像呈现或构图到帧缓冲器中,它通常是系统存储器或DDR。 在许多这样的系统中,图形硬件和系统存储器不在同一芯片上。图形硬件也经常被推到极 限以处理更高分辨率的复杂图形,以及处理图形数据的多个源和目标。
[0003] 因此,增加数据量需要在图形和其他子系统的周围非常迅速地搬移。以极高的速 度搬移大量的数据对电力、散热和性能要求提出了挑战。因此,关键的是要减少用于将数据 移进移出系统存储器所需要的带宽。许多系统可操作来压缩数据,将其存储,然后在需要时 解压缩数据。
[0004] 本文所述的系统和方法提供用于将图像数据的压缩和解压缩包含到图像处理系 统的改进途径。

【专利附图】

【附图说明】
[0005] 为了使本发明的优点容易理解,以上简要描述的本发明的更具体的描述将通过参 考在附图中示出的【具体实施方式】来呈现。应理解,这些附图仅描绘了本发明的典型实施方 式,并且因此不被认为是对其范围的限制,通过使用附图,本发明将利用附加特征和细节被 描述和解释,其中:
[0006] 图1是适用于实现根据本发明的实施方式的方法的计算系统的示意性框图;
[0007] 图2是根据本发明的一个实施方式的图形和显示处理系统的部件的示意性框图;
[0008] 图3是根据本发明的一个实施方式的用于在线解压缩图形数据的方法的过程流 程图;
[0009] 图4是根据本发明的一个实施方式的用于压缩图形数据的方法的过程流程图;
[0010] 图5是根据本发明的一个实施方式的用于计算像素误差的码元的方法的过程流 程图;
[0011] 图6是根据本发明的一个实施方式的用于编码像素误差的码元的方法的过程流 程图;
[0012] 图7是根据本发明的一个实施方式的用于编码像素误差的最低有效位的方法的 过程流程图;
[0013] 图8是根据本发明的一个实施方式的用于解码压缩的图形数据的方法的过程流 程图;
[0014] 图9是根据本发明的一个实施方式的用于从压缩的图形数据提取码元的方法的 过程流程图;
[0015] 图10是根据本发明的一个实施方式的用于解码从压缩的图形数据提取的交织的 误差的方法的过程流程图;
[0016] 图11是用于从解压缩的误差数据中提取最终的像素值的方法的过程流程图;
[0017] 图12是根据本发明的一个实施方式的用于格式化压缩的瓦片数据以进行流式传 输的方法的过程流程图;及
[0018] 图13是根据本发明的一个实施方式的用于压缩包括α值的图形数据的方法的过 程流程图。

【具体实施方式】
[0019] 将容易理解,本发明的部件,如在此概括描述和附图中示出的,可以被布置和设计 成多种不同的结构。因此,本发明的实施方式的以下更详细的描述,如在图中表示的,并不 旨在限制要求权利的本发明的范围,而仅仅代表根据本发明的当前设想的实施方式的某些 实例。目前描述的实施方式通过参考附图将得到最好的理解,其中相同的部件始终用相同 的标号指定。
[0020] 本发明响应于本领域的当前状态,特别是响应于通过当前可用的装置和方法尚未 得到充分解决的本领域中的问题和需求,而被提出。因此,本发明已经被开发以提供用于压 缩多个瓦片(tile)中的图像帧的装置和方法。瓦片的大小可以等于图形系统中的设备的 缓冲器(如行缓冲器)的大小。瓦片可被进一步格式化,使得当瓦片的数据在设备之间流式 传输时,瓦片可被解压缩,如通过在线解码器。
[0021] 在图形呈现或构造的大多数使用情况下,仅需要改变或更新整个图像或帧的一小 部分。许多传统的图像或视频压缩工作基于逐行或逐帧。这些压缩技术非常适合于图像,其 已在待执行压缩的全帧或全行可用,如视频帧或静止图像帧,它可以被存储和重复回放。然 而,在许多情况下,图形的二维或三维帧被现场生成,每帧被呈现和发送用于仅显示一次。 例如,图形用户界面可能需要在由用户触摸屏或进行其它交互后再次生成,然后在屏幕上 重新显示。
[0022] 图形图像或帧通常映射到具有特定的访问模式的特定的存储位置。在本文公开的 实施方式中,帧可以被网格化成瓦片,使得只有特定的受影响的瓦片需要进行更新,且相应 的存储位置需要改变。每个瓦片然后可以被单独地压缩和解压缩以提供灵活性和高压缩 t匕。可以选择每个瓦片的大小和纵横比,以提高存储器的访问效率和总体系统性能。由发 明人进行的实验已经发现,本文公开的方法可达到对于8幅测试图像和32字节的突发脉冲 每24位像素10. 05比特的压缩效率及对于具有64字节的突发脉冲的8幅测试图像每像素 12. 19比特的压缩效率。
[0023] 由发明人进行的实验还发现,在选择瓦片大小时某些因素是有用的。例如,由发明 人进行的实验已经表明,覆盖16到64个像素的范围的瓦片适合于许多应用,特别是图形构 成。在许多系统中,显示子系统将需要以给定的刷新率实时地逐行处理像素。像素数据通 常被存储在行缓冲器中,其是本地驻留在显示子系统附近的片上存储器。行缓冲器通常具 有有限的尺寸,使得它们可以在某一时间保持很少行的像素,例如1行或2行。因此,瓦片 的高度可以有利地限制在每瓦片1个或2个像素高,例如行缓冲器中的行的数目。因此,水 平8-64个像素(例如行缓冲器的宽度)X垂直1-2个像素的瓦片大小可有利地有效地利用 有限的容量尺寸的行缓冲器。
[0024] 鉴于许多DDR (双倍数据速率)存储器访问被限制为对齐的256字节,瓦片的边界 可以有利地约束为位于256字节的边界上。由于像素通常包括每像素32位(4字节)数据, 每256个字节存储数据将会有64个像素。因此,匹配此64-像素约束可以有利地包括使用 64X1或者32X2的尺寸。在图像的尺寸不是瓦片大小的倍数的情况下,一行中的最后一个 像素可以被重复以填充瓦片。
[0025] 图像的每个瓦片或帧可以被单独压缩和解压缩。可以对每个被压缩的瓦片数据进 行传输,并将其写入与后续的瓦片对齐的存储位置。对于现有的压缩算法来说,对于比如本 文描述的瓦片量级的小数据块很难获得显著的压缩率。本文描述的系统和方法对于比如 64X 1像素、32X2像素、16X4像素、8X8像素、以及其他瓦片大小的量级的瓦片提供了大 的压缩率。
[0026] 在一些实施方式中,除了构成帧的瓦片的瓦片数据之外,图像头、或瓦片状态数 据,也可以与帧关联,并且包含压缩信息。图像头可以包含少量数据,并且与帧的瓦片一同 被存储在存储器中。显示控制器可以可操作地从存储器中获取该瓦片状态数据,并且请求 该帧的压缩的瓦片。瓦片随后可以被解压缩并且被逐行地返回给显示控制器。
[0027] 在下面更详细地描述了用于解压缩图形系统中的瓦片的系统和方法。
[0028] 与本发明一致的实施方式可以被实现为装置、方法、或计算机程序产品。因此,本 发明可以采用纯硬件的实施方式、纯软件的实施方式(包括固件、驻留软件、微代码等)、或 结合在本文中被统称为"模块"或"系统"的软件方面和硬件方面的实施方式的形式。此外, 本发明可以采用在任何有形介质表现形式中实现的计算机程序产品的形式,所述有形介质 表现形式含有在所述介质中实现的计算机可以使用的程序代码。
[0029] 可以使用一个或多个计算机可使用的介质或计算机可读介质的任意组合。例如, 计算机可读介质可以包含一个或多个便携计算机磁盘、硬盘、随机访问存储器(RAM)设备、 只读存储器(ROM)设备、可擦写可编程的只读存储器(EPROM或闪存)设备、便携压缩磁盘只 读存储器(CDR0M)、光存储设备、以及磁存储设备。在所选择的实施方式中,计算机可读介质 可以包括可包含、存储、传送、传播、或传输由指令执行系统、装置、或设备所使用的或与其 相结合使用的程序的任何非暂时性介质
[0030] 用于执行本发明的操作的计算机程序代码可以用一种或多种编程语言的任意组 合进行编写,所述编程语言包括比如Java、Smalltalk、C++等的面向对象的编程语言,以及 t匕如"C"编程语言或类似的编程语言的传统的过程化的编程语言。程序代码可以作为独立 的软件包全部在计算机系统上执行、全部在独立的硬件单元上执行、部分在与计算机相隔 一定距离的远程计算机上执行、或全部在远程计算机或服务器上执行。在后面的这种情况 中,可以通过任何类型的网络将远程计算机连接到计算机,所述网络包括局域网(LAN)或广 域网(WAN),或者所述连接可通过外部计算机(例如,使用互联网服务提供商通过互联网)实 现。
[0031] 下面参照根据本发明的实施方式的方法、装置(系统)和计算机程序产品的流程图 说明和/或框图描述本发明。需要了解的是,流程图说明和/或框图中的每个框,以及流程 图说明和/或框图中的框的组合,都可以用计算机程序指令或代码来实现。这些计算机程 序指令可以被提供给通用计算机、专用计算机、或其他可编程的数据处理装置的处理器,以 产生一种机器,使得通过计算机或其他可编程的数据处理装置执行的这些指令产生用来实 现流程图和/或框图的一个或多个框中指定的功能/动作。
[0032] 这些计算机程序指令还可以被储存在非暂时性的计算机可读介质中,从而能够指 示计算机或其他的可编程数据处理装置以特定的方式运行,使得存储在计算机可读介质中 的指令产生了可以制造的物品,所述可以制造的物品实现流程图和/或框图的一个或多个 框中指定的功能/动作。
[0033] 计算机程序指令还可以被加载到计算机或其他的可编程数据处理装置上,以引起 在计算机或其他的可编程装置上执行一系列步骤,从而产生计算机实现的过程,所述计算 机实现的过程使得在计算机或其他的可编程装置上执行的指令提供用于实现流程图和/ 或框图的一个或多个框中指定的功能/动作的过程。
[0034] 图1是说明示例的计算设备100的框图。计算设备100可以被用来执行比如本文 中所讨论的各种步骤。计算设备100能起到服务器、客户端、或任何其他的计算实体的作 用。计算设备可以执行如本文讨论的各种监控功能,并且能够执行比如本文所讨论的应用 程序的一个或多个应用程序。计算设备100可以是比如台式电脑、笔记本电脑、服务器电 脑、手持电脑、平板电脑等众多计算设备中的任何一种。
[0035] 计算设备100包括都连接到总线112的一个或多个处理器102、一个或多个存储设 备104、一个或多个接口 106、一个或多个海量存储设备108、一个或多个输入/输出(I/O) 设备110、以及显示设备130。处理器102包括执行存储在存储设备104和/或海量存储设 备108中的指令的一个或多个处理器或控制器。处理器102还可以包括比如缓存的多种类 型的计算机可读介质。
[0036] 存储设备104包括各种计算机可读介质,比如易失性存储器(例如,随机存取存储 器(RAM) 114)和/或非易失性存储器(比如,只读存储器(ROM) 116)。存储设备104还可以 包括比如闪存的可重写ROM。
[0037] 海量存储设备108包括各种计算机可读介质,比如磁带、磁盘、光盘、固态存储器 (例如,闪存)等等。如在图1中示出的,具体的海量存储设备是硬盘驱动器124。还可以在 海量存储设备108中包括多种驱动器,以使从多种计算机可读介质中读取和/或向其中写 入成为可能。海量存储设备108包括可移除介质126和/或不可移除介质。
[0038] I/O设备110包括允许向计算设备100输入数据和/或其他信息或从其获取数据 和/或其他信息的各种设备。示例的I/O设备110包括光标控制设备、键盘、按键平板、麦 克风、监视器或其他显示设备、扬声器、打印机、网络接口卡、调制解调器、透镜、(XD或其他 图像捕获设备等等。
[0039] 显示设备130包括能够向计算设备100的一个或多个用户显示信息的任何类型的 设备。显示设备130的示例包括监视器、显示终端、视频投影设备等等。
[0040] 接口 106包括允许计算设备100与其他系统、设备、或计算环境交互的各种接口。 示例接口 106包括比如到局域网(LAN)、广域网(WAN)、无线网络、以及互联网的接口的任意 数目的不同网络接口 120。其他的接口包括用户接口 118和外围设备接口 122。接口 106 还可以包括一个或多个用户接口元件118。接口 106还可以包括比如用于打印机、指示设备 (鼠标、轨迹面板等)、键盘等的接口的一个或多个外围接口。
[0041] 总线112允许处理器102、存储设备104、接口 106、海量存储设备108和I/O设备 110、以及耦合到总线112的其他设备或部件彼此通信。总线112表示比如系统总线、PCI总 线、IEEE1394总线、USB总线等多种总线结构类型中的一种或多种。
[0042] 出于说明的目的,程序和其他的可执行程序部件在本文中被示出为分立的框,尽 管需要了解的是,这些程序和部件也可以在各个时间驻留在计算设备100的不同的存储部 件中,并且由处理器102执行。可选择地,本文描述的系统和步骤可以在硬件中实现,或者 在硬件、软件、和/或固件的组合中实现。例如,可以对一个或多个专用集成电路(ASIC)编 程以执行本文描述的一个或多个系统和步骤。
[0043] 参照图2,比如计算设备100的计算设备可以包含图形系统200,图形系统200包 括所示出的部件中的一些或全部,以及本领域已知的用于图形处理的任何其他的部件。
[0044] 图形系统200可以包括耦合到显示器130的显示控制器202。如本领域中已知的, 显示控制器202可操作地将像素帧转换成数字或模拟视频信号,用于引起该帧的表示在显 示器130上显示。显示控制器202可以包括像素域206,以帮助根据数字视频接口(DVI)协 议或某种其他协议将像素数据同步传输到显示器130。
[0045] 显示控制器202通过总线的方式可以与一个或多个设备通信,比如像先进的可 扩展接口(AXI)规范的与缓存一致性总线架构。显示控制器202可以包括AXI域208, 以帮助通过AXI总线同步通信。AXI规范允许仅仅根据起始地址的基于突发的处理 (transaction)。如在下面更详细地描述的,使用压缩的瓦片数据可以有利地实现突发模式 中的数据的流式传输。
[0046] 显示控制器202可以可操作地耦合到AXI互连结构(fabric) 210,所述AXI互连 结构210可以将其他的设备连接到显示控制器202和另外的其他设备。例如,AXI互连结 构210可以连接到存储控制器212、图形核214、以及任何其他的客户端设备216。
[0047] 在许多应用中,图形核214可以包括编解码器218,其用于压缩和解压缩图像和视 频数据。在许多例子中,编解码器218可以来自与显示控制器202不同的供货商,并且因此 不能很容易地被显示控制器202使用,以执行视频数据的压缩和解压缩。
[0048] 如在下面将更详细讨论的,本文描述的基于瓦片的压缩和解压缩方法可以有利地 使用介于AXI互连结构210、或到存储设备的某种其他的接口与显示控制器202之间的解码 器220。解码器220可以与域控制器的AXI域206通信。也就是说,在按照AXI协议进行 通信的背景中,来自解码器220的数据可以将解压缩的像素透明地传送到显示控制器202。 同样如本文中所描述的,解码器220可以有利地执行传送到显示控制器的像素数据的流式 解压缩,其对显示控制器202是透明的,因而有助于像素数据的快速呈现,同时减少了存储 像素数据所需要的存储器的数量。
[0049] 例如,图3示出了通过其可以将存储在存储设备114中的压缩的像素数据流式传 输给显示控制器202、或比如图形核212的其他设备的高层方法300。下面包含了方法300 的步骤的更详细的描述。
[0050] 当设备访问特定的像素位置时,对应的瓦片可以随后被解压缩。例如,在图2的系 统200的背景中,方法300可以包括获取302瓦片头。瓦片头可以包括描述帧的瓦片的信 息,比如每个压缩瓦片的大小、每个瓦片的起始地址、帧的瓦片被存储的存储位置的范围、 或其他数据。在一些实施方式中,每个瓦片都具有比如4比特的瓦片状态值。用于瓦片状态 值的1至8的值表示需要多少32字节对该瓦片进行解码,例如,压缩的瓦片的大小。对于 RGB888的颜色格式,瓦片状态值6可以表示瓦片包含原始的RGB888数据。对于RGB α 8888 数据,值6可以表示压缩的数据,并且瓦片状态值8可以表示瓦片包括原始的RGB α 8888数 据。获取302瓦片头的步骤可以通过比如显示控制器202的请求设备在取回用于在显示器 130上呈现帧的像素数据的过程中执行。对于瓦片头的请求通过AXI互连结构210可以被 定向到存储控制器212。
[0051] 使用瓦片头,请求设备可以随后产生304对帧中的瓦片内、或所有瓦片的像素的 读取请求。例如,请求设备可以请求对应该帧中的下一瓦片的字节数量,其中在该瓦片中的 字节的数量通过该瓦片的瓦片状态数据表示。所述读取请求可以被发送到存储控制器212。 当存储控制器212响应该读取请求时,对应于该读取请求的压缩的数据流可以通过解码器 220被流式传输306给请求设备,所述解码器220可操作地对所述数据流进行实时解码。在 下面对用来对压缩的数据流进行解码的方法继续进行更详细的描述。解码器随后向请求设 备返回308解压缩的数据。如在上面提到的,AXI接口提供了通过其数据请求仅需要指定 起始地址的突发数据转移。在一些实施方式中,压缩瓦片的突发转移可以通过解码器传输、 由解码器解压缩、并且解压缩的数据以透明的方式被传输到请求设备。如将在下面更详细 描述的,压缩的瓦片可以以允许对该瓦片中的单个像素进行流式解压缩的方式进行存储和 /或传输。
[0052] 图4示出了用于压缩像素瓦片的方法400。特别是,方法400示出了用于压缩瓦片 的单个像素("当前像素")的方法,可以对瓦片的除了初始像素的所有像素重复该方法。方 法400可以由图形系统或比如在图形核212或某个其他的处理器内的电子设备执行。
[0053] 方法400可以包括计算402当前像素相对于预测像素的误差。预测像素可以包含 瓦片中的在前的像素。瓦片的初始像素可以不经过压缩就被包含到压缩的瓦片。计算误差 可以包括计算每个分量(RGB或RGBa )相对于预测像素的对应分量的误差。因此,误差可 以是一组误差:初始Error [i]=当前[i]_预测[i],其中i是对应于RGB的红色、绿色和蓝 色分量的从〇至2的值,并且对应于RGB α的从〇至3的值,其中第四个值表示α误差。
[0054] 方法400可以包括执行404误差(0rgError[i])的颜色变换。例如,可反转的颜 色变换(RCT)Erro;r[i]可以按照如下方法执行:Erro;r[2]=0rgE;r;ro;r[2]-0rgE;r;ro;r[l] ;Err or [1] =0rgError [1]-OrgError [0] ;Error [0] =0rgError [0]。RCT 变换导致节省了接近每个 像素1比特,或节省了原始图像的大约8%的带宽。
[0055] 方法400可以包含产生406颜色变换误差的交织误差。特别是,产生406交织误差 可以包括对所述颜色变换误差的绝对值进行交织。例如,在绝对Error [i] =Abs(Error [i]), 并且Rn…Rq是AbsError[0]的比特,Gn…G Q是AbsError[1]的比特,而Bn…BQ是AbsError[2] 的比特的情况下,交织误差可以被表示成PackAbsErrorzRj^Gj^mi…Ι^Β。。用不同 的方式进行说明,PackAbsError的第i个比特是AbsError[i%3]的第(i/3)个比特。还可 以为交织误差确定大小。该大小可以被表示成PackAbsError大小=Leading0nePosition (PackAbsError)+1。例如,如果交织误差是10010,那么PackAbsError大小就是5。如果 PackAbsError等于0,那么其大小也为0。
[0056] 方法400可以包括计算408交织误差的码元并且对该码元进行编码。用于计算408 码元的方法在下面结合图5进行了描述。编码410该码元可以包括使用变长编码(VLC)方 法,该方法可以利用交织误差的大小可变的事实的优点。在示出的示例中,使用了霍夫曼编 码。在下面结合图6描述了用于对该码元进行编码410的方法。
[0057] 如在下面更详细地描述的,该码元和该码元的编码可以不对交织误差的所有比特 进行编码。因此,方法400可以包括对交织误差(例如,PackAbsError)的未编码的最低有 效位(LSB)进行编码412。下面结合图7对用于对交织误差的LSB进行编码412的方法进 行了更详细的描述。
[0058] 如上面提到的,交织误差可以包括上面描述的交织的误差绝对值、或颜色变换误 差。因此,方法400可以包括对该误差的符号(sign)进行编码414。因为特定的误差(例 如,颜色变换误差)是〇还是非〇可以很容易地通过对交织误差进行解交织来确定,对误差 的符号编码414可以仅仅包括对非0误差的符号比特进行编码414。例如,每个非0误差的 位可以包含在带符号的字符串中,用0表示正号而用1表示负号。在一些实施方式中,在用 于误差的带符号的字符串中没有包含在其原始形式中包含的符号比特。如在下面更详细地 描述的,在交织误差超过特定值的地方,使用原始像素数据来表示压缩瓦片中的像素。
[0059] 编码的码元、编码的LSB、以及编码的符号随后可以被存储在压缩的瓦片中,所述 压缩的瓦片作为方法400的主体的像素的表示。用于瓦片的初始像素和其余的根据方法 400压缩的像素可以包括瓦片的压缩表示,比如由多个瓦片构成的帧的瓦片。
[0060] 图5示出了用于对交织误差的一些或全部比特的码元进行编码的方法500,例如, 该交织误差是等于X并具有大小S的PackAbsError。所示出的方法500用于包含24比特 的颜色(即,每8比特分别用于红色、绿色、以及蓝色)的像素。本领域的技术人员将认识到 可以很容易地针对更大或更小的像素对示出的值进行修改。
[0061] 例如,如果发现502S不大于或等于4,那么码元(Sym)可以被计算504为等于X。 否则,如果发现506S不大于或等于7,那么Sym可以被计算508为S*2+(X&1)。否则,如果 没发现510S大于17, Sym可以被计算512为S+7。否则,如果S大于或等于17,那么Sym可 以被计算为等于24。
[0062] 参照图6,码元,比如根据图5确定的码元,可以使用比如霍夫曼编码的变长编码 (VLC)方法进行编码。例如,方法600可以包括评估602Sym是否等于0。如果Sym等于0, 那么码元可以被编码为等于0,或两个0比特00。
[0063] 否则,方法600可以包括对码元进行VLC编码。例如,可以使第一部分等于 HuffmanTable[0] [Sym]且第二部分等于HuffmanTable[l] [Sym]对该码元进行编码。例 如,长度为N的码字值可以被计算606为Code [N-1?N-2] =Floor ((Sym-1)/8+1)且 Code[N-3?0] = (Sym-l)%8。在所示出的方法中,N等于5。然而,也可以根据被压缩的像素 的大小使用其他的长度。
[0064] 参照图7,如在上面提到的,码元和其的编码表示可以不对交织误差的全部进行编 码。因此,图7的方法700可以被用于对任何没有被编码的码元进行编码的最低有效位进 行编码。例如,如果发现702码元(例如,来自图5的Sym)不小于24,输出704原始RGB值, 例如,像素的压缩版本将简单地为该像素的RGB值。
[0065] 另外,如果发现706Sym不小于14,那么可以输出710值X[S-2?0](例如,除了 交织误差的引导比特的所有比特,PackAbsError=X)。另外,如果没发现710Sym小于4,那 么输出712值X?l[S-3?0],例如,除了引导比特,X的所有比特右移1比特。另外,如果 发现Sym小于4,则不输出714任何比特来编码交织误差的LSB。如在上面提到的,所引用 的值仅仅是示例性的,并且对于不同大小的像素将会不同。
[0066] 图8说明的是根据上述方法解压缩被压缩的像素的过程800。一般,解压缩像素是 压缩过程的逆过程。特别地,被编码的码元被解码802且交织误差是从码元804获得804 的。任何非零的误差的符号位都被提取806。在交织误差是由于颜色变换(诸如RCT)引起 的地方,对交织误差执行反颜色变换以获得个别误差分量的(如,上面的0rgErr 〇r[i])的绝 对值808。个别误差分量然后根据所提取的符号位进行符号设置,并且随后与预测像素进行 合并(如,被添加到预测像素)以获得原始像素810。如上所述,在码元(Sym)指示其原始形 式的像素将被使用的地方,该像素将不包含符号。
[0067] 图9说明的是用于从比特流(诸如来自瓦片的比特流)中提取码元的方法900。在 方法900的实施之前从比特流中提取初始像素。随后可以根据方法900对后续比特进行处 理。
[0068] 方法900可以包括提取比特流的接下来的两比特(V0) 902。如果V0被发现并 不大于零904,那么Sym的值则被设定为零。Sym=0的值对应于零的交织误差。因而,正 在被解压缩的像素的未被压缩的值将是瓦片中在前的像素的值。如果发现并最前面的两 比特不是零904,那么方法900可包括从比特流中读取接下来的三比特(VI) 908且根据 Sym=(V0_l)*8+Vl+l 计算码兀 Sym910。
[0069] 图10说明的是用于从提取的码元Sym获得交织误差(如,PackAbsError)的方法 1000。如果没发现l〇〇2Sym不小于24,那么像素(如,被解压缩的像素)可简单地被设定为 等于比特流的24比特Input [23?0],比特流的随后的24比特包括或者不包括V0或VI, 这取决于实施例。
[0070] 如果Sym被发现1002小于24,那么如果Sym被发现1006小于14,交织误差 的尺寸S被设定为1008等于Sym - 7且交织误差(如,PackAbsError)被设定为等于 (1〈〈 (S-l))+Input [S-2?0],其中Input [S-2?0]是比特流中V0和VI之后的S - 1比特。
[0071] 如果Sym被发现1006小于14且没发现1012小于4,那么尺寸S被设定为等于 Sym/2 且PackAbsError 被设定 1016 为等于(1〈〈(S_l)) + (Sym&l) + (Input [S-3 ?0]〈〈1),其 中Input [S-3?0]是比特流中的V0和VI之后的S - 2位。在步骤1010和1016中被添加 到交织误差的Input □比特包括与交织误差相关的任何最低有效位。如果Sym被发现1012 小于4,那么PackAbsError被设定为等于Sym。
[0072] 图11说明的是用于从交织误差(诸如,如根据方法900和方法1000恢复的 PackAbsError)提取像素分量的方法1100。方法1100可包括对交织误差解交织以获 得个别误差值,例如压缩过程中计算的AbsError[i]。例如,AbsError[i]的第j个比 特的位置可被设定为等于位于PackAbsError的3*j+i的比特位置处的值。例如,在 PackAbsError 包括比特 bl5、bl4、bl3、bl2、bll、blO、b9、b8、b7、b6、b5、b4、b3、b2、bl 和 b0 时,那么 AbsError [0] =bl5、bl2、b9、b6、b3、bO ;AbsErro;r [1] =bl3、blO、b7、b4、bl ;以及 AbsError [2] =bl4> bll> b8> b5> b2〇
[0073] 用于AbsErr〇r[i]值的符号可遵从编码交织误差的比特流中的比特。因而,可从 比特流提取1104对于每个非零AbsError[i]符号位,如,以从AbsError[0]到AbsError[2] 的顺序,且Err〇r[i]的值可通过改变如符号位指示的符号,如,如果对应的符号位是1则取 AbsErr〇r[i]的负值来获得。如上所述,某些像素可以以其原始形式进行编码。因而,没有 符号位可以被编码或被应用到这些像素。
[0074] 使用获得的Error[i]的值,反颜色变换(RCT)可以被执行1106以获得正在被解 压缩的像素相对于预测像素的原始误差值。例如,〇rgError[0]=Error[0] ;OrgError[l]=E rror [1] +OrgErro;r [0];以及 OrgError [2] =Erro;r [2] +OrgErro;r [1]。然后,可以通过将误差 值加到1108预测像素来获得像素 (Current [i])的颜色值。例如,对于R、G和B的值,可以 通过 Current[i]=OrgE;r;ro;r[i]+Predicted[i]来分别计算,其中 i=l 到 3。
[0075] 参见图12,所述整个瓦片可以随着瓦片数据被请求设备(诸如显示控制器202)取 回而被"实时"解码。在某些实施例中,为了使被压缩的瓦片数据的比特流能够以每个时钟 周期四个像素的速率进行解码,数据编码瓦片可以以这种方式进行排序。
[0076] 以上参照图11所述的解码过程可以被表征为包括5个阶段:
[0077] 阶段1 :取得前2比特。如果这2比特为零,重复先前的像素颜色通道;
[0078] 阶段2 :如果需要,取得3比特,并与步骤1的2比特组合以得到Sym (将阶段1的 结果作为Sym的MSB);
[0079] 阶段3 :根据Sym获得需要解码PackAbsError的LSB的数目;
[0080] 阶段4 :解交织PackAbsError、识别非零误差、得到非零误差的符号位;
[0081] 阶段5 :实施反颜色变换且将原始误差(0rgErr〇r[i])加到预测像素 (Prediction[i])以获得当前像素的RGB分量值。
[0082] 在阶段1-5中的每个阶段之后,后续阶段是否需要被处理且将在后续阶段中被处 理的来自比特流的比特数是明显的。阶段5并不需要另外的来自比特流的比特。
[0083] 通过将4个像素分为一组,对于64个像素瓦片将会有16组(组1到16)。对于 每组像素,对应于阶段1-5的每个阶段的比特可以分为一组。因而,比特流可包括比特串 Code〇-〇, Code〇-l...Codei-〇…Codei-j...Codel6-5,其中 Codei-j 包括第 i 组的第 j 阶段 的比特。如上所述,表示某些像素的比特可不包括阶段1-5的所有阶段的码。
[0084] 在一些实施例中,对于瓦片的所有像素,对应于每个像素的阶段1-5的任意阶段 的比特可以被分为一组。因而,方法1200可包括插入对于第一连续区段中的所有像素的哈 夫曼编码的两比特1202,如编码的Sym的前两比特。因此,对于64像素瓦片在第一连续区 段中将有2x63比特,这是因为初始像素未被压缩。
[0085] 方法1200还可包括插入1204表示任何非零误差的符号的比特串的长度、不包括 在它们原始形式中包含的像素。在所说明的实施例中,这些比特被插入在第一连续区段之 后。符号位可有利地被插入在第一连续区段之后,因为其一般少于对应于阶段三的在符号 位之前被应用的比特(多达9比特),符号位在阶段4中被应用。
[0086] 方法1200可包括将初始像素(例如,瓦片中的第一像素)以其原始的、未被压缩的 形式插入1206在第一连续区段和符号位串长度中的一个或二者之后。瓦片像素(而非初始 像素)的剩余哈夫曼编码可以被分组为第二连续区段。剩余哈夫曼编码可包括不是被包括 在第一连续区段中的最前面的两比特的经编码的Sym的任何比特。第二连续区段具有可变 长度。然而,鉴于第二连续区段的长度可以使用第一区段来确定,第二连续区段的长度并不 需要被包括。
[0087] 方法1200可包括插入1210包括任何非零误差的符号位的位串。包括瓦片像素的 任何LSB的编码的第三连续区段也可被插入1212。鉴于像素的LSB的数可以为零或非零值 的可变数,第三连续区段的长度是可变的。第三连续区段的长度可以使用第一连续区段和 第二连续区段来确定,因此,第三连续区段的长度并不需要被包括。第三连续区段的起始点 可使用在步骤1204被插入的长度来确定。
[0088] 不同的区段可在比特流或所存储的被压缩瓦片的表示中具有不同的顺序。在一个 实施例中,被压缩的瓦片可按下列顺序被布置:第一连续区段、符号位串的长度、初始像素、 第二连续区段、符号位串、和第三连续区段。
[0089] 使用以这种方式布置的表示被压缩的像素的比特串,每个时钟周期四个像素的吞 吐量可容易地实现。特别地,一旦第j组的第k个阶段被解码,就知道了对应于第j组的第 (k+Ι)个阶段的每个阶段的比特的比特流中的起始点。同样,每个区段中的起始点对于第 (j+Ι)组的第k个阶段是已知的。用这种方式,并行化解码瓦片像素是可行的且每个时钟周 期四个像素的吞吐量可容易地实现。
[0090] 可从图4-7中的压缩算法的详细描述中明显看出,每个像素将不一定包括对应于 解压缩阶段1-5中的每个阶段的数据。例如,在被编码的Sym的前两比特编码像素的整个 Sym时,第二连续区段可不包括该像素的比特。
[0091] 如上所述,第三连续区段具有可变长度。在一些实施例中,如果第三连续区段具有 奇数个比特,那么一个或多个符号位可被添加到第三连续区段,使得其具有偶数个比特或 结束于字节边界、16比特边界、或其他某个边界。因而,例如,如果发现PackAbsError的尺 寸是超过6的偶数或5 (如,5、8、10、12、14、或16),那么阶段3中的比特可以被理解成包括 一个符号位且该符号位不应该在符号比特串中重复(如,阶段4中的比特)。
[0092] 如上所述,在交织误差很大时,像素的原始RGB数据可被包括在其原始形式中。在 这种情况下,原始像素数据的16个最高有效位可被包括在像素的阶段3中(第三连续区 段),且其余的8个LSB可被包括在阶段4中(如,与符号位一起)。包括在符号位串中的比 特数可以通过估计从像素的第一连续区段中或从第一连续区段和第二连续区段两者中提 取的Sym的值来提取。例如,在Sym指示像素已经包括在其原始形式中时,16个MSB可从 第三连续区段得到,且其余的8个LSB可从符号位串(如阶段4的比特)检索到。鉴于阶段 3具有完全可变的长度(从0到24*4)且阶段3的比特的起始点是可变的,上述方法有利地 确保组中的每个像素起始于偶数偏移点。
[0093] 如上所述,第三连续区段的尺寸可以使用来自第一连续区段和第二连续区段的数 据来确定。在一些实施例中,阶段3的比特(LSB)的尺寸可以被编码。例如,对于当前像素, 如果Error [0]和Error [1]是零,Error [2]的阶段3的比特的尺寸可以组合替代Error [0] 和Error [1]的符号位。例如,不同像素的阶段3的尺寸,S卩,Sym值,如下列于表1中。
[0094] 表1 :Sym值对PackAbsError和阶段3的比特长度
[0095]

【权利要求】
1. 一种用于图形处理的方法,所述方法包括: 由图形处理系统接收图形操作; 通过所述图形处理系统标识多个瓦片中由所述图形操作涉及的被涉及瓦片,所述多个 瓦片定义图像帧; 由所述图形处理系统执行所述图形操作,以生成输出像素数据; 由所述图形处理系统生成包括所述输出像素数据的压缩瓦片;以及 由所述图形处理系统使用所述压缩瓦片覆写所述被涉及瓦片。
2. 根据权利要求1所述的方法,还包括由所述图形处理系统解压缩所述被涉及瓦片以 获得原始像素数据;以及 其中,由所述图形处理系统生成包括所述输出像素数据的所述压缩瓦片还包括根据所 述输出像素数据压缩被更新的所述原始数据。
3. 根据权利要求1所述的方法,其中,所述多个瓦片中的瓦片的大小等于所述图形处 理系统的行缓冲器的大小。
4. 根据权利要求1所述的方法,其中,所述多个瓦片中的每个瓦片包括瓦片状态数据。
5. -种用于图形处理的方法,所述方法包括: 由第一设备向存储控制器发出对存储位置处的数据的请求; 响应于所述请求,由所述第二设备解压缩对应于所述存储位置的瓦片以获得对应于所 述存储位置的数据项;及 由所述第二设备将所述数据项返回至所述第一设备。
6. 根据权利要求5所述的方法,还包括: 由所述第一设备发出对于对应于所述存储位置的瓦片的头数据的请求;及 由所述第一设备接收所述头数据。
7. 根据权利要求5所述的方法,其中,解压缩所述瓦片包括从所述第二设备向所述第 一设备流式传输解压缩的瓦片数据。
8. 根据权利要求5所述的方法,其中,解压缩所述瓦片包括解压缩来自所述瓦片的压 缩数据的比特流,所述比特流由所述存储控制器传送。
9. 根据权利要求8所述的方法,其中,所述比特流包括对多个像素进行编码的交织数 据。
10. 根据权利要求5所述的方法,其中,解压缩所述瓦片包括同时解压缩多个像素。
11. 根据权利要求5所述的方法,其中,解压缩所述瓦片包括在所述第一设备和所述第 二设备中的至少一个的每个时钟周期,同时解压缩至少四个像素。
12. 根据权利要求5所述的方法,其中所述瓦片的大小等于所述第一设备和所述第二 设备中的一个的行缓冲器的大小。
13. -种用于图形处理的系统,所述系统包括: 第一部件,其被配置为向存储控制器请求存储位置处的数据;及 第二部件,其被配置为: 截取来自所述存储控制器的数据流,所述数据流包括对应于所述存储位置的瓦片的至 少一部分; 解压缩所述数据流以获得未压缩的数据流;及 将所述未压缩的数据流返回至所述第一设备。
14. 根据权利要求13所述的系统,其中,所述第一部件还被配置为: 向所述存储控制器请求所述瓦片的头数据;及 从所述存储控制器接收所述头数据。
15. 根据权利要求13所述的系统,其中,所述数据流包括对多个像素进行编码的交织 数据。
16. 根据权利要求13所述的系统,其中,所述第二部件被配置为同时解压缩所述数据 流中的多个像素。
17. 根据权利要求13所述的系统,其中,解压缩所述瓦片包括在所述第一设备和所述 第二设备中的至少一个的每个时钟周期,同时解压缩至少四个像素。
18. 根据权利要求13所述的系统,其中所述瓦片的大小等于所述第一设备和所述第二 设备中的一个的行缓冲器的大小。
19. 根据权利要求13所述的系统,其中所述第一部件是显示控制器。
20. 根据权利要求13所述的系统,其中所述瓦片是多个瓦片中的一个,所述多个瓦片 对帧的像素进行编码。
【文档编号】H04N19/85GK104104954SQ201410134285
【公开日】2014年10月15日 申请日期:2014年4月3日 优先权日:2013年4月3日
【发明者】乐凡·钟, 哈利姆·梵妮, 张辉明 申请人:图芯芯片技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1