首页> 中国专利> 用于在图块编码中在像素值缓冲器中存储压缩比率指示的方法和设备

用于在图块编码中在像素值缓冲器中存储压缩比率指示的方法和设备

摘要

通过以下方式对像素(6)的图块(1)进行编码:对构成图块(1)的不同子集的像素(10)的块(3-9)进行可变长度编码,以形成符号序列(23-29),作为像素值的编码表示。针对至少一个块的每个集合(12,14)确定相应大小指示(33-39,52,54,56,58)。大小指示(33-39,52,54,56,58)表示组合序列(23-29,51,53,55,57)的压缩比率,该组合序列(23-29,51,53,55,57)与针对所述集合(12,14)的所述至少一个块所获得的所述至少一个符号序列(23-29)相对应。在缓冲存储器(20)中的像素值缓冲器(80)中布置组合序列(23-29,51,53,55,57)。针对给定集合(12,14)所确定的大小指示(32-39,52,54,56,58)也存储在所述缓冲存储器(20)中的像素值缓冲器(80)中,以根据所述像素值缓冲器(80)的读取顺序,在所述给定集合(12,14)的组合序列(23-29,51,53,55,57)之前。

著录项

  • 公开/公告号CN103262531A

    专利类型发明专利

  • 公开/公告日2013-08-21

    原文格式PDF

  • 申请/专利权人 瑞典爱立信有限公司;

    申请/专利号CN201080070703.1

  • 申请日2010-12-14

  • 分类号H04N7/26(20060101);G06T9/00(20060101);

  • 代理机构11021 中科专利商标代理有限责任公司;

  • 代理人赵伟

  • 地址 瑞典斯德哥尔摩

  • 入库时间 2024-02-19 20:21:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-03-15

    授权

    授权

  • 2013-12-18

    实质审查的生效 IPC(主分类):H04N7/26 申请日:20101214

    实质审查的生效

  • 2013-08-21

    公开

    公开

说明书

技术领域

本发明总体上涉及图像处理,且具体地涉及针对像素值缓冲器的图块(tile)的编码。

背景技术

计算机图形系统中的消耗带宽的任务之一是更新缓冲器,具体地说,色彩缓冲器。色彩缓冲器包含最终要显示的数据,即输出像素。在传统架构中,逐三角形地更新色彩缓冲器。首先,将第一三角形光栅化,并且更新色彩缓冲器的对应像素。然后,将第二三角形光栅化,将其像素写入色彩缓冲器中,有可能与第一三角形的像素重叠。这意味着色彩缓冲器中的每个像素可能被若干次写入。典型应用将可能平均改写色彩缓冲器中的每个像素3至10次。这在本技术领域内被称为具有3至10的过度绘制(overdraw)。这意味着,与每个像素仅写入一次的情况相比,用于色彩缓冲器的写入带宽将在3到10倍大之间。

用于减少色彩缓冲器的带宽要求的一种方式是使用被称为图块化架构的技术。并非逐三角形地对场景进行光栅化,将色彩缓冲器划分为非重叠图块。然后,逐图块地渲染场景。对于第一图块,仅将与第一图块重叠的三角形用于光栅化。使得图块大小足够小,从而整个图块可以适合图形处理单元(GPU)上的片载(on-chip)。因此,在渲染图块的三角形期间无需对色彩缓冲器的外部存储器存取。当已经对图块中的所有三角形光栅化时,将图块发送到色彩缓冲存储器,并且处理下一图块。注意,在图块化架构中,仅将色彩缓冲器中的每个像素写入到外部存储器一次。这意味着,图块化架构一般可以3~10倍地减少用于色彩缓冲器的写入带宽。

用于降低色彩缓冲器带宽的另一技术被称为缓冲器压缩。这意味着缓冲器数据块以压缩形式存储在存储器中。仍然逐三角形地处理场景,但在将像素块(block)发送到色彩缓冲存储器之前,像素被压缩。在GPU中所存储或缓存的被称为大小比特的少数比特用于跟踪数据压缩的程度,例如向下压缩到与原始比特长度的25%、50%或75%相对应的比特长度,或一点也不压缩。当后续三角形想要写入相同像素块时,大小比特用于获知应读取多少数据。对块进行解压缩,新三角形改写块中的一些像素,该块然后再次被压缩并且存储。Hasselgrenand Akenine-,2006,Efficient Depth Buffer Compression,InGraphics Hardware,103-110和Rasmusson,Hasselgren andAkenine-,2007,Exact and Error-bounded Approximate ColorBuffer Compression and Decompression,In Graphics Hardware,41-48分别给出了色彩缓冲器压缩和深度缓冲器压缩的良好概述。

图块化架构的限制在于:虽然仅写入每个像素一次,但这仍然非常昂贵。此外,显示控制器将必须读取每个像素以将其输出到显示器。这意味着,每个像素将必须从色彩缓冲器被读取并且以未压缩形式写入到色彩缓冲器至少一次,这是昂贵的。

色彩缓冲器压缩解决方案的问题在于:即使可以实现50%的压缩因子,其仍然是太多的带宽。在例如6的过度绘制的情况下,仍然平均写入每个像素6次。50%的压缩比率将使得有效带宽下降到3倍像素数量,但这对于图块化架构仍然过多。

因此,需要一种可以结合计算机图形系统来高效地处理像素值缓冲器的技术。

发明内容

总的目的是高效地处理与计算机图形系统相关的像素值缓冲器。

本文公开的实施例满足该目的和其它目的。

实施例的一方面定义一种对各自具有相应像素值的像素的图块进行编码的方法。所述方法包括:对构成图块的相应子集的像素的多个块进行可变长度编码。所述可变长度编码生成多个符号序列,作为所述多个块中的像素的像素值的编码表示。针对所述图块中的至少一个块的每个集合确定大小指示。所述大小指示表示针对所述集合所生成的组合序列的压缩比率。所述组合序列于是与通过对所述集合的所述至少一个块进行可变长度编码所获得的至少一个符号序列相对应。在缓冲存储器中的像素值缓冲器中布置组合序列。将针对所述集合所确定的所述大小指示也布置在所述缓冲存储器中的所述像素值缓冲器中,使得根据所述像素值缓冲器的读取顺序,针对集合所确定的所述大小指示在所述集合的所述组合序列之前。

实施例的另一方面涉及一种用于对像素的图块进行编码的设备。所述设备包括可变长度编码器,被配置为:对所述图块的像素的多个块进行可变长度编码,以形成多个符号序列,作为所述多个块中的像素的像素值的编码表示。压缩率确定器针对所述多个块中的至少一个块的每个集合确定相应大小指示。大小指示是组合序列的压缩比率的表示,该组合序列与针对所述集合的所述至少一个块从所述可变长度编码器所获得的至少一个符号序列相对应。所述设备还包括序列布置器,被配置为:在缓冲存储器中的像素值缓冲器中布置组合序列。指示布置器将针对所述集合所确定的所述大小指示布置在所述缓冲存储器中的所述像素值缓冲器中。所述指示布置器具体地将集合的所述大小指示布置为:根据所述像素值缓冲器的读取顺序,在所述集合的所述组合序列之前。

实施例的另一方面涉及一种对包括像素的多个图块在内的像素值缓冲器进行编码的方法。所述方法包括:对所述像素值缓冲器中的所述多个图块的至少一部分中的每个图块的像素的多个块进行可变长度编码。所述多个块构成所述图块的相应子集。所述可变长度编码生成多个符号序列,作为所述多个块中的像素的像素值的编码表示。针对所述多个图块的所述至少一部分中的每个图块中的多个块的每个集合来确定大小指示。大小指示是组合序列的压缩比率的表示,该组合序列与通过对集合的所述多个块进行可变长度编码所获得的所述多个符号序列相对应。将所述多个图块的所述至少一部分的所述组合序列写入缓冲存储器中的所述像素值缓冲器。这些组合序列根据从反转Morton顺序、反转Hilbert顺序以及与所述像素值缓冲器的读取顺序相反的顺序中选择的反转顺序而进一步写入所述像素值缓冲器。将针对所述多个图块的所述至少一部分所确定的所述大小指示也写入到所述缓冲存储器中的所述像素值缓冲器。将图块的大小指示与在前组合序列相关地写入所述缓冲存储器中的所述像素值缓冲器。根据所述像素值缓冲器的所述读取顺序,这些在前组合序列属于在所述图块之前的在前图块。

