增量颜色压缩到视频的应用的制作方法

文档序号:18621687发布日期:2019-09-06 22:33阅读:203来源:国知局
增量颜色压缩到视频的应用的制作方法

相关技术的描述

图形处理单元(gpu)是被配置为执行图形处理任务的复杂集成电路。例如,gpu可以执行最终用户应用程序(诸如视频游戏应用程序)所要求的图形处理任务。gpu可以是分立装置,或可包括在与另一个处理器(诸如中央处理单元(cpu))相同的装置中。gpu在被称为渲染的过程中从其部件的较高级描述产生构成图像的像素。gpu通常通过使用计算元件处理像素、纹理和几何数据来利用连续渲染的概念。计算元件可执行光栅化器、设置引擎、颜色混合器、隐藏表面消除、纹理映射等功能。这些计算元件通常被称为着色器、着色器处理器、着色器阵列、着色器单元、着色器引擎等,其中“着色器”是计算机图形学中的术语,是指由图形资源使用来执行渲染效果的软件指令集或程序。“着色器”还可以指用于执行软件指令的实际硬件部件或处理器。着色器处理器或程序可读取数据并渲染数据,并且执行数据的任何类型的处理。

在生成复杂图形场景中涉及的大多数处理涉及纹理数据。纹理可以是各种类型的数据(诸如颜色、透明度、查找表或其他数据)中的任一者。在一些实施方案中,纹理可以是有待被绘制到几何形状上以添加视觉细节的数字化图像。在渲染模型以创建目标图像时,可通过使用纹理将大量的细节映射到图形模型的表面。纹理映射的目的是在对象的表面上提供逼真的外观。纹理可指明许多属性,包括颜色、表面属性,如呈法线或凹凸贴图的形式的镜面反射或精细表面细节。纹理也可以是图像数据、颜色或透明度数据、粗糙度/平滑度数据、反射率数据等。

在纹理和表面中,最小的信息项被称为“像素”。为方便起见,像素通常以规则的二维网格布置。通过使用这种布置,可通过独立地对每个像素均匀地应用相同操作来实现许多常见的操作。为了表示特定颜色,每个像素可具有三个值,所述值各自针对所需颜色中存在的红色、绿色和蓝色的量。一些像素格式还可包括第四值,称为α,其表示像素的透明度。这种格式通常称为argb或rgba。用于表示像素颜色的另一种格式是ycbcr,其中y对应于像素的亮度或明亮度,并且cb和cr对应于两个色差色度分量,表示蓝色色差(cb)和红色色差(cr)。在本文中,源像素的每个单独值可被称为“像素分量”(例如,红色像素分量、蓝色像素分量、蓝色色差色度像素分量、亮度像素分量)。

在3d计算机图形中,通常通过使用纹理来添加对象上的表面细节。例如,可使用纹理映射将砖墙的2d位图图像应用到表示建筑物的3d模型的一组多边形,以给予该对象的3d渲染由砖构成的外观。提供逼真的计算机图形通常需要许多高质量、详细的纹理。纹理的使用可消耗大量的存储空间和带宽,并且因此纹理可被压缩以减少存储空间和带宽利用。

压缩纹理和表面可减少图形系统上的存储和带宽成本,同时尽可能多地保持原始纹理和表面的特性。图形处理的局限性之一是存储器或高速缓存带宽阻止gpu达到其全部性能。可利用压缩来减少从存储器或高速缓存提取以供gpu处理的数据的量。然而,现有类型的压缩不太适合压缩由gpu处理的纹理和表面。

附图说明

通过结合附图参见以下描述,可以更好地理解本文所述的方法和机制的优点,在附图中:

图1是计算系统的一个实施方案的框图。

图2是图形处理单元(gpu)的一个实施方案的框图。

图3是用于压缩像素数据的技术的一个实施方案的框图。

图4示出指明黑色像素值和白色像素值的编码值的两个表。

图5是示出用于压缩像素数据的方法的一个实施方案的概括性流程图。

