数据压缩的方法和装置与流程

文档序号:32752183发布日期:2022-12-31 01:30阅读:64来源:国知局
数据压缩的方法和装置与流程
数据压缩的方法和装置
1.相关申请的交叉引用
2.本技术要求于2020年5月13日提交的美国临时专利申请号63/024,254和于2020年12月28日提交的美国非临时专利申请号17/135,978的权益,这些专利申请以引用方式并入,如同在本文完整阐述一样。


背景技术:

3.在用于对图像进行采样的多采样抗锯齿(msaa)技术中,每个像素具有多个采样点以改善图像的质量。这些采样点可各自具有唯一颜色值。然而,像素的采样点可共享共同颜色值。
4.通过存储每个公共颜色值仅一次(例如,每个片段,而不是每个样本一次)来存储值。该数据存储在颜色表面中,并且存储像素内的每个样本的片段指针(fmask)。此片段指针存储在单独fmask表面上。
附图说明
5.可以从以下描述中获得更详细的理解,通过示例结合附图给出,其中:
6.图1是可实现本公开的一个或多个特征的示例设备的框图;
7.图2是图1的设备的框图,示出了附加的细节;
8.图3是根据一个示例的示出图形处理流水线的框图;
9.图4是示出与多采样图像相关的方面的图形表示;
10.图5示出了根据一个示例的压缩格式;
11.图6是常规数据处理方法的示例性流程图;并且
12.图7是数据处理方法的示例性流程图。
具体实施方式
13.尽管在下面进一步详细地扩展方法和装置,但本文描述了用于颜色表面的数据压缩的方法。
14.用于处理颜色数据的方法包括将片段指针和颜色数据一起存储在颜色缓存中。存储指示待获取以用于处理的该颜色数据的δ颜色压缩(dcc)密钥,并且基于用于解压缩的所读取的dcc密钥来获取该片段指针和颜色数据。
15.用于处理颜色数据的装置包括存储器以及与该存储器可操作地耦接并与该存储器通信的处理器。该处理器被配置为将片段指针和颜色数据一起存储在该存储器中的颜色缓存中,读取指示待获取以用于处理的该颜色数据的δ颜色压缩(dcc)密钥,以及基于用于解压缩的所读取的dcc密钥来获取该片段指针和颜色数据。
16.用于处理颜色数据的非暂态计算机可读介质具有记录在其上的指令,该指令在由处理器执行时使该处理器执行操作。该操作包括将片段指针和颜色数据一起存储在颜色缓存中;读取指示待获取以用于处理的该颜色数据的δ颜色压缩(dcc)密钥,以及基于用于解
压缩的所读取的dcc密钥来获取该片段指针和颜色数据。
17.图1是可实现本公开的一个或多个特征的示例设备100的框图。设备100可包括例如计算机、游戏设备、手持设备、机顶盒、电视、移动电话、服务器、平板计算机、或用于生成图形图像的其他类型的计算设备。设备100包括处理器102、存储器104、存储装置106、一个或多个输入设备108以及一个或多个输出设备110。设备100还可任选地包括输入驱动器112和输出驱动器114。应当理解,设备100可包括图1中未示出的另外部件。
18.在各种另选方案中,处理器102包括中央处理单元(cpu)、图形处理单元(gpu)、位于同一管芯上的cpu和gpu、或一个或多个处理器核心,其中每个处理器核心可为cpu或gpu。在各种另选方案中,存储器104位于与处理器102相同的管芯上或与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(ram)、动态ram或高速缓存。在图1所示的实施方案中,处理器102包括cpu。
19.存储装置106包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备108包括但不限于键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速度计、陀螺仪、生物扫描仪或网络连接(例如,用于发射和/或接收无线ieee 802信号的无线局域网卡)。输出设备110包括但不限于显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于发射和/或接收无线ieee 802信号的无线局域网卡)。
20.输入驱动器112与处理器102和输入设备108通信并且允许处理器102从输入设备108接收输入。输出驱动器114与处理器102和输出设备110通信并且允许处理器102向输出设备110发送输出。应注意,输入驱动器112和输出驱动器114是任选的部件,并且如果输入驱动器112和输出驱动器114不存在,则设备100将以相同方式操作。在示例性实施方案中,输出驱动器116包括耦接到显示设备118的加速处理设备(“apd”)116。apd从处理器102接受计算命令和图形渲染命令,处理这些计算命令和图形渲染命令,并将像素输出提供给显示设备118进行显示。如下文所详述,apd116包括根据单指令多数据(“simd”)范式来执行计算的一个或多个并行处理单元。因此,尽管这里将各种功能描述为由apd 116执行或与其结合执行,但在各种另选方案中,被描述为由apd 116执行的功能另外地或另选地由具有类似能力的其他计算设备执行,该其他计算设备不由主机处理器(例如,处理器102)驱动并且向显示设备118提供图形输出。例如,可以设想根据simd范式执行处理任务的任何处理系统都可执行本文所述的功能。另选地,可以设想不根据simd范式执行处理任务的计算系统也可执行本文所述的功能。
21.图2是设备100的框图,示出了涉及在apd 116上执行处理任务的附加细节。处理器102在系统存储器104中保持一个或多个控制逻辑模块以供处理器102执行。控制逻辑模块包括操作系统120、内核模式驱动器122和应用程序126。这些控制逻辑模块控制处理器102和apd 116的操作的各种特征。例如,操作系统120直接与硬件通信并为在处理器102上执行的其他软件提供到硬件的接口。内核模式驱动器122通过例如向在处理器102上执行的软件(例如,应用程序126)提供应用编程接口(“api”)来控制apd 116的操作,以访问apd 116的各种功能。内核模式驱动器122还包括即时编译器,该即时编译器编译程序以供apd 116的处理部件(诸如下文所详述的simd单元138)执行。
22.apd 116执行用于所选功能的命令和程序,诸如适于或可适于并行处理的图形操作和非图形操作。apd 116可用于执行图形流水线操作,诸如像素操作、几何计算和基于从
处理器102接收的命令将图像呈现给显示设备118。apd 116还基于从处理器102接收的命令来执行与图形操作不直接相关的计算处理操作,诸如与视频、物理模拟、计算流体动力学或其他任务相关的操作。
23.apd 116包括计算单元132,该计算单元包括根据simd范式以并行方式在处理器102的请求下执行操作的一个或多个simd单元138。simd范式是这样一种范式,其中多个处理元件共用单个程序控制流单元和程序计数器并由此执行相同的程序,但能够通过或使用不同数据来执行该程序。在一个示例中,每个simd单元138包括十六个通道,其中每个通道与simd单元138中的其他通道同时执行相同的指令,但可执行具有不同数据的该指令。如果不是所有通道都需要执行给定指令,则可通过预测来关闭通道。还可使用预测来执行具有发散控制流的程序。更具体地,对于具有条件分支或其中控制流基于由单个通道执行的计算的其他指令的程序,预测对应于当前未被执行的控制流路径的通道,并且不同控制流路径的串行执行可实现任意控制流。
24.计算单元132中的基本执行单元是工作项。每个工作项表示要在特定通道中并行执行的程序的单个实例。可在单个simd处理单元138上作为“波前”同时执行工作项。一个或多个波前包括在一个“工作组”中,该“工作组”包括被指定执行相同程序的工作项的集合。可通过执行构成工作组的波前中的每一者来执行工作组。在另选方案中,波前在单个simd单元138上顺序地执行,或在不同simd单元138上部分地或完全地并行执行。波前可被视为可在单个simd单元138上同时执行的工作项的最大集合。因此,如果从处理器102接收的命令指示特定程序要被并行化到该程序不能在单个simd单元138上同时执行的程度,则该程序被划分成在两个或多个simd单元138上并行化或在同一simd单元138上串行化(或根据需要并行化和串行化)的波前。调度器136执行涉及调度不同计算单元132和simd单元138上的各种波前的操作。
25.由计算单元132提供的并行性适合图形相关操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些实例中,接受来自处理器102的图形处理命令的图形流水线134将计算任务提供给计算单元132以供并行执行。
26.计算单元132还用于执行不涉及图形或不作为图形流水线134的“正常”操作(例如,所执行的用以补充针对图形流水线134的操作执行的处理的自定义操作)的一部分而执行的计算任务。在处理器102上执行的应用程序126或其他软件将定义此类计算任务的程序发送到apd 116以供执行。
27.图3是展示了图2所示的图形处理流水线134的另外细节的框图。图形处理流水线134包括各自执行特定功能的局部阶段。这些阶段表示图形处理流水线134的功能的细分。每一阶段部分或全部实现为在可编程处理单元202中执行的着色器程序,或部分或全部实现为处于可编程处理单元202外部且功能固定的不可编程硬件。
28.输入汇编器阶段302从用户填写型缓存(例如,在处理器102所执行的软件(诸如应用程序126)的请求下所填写的缓存)中读取图元数据,并且将该数据汇编成图元以供流水线的其余部分使用。基于包括在用户填写型缓存中的图元数据,输入汇编器阶段302可以生成不同类型的图元。输入汇编器阶段302格式化所汇编的图元以供流水线的其余部分使用。
29.顶点着色器阶段304处理由输入汇编器阶段302汇编的图元的顶点。顶点着色器阶段304执行各种逐顶点操作,诸如变换、去皮、变形和逐顶点光照。变换操作包括变换顶点坐
标的各种操作。这些操作包括建模变换、视图变换、投影变换、透视分割和视口变换中的一项或多项。在本文中,此类变换被视为修改对其执行变换的顶点的坐标或“位置”。顶点着色器阶段304的其他操作修改了除坐标以外的其他属性。
30.顶点着色器阶段304部分或完全实现为将在一个或多个计算单元132上执行的顶点着色器程序。顶点着色器程序由处理器102提供并且基于计算机程序员所预写的程序。驱动器122编译此类计算机程序以生成顶点着色器程序,该顶点着色器程序具有适合于在计算单元132内执行的格式。
31.外壳着色器阶段306、曲面细分器阶段308和域着色器阶段310一起工作以实现曲面细分,其通过细分图元而将简单图元转换成更复杂图元。基于输入图元,外壳着色器阶段306生成修补程式以供曲面细分。曲面细分器阶段308为修补程式生成一组样本。域着色器阶段310计算与修补程式的样本对应的顶点的顶点位置。外壳着色器阶段306和域着色器阶段310可实现为将在可编程处理单元202上执行的着色器程序。
32.几何着色器阶段312逐个图元执行顶点操作。可以由几何着色器阶段312执行各种不同类型的操作,包括诸如以下操作:点sprint扩展、动态粒子系统操作、毛皮-鳍生成、阴影体积生成、单通道渲染到立方图、逐图元材料交换和逐图元材料设置。在一些实例中,在可编程处理单元202上执行的着色器程序执行了几何着色器阶段312的操作。
33.光栅化器阶段314接受上游生成的简单图元并将其光栅化。光栅化包括确定哪些屏幕像素(或子像素样本)被特定图元覆盖。光栅化由固定功能硬件来执行。
34.基于上游生成的图元和光栅化的结果,像素着色器阶段316计算屏幕像素的输出值。像素着色器阶段316可应用来自纹理存储器中的纹理。像素着色器阶段316的操作由在可编程处理单元202上执行的着色器程序来执行。
35.输出合并器阶段318接受来自像素着色器阶段316的输出并且合并这些输出,从而执行诸如z测试和α混合等操作,以确定屏幕像素的最终颜色。
36.定义了纹理的纹理数据由纹理单元320进行存储和/或访问。纹理是在图形处理流水线134中的各个点处所用的位图图像。例如,在一些实例中,像素着色器阶段316将纹理应用于像素,以提高表观渲染复杂性(例如,以提供更“逼真”的外观)而不增加待渲染的顶点的数目。
37.在一些实例中,顶点着色器阶段304使用来自纹理单元320的纹理数据来修改图元,以通过(例如)创建或修改顶点来增加复杂性从而提高美观性。在一个实例中,顶点着色器阶段304使用存储在纹理单元320中的高度图来修改顶点的位移。此类型的技术可用于:例如,通过修改用于渲染水的顶点的位置和数目,生成与仅将纹理用于像素着色器阶段316相比,看起来更逼真的水。在一些实例中,几何着色器阶段312访问纹理单元320中的纹理数据。
38.本文呈现了用于压缩存储图像数据的特定压缩形式。在其他应用中,压缩格式可用于压缩多采样图像。图4是示出与多采样图像相关的方面的图形表示400。图中和/或本文所述的各种功能单元(包括但不限于处理器102、输入驱动器112、输入设备108、输出驱动器114、输出设备110、加速处理设备116、调度器136、图形处理流水线134、计算单元132、simd单元138)可被实现为通用计算机、处理器或处理器核,或者实现为存储在非暂态计算机可读介质或另一介质中的可由通用计算机、处理器或处理器核执行的程序、软件或固件。
39.在图4中,示出了若干像素(例如,像素1、像素2、像素3)。多采样图像将包括这些像素的栅格。每个像素包括一个或多个样本(例如,样本1、样本2、样本3、样本4)。样本是具有特定颜色的像素内的特定位置。每个样本能够具有与相同像素中的其他样本的颜色不同的颜色。在图4中,每个样本的阴影表示分配给样本的颜色。
40.示出了三个不同像素。像素1的片段化程度为1。因此,像素1完全未片段化并且像素1中的所有样本具有相同颜色。像素1可表示为单个片段—被示为像素1,片段1。“片段”是其中所有样本具有相同颜色的像素的一部分。
41.像素2的片段化程度为2。两个最左侧样本具有一种颜色并且两个最右侧样本具有不同颜色。因此,像素2-片段1具有两个最左侧样本并且像素2-片段2具有两个最右侧样本。
42.像素3的片段化程度为3。像素3,片段1包含左上方样本。像素3,片段2包含两个右侧样本。像素3,片段3包含左下方样本。压缩格式描述如何压缩描述这些像素的数据以用于存储在一个或多个硬件缓存中。
43.图5示出了根据一个示例的压缩格式500。示出了图像以示出以压缩格式存储的数据和图像之间的相关性。图像包括图像单元,其中的每个图像单元包括一个或多个像素。图像单元是包括一个或多个像素的图像的一部分。
44.压缩格式包括元数据缓存和颜色缓存的内容。在一些具体实施中,元数据缓存和颜色缓存是如被配置wi存储本文所述的数据的高速缓存的物理缓存。在其他具体实施中,那些缓存中的一者或两者表示存储在任何存储器结构(诸如高速缓存、存储器、非易失性存储器、或任何其他存储装置)中的数据。
45.元数据缓存存储元数据压缩单元(其是描述压缩的数据)并且颜色缓存存储颜色数据压缩单元。一个元数据压缩单元和一个颜色数据压缩单元的每个组合形成压缩单元。每个元数据压缩单元与仅一个压缩单元相关联,并且每个颜色数据压缩单元仅与一个压缩单元相关联。
46.压缩单元是图像的图像单元的压缩数据。在一些具体实施中,压缩单元是固定数据量,并且取决于压缩对应图像单元所需的数据量可具有“空”或“未使用”的空间。在一些此类具体实施中,元数据缓存和颜色缓存中的每一者表示专用存储器(诸如专用高速缓存存储器)或表示存储器(诸如高速缓存存储器)的专用部分。在一些此类具体实施中,每个压缩单元对应于一个或多个高速缓存行。在其他具体实施中,压缩单元是可变数据量,并且压缩单元被封装在一起以减小图像的总数据量。
47.元数据压缩单元存储例如片段化程度和数据大小,并且在一些具体实施中存储采样速率。另外,元数据单元可指示压缩数据具有片段化,并且片段化程度存储在压缩数据内。
48.另选地,元数据单元可指示存在可指示压缩数据大小小于块大小的压缩形式,并且压缩数据可指示存在片段化和其程度。
49.片段化程度指示与包括元数据压缩单元的压缩单元相对应的图像单元中的像素的最大片段化程度。在图4中示出了片段化程度。元数据压缩单元还存储数据大小。数据大小指示对应颜色数据压缩单元的大小(即,属于与元数据压缩单元相同的压缩单元的颜色数据压缩单元的位数)。
50.每个颜色数据压缩单元包括一个或多个片段颜色指针和一个或多个片段颜色数
据项。片段颜色指针指示特定像素的特定样本具有哪个片段颜色。在一些示例中,每个颜色数据压缩单元包括对应图像单元中的每个样本的一个片段颜色指针。因此,每个颜色数据压缩单元包括的片段颜色指针的数量等于对应图像单元中的样本的数量。
51.对于给定样本,对应片段颜色指针指示或指向对应片段颜色。在一些具体实施中,颜色数据压缩单元内的片段颜色指针的排序允许识别哪个片段颜色指针对应于哪个样本。
52.在每个像素具有两个样本的示例中,第一片段颜色指针(例如,最低顺序位)对应于图像单元内的第一像素的第一样本,第二片段颜色指针(例如,下一个最低顺序位)对应于第一像素的第二样本,第三片段颜色指针(例如,下一个最低顺序位)对应于图像单元的第二像素的第一样本,并且第四片段颜色指针(例如,下一个最低顺序位)对应于图像单元的第二像素的第二样本。
53.在采样速率存储在元数据压缩单元中的具体实施中,采样率指示对应图像单元中的每个像素的样本数量。
54.颜色数据压缩单元中的片段颜色包括特定片段的实际颜色值。如刚描述的,每个片段颜色指针指示这些片段颜色中的哪个片段颜色实际上适用于对应片段。与片段颜色指针一样,在一些具体实施中,片段颜色按顺序布置在颜色数据压缩单元中,并且每个片段颜色指针识别对应样本的单独片段颜色数据项。在一些示例中,片段颜色特定于单独像素。换句话说,每个像素存储一个或多个颜色片段,并且对于每个像素,片段颜色指针选择哪个片段颜色是对应样本的颜色。
55.片段颜色数据本身可被压缩。片段颜色数据的示例性压缩方案是δ颜色压缩(“dcc”),其存储基色(例如,像素或其他压缩组诸如图像单元中的样本之一的颜色)和每个其他样本的颜色δ,其中颜色δ是基色与对应样本的实际颜色之间的差异。
56.片段颜色指针和片段颜色数据可具有可变长度。在一个示例中,每个片段颜色指针的长度等于表示每个像素中的片段的最大数量所需的位数。在一个示例中,在每个像素中允许四个片段,这意味着允许图像单元的每个像素具有四个片段的最大值。在此示例中,每个样本的片段颜色指针的大小是两位(因为两位可表示四个可能值)。在另一个示例中,图像单元的每个像素中的片段的最大数量是两个,这意味着允许每个像素包括至多两个片段,并且因此每个样本的片段颜色指针的大小是一位。在一些示例中,因为压缩算法可生成不同大小的数据,所以每个片段颜色可具有不同长度。此外,在仅包括单个片段(即,1个片段)的情况下,不存在待存储的片段指针,因为所有样本指向第一片段(例如,其具有0长度)。
57.图6是常规压缩方法的示例性流程图600。在步骤610中,读取cmask表面。在步骤620中,对cmask表面进行解码以查明需要获取多少fmask。
58.一旦确定了在步骤620中需要获取多少fmask,就获取fmask(步骤630)并且读取dcc密钥(步骤640)。执行片段操作并且读取颜色数据量(步骤650)。
59.然后可读取dcc压缩颜色数据(步骤660),并且基于dcc密钥对颜色数据进行解压缩(步骤670)。在常规方法中,存在两个表面来描述整个颜色数据—颜色数据片段本身和fmask数据,其是对于颜色数据片段的指针信息。也就是说,在常规压缩方法中,存在两对表面,一对表面是片段指针和压缩元数据(fmask和cmask表面),并且另一对是颜色表面及其元数据(颜色数据片段和dcc密钥)。
60.图7是数据处理方法700的示例性流程图。在步骤710中,读取dcc密钥。然后基于dcc密钥获取颜色数据,并且颜色数据包括fmask数据(步骤720)。在步骤730中,对颜色数据(包括颜色片段和dcc压缩)进行解压缩。此外,仅dcc可被压缩,并且颜色数据以片段压缩形式存储在高速缓存中。另选地,颜色数据可被完全压缩。在这种场景中,当访问高速缓存以处理像素/样本时执行解压缩,并且然后当将数据写回高速缓存时重新压缩。
61.在示例性方法700中,在步骤720中获取的数据包括关于数据(例如,fmask数据)的片段指针以及颜色片段数据本身。一旦获取数据,它可以完全压缩形式存储,或者dcc被解压缩并且以片段压缩形式存储。而且,数据可被完全解压缩。
62.如果以片段压缩形式存储,则片段颜色数据和片段指针可存储在单独数据结构中,这可提供更容易的处理。此外,如果片段化程度小于特定程度,则数据可以片段压缩形式存储。例如,如果片段化的程度为1,则其可以片段压缩形式存储。在这种情况下,可能不需要存在片段指针所需的任何存储(例如,如果仅存在1个片段,则片段指针将全部指向该片段)。
63.可能存在以片段压缩形式存储数据的性能优势。例如,如果混合像素完全覆盖在单个片段像素的顶部上,则其可对于整个像素混合一次。然而,如果像素被完全解压缩,则指示所有样本具有相同值的信息可能丢失,并且因此混合器将需要对于每个样本进行一次混合操作,而不是每个像素一次。
64.应当理解,基于本文的公开内容,可能有许多变化。尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。
65.图中和/或本文所述的各种功能单元(包括但不限于处理器102、输入驱动器112、输入设备108、输出驱动器114、输出设备110、加速处理设备116、调度器136、图形处理流水线134、计算单元132、simd单元138)可被实现为通用计算机、处理器或处理器核,或者实现为存储在非暂态计算机可读介质或另一介质中的可由通用计算机、处理器或处理器核执行的程序、软件或固件。所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(dsp)、多个微处理器、与dsp核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)电路,任何其他类型的集成电路(ic)和/或状态机。可以通过使用处理的硬件描述语言(hdl)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程来制造此类处理器。这种处理的结果可以是掩码,然后在半导体制造过程中使用这些掩码来制造实现本公开的特征的处理器。
66.本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(rom)、随机存取存储器(ram)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(例如内部硬盘和可移动磁盘)、磁光介质和光学介质(例如cd-rom磁盘)以及数字多功能磁盘(dvd)。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1