本发明又一方面涉及用于对包括像素的多个图块在内的像素值缓冲器进行编码的设备。所述设备包括可变长度编码器,被配置为:对所述像素值缓冲器中的所述多个图块的至少一部分中的每个图块的像素的多个块进行可变长度编码。所述多个块构成所述图块的相应子集。所述可变长度编码器由此输出每图块多个符号序列,作为所述图块中的所述多个块中的所述像素的像素值的编码表示。压缩率确定器针对所述多个图块的所述至少一部分中的每个图块中的多个块的每个集合来确定大小指示。大小指示表示组合序列的压缩比率,该组合序列与针对所述集合的所述多个块的从可变长度编码器所获得的多个符号序列相对应。所述设备还包括序列写入器,用于根据从反转Morton顺序、反转Hilbert顺序和与所述像素值缓冲器的读取顺序相反的顺序中选择的反转顺序将所述组合序列写入缓冲存储器中的所述像素值缓冲器。指示写入器被配置为将针对所述多个图块的所述至少一部分中的图块所确定的所述大小指示写入所述缓冲存储器中的所述像素值缓冲器。所述指示写入器将图块的大小指示与在前图块的在前组合序列相关地写入,根据所述像素值缓冲器中的所述读取顺序,该在前图块在所述当前图块之前。

当将图块写入所述缓冲存储器中的所述像素值缓冲器时,图块的编码将减少带宽要求。所述缓冲存储器还将包括所述组合序列和为了识别所述缓冲存储器中的所述组合序列的相应长度而需要的所述大小指示。所述缓冲存储器中的所述像素值缓冲器中将大小指示特定布置为在相应关联组合序列之前意味着:当以所述读取顺序来读取所述像素值缓冲器时,在读取所述读取大小指示所应用的所述组合序列之前,读取所述大小指示。因此以具有低延时的高效方式来进行在对数据进行解码之前从所述像素值缓冲器检索所述数据。

附图说明

通过连同附图一起参照以下描述,可以最佳地理解本发明连同其其它目的和优点,其中:

图1是示出了根据实施例的对图块进行编码的方法的流程图;

图2示意性示出了根据实施例的图块;

图3是根据实施例的缓冲存储器中的像素值缓冲器的一部分的示意性说明图;

图4是根据另一实施例的缓冲存储器中的像素值缓冲器的一部分的示意性说明图;

图5是示出了图1中的方法的附加可选步骤的流程图;

图6是示出了图1中的方法的附加可选步骤的流程图;

图7是示出了图1中的布置符号序列并且布置大小指示的实施例的流程图;

图8是根据另一实施例的缓冲存储器中的像素值缓冲器的一部分的示意性说明图;

图9是示出了图1中的布置符号序列并且布置大小指示的另一实施例的流程图;

图10是根据另一实施例的缓冲存储器中的像素值缓冲器的一部分的示意性说明图;

图11示意性示出了基于反转Morton顺序而写入像素值缓冲器;

图12是示出了根据实施例的对像素值缓冲器进行编码的方法的流程图;

图13是根据实施例的用于显示图像的系统的示意性概述图;

图14是根据实施例的用于对图块进行编码的设备的示意性框图;

图15是根据实施例的用于对像素值进行编码的设备的示意性框图;

图16是根据实施例的用户终端的说明图;

图17是根据另一实施例的缓冲存储器中的像素值缓冲器的一部分的示意性说明图;

图18是根据另一实施例的缓冲存储器中的像素值缓冲器的一部分的示意性说明图。

具体实施方式

在所有附图中,相同附图表急用于相似或对应元素。

实施例总体上涉及图像处理,且具体地涉及对构成像素值缓冲器的至少一部分的像素的图块进行编码。实施例由此将用于缓冲器压缩的现有技术与图块化架构组合,以在写入并且更新缓冲存储器中的像素值缓冲器时甚至进一步减少写入带宽。以减少对于外部存储器存取以及信息请求的需求的特定方式进一步进行图块的编码。

根据实施例,像素的图块表示像素值缓冲器的至少一部分。因此,像素值缓冲器被划分为一个或典型地多个(即至少两个)非重叠部分(其在本领域中表述为图块)。单个图块可能占据整个像素值缓冲器,特别是对于十分小的像素值缓冲器。然而,在多数实际实现中,像素值缓冲器被看作划分为分离的非重叠图块。

然而,通常归因于长的编码和解码时间以及减少的编码效率,对整个图块进行编码并不可行。因此,期望将图块划分为像素的多个块,其中,在像素数量的意义上选择该块的大小,以使得从编码和解码观点来看被高效处理。于是对每个这样的块单独地进行可变长度编码,以生成符号序列。

可变长度编码意味着:从编码所获得的符号序列并无单个固定符号长度,而是可以采用各种符号长度。需要在大小指示方面的附加信息,以识别相应编码符号序列。实施例提供用于处理这些大小指示的高效解决方案。

根据实施例,每个像素具有相应像素值。取决于特定应用,在本领域中使用各种像素值。该像素值的典型示例是色彩值,更优选地,多分量色彩值。在后一种情况下,像素色彩包括多个色彩分量。该色彩的典型示例是具有3种色彩分量的红色、绿色、蓝色(RGB)。其它多分量色彩(例如YUV、YCoCg或YCrCb)也是本领域已知的,并且可以根据实施例而使用。

可以根据实施例而使用的像素值的另一示例是深度值或所谓的Z值。该特征表示特定像素到眼睛的深度或距离,并且该特征控制在渲染期间将实际显示哪些像素。

图块则可以构成色彩缓冲器或深度缓冲器的至少一部分。

除了色彩和深度缓冲器之外,实施例可以应用的像素值缓冲器的另一示例是所谓的模板(stencil)缓冲器。模板缓冲器可以用于限制渲染区域,在本领域中也表示模板化。在渲染流程中,也可以结合深度缓冲器来使用模板缓冲器。例如,对于失败或通过深度测试的每个像素,模板值可以自动更新(即增加或减少)。模板缓冲器在实现各种效果(例如阴影、轮廓绘制或各复杂图元之间的交点的高亮)中找到应用。在此情况下,图块可以构成模板缓冲器的至少一部分,像素值是模板缓冲器的模板值。

实际上,像素值可以是期望基于像素来分配的并且像素在何处成组为图块的任何性质。使用图形系统内的可编程着色器(shader)使得能够创建并且使用各种像素值缓冲器,并且实施例也可以应用于这种像素值缓冲器。例如,在延迟的渲染中,将法线写入缓冲器,从而像素各自表示法线(X、Y、Z坐标,或如果采用单位法线,则仅需要两个坐标)。此外,这些应用可以受益于实施例。

图1是示出了对像素的图块进行编码的方法的实施例的流程图,其中,每个像素具有相应像素值。该方法开始于步骤S1中,其中,对多个(即至少两个)像素块进行可变长度编码。多个块构成图块的相应子集。在实施例中,可变长度编码步骤S1对图块中的所有非重叠像素块进行编码。在备选实施例中,步骤S1对图块中除了第一块之外的所有像素块进行可变长度编码。还有可能的是:将图块划分为不同的块集合,其中,在步骤S1中对该集合中的所有块进行可变长度编码。在任一情况下,取决于与可变长度编码的块的数量相比有多少可变长度编码器可用,可以串行或并行地进行步骤S1中的对多个块的可变长度编码。