图6是示出用于对所压缩的像素数据块进行解压缩的方法的一个实施方案的概括性流程图。

图7是示出用于压缩恒定像素数据的方法的一个实施方案的概括性流程图。

图8是示出用于压缩像素数据的方法的另一个实施方案的概括性流程图。

图9是示出用于压缩具有α通道的像素数据的方法的另一个实施方案的概括性流程图。

具体实施方式

在以下描述中,阐述了许多具体细节以提供对本文所提出的方法和机制的全面理解。然而,本领域普通技术人员应当认识到,各种实施方案可以在没有这些具体细节的情况下实践。在一些情况下,没有详细示出众所周知的结构、部件、信号、计算机程序指令和技术以避免模糊本文所描述的方法。应当了解,为了简单和清楚说明起见,图中示出的元件不一定按比例绘制。例如,一些元件的尺寸可以相对于其他元件放大。

本文公开用于压缩像素数据的系统、设备和方法。在一个实施方案中,系统包括耦合到存储器子系统的至少一个处理器。存储器子系统包括一个或多个级别的高速缓存和/或一个或多个存储器。在一个实施方案中,处理器被配置为接收多个m位像素分量,所述多个m位像素分量是在n位容器中对齐的最高有效位(msb),其中n和m是整数,并且其中n大于m。接着,处理器将所述m位像素分量向下移位至所述n位容器的最低有效位(lsb)位置中。然后,处理器将多个n位容器转换成多个m位容器。接着,处理器压缩多个m位容器以创建压缩的像素数据块。然后,处理器将压缩的像素数据块存储在存储器子系统中。

响应于接收到对存储在存储器子系统中的压缩的像素数据块进行解压缩的请求,处理器被配置为检索压缩的像素数据块。接着,处理器对所压缩的像素数据块进行解压缩以创建m位容器中的像素分量。然后,处理器将m位容器扩展成n位容器。接着,处理器将m位像素分量移位至n位容器的msb位置。然后,处理器将n位容器中的像素分量传送至客户端(例如,着色器)。

现参见图1,示出了计算系统100的一个实施方案的框图。在一个实施方案中,计算系统100包括耦合到存储器150的片上系统(soc)105。soc105也可称为集成电路(ic)。在一个实施方案中,soc105包括中央处理单元(cpu)165的处理单元175a至175n、输入/输出(i/o)接口155、高速缓存160a至160b、结构120、图形处理单元(gpu)130、本地存储器110和一个或多个存储器控制器140。soc105还可包括图1中未示出的其他部件以避免模糊附图。处理单元175a至175n表示任何数量和类型的处理单元。在一个实施方案中,处理单元175a至175n是cpu核心。在另一实施方案中,处理单元175a至175n中的一个或多个是其他类型的处理单元(例如,专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp))。cpu165的处理单元175a至175n耦合到高速缓存160a至160b和结构120。

在一个实施方案中,处理单元175a至175n被配置为执行特定指令集架构(isa)的指令。每个处理单元175a至175n包括一个或多个执行单元、高速缓存存储器、调度器、分支预测电路等等。在一个实施方案中,处理单元175a至175n被配置为执行系统100的主控软件(诸如操作系统)。通常,处理单元175a至175n在使用期间执行的软件可控制系统100的其他部件以实现系统100的期望功能。处理单元175a至175n还可以执行其他软件(诸如应用程序)。

gpu130至少包括压缩器模块135、一个或多个高速缓存138和计算单元145a至145n。应注意,压缩器模块135也可称为“压缩模块”或“压缩单元”。计算单元145a至145n表示用于图形或通用处理的任何数量和类型的计算单元。每个计算单元145a至145n包括任何数量的执行单元,并且每个计算单元的执行单元的数量根据实施方案而变化。gpu130耦合到本地存储器110和结构120。在一个实施方案中,使用高带宽存储器(hbm)来实现本地存储器110。在一个实施方案中,gpu130被配置为执行图形管线操作,诸如绘制命令、像素操作、几何计算以及用于将图像渲染到显示器的其他操作。在另一个实施方案中,gpu130被配置为执行与图形无关的操作。在另一个实施方案中,gpu130被配置为执行图形操作和非图形相关操作两者。

