颜色缓冲压缩的制作方法
【专利摘要】根据一些实施方式,可以维护掩码或表以便记录关于在块内的每一像素是否已被清除的信息。在此所使用的,“已清除”块是不被任何其他所描绘的物体所覆盖的块。清除掩码可以每个像素或样本存储1比特,以便指示该像素或样本是包含颜色值还是已被清除。结果,在一些实施方式中,对于部分覆盖的块,可以提高压缩率。
【专利说明】颜色缓冲压缩
【技术领域】
[0001] 本发明通常涉及计算机的图形处理,且尤其涉及在颜色缓存中缓存数据。
【背景技术】
[0002] 为了提高图形处理单元(GPU)的性能,采用了存储器带宽减少技术。减少带宽要 求的一种方式是执行缓冲器压缩。图形系统可以使用颜色缓冲器和深度缓冲器,在颜色缓 冲器中绘制像素的颜色,在深度缓冲器中存储每一像素的深度。在渲染期间,读取并写入这 些缓冲器,且对于这两种缓冲器来说往往多次访问相同的像素。这些读访问和写访问在能 量消耗方面是昂贵的,且尽可能地减少是有利的,对于诸如移动设备等的具有有限电源的 用户终端来说尤其如此。
【专利附图】
【附图说明】
[0003] 相对于下列附图描述一些实施方式:
[0004] 图1是一种实施方式的示意性描述;
[0005] 图2是使用8x4像素的块(tile)尺寸的一种实施方式的流程图;
[0006] 图3是一种实施方式的系统描述;以及
[0007] 图4是一种实施方式的正视图。
【具体实施方式】
[0008] 根据一些实施方式,可以维护一个掩码或表以便记录关于在块内的每一像素是否 已经被清除的信息。在此所使用的"已清除"块、像素或样本是不被任何其他所描绘的物体 所覆盖的块、像素或样本。清除掩码可以为每个像素或样本存储1比特,以便指示该像素或 样本是包含颜色值还是已被清除。结果,在一些实施方式中,对于部分地覆盖的块,可以增 加压缩率。
[0009] 缓冲器压缩/解压缩可以用于三维(3D)图形,例如游戏,3D地图和景物、3D消息, 例如所制作的动画消息、屏幕保护程序、人机界面(MMI)等等,但不限于此。因而,压缩/解 压缩也可以用于编码其他类型的图像或图形,例如一维(1D)、二维(2D)或3D图像。
[0010] 压缩和解压缩共同处理多个像素,通常以像素的区块(block)或块(tile)的形 式。在一种实施方式中,像素区块具有MxN像素的尺寸,其中M,N是整数,且附带条件为Μ 和Ν两者不同时为1。优选地,Μ=2°^ΡΝ=2η,其中m,n是0或整数,且附带条件为m和η不 同时为0。在典型的实现中,Μ=Ν,且这样的区块实施方式可以是4x4像素、8χ4、8χ8像素或 16x16像素。
[0011] 表示方法像素或"区块元素"是指区块或区块的经编码表示中的元素。这种区块又 对应于图像、纹理或缓冲器的部分。因而,像素可以是(1D、2D、3D)纹理纹素(texel)(纹理 元素),(1D或2D)图像的像素或3D图像的体积元素(voxel)(体积元素)。一般地,像素由 关联的像素参数或属性值或特征来表征。可以指派给像素存在不同的特性属性值,这通常 依赖于正在处理什么种类的像素区块。举例来说,属性值可以是指派给像素的颜色值。不 同的颜色空间可用于表示像素颜色值。一个颜色空间是所谓的红、绿、蓝(RGB)颜色空间。 因此,像素属性值可以是RGB颜色的红色值、绿色值或蓝色值。
[0012] 也可以以亮度和色度分量的形式来表示像素颜色。在这样的情况中,可以使用一 种变换来将RGB颜色值转换成一个亮度值以及通常两个色度分量。亮度-色度空间的示例 包括¥-、¥(;(: 8和¥(;(;。因此,属性值可以也是亮度值(¥)或色度值(认¥,(;,(:8,(;,或(;)。 压缩/解压颜色缓冲器的像素区块的情况中,像素的RGB颜色可以被转换成亮度/色度颜 色空间。这不仅使得RGB数据不再相关,得到改善的压缩率,而且也允许具有用于亮度和色 度分量的不同压缩策略的可能性。因而,由于人类视觉系统对亮度分量中的误差更加敏感, 色度分量可以通常比亮度分量压缩得更激进。
[0013] 图1中,图形处理器10可以包括光栅化管线,其包括光栅化单元40、纹理和片段处 理单元42以及深度或Z比较和混合单元44。在一些实施方式中,这些单元中的每一个都可 以全部或部分地由软件或硬件实现。
[0014] 纹理和片段处理单元42耦合到纹理缓存46。缓存46又通过纹理解压缩模块54 耦合到存储器分区60。因而,在存储器分区和缓存之间,可以解压缩存储在缓存中的纹理信 肩、。
[0015] 深度比较和混合单元44耦合到深度缓冲器缓存48、颜色缓冲器缓存50和块表缓 存52。深度缓冲器缓存48又通过深度缓冲器编码器/解码器(编解码器)56耦合到存储器 分区60。同样地,颜色缓冲器缓存50通过颜色缓冲器编码器/解码器(编解码器)58耦合 到存储器分区60。存储器分区60可以耦合到动态随机存取存储器(DRAM)62、64、66和68, 它们可以是系统存储器的一部分。在一些实施方式中,可以使用包括纹理缓存、深度缓冲器 缓存和颜色缓冲器缓存在内的统一缓存。
[0016] 在一些实施方式中,统一编解码器可以代替单兀54、56和58。在以下论文中进一 步描述了各种配置:Str&n等人的统一编解码器体系结构中的浮点缓冲器压缩(Floating Point Buffer Compression in a Unified Codec Architecture),图形硬件(Graphics Hardware) (2008)。
[0017] 参见图2,颜色缓冲器压缩的序列70可以以硬件、软件和/或固件实现。在软件和 固件实施方式中,它可以由被存储在诸如磁、光或半导体存储介质等的一个或多个非瞬态 计算机可读介质中的计算机执行的指令实现。仅举出一些示例,这样的存储介质的示例可 以包括颜色缓冲器缓存本身、动态随机存取存储器或与其关联的处理器,例如图形处理单 J Li 〇
[0018] 该序列可以从设置模式比特开始(框72 )。在一种实施方式中,提供两个模式比特。 颜色的压缩涉及α颜色通道在块上分别恒定的常见情况,以及其中α值在块上改变的情 况。因而,两个模式比特可以被用来覆盖三种可能的情形:首先,α值可以恒定,且对整个 块来说可以是〇;其次,在整个块上α值可以是恒定为1(其中对于8比特渲染目标1通常 被编码为255);以及再次,α值不恒定,即是说,在整个块上不是0或1。
[0019] 典型的块尺寸是8x4像素。但本发明不限于任何具体的块尺寸。另外,当前缓存 线尺寸是64字节。即是说,未经压缩的块适合两个缓存线且经压缩的块适合一个缓存线。 但本公开内容不限于任何具体的压缩率或任何具体的缓存线尺寸。
[0020] 接下来,对于每一块,存储清除掩码比特,如框74中所指示的。在其中块尺寸为 8x4的实施方式中,对于每一块,存在32个这样的清除掩码比特。在一种实施方式中,清除 掩码C中的1指示像素被清除。使用清除掩码的一个益处,仅对于未被清除的像素需要存 储颜色值。在一种实施方式中,掩码中未被清除的像素(即〇)的总数通过n (C)表示。如 果使用了清除掩码,那么在具有512比特缓存线的一种实施方式中,在考虑到32比特用于 清除掩码之后,480比特保留,以表示未被清除的颜色。然后,考虑到两个模式比特并假定恒 定的α,在具有24比特RGB值的情况中,对于每个像素仅存储三个颜色值。
[0021] 对于恒定的α值(菱形76),给定了比特预算剩余和颜色通道精度,那么,只要未 被清除的像素或样本的数量少于20 (菱形78),则可以以全精度存储未清除的颜色值,且因 此可以总是压缩块,如框80中所指示的。换句话说,如果采用剩余的480比特减去两个模 式比特并除以每像素24比特(在一种实施方式中使用24比特RGB方案),那么得到19. 92 像素。
[0022] 对于非恒定α值(即菱形76处的"否"选项),那么,未被清除的比特的数量应少 于15 (菱形82),以便在一个缓存线中以全精度存储(框84)。这是通过由478除以每像素 32比特等于每块14. 94个未被清除的比特来确定的。
[0023] 因而,通常经压缩的块内容将包括两个模式比特,后面是32个清除掩码比特, 后面是实际上使用的压缩比特。作为示例,如果存在12个未被清除的比特,则将获得 2+32+12X24等于322个比特,很好地适应缓存线的512比特预算。
[0024] 对于恒定的α情况,如果未被清除的比特的数量大于或等于20,则可以照常使用 任何其他压缩方案。例如,可以使用Λ颜色压缩。在Λ颜色压缩中,对于每一块或一组像 素,对于每一颜色通道存储单个参考值。然后,将各种像素颜色编码成偏离参考值的Λ值。 与Λ颜色压缩进行比较的差异是:随着未被清除的比特的数量改变,该数量可以与颜色组 件的Δ比特的变化的数量组合起来。作为示例,在下表中指示这些情况的Δ比特分布:
[0025]
【权利要求】
1. 一种计算机执行的方法,包括: 判断像素或样本的块具有恒定的还是变化的α值; 判断所述块的已清除的像素或样本的数量;以及 基于所述α值判断和已清除的像素或样本的所述数量,判断如何存储所述块。
2. 如权利要求1所述的方法,其特征在于,包括使用两个比特来自存储所述α值判断。
3. 如权利要求1所述的方法,其特征在于,包括提供三个α值判断,包括恒定为0、恒 定为1和变化。
4. 如权利要求1所述的方法,其特征在于,包括对所述块的每个像素或样本存储清除 比特以指示所述像素或样本是否已被清除。
5. 如权利要求4所述的方法,其特征在于,包括判断可以以压缩形式存储的块的清除 比特的最大数量。
6. 如权利要求5所述的方法,其特征在于,包括为恒定和变化的α值中的每一个判断 清除比特的最大数量,以便压缩块以供以压缩形式存储。
7. -个或多个存储指令的非瞬态计算机可读介质,所述指令引起处理器执行包括以下 步骤的序列: 判断像素或样本的块具有恒定的还是变化的α值; 判断所述块的已清除的像素或样本的数量;以及 基于所述α值判断和已清除的像素或样本的所述数量,判断如何存储所述块。
8. 如权利要求7所述的介质,其特征在于,所述序列包括使用两个比特来存储所述α 值判断。
9. 如权利要求7所述的介质,其特征在于,所述序列包括提供三个α值判定,包括恒定 为〇、恒定为1和变化。
10. 如权利要求7所述的介质,其特征在于,所述序列包括为所述块的每一像素或样本 存储清除比特,以指示所述像素或样本是否已被清除。
11. 如权利要求10所述的介质,其特征在于,所述序列包括判断可以以压缩形式存储 的块的清除比特的最大数量。
12. 如权利要求11所述的介质,其特征在于,所述序列包括判断恒定的和变化的α值 中的每一个的清除比特的最大数量,以便压缩块以供以压缩形式存储。
13. -种装置,包括: 处理器,其执行序列,其中,为了执行所述序列,所述处理器:判断像素或样本的块具有 恒定的还是变化的α值,判断所述块的已清除的像素或样本的数量,且基于所述α值判断 和已清除的像素或样本的所述数量,判断如何存储所述块;以及 存储器,其耦合到所述处理器。
14. 如权利要求13所述的装置,其特征在于,为了执行所述序列,所述处理器使用两个 比特来存储所述α值判断。
15. 如权利要求13所述的装置,其特征在于,为了执行所述序列,所述处理器提供三个 α值判定,包括恒定为0、恒定为1和变化。
16. 如权利要求13所述的装置,其特征在于,为了执行所述序列,所述处理器为所述块 的每一像素或样本存储清除比特,以指示所述像素或样本是否已被清除。
17. 如权利要求16所述的装置,其特征在于,为了执行所述序列,所述处理器判断可以 以压缩形式存储的块的清除比特的最大数量。
18. 如权利要求17所述的装置,其特征在于,为了执行所述序列,所述处理器判断恒定 的和改变的α值中的每一个的清除比特的最大数量,以便压缩块以供以压缩形式存储。
19. 一种装置,包括: 存储器;以及 处理器,其耦合到所述存储器,用于判断像素是否因为不受任何其他所描绘的物体覆 盖而被清除,且仅将未被清除的像素的颜色值存储在所述存储器中。
20. 如权利要求19所述的装置,其特征在于,所述处理器是图形处理单元。
21. 如权利要求19所述的装置,其特征在于,所述处理器用于对于每一经压缩块中的 每个像素存储1比特的清除掩码。
22. 如权利要求21所述的装置,其特征在于,所述处理器使用两个掩码比特来指示在 所述整个块上所述α值是〇、1还是非恒定。
23. 如权利要求22所述的装置,其特征在于,所述处理器以全精度存储颜色值。
24. 如权利要求19所述的装置,其特征在于,所述处理器使用Λ值的比特来指示已清 除的像素。
【文档编号】H04N19/423GK104113757SQ201410160631
【公开日】2014年10月22日 申请日期:2014年4月21日 优先权日:2013年4月22日
【发明者】T·阿凯奈-莫勒, J·尼尔森, J·哈塞尔格林, M·安德森 申请人:英特尔公司