步骤S1的可变长度编码生成相应符号序列,作为块中的像素的像素值的编码表示。符号序列可以根据数据编码内的任何传统上采用的符号字母表。例如,符号字母表可以是二进制字母表。在此情况下,符号可以是0bin或1bin。可以使用的其它符号字母表包括十六进制符号(即0~9hex和A~Fhex)、十进制符号(即0~9dec)。在优选应用中,具有比特序列的二进制字母表用作符号字母表的说明性实施例。

可变长度编码或非固定率编码有时如其名称所暗示的:给定不同输入像素块,编码生成并且输出具有变化长度或大小的符号序列,即,其为一种生成可变长度的编码。因此,即使两个块具有相同数量的像素并且像素具有相同类型的像素值,取决于块中的特定像素值以及块中的像素值的分布,编码符号序列的所得长度也可能对于这两个块是不同的。这是与固定率编码的主要差别,固定率编码代之以输出具有固定长度的符号序列。

可以根据对于对色彩或深度缓冲器数据或其它像素值缓冲器进行编码而在传统上采用的任何可变长度编码方案来进行实施例的编码。然而,与这些可变长度编码方案的传统使用相比的重要差别在于:它们现在将对图块的块而不是全部像素值缓冲器进行操作。因此,实施例基于图块化架构和缓冲器编码或压缩的组合。根据实施例可以采用的合适的可变长度编码方案的示例公开于Hasselgren and2006,Efficient Depth Buffer Compression,In GraphicsHardware,103-110,Rasmusson,Hasselgren and2007,Exact and Error-bounded Approximate Color Buffer Compression andDecompression,In Graphics Hardware,41-48,WO 2009/092455,WO2009/092454and WO 2009/093947中,其关于可变长度编码方案的教导通过引用合并到此。根据实施例进行的编码可以基于例如Golomb-Rice编码、算术编码、Huffman编码、CABAC(上下文自适应二进制算术编码)。然而,实施例并不限于任何特定可变长度编码方案,而是可以另外结合可以将具有像素值的像素块编码为符号序列并且取决于输入像素块而产生具有不同长度的符号序列的任何已知编码方案而被应用并且使用。

图2是图块1的示意性说明图,并且示出可以如何将图块1划分为像素10的块2~9的示例。在非限定性而是说明性示例中,图块1具有32×32个像素10的大小。在此情况下,图块1可以被划分为4×4个块2~9,其中,每个块2~9包括8×8个像素10。上述块和图块的大小仅是说明性的,并且实施例不限于此。此外,实施例还包括:使用非方形(quadratic)的块和图块(例如矩形块和/或图块)。

在图1中的步骤S1的特定实施例中,对除了恰好第一块2之外的所有块3~9一起进行可变长度编码。在备选实施例中,在步骤S1中对图块1的所有块进行可变长度编码。

可变长度编码的特性特征在于:所生成的符号序列的所得长度或大小不是固定的而是可变,因此得名可变长度编码。这意味着:关于符号的数量,对于一个像素块在步骤S1中所获得的第一符号序列的长度一般可以不同于通过对另一像素块进行可变长度编码所获得的第二符号序列的长度。为了能够知道多个符号序列的相应长度,在步骤S2中确定相应大小指示。更详细地,步骤S2确定图块中的多个块中的至少一个块的每个集合的大小指示。大小指示于是表示组合序列的压缩比率,该组合序列与通过对集合的所述至少一个块进行可变长度编码而在步骤S1所获得的所述至少一个符号序列相对应。

在特定实施例中,每个集合包括单个块。在此情况下,在步骤S2中针对块所确定的大小指示表示通过对块进行可变长度编码所获得的符号序列的压缩比率。

例如,像素值可以是具有每色彩分量8比特的RGB888色彩值,并且由此总共消耗每像素24比特。如果假设8×8像素的块大小,则未编码或未压缩块的长度或大小于是将为1536比特。通过对该块进行可变长度编码所获得的比特序列的确切压缩比率于是将为X/1536,其中,X表示比特序列中的比特的数量。通常,大小指示可以假设表示不同预定压缩比率的有限预定值集合。例如,2比特大小指示可以假设00bin、01bin、10bin或11bin。这四个值于是可以表示不同的预定压缩比率(例如未压缩、3/4、1/2和1/4)。在以上示例块大小的情况下,具有区间1~384比特中的长度的比特序列于是可以被分配11bin的大小指示,具有区间385~768比特中的长度的比特序列于是可以得到10bin作为大小指示,并且其中,区间769~1152比特中的比特序列长度得到01bin的大小指示。如果比特序列的长度将比1152比特更长,或块保持未压缩,则可以使用大小指示00bin

备选实施例处理包括每集合多个块的集合。图2示出了该构思。因此,多个块2~5的第一集合12可以与图块1中的块的第一行对应。这意味着第一集合12包括该第一行的块2~5。第二集合14包括图块1中的第二行的块6~9,以此类推。图块中的块如此组成不同集合并不限于对于块的每个行具有一个集合。备选实施例可以在图块中使用每列一个集合,每2×2邻近块组(即分别是图2中的块2、3、6、7以及块4、5、8、9)一个集合。实际上,两个或更多个块的任何预定成组可以用作根据实施例的集合。

步骤S2中所确定的大小指示于是表示组合序列的压缩比率,该组合序列与针对集合的块在步骤S1中所确定的多个符号序列相对应。

与以上提出的示例相似,四个未压缩符号序列的组合序列的长度将是4×1536=6144比特。集合的符号序列的相应大小和长度于是相加在一起,并且将该和除以6144比特,以得到确切的压缩比率。大小指示优选地可以采用表示不同预定压缩比率的多个预定值之一,例如用于2比特大小指示的00bin、01bin、10bin或11bin

将多个符号序列组合为组合序列并且确定用于组合序列而不是单独符号序列的大小指示一般可能带来更高效的数据处理。例如,假设步骤S1中所获得的四个比特序列具有以下相应大小:386、1150、760和772比特。具有大小1150和760比特的比特序列接近1152和768比特的上阈值大小(见以上)。然而,具有386和772比特的比特序列另外接近相应区间中的下范围。由于数据传送典型地处理用于每个压缩比率的符号(例如比特)的最大量(即在该示例中,384、768、1152和1536比特),因此通常以不高效的方式来进行这些比特序列到缓冲存储器中的像素值缓冲器的传送。这意味着,传送具有772比特大小的比特序列于是将共计传送与传送具有1150比特大小的比特序列相同的数据量(即1152比特)。然而,多余比特并不携带任何有用信息,并且将在解码期间简单地被丢弃。

如果代之以将这四个比特序列处理为单个组合序列,则总大小将是3068比特,这十分接近50%的压缩比率(即3072比特)。在此情况下,根据该实施例,与当分离地处理比特序列时的382+2+8+380=772个比特相比,仅需要在数据总线上传送4个“无用”比特。

大小指示可以假设的值的数量当然可以不同于上述说明性示例。例如,1比特大小指示可以表示两种不同压缩比率,2比特大小指示使得能够使用四种不同压缩比率,3比特大小指示可以指示高达八种不同压缩比率,以此类推。此外,与各个大小指示值关联的预定压缩比率当然可以不同于在以上说明性示例中所给定的示例值。实施例因此不限于任何特定大小指示长度或任何特定预定压缩比率值。针对一个或多个块的不同集合在步骤S2中所确定的大小指示被认为是相同的大小指示长度,并且表示预定可能压缩比率的预定义的组中的相应压缩比率。