在一个实施方案中,gpu130被配置为接收多个m位像素分量,所述多个m位像素分量是在n位容器中对齐的最高有效位(msb),其中n和m是整数,并且其中n大于m。在接收到多个m位像素分量之后,gpu130将m位像素分量向下移位至n位容器的最低有效位(lsb)位置中。然后,gpu130将多个n位容器转换成多个m位容器。接着,gpu130压缩多个m位容器以创建压缩的像素数据块。然后,gpu130将压缩的像素数据块存储至本地存储器110。

i/o接口155耦合到结构120,并且i/o接口155表示任何数量和类型的接口(例如,外围部件互连(pci)总线、pci扩展(pci-x)、pcie(pci高速)总线、千兆以太网(gbe)总线、通用串行总线(usb))。各种类型的外围装置可耦合到i/o接口155。这类外围装置包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录装置、外部存储装置、网络接口卡等。

soc105耦合到存储器150,所述存储器150包括一个或多个存储器模块。存储器模块中的每一个包括安装在其上的一个或多个存储器装置。在一些实施方案中,存储器150包括安装在母板或其他载体上的一个或多个存储器装置,soc105也安装在所述母板或其他载体上。在一个实施方案中,存储器150用于实现在操作期间与soc105一起使用的随机存取存储器(ram)。实现的ram可以是静态ram(sram)、动态ram(dram)、电阻式ram(reram)、相变ram(pcram)或任何其他易失性或非易失性ram。用于实现存储器150的dram的类型包括(但不限于)双倍数据速率(ddr)dram、ddr2dram、ddr3dram等。尽管未在图1中明确示出,但是soc105还可包括处理单元175a至175n和/或计算单元145a至145n内部的一个或多个高速缓存存储器。在一些实施方案中,soc105包括由处理单元175a至175n利用的高速缓存160a至160b。在一个实施方案中,高速缓存160a至160b是包括高速缓存控制器的高速缓存子系统的一部分。

应注意,字母“n”在本文中显示在各种结构旁时旨在一般地指示该结构的任何数量的元件(例如,cpu165中的任何数量的处理单元175a-175n,包括一个处理单元)。另外,图1内使用字母“n”的不同参考标号(例如,计算单元145a-145n)并非意图指示提供相等数量的不同元件(例如,cpu165中的处理单元175a-175n的数量可与gpu130的计算单元145a-145n的数量不同)。

在各种实施方案中,计算系统100可以是计算机、膝上型计算机、移动装置、服务器或各种其他类型的计算系统或装置中的任何一种。应注意,计算系统100和/或soc105的部件数量可以根据实施方案而变化。可以存在比图1所示的数量更多或更少的每种部件/子部件。例如,在另一个实施方案中,soc105可包括耦合到多个存储器的多个存储器控制器。还应注意,计算系统100和/或soc105可包括未在图1中示出的其他部件。另外,在其他实施方案中,计算系统100和soc105可以除图1中所示之外的其他方式构造。

现转向图2,示出了图形处理单元(gpu)200的一个实施方案的框图。在一个实施方案中,gpu200的逻辑包括在(图1的)gpu130中。在一个实施方案中,gpu200至少包括着色器阵列215a至215d、命令中心集线器220、结构225和高速缓存230。应注意,gpu200还包括未在图2中示出的其他逻辑和/或其他部件以避免模糊附图。还应注意,gpu200的结构仅是在一个实施方案中使用的结构的一个实例。在其他实施方案中,gpu200可以其他方式组织。