图1中的方法的下一步骤S3将多个组合序列(即步骤S1中所获得的单独符号序列或步骤S1中所获得的多个符号序列集合)布置在缓冲存储器中的像素值缓冲器中。缓冲存储器通常被设计为大得足以容纳以未压缩形式所表现的至少一个图块。尽管非常不可能,但针对特定图块,可变长度编码步骤S1可能不能对块进行可变长度编码,而输出的组合序列是块中的像素的未压缩像素值。此外,缓冲存储器优选地被设计为存储整个像素值缓冲器。如果像素值缓冲器划分为多个非重叠图块,则缓冲存储器的大小于是优选地被选择为能够可能地以未压缩形式来存储用于所有这些多个非重叠图块的组合序列。

为了能够正确地识别缓冲存储器中的相应组合序列所占据的存储器位置并且识别从缓冲存储器读取的数据量,需要多个序列的相应长度的信息(即在步骤S2中所确定的大小指示)。如本领域所公知的那样,通常在图形处理单元中的片载进行图块的处理。在现有技术中,图块的未编码并且因此未压缩像素值从图形处理单元中的片载存储器写入在显示单元中的或连接到显示单元的缓冲存储器中的像素值缓冲器。这意味着:通过数据总线将图块的未编码和未压缩像素值从图形处理单元传送到缓冲存储器。为了与现有技术清楚对比,由于图块划分为在步骤S1中可变长度编码的块,因此当将图块写入像素值缓冲器时在数据总线上所传送的数据量明显减少。与传送未压缩图块数据相比,给定所定义的数据总线宽度,因此可以在短得多的时间中进行图块数据从图形处理单元到缓冲存储器的传送。

多个组合序列的相应长度的信息(即来自步骤S2的大小指示)需要在渲染期间在显示单元中是可存取的,以当读取组合序列时正确地识别应从缓冲存储器中的像素值缓冲器读取的数据量。一种简单的解决方案将是:在图形处理单元中的大小指示存储器中存储大小指示。然而,在此情况下,在显示单元可以从缓冲存储器加载并且读取组合序列之前,其需要存取大小指示。这意味着,必须通过数据总线将对大小指示的存储器请求发送到图形处理单元。存储器请求被处理并且开始,并且被执行为从大小指示存储器检索所请求的数据。检索到的数据然后通过数据总线传送到显示单元。然而,由于必须存取外部存储器,因此当对像素数据进行解码并且渲染时,上述过程引入延迟。关于该方法的另一问题在于,存储器请求和所返回的大小指示通常并未被设计为通过数据总线而得以高效地传送。例如,大小指示可以是仅2比特,而数据总线可以被设计为高效地传送例如512比特突发。存储器请求和大小指示于是将以不高效的方式来占据数据总线,从而当传送存储器请求和大小指示时,数据总线的其余带宽并未得以利用。

实施例通过在步骤S4中将在步骤S2中所确定的大小指示布置在缓冲存储器中的像素值缓冲器中来解决这些问题。这说明:识别并且从像素值缓冲器读取组合序列所需的信息将在缓冲存储器是可用的。然而,根据实施例,以提供大小指示与其关联组合序列之间的高效连接并且具体地使得能够在读取组合序列之前识别大小指示的特定方式来进行步骤S4中如此将大小指示布置在缓冲存储器中。通过将步骤S2中针对集合所确定的大小指示布置在缓冲存储器中以像素值缓冲器的读取顺序在针对集合所获得的组合序列之前来实现该操作。读取顺序定义在渲染期间(例如当在显示器上显示图像时)从像素值缓冲器读取组合序列的顺序。这意味着,在第二组合序列之前,将从像素值缓冲器中读取根据读取顺序在第二组合序列之前的第一组合序列。因此,当根据读取顺序从缓冲存储器读取像素值缓冲器时,在特定组合序列之前首先读取与该特定组合序列有关的大小指示。由此可以在读取组合序列之前或在此期间提供特定组合序列的大小的信息。显示单元将因此在其从缓冲存储器读取组合序列之前或随着其从缓冲存储器读取组合序列而得到特定组合序列的大小的信息。

图3通过示出了缓冲存储器20中的像素值缓冲器80的一部分来示意性示出该构思。在该说明性示例中,每个集合包括单个块和组合序列,因此包括单个块的符号序列。缓冲存储器20已经示出为被设计为能够存储未压缩的符号序列。标号21指示作为能够以未压缩形式来存储符号序列的大小的缓冲存储器20的部分。标号23、29指示这些未压缩的符号序列。然而,根据不同压缩比率来压缩其它符号序列22、24、25、26、27、28。这意味着,当符号序列22~29已经写入缓冲存储器20时,通常有用数据并不占据整个缓冲存储器20。

在实施例中,紧邻符号序列22~29之前存储符号序列22~29的大小指示32~39。在此情况下,缓冲存储器20具有有利地足够大的存储器区域21,以能够存储大小指示32~39和符号序列22~29。该图还示出了用于从像素值缓冲器80读取数据的读取顺序(即在图中从左到右并且以顶行开始逐行)。通过根据读取顺序在有关符号序列22~29之前存储大小指示32~39,将在读取有关符号序列22~29之前从像素值缓冲器80读取大小指示32~39。

在图3所示的实施例中,图1的可变长度编码步骤对图块的所有块进行可变长度编码,以得到用于每个块的符号序列。此外,针对图块中的每个块确定大小指示。这意味着,缓冲存储器20然后存储所有符号序列22~29,而所有符号序列22~29的相应大小通知32~29以读取顺序在所有码元序列22~29之前。

如果可以基于读取大小通知32~39的处理而中断从像素值缓冲器80读取符号,则图3所示的实施例通常运作良好。因此,当以读取顺序从像素值缓冲器80读取数据时,首先读取第一符号序列22的第一大小通知32。为了减少读取操作中的延迟,从像素值缓冲器80读取数据优选地与分析读取大小通知32并行地进行。这意味着,在基于读取大小通知32而确定随后第一符号序列22的长度或大小之前,通常读取包括第一符号序列22的至少一部分的像素值缓冲器80中的随后数据的至少一部分。然后可以取决于与处理大小指示32来确定关联符号序列22的大小所需的时间有关的读取速度并且取决于关联符号序列22包含多少符号而采取各种动作。

可能的是,一旦已经处理读取大小指示32以确定随后符号序列22的大小,则尚未读取随后符号序列22的所有符号。在此情况下,读取符号以所定义的读取顺序继续,直到已经从缓冲存储器20读取大小指示32所指示的符号数量。在备选变形中,一旦完成大小指示32的处理,则可能已经读取了比大小指示32所指示的更多符号。在此情况下,中止从像素值缓冲器80读取与有关符号序列22相关的数据。任何多余数量的所读取的符号可以简单地被放弃并且不进一步发送到解码步骤。

图4示出被配置为存储组合序列41、43、45、47、51、53、55、57以及针对组合序列41、43、45、47、51、53、55、57所确定的大小指示42、44、46、48、52、54、56、58的缓冲存储器20中的像素值缓冲器80的另一实施例。在图中,标号40指示第一图块以及像素值缓冲器80中所存储的其数据,而标号50指示第二图块及其所存储的数据。第一图块40中的第一组合序列41于是可以与从图块40中的块的第一行所获得的符号序列对应,第二组合序列42与来自图块40中的第二行的集合中的块的符号序列对应,以此类推。

在图3所示的实施例中,图块1覆盖像素值缓冲器80的整个宽度。这意味着,从像素值缓冲器80读取数据优选地在第一读取操作中从像素值缓冲器80的第一行读取符号序列22、23、24、25,然后读取第二行中的符号序列26、27、28、29。然而,在图4中,在缓冲存储器20中的像素值缓冲器80的不同行中存储属于图块40组合序列41、43、45、47和属于图块50的组合序列51、53、55、57。因此,读取像素值缓冲器80的第一行将读取多个不同(在图中,四个)图块40、50中的每一个中的相应第一组合序列41、51。在第二轮中,从像素值缓冲器80读取图块40、50的相应第二组合序列43、53。

基本上以与图3中读取单独符号序列相同的方式来进行图4中的组合序列的读取。换句话说,首先读取大小指示,一旦已经处理大小指示并且已经确定随后组合序列的大小,其就触发继续读取随后组合序列或中止读取随后组合序列。

以上所描述的并且图3和图4所示的实施例因此可以意味着,在某些场合下,读取比所必须的更多符号,并且应被丢弃,或进一步提供给解码步骤。本文进一步描述的其它实施例没有这种缺点,并且可以被设计为仅读取相应大小通知所指示的符号量。

在这些实施例中,优选地对于除了第一块(例如图2中的块2)之外的图块1中的所有块3~9进行图1中的可变长度编码步骤。相应地,然后优选地对于图块中除了第一块之外的所有块进行图1中的大小指示的确定。在此情况下,优选地对于除了图块中的第一块之外的块执行在随后两个步骤S3和S4中的将符号序列和大小指示布置在缓冲存储器中的像素值缓冲器中。

在这些实施例中,代之以单独处理图块的第一块。图6示出该实施例。该方法开始于步骤S20,其中,与第一块中的像素值的未压缩版本对应的符号序列以读取顺序被布置在像素值缓冲器中并且写入像素值缓冲器作为第一符号序列。因此,在该实施例中,每个图块中的第一块保持未压缩,因此直接写入像素值缓冲器。由此对于缓冲存储器中的第一符号序列不需要大小指示。该方法然后继续到图1的步骤S1,其中,如上所述对图块的其余块进行可变长度编码。或者,图块中的第一块的符号序列可以最后写入像素值缓冲器。像素值缓冲器于是将包含第一符号序列,按读取顺序,其后是其余块的多个符号序列以及针对这些其余块所确定的大小指示的。以下将进一步描述用于其余块的大小指示和符号序列的相对组织。

图5是示出图块中的第一块的备选处理的流程图。在该实施例中,在步骤S10中,对第一块进行可变长度编码,以形成符号序列,作为第一块中的像素值的编码表示。以与图块中的其余块相同的方式进行第一块的这种可变长度编码。与其余块相似,在步骤S11中针对第一块确定表示在步骤S10中针对第一块所获得的符号序列的压缩比率的大小指示。在步骤S12中,第一块的符号序列被布置在像素值缓冲器中并且写入像素值缓冲器。按读取顺序,该符号序列于是将被布置为像素值缓冲器的分配给当前图块的部分的第一序列。针对其余序列所确定的符号序列于是将以像素值缓冲器的读取顺序跟随在第一序列之后。然而,与在缓冲存储器中所存储的以读取顺序在相应符号序列之前的用于其余块的大小指示相比,单独地处理步骤S11中针对第一块所确定的大小指示。步骤S13因此将针对图块中的第一块所确定的大小指示存储在与缓冲存储器不同的存储器中,或存储在与像素值缓冲器的存储器位置不同的缓冲存储器的存储器位置中。该存储器可以是图形处理单元中的片载存储器或专用大小指示存储器、显示单元中的分离存储器或缓冲存储器的专用分离部分。

如果在图形处理单元的存储器中存储大小指示,则由此需要存储器请求,以从图形处理单元中的存储器读取数据并且将数据传送到显示单元。然而,在该实施例中,每图块仅需要单个这样的存储器请求。由于对于图块的其余符号序列和块不需要对外部存储器的存储器请求,因此当从缓冲存储器读取图块的数据时的总延迟可以由此保持得非常低。

在显示单元的存储器中存储大小指示意味着,不需要发送外部存储器请求,由此甚至进一步减少任何延迟。在此情况下,针对第一块的大小指示优选地存储在专用存储器位置中,其位置是预定的。例如,如果像素值缓冲器划分为八个图块,则在该实施例中对于整个像素值缓冲器仅需要分离地存储八个大小指示。在此情况下,存储器位置可以被分配给这八个大小指示,并且被配置为仅存储这些大小指示。进一步定义用于各个图块中的第一块的大小指示的位置,从而可以从存储器读取该大小指示,而无需其存储之处的任何显式信息。

因此,在该实施例中,缓冲存储器中的像素值缓冲器包括图块中的所有块的可变长度编码的符号序列以及针对除了第一块之外的所有块的大小指示。针对第一块的大小指示另外存储在分离存储器或预定存储器位置中。

图5的步骤S10至S13并不一定必须相对于步骤S1至S4顺序地进行。与之清楚对照,步骤S1和S10的操作可以并行进行,步骤S2和S11、步骤S12和S3、步骤S13和S4亦可。此外,步骤S10至S13可以实际上在图1中的步骤S1至S4之后进行。

图7是示出图1中的步骤S3和S4的实施例的流程图。该实施例当结合如以上结合图5和图6描述的实施例而采用时尤其有利。

该方法上接图1中的步骤S2。下一可选步骤S30将多个符号序列以反转顺序写入缓冲存储器。例如并且参照图2,与图块1中的编码最后块表示对应的符号序列首先写入像素值缓冲器和分配给该最后块的特定存储器位置。然后与图块1的倒数第二块对应的符号序列在根据像素值缓冲器的读取顺序而在最后块的存储器位置的位置之前写入像素值缓冲器存储器。这意味着,将在写入块8的符号序列之前,将与图2中的块9对应的符号序列写入像素值缓冲器,进而在写入块7的编码表示之前,将块8的符号序列写入像素值缓冲器。写入像素值缓冲器的最后符号序列在该示例中是第一块2的(根据图6的)未压缩版本或(根据图5的)可变长度编码版本。

用于将组合序列写入像素值缓冲器的在步骤S30中所采用的反转顺序可以是如上所述的像素值缓冲器的反转读取顺序。或者,可以使用其它反转顺序,包括反转Morton顺序或反转Hilbert顺序,本文进一步描述它们。

此外,该方法的步骤S31将针对块所确定的相应大小指示写入像素值缓冲器。步骤S31包括:与在前符号序列相关地写入针对块所确定的大小指示,按照像素值缓冲器的读取顺序,该在前符号序列在通过对当前块进行可变长度编码所获得的符号序列之前。该步骤S31通常与步骤S30并行地进行,以将符号序列和大小指示一起写入像素值缓冲器。然后对于图块中的其它符号序列和大小指示重复步骤S30和S31所形成的循环。

图8示意性示出了这种存储大小指示的构思。分配给当前图块的像素值缓冲器80的最后位置被分配给与图块的编码最后块表示对应的符号序列。然而,并非与最后符号序列相关,而是与针对图块中的在前块所获得的符号序列相关地存储针对该最后块所确定的大小指示。通过查看像素值缓冲器80中的第一行以及图1中的图块1中的块2~5的对应第一行,该操作更清楚。因此,与根据像素值缓冲器80的读取顺序针对图块1中的在前块4所获得的符号序列24相关地在像素值缓冲器80中存储定义具有标号5的块的符号序列25的大小的大小指示35。然而,进而与图块1中的块3的符号序列23相关地在像素值缓冲器80中存储该在前块4的大小指示34。这意味着,第二块3将其大小指示33与来自图块1中的第一块2的符号序列22相关地存储。

在该实施例中,第一块2以未压缩形式存储并且因此没有任何所分配的大小指示,或如果确实对第一块2进行可变长度编码,则其大小指示存储在另一存储器或存储器位置中。

在实施例中,通过提供紧邻在前块的符号序列的结尾之后的大小指示来实现与在前块的符号序列相关地存储给定块的大小指示。图8示出了该实施例。备选地,可以紧邻在前块的符号序列之前存储大小指示。图17中示出该情况。在此情况下,符号序列23的大小指示33在像素值缓冲器中的在前符号序列22中的符号之前。由于当读取在前符号序列时将直接读取或获得给定符号序列的大小指示,因此该实施例在一些应用中优于图8所示的实施例。这意味着:在必须遍历读取在前符号序列中的全部序列之前,大小指示是可用的。在并行处理中,这意味着,可以识别从读取以及处理大小指示直到其关联符号序列的时间,并且将减少读取。