着色器阵列215a至215d表示包括在gpu200中的任何数量和类型的着色器计算资源。着色器阵列215a至215d也可称为“着色器单元”。每个着色器阵列215a至215d包括用于执行几何图形、顶点、像素和/或其他着色操作以渲染图形的各种计算资源。在各种实施方案中,计算资源包括用于提取和解码指令的部件、用于执行算术计算的一个或多个算术逻辑单元“alu”、以及其他资源。尽管未在图2中示出,但是每个着色器阵列215a至215d可包括一级(l1)高速缓存。着色器阵列215a至215d通过结构225耦合到高速缓存230。在一个实施方案中,高速缓存230是二级(l2)高速缓存。根据实施方案,高速缓存230耦合到存储器(未示出)或另一级高速缓存(未示出)。命令中心集线器220表示任何数量和类型的命令处理器、调度器和其他命令处理资源。

在一个实施方案中,压缩器模块235位于高速缓存230内。在另一个实施方案中,压缩器模块235位于结构225内。在一个实施方案中,当gpu200接收像素数据时,压缩器模块230被配置为使用增量颜色压缩(dcc)来压缩像素数据。然后,将压缩的数据写入高速缓存230。在一个实施方案中,压缩器模块230被配置为对压缩数据进行解压缩并且将解压缩的数据传送至客户端(例如,着色器阵列215a至215d)。

现参见图3,示出了用于压缩像素数据的技术的一个实施方案的框图。在一个实施方案中,处理器接收m位像素数据,所述m位像素数据是在n位容器中对齐的最高有效位(msb)。出于此论述的目的,假设n和m是整数,并且n大于m。这在图3顶部处的n位容器305中示出。如本文所用的,容器被定义为多个存储位置,其中存储位置用任何合适类型的存储元件(例如,寄存器、存储器、高速缓存,处理通道)实现,其中存储元件的类型根据实施方案而变化。如图所示,像素值的每一位(pm-1、pm-2等)在n位容器305的msb位置内示出。此外,n位容器305的最低有效位(lsb)都是0位。例如,在一个实施方案中,n等于16并且m等于10,其中10位像素值存储在16位容器的高位10位中,并且其中低位6位等于0。

在压缩n位容器305之前,n位容器305中的像素数据向下移位至m位容器310的lsb。可替代地,舍弃n位容器305的lsb中的0以生成m位容器310。然后,当使用dcc压缩m位容器310中的像素数据时,相邻像素之间的增量值将减小,从而导致像素数据以比压缩n位容器305中的像素数据时更高的压缩比进行压缩。

在图3的底部处示出用于压缩具有m位像素数据的n位容器的方案的示例性框图。n位容器中的像素数据由处理器接收并且耦合到移位单元315。移位单元315将n位容器中的数据转换成m位容器中的数据。然后,m位容器中的数据作为输入耦合到压缩器模块320。压缩器模块320被配置为利用dcc来压缩m位容器中的数据,并且然后压缩器模块320将压缩数据写入存储器子系统325。存储器子系统325包括任何数量的高速缓存级和/或存储器装置。

然后,解压缩器模块330从存储器子系统325检索压缩数据并且对压缩数据进行解压缩以生成m位容器中的数据。接着,扩展单元335可扩展m位容器中的数据以创建n位容器中的数据。然后将n位容器中的数据传送至客户端(例如,着色器)。应注意,可使用硬件和/或软件的任何合适的组合来实现移位单元315、压缩器模块320、解压缩器模块330和扩展单元335。还应注意,根据实施方案,移位单元315、压缩器模块320、解压缩器模块330和扩展单元335可组合在一起或单独地实现。

现转向图4,示出了指明黑色像素值和白色像素值的编码值的两个表。在一个实施方案中,用于表示ycbcr颜色空间的y、cb、cr分量中的给定像素分量中的黑色编码值不是数字表示中的最低可能值。相反,用于表示y、cb、cr分量的黑色编码值是非零值。此外,用于表示白色编码值不是数字表示中的最高可能值。例如,表400示出8位编码值410和用于分别表示y和c(cb和cr)分量的黑色和白色像素值的对应的位表示415和417。对于8位编码值,黑色在y分量中由16表示,并且在c分量中由128表示,其中对应的位表示在列415和417中示出。此外,对于8位编码值,白色在y分量中由235表示,并且在c分量中由128表示,其中对应的位表示在列415和417中示出。如果压缩器模块检测到数据块仅包括黑色像素,那么处理器生成第一元数据密钥以指示所述块仅包括黑色像素,并且然后处理器丢弃所述数据块,同时仅存储第一元数据密钥。如果压缩器模块检测到数据块仅包括白色像素,那么处理器生成第二元数据密钥以指示所述块仅包括黑色像素,并且然后处理器丢弃所述数据块,同时仅存储第二元数据密钥。