图18示出与在前块的符号序列相关地布置大小指示的另一实施例。在该实施例中,大小指示存储在分配给各个符号序列的最后存储器位置处。这意味着,当前符号序列23的大小指示33存储在在前符号序列22中的符号之后,并且进一步优选地存储在缓冲存储器20中分配给该在前符号序列22的最后存储器位置处。

以上提出的在图8、图17和图18中所公开的实施例是相对于关联相应符号序列布置大小指示的说明性示例。实施例还包括:将大小指示存储在分配给该在前块以及在前块的相对符号序列的存储器区域内的某个另外预定位置中。此外,可以与根据像素值缓冲器的读取顺序而位于比当前符号序列更早的两个或更多个步骤的符号序列相关地存储大小指示。如果将使用多个并行解码器,则这是尤其优选的,从而在正确的解码器开始处理给定符号序列之前,给定符号序列的大小指示可以被读取并且提供给正确的解码器。

在这些实施例中,当从像素值缓冲器80读取符号序列中的符号(例如图块1中的第二块2的符号序列23)时,还从像素值缓冲器80读取根据读取顺序属于图块1中的下一块4的大小指示34。读取大小指示34由此使得能够确定当根据读取顺序读取像素值缓冲器80中的下一符号序列24时从像素值缓冲器80读取的符号数量。因此,从像素值缓冲器读取给定符号序列还提供要从像素值缓冲器读取的下一符号序列的大小指示。这些实施例因此无需中止读取处理或冒读取不必要的或过多的符号的“风险”。

以上提出的实施例利用单独可变长度编码的块以及图块的单独处理。这意味着,与图块的符号序列相关地存储针对同一图块的另一符号序列所生成的大小指示。然而,还可能的是:与属于像素值缓冲器中的另一图块的符号序列相关地存储大小指示。例如并且参照图8,假设像素值缓冲器80将至少一个图块进一步扩展到图中的右边。因此,像素值缓冲器80是至少两个图块“宽”。在此情况下,在图8中具有标号36的大小指示将是针对像素值缓冲器80的下一图块中的第一块和符号序列所确定的大小指示。因此,图块1的符号序列的每个行中的最后大小指示36与属于像素值缓冲器80中的下一图块的符号序列关联。然后通过一行接一行地读取来优选地读取像素值缓冲器80,这意味着当读取每个行时将读取属于至少两个图块的符号序列。

也可以根据反转顺序来进行图块中的多个块的可变长度编码。在此情况下,首先对图块的最后块进行可变长度编码,然后是倒数第二块,以此类推,直到保持未编码的或被可变长度编码的第一块。在此情况下,可以在对图块中的其它块进行可变长度编码的同时将符号序列写入像素值缓冲器。因此,可以至少部分地并行地进行可变长度编码和写入像素值缓冲器。在备选方法中,根据读取顺序首先对图块的块进行可变长度编码(可选地,省略第一块),然后,一旦完成可变长度编码,就将所获得的符号序列以反转读取顺序写入像素值缓冲器。

上述构思还应用于当写入各自包括多个符号序列的组合序列时的情况。图9包括图1的步骤S3和S4的实施例的流程图。下一可选步骤S40以反转顺序(例如像素值缓冲器的反转读取顺序、反转Morton顺序或反转Hilbert顺序)写入组合序列。在该实施例中,最后图块的组合序列首先写入像素值缓冲器,之后是倒数第二图块的组合序列,以此类推,直到像素值缓冲器中的第一图块。对于图块的每个集合,下一步骤S41将在前图块的在前组合序列相关地针对集合所确定的大小指示写入像素值缓冲器。在前图块然后根据像素值缓冲器的读取顺序而在当前图块之前。典型地并行进行步骤S40和S41,从而组合序列连同大小指示一起写入像素值缓冲器。这意味着,对于其它组合序列重复步骤S40和S41的循环。

图10示意性示出了具有存储四个不同图块40、50、60、70的组合序列41、43、45、47、51、53、55、57、61、63、65、67、71、73、75、77的像素值缓冲器80的缓冲存储器20。在该实施例中,以像素值缓冲器80的读取顺序紧邻像素值缓冲器80的同一行中出现但根据读取顺序属于在前图块40的在前组合序列41、43、45、47之后,存储针对当前图块50的给定组合序列51、53、55、57所确定的大小指示52、54、56、58。这意味着,当从像素值缓冲器80读取在前图块40的第一组合序列41时,还读取当前图块51中的第一组合序列51的大小指示52。

与图8、图17和图18的实施例相似,图块的组合序列的大小指示无需一定与第一在前图块的组合序列相关地存储,而是可以代之以与根据读取顺序在当前图块之前的在前图块中的一些其它组合序列中存储。此外,可以紧邻在前图块的组合序列之后(见图10)、在在前图块的组合序列之前(与图17相比)、或在分配给像素值缓冲器中的在前图块的组合序列的最后存储器位置处(与图18相比)存储大小指示。

此外,在实施例中,像素值缓冲器80中的第一图块40的组合序列41、43、45、47以未压缩形式存储在缓冲存储器20中。在备选方法中,第一图块40的组合序列41、43、45、47可以是压缩形式,但然后针对第一图块40所确定的相应大小指示存储在对于显示单元可存取的另一存储器中。

图10所示的实施例将针对给定图块的组合序列所确定的大小指示与来自另一图块的组合序列相关地存储在像素值缓冲器中。在备选方法中,代之以与同一图块的在前组合序列相关地存储大小指示。例如,图块50和组合序列51可以后接对于图块50的下一组合序列53所确定的并且与图块50的下一组合序列53关联的大小指示62。该下一组合序列53进而后接对于图块50的第三行中的组合序列55所确定的大小指示64,以此类推。在该实施例中,图块50的最后组合序列57于是典型地没有任何后接的大小指示。

在特定实施例中,组合序列根据读取顺序或优选地反转读取顺序而写入像素值缓冲器。在备选方法中,组合序列可以根据Morton顺序或优选地反转Morton顺序而写入缓冲存储器。图11示意性示出了存储4×4图块的组合序列的像素值缓冲器80。假设像素值缓冲器80中的各个坐标(即(x,y))识别图块。在第一步骤中,生成图块(4,4)的组合序列,确定图块(4,4)的大小指示。图块(4,4)的组合序列写入像素值缓冲器80,图块(4,4)的大小指示临时存储在图形处理单元中。此后,确定用于图块(3,4)的组合序列和大小指示。图块(3,4)的组合序列写入像素值缓冲器80,后接先前临时存储的图块(4,4)的大小指示。图块(3,4)的大小指示临时存储在图形处理单元中。写入像素值缓冲器80的下一图块根据反转Morton顺序是图块(4,3)。然而,此时,在时间上,典型地未确定应跟随图块(4,3)的组合序列的大小指示(即来自图块(1,4)的大小指示)。因此,没有大小指示与图块(4,3)的组合序列相关地被存储。该过程通过后接对于图块(4,3)所确定的大小指示而将图块(3,3)的组合序列写入像素值缓冲器80而继续。此后,图块(2,4)的组合序列连同先前所确定的并且临时存储在图形处理单元中的图块(3,4)的大小指示一起被存储。图块(2,4)的大小指示也得以确定并且临时存储在图形处理单元中。由于应当与大小指示相关存储的图块(4,3)的组合序列已经写入像素值缓冲器80,因此优选地以未压缩形式来存储图块(1,4)的组合序列。

或者,可以通过压缩形式来提供图块(1,4)的组合序列,但然后需要将图块(1,4)的大小指示存储在某另外存储器或除了缓冲存储器中的像素值缓冲器80之外的存储器位置中。