表420示出针对黑色值和白色值的10位编码值430和对应的位表示435和437。黑色的10位编码值430针对y分量是64而针对c分量是512,其中对应的位表示在列435和437中示出。白色的10位编码值430针对y分量是940而针对c分量是512,其中对应的位表示在列435和437中示出。应注意,其他实施方案可针对每个编码值利用其他数量的位,其中用于表示黑色和白色的值遵循针对8位和10位表示所示出的相同模式。还应注意,压缩器模块(例如,图1的压缩器模块135)被配置为确定像素值是否匹配特殊的黑色值和白色值。如果给定数据块的全部像素分量等于黑色值或白色值,那么压缩器模块压缩整个数据块,并且然后生成指示针对数据块检测到哪个值(黑色或白色)的元数据密钥。

现参见图5,示出了用于压缩视频像素数据的方法500的一个实施方案。出于论述的目的,此实施方案中的步骤和图6至图9中的那些步骤按相继顺序示出。然而,应注意,在所描述的方法的各种实施方案中,所描述要素中的一者或多者可以同时执行,以与所示不同的顺序执行,或者可以被完全省略。也根据需要执行其他另外的要素。任何本文描述的各种系统或设备均被配置为实现方法500。

处理器接收多个m位像素分量,所述多个m位像素分量是在n位容器中对齐的最高有效位(msb),其中n和m是整数,并且其中n大于m(框505)。在一个实施方案中,处理器包括压缩器模块,并且处理器耦合到高速缓存和/或存储器。接着,处理器将m位像素分量向下移位至n位容器的最低有效位(lsb)位置中(框510)。然后,处理器将多个n位容器转换成多个m位容器(框515)。在另一个实施方案中,处理器丢弃n位容器中的每个像素分量的(n-m)个最低有效位(lsb)以创建多个m位容器。接着,处理器压缩多个m位像素分量以创建压缩的像素数据块(框520)。然后,处理器将压缩的像素数据块存储在存储器子系统中(框525)。在框525之后,方法500结束。

现转向图6,示出了用于对压缩的像素数据块进行解压缩的方法600的一个实施方案。处理器从存储器子系统检索压缩的像素数据块(框605)。在一个实施方案中,处理器包括压缩器模块,并且存储器子系统包括一个或多个级别的高速缓存和/或一个或多个存储器。接着,处理器对所压缩的像素数据块进行解压缩以创建m位容器中的像素分量(框610)。然后,处理器将m位容器扩展成n位容器(框615)。接着,处理器将像素分量移位至n位容器的msb位置(框620)。然后,处理器将n位容器的msb位置中的像素分量传送至客户端(框625)。在一个实施方案中,客户端是着色器。在框625之后,方法600结束。

现参见图7,示出了用于压缩恒定像素数据的方法700的一个实施方案。压缩器模块接收像素数据块(框705)。压缩器模块用硬件和/或软件的任何合适的组合实现。在一个实施方案中,压缩器模块被配置为接收具有固定大小的数据块。在一个实施方案中,固定大小是256字节。在其他实施方案中,固定大小可包括其他量的数据。接着,压缩器模块确定所接收的像素数据是否等于恒定值(条件框710)。

如果所接收的像素数据等于恒定值(条件框710,“是”分支),那么压缩器模块确定恒定值是否等于黑色编码值(条件框720)。针对两个不同的实施方案,在(图4的)表400和420中示出黑色编码值。如果所接收的像素数据不等于恒定值(条件框710,“否”分支),那么压缩器模块压缩像素数据块并且生成指明如何压缩像素数据块的元数据密钥(框715)。接着,压缩器模块存储压缩的数据块(框718)。然后,压缩器模块存储元数据密钥(框745)。在框745之后,方法700结束。