写入像素值缓冲器80通过确定图块(2,3)的组合序列和大小指示而继续。在图块(2,3)的组合序列连同先前所确定的并且临时存储的图块(3,3)的大小指示一起写入像素值缓冲器的同时,临时存储图块(2,3)的大小指示。然后对于像素值缓冲器的其余图块根据反转Morton顺序来进行该过程。在图11所示的示例中,以未压缩形式存储图块(1,1)、(1,2)和(1,3)的组合序列,或在某另外存储器中提供这些图块(1,1)、(1,2)和(1,3)的大小指示。这意味着,像素值缓冲器80中的图块的18.75%需要以未压缩形式来提供,或具有存储在别处的大小指示。用于8×8图块和16×16图块的像素值缓冲器80的对应数量是图块的10.94%和5.86%。

上述根据反转Morton顺序或反转Z顺序写入组合序列和大小指示的原理如其所表示的那样可以应用于在图形系统内所使用的其它空间填充顺序,包括反转Hilbert顺序。通常,与使用与读取顺序相反的反转顺序像素值缓冲器或反转Morton顺序相比,反转Hilbert顺序是较不优选的。原因在于,与反转读取顺序和反转Morton顺序相比,当使用反转Hilbert顺序时,需要以未压缩形式来写入更大数量的图块。

图12是示出根据实施例的对包括多个像素图块的像素值缓冲器进行编码的方法的流程图。该方法开始于步骤S50,其对像素值缓冲器中的多个图块的至少一部分中的图块进行可变长度编码。可变长度编码步骤S50包括:对构成图块的相应子集的多个像素块进行可变长度编码,以形成多个符号序列,作为这些多个块中的像素的像素值的编码表示。因此,对于像素值缓冲器中的多个图块的至少一部分中的每个图块,在步骤S50中生成多个符号序列。在特定实施例中,步骤S50对相关图块中的所有相应块进行可变长度编码。参照示出了具有像素10的16个块2~9的图块1的图2,将在步骤S50中生成十六个符号序列。

下一步骤S51确定针对图块中的多个块的每个集合的大小指示。大小指示表示与在步骤S50中所获得的多个符号序列对应的组合序列的压缩比率。图2示意性示出了集合12、14包括图块1中的每行四个块2~5、6~9,产生总共具有四个组合序列和四个大小指示的四个集合。

下一步骤S52将图块的组合序列写入缓冲存储器中的像素值缓冲器。进一步以反转顺序写入组合序列。反转顺序优选地是与像素值缓冲器的读取顺序相反的顺序。例如,如果在第一行处开始从左到右逐行读取像素值缓冲器,则反转顺序将首先写入后接位于同一行上但向左一步的倒数第二图块的与像素值缓冲器中的右下角对应的最后图块。于是写入像素值缓冲器的最后组合序列是来自第一行中的图块的组合序列。在备选实施例中,反转顺序是结合图11如上讨论的反转Morton顺序。在右下角处的图块的组合序列于是后接与图11中的箭头所示的顺序相反的反转顺序而首先写入缓冲存储器中的像素值缓冲器。可以用在步骤S52中的反转顺序的又一示例是反转Hilbert顺序。

步骤S53将步骤S51中所确定的大小指示写入缓冲存储器中的像素值缓冲器。针对给定图块所确定的大小指示与在前图块的在前组合序列相关地写入像素值缓冲器。在前图块然后根据像素值缓冲器的读取顺序而在给定图块之前。在特定实施例中,大小指示写入像素值缓冲器,以根据像素值缓冲器的读取顺序而紧邻在前图块的在前组合序列之后。步骤S52和S52通常并行进行,并且对于图块中的每个组合序列和大小指示重复一次。步骤S50至S53于是对于下一图块而重复,从而以压缩形式写入像素值缓冲器。

对于其通过对块进行可变长度编码来生成组合序列并且对于其确定大小指示的像素值缓冲器中的图块的数量取决于对于将组合序列写入缓冲存储器中的像素值缓冲器所采用的反转顺序。如果反转顺序等于像素值缓冲器的反转读取顺序,则除了第一图块之外的像素值缓冲器中的所有图块优选地被可变长度编码,并且具有大小指示。第一图块于是可以按未压缩形式写入像素值缓冲器。或者,其可以被可变长度编码为其它图块,但然后针对图块所确定的大小指示优选地存储在与缓冲存储器分离的存储器中。

如果采用反转Morton顺序,则像素值缓冲器的第一列中的图块优选地保持未压缩,或者,如果被可变长度编码并且压缩,则所确定的大小指示优选地存储在与缓冲存储器分离的存储器中。例如,在图11中,除了在坐标(1,3)处的图块之外的第一列中的所有图块优选地是未压缩的。

图13是根据实施例的图形系统的概述。图形系统包括三个主要单元或实体:经由数据总线380、385而互连的图形处理单元300(图中表示为GPU)、缓冲存储器430以及显示设备400。可以在任何数据处理单元或终端中实现图形系统。非限定性示例包括计算机(包括膝上型计算机)、游戏控制台、移动电话和其它移动处理单元(例如个人数字助理、iPad和其它平板计算机)。

图形处理单元300包括片载存储器340,被配置为在可变长度编码器310对图块1进行编码时存储图块1。所得各个组合序列从片载存储器340通过数据总线380传送到缓冲存储器20。缓冲存储器20于是包括以编码和压缩形式所提供的像素值缓冲器80。当在显示设备400的显示器470或连接到显示设备400的显示器470上显示数据时,与压缩像素值缓冲器80的至少一部分对应的编码数据从缓冲存储器20被读取,并且通过数据总线385提供给并行解码器集合440。解码器440然后对所取得的编码数据进行解码,以得到可以在显示器470上显示的像素值。

在备选实现实施例中,采用单个数据总线来将数据从GPU300传送到缓冲存储器20并且从缓冲存储器20传送到显示设备400。还可能的是,将缓冲存储器20布置为显示设备400的一部分。

图16以移动电话500的形式示意性示出了用户终端500。移动电话500于是包括具有用于对图块进行编码的设备100或用于对像素值缓冲器进行编码的设备200的GPU300,如以下将进一步描述的那样。数据总线380将GPU300与缓冲存储器20互连,缓冲存储器20进而经由数据总线385连接到具有显示器570或连接到570的显示设备400。

图14是根据实施例的用于对图块进行编码的设备100的示意性框图。设备100包括可变长度编码器或可变长度编码电路110,被配置为对多个像素块进行可变长度编码,以形成相应符号序列。设备100可以包括对多个块的像素值进行串行操作的单个可变长度编码器110。或者,设备100包括可以对来自图块中的不同块的像素数据进行并行操作的多个可变长度编码器集合110。可变长度编码器110优选地被配置为根据任何前述可变长度编码方案而操作。

在设备100中实现压缩率确定器或压缩率确定电路120,以确定针对图块中的至少一个块的每个集合的各个大小指示。大小指示于是表示组合序列的压缩比率,该组合序列与针对集合的至少一个块从可变长度编码器110所获得的至少一个符号序列相对应。

设备100的序列布置器或序列布置电路130被配置为将组合序列布置在缓冲存储器中的像素值缓冲器中。因此实现序列布置器130,以将组合序列通过数据总线可选地经由通用输入和输出(I/O)单元170从片载存储器160提供给缓冲存储器。I/O单元170优选地经由一个或多个I/O端口连接到数据总线。设备100还包括指示布置器或指示布置电路140,被配置为将针对集合由压缩率确定器120所确定的大小指示布置为根据像素值缓冲器的读取顺序而在集合的组合序列之前。指示布置器140因此经由数据总线和可选I/O单元170将大小指示从片载存储器160传送到外部缓冲存储器。在实施例中,序列布置器130和指示布置器140可以实现为设备100中的分离单元或电路。在备选方法中,可以在设备100的单个单元或电路中一起实现这些单元或电路所执行的功能。

在特定实施例中,序列布置器130被配置为将相应符号序列写入缓冲存储器中的像素值缓冲器并且优选地根据反转读取顺序。在此情况下,每个集合优选地包括相应块,每个组合序列等于针对各个块所确定的符号序列。

指示布置器140优选地被配置为与像素值缓冲器中的在前符号序列相关地写入针对给定块由压缩率确定器120所确定的大小指示。在前符号序列然后根据像素值缓冲器的读取顺序而在给定块的符号序列之前。在特定实施例中,指示布置器140提供根据像素值缓冲器的读取顺序而紧邻在前符号序列之后的大小指示。在此情况下,每个符号序列优选地后接针对下一跟随符号序列所确定的大小指示。这进一步意味着,图块中的最后符号序列将没有任何后接的大小指示。备选地,大小指示可以直接提供在在前符号序列的前面或在分配给在前符号序列的像素值缓冲器中的最后存储器位置处。

在实施例中,以未压缩形式来提供与图块中的第一块对应的第一符号序列。序列布置器130然后在后接用于图块中的其余块的多个符号序列的第一缓冲存储器位置处将符号序列中的符号写入像素值缓冲器。于是对于第一符号序列,压缩率确定器120并不确定大小指示。

在备选实施例中,可变长度编码器110对第一块进行可变长度编码,以得到符号序列。压缩率确定器120确定表示第一符号序列的压缩比率的大小指示。序列布置器130将第一符号序列写入为以读取顺序后接图块中的其余多个符号序列的像素值缓冲器中的第一符号序列。指示布置器140于是优选地被配置为将对于第一符号序列所确定的大小指示存储在片载存储器160中,并且在对大小指示的显式请求时将其提供给显示器单元。或者,指示布置器140可以将大小指示写入显示器单元可存取的存储器中的预定存储器位置。

在实施例中,压缩率确定器120确定针对包括图块中的预定多个数量的各个块在内的每个集合的各个大小指示。序列布置器130于是可以被配置为以反转读取顺序、反转Morton顺序或反转Hilbert顺序写入组合序列。

指示布置器140优选地被配置为与像素值缓冲器中的在前图块的在前组合序列相关地写入针对图块中的块的每个集合所确定的大小指示。大小指示优选地写入像素值缓冲器,以根据像素值缓冲器的读取顺序而紧邻在前组合序列之后或之前。

在该实施例中,高至除了像素值缓冲器中的最后图块之外的所有图块具有根据读取顺序后接可应用于下一图块的组合序列的大小指示的相应组合序列。序列布置器130可以按未压缩形式将像素值缓冲器中的第一图块的组合序列写入缓冲存储器。在备选实施例中,序列布置器130将从可变长度编码器所获得的组合序列写入缓冲存储器,而指示布置器140将对于第一图块由压缩率确定器120所确定的大小指示写入某另外存储器位置而不是像素值缓冲器。

设备100的单元或电路110~140、170可以作为硬件或硬件与软件的组合而得以实现或提供。在基于软件的实现的情况下,实现设备100或其部分的计算机程序产品包括在通用或专用计算机、处理器、或微处理器上运行的软件或计算机程序。软件包括图14所示的计算机程序代码元素或软件代码部分。程序可以全部或部分存储在一个或多个合适的易失性计算机可读介质或数据存储装置(例如RAM)或一个或多个非易失性计算机可读介质或数据存储装置(例如磁盘、CD-ROM、DVD盘、硬盘、ROM或闪存)上或其中。数据存储装置可以是本地数据存储装置或是远程提供的(例如在数据服务器中)。软件因此可以加载到计算机或等效处理系统的操作存储器中,以用于由处理器执行。计算机/处理器不一定专用于仅执行上述功能,而也可以执行其它软件任务。

设备100的单元或电路110~170优选地实现在如图13所示的图形处理单元中,并且可以出现在图形芯片上。在此情况下,有利地使用任何传统技术(例如集成电路技术,包括通用电子电路和专用电路)来实现单元或电路110~170。

图15是用于对像素值缓冲器进行编码的设备200的实施例的示意性块示图。设备200包括可变长度编码器210,被配置为:对用于像素值缓冲器中的多个图块的至少一部分的每个图块的像素块进行可变长度编码。多个块构成相应图块子集。设备200和可变长度编码器210通常一次对一个图块操作。可变长度编码器210针对输入图块的输出是输入图块的多个块中的像素的像素值的编码表示。

设备200可以包括对多个块的像素值进行串行操作的单个可变长度编码器210。或者,设备200包括可以对来自图块中的不同块的像素数据进行并行操作的多个可变长度编码器集合210。可变长度编码器210优选地被配置为根据任何前述可变长度编码方案而操作。

实现压缩率确定器或压缩率确定电路220,以确定针对图块中的多个块的每个集合的大小指示。大小指示于是表示组合序列的压缩比率,该组合序列与针对所述集合的所述多个块的从可变长度编码器210所获得的多个符号序列相对应。

设备200优选地还包括存储器260(例如片载存储器260),其中,所确定的组合序列和大小指示在写入外部缓冲存储器中的像素值缓冲器之前至少临时被存储。可选地通过将接口提供给数据传送到缓冲存储器的数据总线的设备的I/O单元或电路270来进行写入外部缓冲存储器。I/O单元270优选地经由一个或多个I/O端口连接到数据总线。

设备200的序列写入器或序列写入电路230被配置为:可选地通过I/O单元270写入对于图块从可变长度编码器210所获得的组合序列。序列写入器230根据上述反转顺序将这些组合序列写入缓冲存储器中的像素值缓冲器。

设备200还包括指示写入器或指示写入电路240,用于将率确定器220所确定的大小指示写入缓冲存储器中的像素值缓冲器。具体地说,指示写入器240将针对多个图块的至少一部分中的图块所确定的大小指示与在前图块的在前组合序列相关地写入像素值缓冲器。在前图块然后根据像素值缓冲器的读取顺序而在当前图块之前。指示写入器240的实现实施例写入针对当前图块所确定的大小指示,以紧邻像素值缓冲器中的在前图块的在前组合序列之后,并且根据像素值缓冲器的读取顺序。备选地,大小指示可以存储为在在前组合序列之前,或被提供在分配给像素值缓冲器中的在前组合序列的最后存储器位置处。

在实施例中,序列写入器230和指示写入器240可以实现为设备200中的分离单元或电路。在备选方法中,可以在设备200的单个单元或电路中一起实现这些单元或电路所执行的功能。

设备200的单元或电路210~240、270可以作为硬件或硬件与软件的组合而得以实现或提供。在基于软件的实现的情况下,实现设备200或其部分的计算机程序产品包括在通用或专用计算机、处理器、或微处理器上运行的软件或计算机程序。软件包括图15所示的计算机程序代符号素或软件代码部分。程序可以全部或部分存储在一个或多个合适的易失性计算机可读介质或数据存储装置(例如RAM)或一个或多个非易失性计算机可读介质或数据存储装置(例如磁盘、CD-ROM、DVD盘、硬盘、ROM或闪存)上或其中。数据存储装置可以是本地数据存储装置或是远程提供的(例如在数据服务器中)。软件因此可以加载到计算机或等效处理系统的操作存储器中,以用于由处理器执行。计算机/处理器不一定专用于仅执行上述功能,而也可以执行其它软件任务。

设备200的单元或电路210~270优选地实现在如图13所示的图形处理单元中,并且可以出现在图形芯片上。在此情况下,有利地使用任何传统技术(例如集成电路技术,包括通用电子电路和专用电路)来实现单元或电路210~270。

上述实施例应理解为本发明的说明性示例。本领域技术人员应理解,在不脱离本发明的范围的的情况下,可以对实施例进行各种修改、组合和改变。具体地说,在技术上可能的情况下,可以通过其它配置组合不同实施例中的的不同部分解决方案。然而,本发明的范围由所附权利要求限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号