如果恒定值等于黑色编码值(条件框720,“是”分支),那么压缩器模块生成元数据密钥以指示数据块由全黑像素组成(框725)。然后,压缩器模块丢弃像素数据块(框740)并且存储元数据密钥(框745)。如果恒定值不等于黑色编码值(条件框720,“否”分支),那么压缩器模块确定恒定值是否等于白色编码值(条件框730)。针对两个不同的实施方案,在表400和420中示出白色编码值。如果恒定值等于白色编码值(条件框730,“是”分支),那么压缩器模块生成元数据密钥以指示数据块由全白像素组成(框735)。然后,压缩器模块丢弃像素数据块(框740)并且存储元数据密钥(框745)。

如果恒定值不等于特殊白色编码值(条件框730,“否”分支),那么压缩器模块存储恒定值的指示(框750)。在一个实施方案中,将恒定值存储在寄存器中。接着,压缩器模块生成元数据密钥以指明像素数据块由非黑色恒定值像素和非白色恒定值像素组成(框755)。在框755之后,压缩器模块丢弃像素数据块(框740)并且存储元数据密钥(框745)。

现转向图8,示出了用于压缩像素数据的方法800的另一个实施方案。压缩器模块接收多个像素分量(框805)。接着,压缩器模块将像素数据块压缩成压缩的数据块(框810)。在一个实施方案中,压缩器模块利用增量颜色压缩(dcc)来压缩数据块。

如果压缩的数据块的大小大于阈值(条件框815,“是”分支),那么压缩器模块丢弃压缩的数据块(框820)。接着,将多个原始像素分量打包在一起以消除容器中未使用的位(框825)。然后,压缩器模块存储打包的像素分量(框830)。在一个实施方案中,仅分配一定量的空间用于存储压缩的数据块。在此实施方案中,阈值的值可被设定成等于存储器占用空间的大小,所述存储器占用空间被分配用于压缩的数据块。在一个实施方案中,存在256字节的接收的像素分量,并且阈值是192字节。例如,在此实施方案中,192字节可以是被分配用于存储压缩的数据块的空间量。在其他实施方案中,接收的像素分量的大小和/或阈值可以是其他数量的字节。如果压缩的数据组的大小小于或等于阈值(条件框815,“否”分支),那么压缩器模块存储压缩的数据块(框835)。在框830和835之后,方法800结束。

现参见图9,示出了用于压缩具有α通道的像素数据的方法900的一个实施方案。压缩模块接收包括α通道的像素数据块(框905)。如果像素数据块的α分量等于零(条件框910,“是”分支),那么将其他像素分量设定成等于恒定值(框915)。例如,在一个实施方案中,其他像素分量被设定成预定义值。在一个实施方案中,其他像素分量被设置成0。在其他实施方案中,其他像素分量被设定成各种其他恒定值中的任一者。接着,将像素数据块压缩为恒定值(框920)。将像素数据块压缩为恒定值可有助于增加所获得的压缩量。否则,如果像素数据块的α分量不等于零(条件框910,“否”分支),那么压缩模块执行像素数据块的正常压缩(框925)。在框920和925之后,方法900结束。

在各种实施方案中,软件应用的程序指令被用于实现先前描述的方法和/或机制。程序指令描述了高级编程语言(诸如c)中的硬件的行为。可替代地,使用硬件设计语言(hdl),诸如verilog。程序指令存储在非暂时性计算机可读存储介质上。许多类型的存储介质是可用的。存储介质可在使用期间由计算系统访问,以向计算系统提供程序指令和随附数据以进行程序执行。计算系统至少包括一个或多个存储器以及被配置为执行程序指令的一个或多个处理器。

应强调,上述实施方案仅是实现方式的非限制性实例。一旦完全了解了上述公开内容,许多变化和修改对于本领域技术人员来说将变得明显。意图将以下权利要求解释为涵盖全部这类变化和修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1