颜色缓冲和深度缓冲压缩.pdf

上传人:54 文档编号:4692538 上传时间:2018-10-27 格式:PDF 页数:24 大小:2.11MB
返回 下载 相关 举报
摘要
申请专利号:

CN201380022746.6

申请日:

2013.05.01

公开号:

CN104272740A

公开日:

2015.01.07

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04N 19/186申请日:20130501|||公开

IPC分类号:

H04N19/186(2014.01)I; H04N19/14(2014.01)I; H04N19/176(2014.01)I; H04N19/423(2014.01)I; H04N19/103(2014.01)I; H04N19/593(2014.01)I; H04N1/64; G06T9/00; G06T15/00(2011.01)I; G06T15/40(2011.01)I

主分类号:

H04N19/186

申请人:

高通股份有限公司

发明人:

尤卡-佩卡·阿尔沃

地址:

美国加利福尼亚州

优先权:

2012.05.01 US 61/641,257; 2013.04.30 US 13/873,897

专利代理机构:

北京律盟知识产权代理有限责任公司 11287

代理人:

宋献涛

PDF下载: PDF下载
内容摘要

在实例中,本发明提供一种译码包括多个像素的图形数据的方法,所述方法包含:通过图形处理单元GPU执行多样本抗混叠以产生所述多个像素中的每一像素的一或多个样本值。所述方法还可包含确定像素是否包括边缘像素,其中所述确定包括对于每一像素识别不同样本值。所述方法还可包含基于所述边缘像素确定编码所述像素。

权利要求书

权利要求书
1.  一种编码包括多个像素的图形数据的方法,所述方法包括:
通过图形处理单元GPU确定所述多个像素中的每一像素的一或多个样本值;
确定每一像素是否包括边缘像素,其中所述确定包括对于每一像素识别所述相应像素的所述一或多个样本值中的不同样本值;以及
基于所述边缘像素确定编码所述像素。

2.  根据权利要求1所述的方法,其进一步包括将所述经编码像素数据存储到所述GPU外部的缓冲器。

3.  根据权利要求2所述的方法,其进一步包括将所述经编码像素数据存储到块高速缓冲存储器,且其中存储所述经编码像素数据包括将所述块高速缓冲存储器的内容写出到所述缓冲器。

4.  根据权利要求1所述的方法,其中确定所述一或多个样本值包括执行多样本抗混叠以产生所述多个像素中的每一像素的所述一或多个样本值。

5.  根据权利要求1所述的方法,其中所述一或多个样本值包括颜色值且其中确定像素是否包括边缘像素包括对于每一像素识别所述像素的所述样本值是否包含不同颜色值。

6.  根据权利要求5所述的方法,其中编码所述像素进一步包括:
产生识别像素块中的边缘像素的边缘掩码;
产生所述像素块的基准颜色值;以及
产生所述像素块的每一像素的颜色样本值与所述像素块的所述基准颜色之间的增量值。

7.  根据权利要求1所述的方法,其中所述一或多个样本值包括深度值且其中确定像素是否包括边缘像素包括对于每一像素识别所述像素的所述样本值是否包含不同深度值。

8.  根据权利要求7所述的方法,其中编码所述像素进一步包括:
产生识别像素块中的边缘像素的边缘掩码;
产生所述像素块的基准深度值;以及
产生所述像素块的每一像素的深度样本值与所述像素块的所述基准深度值之间的增量值。

9.  一种用于编码包括多个像素的图形数据的设备,所述设备包括一或多个处理器,所述一或多个处理器经配置以:
确定所述多个像素中的每一像素的一或多个样本值;
确定每一像素是否包括边缘像素,其中所述确定包括对于每一像素识别所述相应像素的所述一或多个样本值中的不同样本值;以及
基于所述边缘像素确定编码所述像素。

10.  根据权利要求9所述的设备,其中所述一或多个处理器经进一步配置以将所述经编码像素数据存储到GPU外部的缓冲器。

11.  根据权利要求10所述的设备,其中所述一或多个处理器经进一步配置以将所述经编码像素数据存储到块高速缓冲存储器,且其中存储所述经编码像素数据包括将所述块高速缓冲存储器的内容写出到所述缓冲器。

12.  根据权利要求9所述的设备,其中为了确定所述一或多个样本值,所述一或多个处理器经配置以执行多样本抗混叠以产生所述多个像素中的每一像素的所述一或多个样本值。

13.  根据权利要求9所述的设备,其中所述一或多个样本值包括颜色值且其中为了确定像素是否包括边缘像素,所述一或多个处理器经配置以对于每一像素识别所述像素的所述样本值是否包含不同颜色值。

14.  根据权利要求13所述的设备,其中为了编码所述像素,所述一或多个处理器经配置以:
产生识别像素块中的边缘像素的边缘掩码;
产生所述像素块的基准颜色值;以及
产生所述像素块的每一像素的颜色样本值与所述像素块的所述基准颜色之间的增量值。

15.  根据权利要求9所述的设备,其中所述一或多个样本值包括深度值且其中为了确定像素是否包括边缘像素,所述一或多个处理器经配置以对于每一像素识别所述像素的所述样本值是否包含不同深度值。

16.  根据权利要求15所述的设备,其中为了编码所述像素,所述一或多个处理器经配置以:
产生识别像素块中的边缘像素的边缘掩码;
产生所述像素块的基准深度值;以及
产生所述像素块的每一像素的深度样本值与所述像素块的所述基准深度值之间的增量值。

17.  一种用于编码包括多个像素的图形数据的设备,所述设备包括:
用于确定所述多个像素中的每一像素的一或多个样本值的装置;
用于确定每一像素是否包括边缘像素的装置,其中所述确定包括对于每一像素识别所述相应像素的所述一或多个样本值中的不同样本值;以及
用于基于所述边缘像素确定编码所述像素的装置。

18.  根据权利要求17所述的设备,其进一步包括用于将所述经编码像素数据存储到GPU外部的缓冲器的装置。

19.  根据权利要求18所述的设备,其进一步包括用于将所述经编码像素数据存储到块高速缓冲存储器的装置,且其中用于存储所述经编码像素数据的所述装置包括用于将所述块高速缓冲存储器的内容写出到所述缓冲器的装置。

20.  根据权利要求17所述的设备,其中所述用于确定所述一或多个样本值的装置包括用于执行多样本抗混叠以产生所述多个像素中的每一像素的所述一或多个样本值 的装置。

21.  根据权利要求17所述的设备,其中所述一或多个样本值包括颜色值且其中所述用于确定像素是否包括边缘像素的装置包括用于对于每一像素识别所述像素的所述样本值是否包含不同颜色值的装置。

22.  根据权利要求21所述的设备,其中用于编码所述像素的所述装置进一步包括:
用于产生识别像素块中的边缘像素的边缘掩码的装置;
用于产生所述像素块的基准颜色值的装置;以及
用于产生所述像素块的每一像素的颜色样本值与所述像素块的所述基准颜色之间的增量值的装置。

23.  根据权利要求17所述的设备,其中所述一或多个样本值包括深度值且其中所述用于确定像素是否包括边缘像素的装置包括用于对于每一像素识别所述像素的所述样本值是否包含不同深度值的装置。

24.  根据权利要求23所述的设备,其中用于编码所述像素的所述装置进一步包括:
用于产生识别像素块中的边缘像素的边缘掩码的装置;
用于产生所述像素块的基准深度值的装置;以及
用于产生所述像素块的每一像素的深度样本值与所述像素块的所述基准深度值之间的增量值的装置。

25.  一种非暂时性计算机可读媒体,其具有存储在其上的指令,所述指令在被执行时致使一或多个处理器进行以下操作:
确定所述多个像素中的每一像素的一或多个样本值;
确定每一像素是否包括边缘像素,其中所述确定包括对于每一像素识别所述相应像素的所述一或多个样本值中的不同样本值;以及
基于所述边缘像素确定编码所述像素。

26.  根据权利要求25所述的非暂时性计算机可读媒体,其中所述指令致使所述一或多个处理器将所述经编码像素数据存储到GPU外部的缓冲器。

27.  根据权利要求26所述的非暂时性计算机可读媒体,其中所述指令致使所述一或多个处理器将所述经编码像素数据存储到块高速缓冲存储器,且其中存储所述经编码像素数据包括将所述块高速缓冲存储器的内容写出到所述缓冲器。

28.  根据权利要求25所述的非暂时性计算机可读媒体,其中为了确定所述一或多个样本值,所述指令致使所述一或多个处理器执行多样本抗混叠以产生所述多个像素中的每一像素的所述一或多个样本值。

29.  根据权利要求25所述的非暂时性计算机可读媒体,其中所述一或多个样本值包括颜色值且其中为了确定像素是否包括边缘像素,所述指令致使所述一或多个处理器对于每一像素识别所述像素的所述样本值是否包含不同颜色值。

30.  根据权利要求29所述的非暂时性计算机可读媒体,其中为了编码所述像素,所述指令致使所述一或多个处理器进行以下操作:
产生识别像素块中的边缘像素的边缘掩码;
产生所述像素块的基准颜色值;以及
产生所述像素块的每一像素的颜色样本值与所述像素块的所述基准颜色之间的增量值。

31.  根据权利要求25所述的非暂时性计算机可读媒体,其中所述一或多个样本值包括深度值且其中为了确定像素是否包括边缘像素,所述指令致使所述一或多个处理器对于每一像素识别所述像素的所述样本值是否包含不同深度值。

32.  根据权利要求31所述的非暂时性计算机可读媒体,其中为了编码所述像素,所述指令致使所述一或多个处理器进行以下操作:
产生识别像素块中的边缘像素的边缘掩码;
产生所述像素块的基准深度值;以及
产生所述像素块的每一像素的深度样本值与所述像素块的所述基准深度值之间的增量值。

说明书

说明书颜色缓冲和深度缓冲压缩
本申请案主张2012年5月1日申请的第61/641,257号美国临时申请案的权利,所述申请案的全部内容借此以引用的方式并入本文中。
技术领域
本发明涉及显现计算机图形。
背景技术
提供用于视觉呈现的内容的装置一般包含图形处理单元(GPU)。GPU将表示内容的像素显现在显示器上。GPU产生显示器上的每一像素的一或多个像素值且对显示器上的每一像素的像素值执行图形处理以显现每一像素以用于呈现。
发明内容
本发明的方面一般来说涉及压缩图形数据,压缩图形数据可被称作译码图形数据。举例来说,图形数据的像素可由一或多个样本(例如,一或多个颜色样本、一或多个深度样本,及其类似者)构成,其中每一样本对像素值有贡献。本发明的方面一般来说涉及压缩与像素相关联的样本值以减少表示像素值所需的数据的量。本发明的方面还可涉及识别位于目标边缘处的像素,所述像素可具有不同样本值。在一些实例中,可在压缩与边缘像素相关联的样本时相对于基准值产生样本增量。
在实例中,一种编码包括多个像素的图形数据的方法包含:通过图形处理单元(GPU)确定所述多个像素中的每一像素的一或多个样本值;确定每一像素是否包括边缘像素,其中所述确定包括对于每一像素识别所述相应像素的所述一或多个样本值中的不同样本值;及基于所述边缘像素确定编码所述像素。
在另一实例中,一种用于编码包括多个像素的图形数据的设备包含一或多个处理器,所述一或多个处理器经配置以:确定所述多个像素中的每一像素的一或多个样本值;确定每一像素是否包括边缘像素,其中所述确定包括对于每一像素识别所述相应像素的所述一或多个样本值中的不同样本值;及基于所述边缘像素确定编码所述像素。
在另一实例中,一种用于编码包括多个像素的图形数据的设备包含:用于确定所述多个像素中的每一像素的一或多个样本值的装置;用于确定每一像素是否包括边缘像素的装置,其中所述确定包括对于每一像素识别所述相应像素的所述一或多个样本值中的不同样本值;及用于基于所述边缘像素确定编码所述像素的装置。
在另一实例中,一种非暂时性计算机可读媒体,其具有存储在其上的指令,所述指令在被执行时致使一或多个处理器进行以下操作:确定所述多个像素中的每一像素的一或多个样本值;确定每一像素是否包括边缘像素,其中所述确定包括对于每一像素识别所述相应像素的所述一或多个样本值中的不同样本值;及基于所述边缘像素确定编码所述像素。
在附图和下文描述中阐述本发明的一或多个实例的细节。其它特征、目标和优点将从所述描述和图式以及权利要求书而显而易见。
附图说明
图1为说明可经配置以实施本发明的方面的计算装置的框图。
图2为说明图形处理管线的概念图。
图3A为说明实例2×2像素块的概念图,其中每一像素具有四个相关联的样本。
图3B为说明根据本发明的方面的增量样本值的概念图。
图3C为说明根据本发明的方面的增量位置掩码的概念图。
图4为说明根据本发明的方面的用于编码图形数据的实例过程的流程图。
图5为说明根据本发明的方面的用于编码颜色和/或深度值的实例过程的流程图。
图6为说明根据本发明的方面的用于解码图形数据的实例过程的流程图。
图7为说明根据本发明的方面的用于解码颜色和/或深度值的实例过程的流程图。
具体实施方式
本发明的方面一般来说涉及压缩图形数据,压缩图形数据可被称作译码图形数据。举例来说,图形数据的像素可由一或多个样本(例如,一或多个颜色样本、一或多个深度样本,及其类似者)构成,其中每一样本对像素值有贡献。本发明的方面一般来说涉及压缩与像素相关联的样本值以减少表示像素值所需的数据的量。本发明的方面还可涉及识别位于目标边缘处的像素,所述像素可具有不同样本值。在一些实例中,可在压缩与边缘像素相关联的样本时相对于基准值产生样本增量。
图1为说明可实施本发明的用于译码图形数据的技术的计算装置30的框图。计算 装置30的实例包含(但不限于)无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子图书阅读器、固定或移动媒体播放器,及其类似者。
在图1的实例中,计算装置30包含:中央处理单元(CPU)32,其具有CPU存储器34;图形处理单元(GPU)36,其具有GPU存储器38和译码单元60;显示单元42;显示缓冲器单元44;用户接口单元46;及存储单元48。另外,存储单元48可存储具有编译程序54的GPU驱动程序50、GPU程序52和本地编译的GPU程序56。
CPU 32的实例包含(但不限于)数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路。尽管在图1的实例中将CPU 32和GPU 36说明为分离单元,但在一些实例中,CPU 32和GPU 36可集成到单个单元中。CPU 32可执行一或多个应用程序。应用程序的实例可包含网络浏览器、电子邮件应用程序、电子数据表、视频游戏、音频和/或视频俘获、播放或编辑应用程序,或起始待经由显示单元42呈现的图像数据的产生的其它应用程序。
在图1中展示的实例中,CPU 32包含CPU存储器34。CPU存储器34可表示在执行机器或目标代码中使用的芯片上存储装置或存储器。CPU存储器34可各自包括能够存储固定数目个数字位的硬件存储器寄存器。与从存储单元48读取值或将值写入到存储单元48相比较,CPU 32可能能够更迅速地从本地CPU存储器34读取值或将值写入到本地CPU存储器34,存储单元48可为(例如)通过系统总线存取的系统存储器。
GPU 36表示用于执行图形操作的一或多个专用处理器。也就是说,例如,GPU 36可为专用硬件单元,其具有用于显现图形及执行GPU应用程序的固定功能和可编程组件。GPU 36还可包含DSP、通用微处理器、ASIC、FPGA,或其它等效集成或离散逻辑电路。
GPU 36还包含GPU存储器38,其可表示在执行机器或目标代码中使用的芯片上存储装置或存储器。GPU存储器38可包括能够存储固定数目个数字位的一或多个硬件存储器寄存器。与从存储单元48读取值或将值写入到存储单元48相比较,GPU 36可能能够更迅速地从本地GPU存储器38读取值或将值写入到本地GPU存储器38,存储单元48可(例如)通过系统总线存取。
显示单元42表示能够显示视频数据、图像、文本或任何其它类型的数据以供查看器消耗的单元。显示单元42可包含液晶显示器(LCD)、发光二极管(LED)显示器、有机LED(OLED)、主动矩阵OLED(AMOLED)显示器,或其类似者。
显示缓冲器单元44表示专用于存储供显示单元42呈现影像(例如,照片或视频帧)的数据的存储器或存储装置。显示缓冲器单元44可表示包含多个存储位置的二维缓冲器。显示缓冲器单元44内的存储位置的数目可实质上类似于待显示在显示单元42上的像素的数目。举例来说,如果显示单元42经配置以包含640×480个像素,那么显示缓冲器单元44可包含640×480个存储位置。显示缓冲器单元44可存储由GPU 36处理的像素中的每一者的最终像素值。显示单元42可从显示缓冲器单元44检索最终像素值,且基于存储在显示缓冲器单元44中的像素值显示最终图像。
用户接口单元46表示用户可用来交互或以其它方式介接以与计算装置30的其它单元(例如,CPU 32)通信的单元。用户接口单元46的实例包含(但不限于)轨迹球、鼠标、键盘及其它类型的输入装置。用户接口单元46还可为触摸屏且可作为显示单元42的一部分而并入。
存储单元48可包括一或多个计算机可读存储媒体。存储单元48的实例包含(但不限于):随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器,或可用以存储呈指令或数据结构形式的所要程序代码且可通过计算机或处理器存取的任何其它媒体。
在一些实例实施方案中,存储单元48可包含致使CPU 32和/或GPU 36执行本发明中归于CPU 32和GPU 36的功能的指令。在一些实例中,存储单元48可被视为非暂时性存储媒体。术语“非暂时性”可指示存储媒体不体现于载波或传播信号中。然而,术语“非暂时性”应被解释为意味着存储单元48为不可移动的。作为一个实例,可将存储单元48从计算装置30中去除,且将其移动到另一装置。作为另一实例,可将实质上类似于存储单元48的存储单元插入到计算装置30中。在某些实例中,非暂时性存储媒体可存储可随时间而改变(例如,在RAM中)的数据。
存储单元48存储GPU驱动程序50和编译程序54、GPU程序52及本地编译的GPU程序56。GPU驱动程序50表示提供接口以供存取GPU 36的计算机程序或可执行码。CPU 32执行GPU驱动程序50或其部分以与GPU 36介接且,出于此原因,在图1的实例中将GPU驱动程序50展示为经标记为CPU 32内的“GPU驱动程序50”的短划线框。由CPU 32执行的程序或其它可执行码(包含GPU程序52)可存取GPU驱动程序50。
GPU程序52可包含以高级(HL)编程语言撰写(例如,使用应用程序编程接口(API))的代码。API的实例包含开放计算语言(“OpenCL”)、开放图形库(“OpenGL”)和DirectX,如由Microsoft公司开发的。一般来说,API包含由相关联硬件执行的一组预 定的标准化命令。API命令允许用户发指令给GPU的硬件组件以执行命令而无需用户了解所述硬件组件的详情。
GPU程序52可调用或以其它方式包含通过GPU驱动程序50提供的一或多个函数。CPU 32一般执行其中嵌有GPU程序52的程序且,在遇到GPU程序52后将GPU程序52传递到GPU驱动程序50(例如,呈命令流的形式)。在此上下文中,CPU 32执行GPU驱动程序50以处理GPU程序52。也就是说,例如,GPU驱动程序50可通过将GPU程序52编译成可通过GPU 36执行的目标或机器代码来处理GPU程序52。在图1的实例中将此目标代码展示为本地编译的GPU程序56。
在一些实例中,编译程序54可在执行其中嵌有GPU程序52的程序期间实时地或接近实时地操作以编译GPU程序52。举例来说,编译程序54一般表示将根据HL编程语言定义的HL指令精简到低级(LL)编程语言的LL指令的模块。在编译之后,这些LL指令能够通过特定类型的处理器或其它类型的硬件来执行,其它类型的硬件例如FPGA、ASIC及其类似者(包含(例如)CPU 32和GPU 36)。
根据处理器或其它类型的硬件的指令集架构,在提供较低抽象或较低等级抽象的意义上,LL编程语言被视为低级。LL语言一般是指汇编语言和/或机器语言。汇编语言为比机器语言稍微高级的LL语言,但一般可在不使用编译程序或其它转译模块的情况下将汇编语言转换成机器语言。作为一个实例,机器语言表示定义与通过底层硬件(例如,处理器)原生地执行的指令(例如,x86机器代码(其中x86是指由因特尔公司开发的x86处理器的指令集架构))类似(如果不相同的话)的指令的任何语言。
在任何情况下,编译程序54可将根据HL编程语言定义的HL指令转译成底层硬件所支持的LL指令。编译程序54去除与HL编程语言(和API)相关联的抽象,使得根据这些HL编程语言定义的软件能够更直接地通过实际底层硬件来执行。
在图1的实例中,当执行包含GPU程序52的HL代码时,编译程序54可从CPU 32接收GPU程序52。编译程序54可编译GPU程序52以产生符合LL编程语言的本地编译的GPU程序56。编译程序54接着输出包含LL指令的本地编译的GPU程序56。
GPU 36一般接收本地编译的GPU程序56(如通过经标记为GPU 36内的“本地编译的GPU程序56”的短划线框展示),于是,在一些情况下,GPU 36显现图形且将图像的经显现部分输出到显示缓冲器单元44。举例来说,GPU 36可产生待显示在显示单元42处的数个图元。图元可包含以下各者中的一或多者:线(包含曲线、样条线等)、点、圆、椭圆、多边形(其中通常多边形被定义为一或多个三角形的集合)或任何其它二维(2D)图元。术语“图元”还可指三维(3D)图元,例如立方体、圆柱体、球体、锥体、角锥、 环面或其类似者。一般来说,术语“图元”是指能够通过GPU 36显现以用于经由显示单元42显示为图像(或在视频数据的上下文中为帧)的任何基本几何形状或元素。
GPU 36可通过应用一或多个模型变换(其还可在状态数据中加以指定)将图元和图元的其它状态数据(例如,定义颜色、纹理、照明、摄像机配置或其它方面的状态数据)变换成所谓的“世界空间”。一旦进行了变换,GPU 36便可对作用中摄像机应用视图变换(再次地,其还可在定义摄像机的状态数据中加以指定)以将图元和光的坐标变换到摄像机或视觉空间中。GPU 36还可执行顶点着色以鉴于任何作用中光来显现图元的外观。GPU 36可在上述模型、世界空间或视点空间中的一或多者中执行顶点着色(但其通常在世界空间中执行)。
一旦图元经着色,GPU 36便可执行投影以将图像投影到具有极点的单位立方体中,作为一个实例,在(-1,-1,-1)和(1,1,1)处。此单位立方体通常被称作正规化可视空间。在将模型从视觉空间变换到正规化可视空间之后,GPU 36可执行截割以去除至少部分地不会驻留在可视空间内的任何图元。换句话说,GPU 36可去除不在摄像机的帧内的任何图元。GPU 36可接着将图元的坐标从可视空间映射到屏幕空间,从而有效地将图元的3D坐标缩减到屏幕的2D坐标。
在给出定义图元的经变换及经投影的顶点和其相关联的着色数据的情况下,GPU 36可接着将图元光栅化。举例来说,GPU 36可计算及设置被图元覆盖的屏幕的像素的颜色。在光栅化期间,GPU 36可应用与图元相关联的任何纹理(其中纹理可包含状态数据)。GPU 36还可在光栅化期间执行Z-缓冲算法(还被称作深度测试),以确定图元和/或目标中的任一者是否被任何其它目标遮挡。Z-缓冲算法根据图元的深度将图元排序,使得GPU 36知道将每一图元绘制到屏幕的次序。GPU 36将经显现的像素输出到显示缓冲器单元44。
在一些实例中,发生混叠,这是因为真实世界的目标具有连续的平滑曲线和线,而典型显示器可经配置以输出光的离散点(即,像素)。像素经均匀地染色且始终具有相同形状,此情形可导致经显现的图像的线在外观上变为锯齿状。通过MSAA,可对单个像素产生多个样本。可接着组合(例如,平均化)所述样本以确定最终像素值。
因此,GPU 36可按比所显示的分辨率高的分辨率显现图像。GPU 36可接着在显示之前将图像向下采样到适当大小。可使结果沿着目标的边缘从一行像素到另一行像素较平滑地转变。可使用因子4、8、16或其它值来执行MSAA。
如本文所描述,“像素”可指图像中可见的单个片段。“样本”可指对像素有贡献的单个值。举例来说,样本可包含对最终图像中的一个像素有贡献的颜色值(例如,单个 RGBA值)。在四样本MSAA模式中,红色、绿色、蓝色、α(RGBA)四个样本可对每一像素有贡献。在其它实例中,样本可包含深度值(例如,z-值)。另外,“边缘”可指图像的一或多个点(例如,一或多个像素),所述点在对点有贡献的样本值之间具有亮度、颜色或深度不连续性。举例来说,在四样本MSAA模式中,如果所有四个样本不相等,那么可将对应像素分类为边缘像素。
“块”可指N×N像素群组。“块高速缓冲存储器”可指存储一组未经压缩块的GPU存储器(例如,芯片上存储装置)。当将块从高速缓冲存储器写入到系统存储器时,可计算块编码。当将经压缩块从系统存储器读取到高速缓冲存储器时,可计算块解码。在一些实例中,红蓝(RB)(或红绿蓝(RGB))写入可去往块高速缓冲存储器,且RB色读取(或RGB)可来自块高速缓冲存储器。
如果像素被单个图元覆盖,那么所述像素内部的所有样本(例如,MSAA样本)可共享相同颜色和/或深度信息。因此,可能存在样本等级的4x重复信息。还有可能来自多个图元的四个样本共享相同颜色和/或深度数据。举例来说,在相对较小的块(例如,4×4像素块)内部,像素可具有类似颜色和/或深度。本发明的方面涉及压缩此类颜色和深度数据。
显示缓冲器单元44可临时存储经显现的图像的经显现的像素,直到显现整个图像为止。在此上下文中,显示缓冲器单元44可被视为图像帧缓冲器。显示缓冲器单元44可接着发射经显现的图像以显示在显示单元42上。显示缓冲器单元44可包含用于多种数据的存储装置,多种数据包含颜色数据(例如,红色、绿色、蓝色、α(RGBA)或任何其它颜色空间中的数据)和深度数据(例如,指示相对于其它图元的像素的像素深度的z-值)。
在任何情况下,如上文所提到的,当显现像素数据时,GPU 36可从GPU 36外部的存储器(例如,显示缓冲器单元44和/或存储单元48,一般被称作“系统存储器”)读取数据及将数据写入到GPU 36外部的存储器。在显现单个图像期间需要在系统存储器与GPU 36之间传送的数据的量可为相当大的且可限制显现性能。举例来说,关于模式显现(立即模式和/或保留模式显现),GPU 36可多次显现最终图像的单个像素。当GPU 36使用多样本抗混叠(MSAA)技术时,可进一步拉紧本地GPU存储器38与系统存储器之间的带宽(归因于与MSAA相关联的额外样本)。因此,当使用绘制调用将像素直接显现给系统存储器时,足够的存储器带宽可能无法用以在系统存储器与本地GPU存储器38之间传送颜色和深度数据。
另外,典型视频和/或图像压缩算法无法进行优化以执行3D颜色缓冲显现的压缩, 这是因为存储器存取模式可为随机的,单元存取大小可能较小,且用于图形显现的压缩可能需要为无损的。另外,典型视频和/或图像压缩技术无法适用于计算机产生的图形,这是因为MSAA的概念一般不适用于视频/图像域。
本发明的方面一般涉及压缩图形数据,所述压缩可减少需要在GPU存储器38与系统存储器(即,显示单元缓冲器44和/或存储单元48)之间传送的数据的量。举例来说,根据本发明的方面,GPU 36可压缩与像素相关联的样本值以减少表示像素值所需的数据的量。
在图1中所展示的实例中,译码单元60可负责译码图形数据。举例来说,当将图形数据作为应译码数据62写入到显示单元缓冲器44和/或存储单元48时,译码单元60可编码经显现的图形数据。同样地,当从显示单元缓冲器44和/或存储单元48读取经译码数据62时,译码单元60可解码经译码数据62。虽然在图1的实例中将译码单元60展示为包含在GPU 36中,但在其它实例中,译码单元60可并入到计算装置30的任何其它组件中。
在一些实例中,译码单元60可以不同于非边缘像素的方式译码(压缩)边缘像素。举例来说,如上文所提到的,用于非边缘像素的样本可共享相同颜色、深度和/或其它样本。因此,GPU 36可用相同的单个样本值表示所有样本。然而,如上文所提到的,边缘像素并不具有相等的样本值。选择用于所有样本的代表性样本值可导致有损压缩。
根据本发明的方面,译码单元60可通过组合用于像素的所有样本值来译码非边缘像素。举例来说,使用四样本MSAA方案采样的非边缘像素可具有四个相等的颜色样本。因此,译码单元60可将样本组合成单个样本值。
译码单元60可通过识别与具有不同值(例如,不等于与像素的其它样本相关联的其它样本的至少一个颜色、亮度和/或深度值)的像素相关联的样本来删除边缘像素。译码单元60可从光栅器或显现后端(如下文图2中所展示)检测边缘像素。在检测到边缘像素之后,译码单元60可确定用于边缘像素的基准值且可仅存储用于样本的不同于基准值的位,所述操作可被称作基于位平面的压缩。以此方式,译码单元60可保留样本的所有信息,同时仍压缩表示像素所需的数据的量。
出于解释的目的,假设:译码单元60经配置以在将4×4像素块从GPU存储器38写入到显示单元缓冲器44和/或存储单元38时译码此类块。还假设:使用四样本MSAA方案来采样每一像素。在检测到边缘像素之后,译码单元60可产生用于块的识别边缘像素的位置的边缘掩码。举例来说,译码单元60可产生识别4×4块中的边缘像素的位置的16位边缘掩码(例如,1位每像素,其中0表示非边缘像素且1表示边缘像素,或 反过来也是一样)。
当译码颜色数据时,译码单元60还可确定块的基准颜色。在其中使用RGBA8888格式用于颜色样本的实例中,可使用一个32位值来表示基准颜色。译码单元60可通过组合颜色样本来确定块的基准颜色。举例来说,译码单元60可执行“与”运算以组合样本,或确定算术平均值、平均数、中值或其类似者。
译码单元60可接着确定块中的每一像素的增量值,其中增量值表示实际样本颜色与基准颜色之间的差。举例来说,译码单元60可确定用于每一非边缘像素的一个增量,所述增量等于基准颜色与样本的颜色(对于非边缘像素来说,颜色相同)之间的差。另外,译码单元60可确定用于与边缘像素相关联的每一样本值的增量值。因此,在4x MSAA方案中,译码单元60可确定用于每一边缘像素的四个增量值。
译码单元60可接着确定块的掩码,所述掩码指示不等于基准颜色的块的每一样本的位置(对于所述样本,存在大于零的增量)。因此,对于上文所论述的4x MSAA情况下的4×4块,译码单元60可产生32-位值,所述32-位值包含对于具有不同于基准颜色的颜色的每一样本经设置为一的位,和对于具有与基准颜色相同的颜色的每一样本经设置为零的位(或反过来也是一样)。
关于解码,当从显示单元缓冲器44和/或存储单元48读取块时,译码单元60可解码块。根据本发明的方面,译码单元60可通过以边缘掩码次序扫描像素来解码经译码块。如果像素为边缘像素,那么四个随后样本增量可对应于当前像素(例如,对于每个增量颜色通道)。如果像素并非边缘像素,那么译码单元60可使用一个增量来复制像素的所有四个样本的颜色。增量可根据颜色通道,且对于像素的所有颜色通道,边缘掩码可相同。因此,对于每个样本,所得颜色为基准颜色与增量的组合。每颜色通道的增量位计数可根据颜色掩码来计算。每一增量位位置还可从颜色掩码读取。
根据本发明的方面,可将上文所描述的相同压缩技术应用于颜色和深度数据,借此提供硬件成本减少(例如,计算负荷和/或存储器总线要求的减少)。举例来说,除译码颜色数据之外,译码单元60还可编码/解码深度数据(例如,例如z-值)。也就是说,译码单元60可通过组合像素的所有深度样本值来译码非边缘像素。对于边缘像素,译码单元60可确定基准深度值且可仅存储用于样本的不同于基准值的位,如上文关于颜色压缩实例所描述。
在一些实例中,RGBA通道可具有块等级下的不同特性。因此,用于RGBA通道的适应性存储器覆盖面积可为有益的。举例来说,对于具有RGBA8888颜色格式的4×4块和4x MSAA,块大小可为4×4×4×32位=2048位。在此实例中,根据本发明的技术产 生的512-位经压缩块为原始存储器覆盖面积的四分之一。可使用一组固定的预定块大小。可实施本发明的方面以压缩大量块大小。
可将本发明的方面应用于浮点和/或整数显现目标和深度缓冲器。如上文所注释,本发明的技术一般可为无损的,且可在各种MSAA方案(例如,1x、2x、4x、8x、16x及其类似者)中加以应用。在一些实例中,本发明的技术可将存储器消耗速率减小为二分之一,且在一些应用中,高达六分之一或六分之一以下。保存存储器带宽还可减少功率消耗,这归因于来自负责数据传送的组件的功率节省。
应理解,仅仅作为实例而提供计算装置30,且可以不同方式来布置执行本发明的技术的其它计算装置30。举例来说,虽然将显示缓冲器单元44与存储单元48分离来展示及描述,但在其它实例中,显示单元缓冲器44和存储单元48可并入到相同组件中。
此外,应理解,计算装置30可包含图1中为了清晰起见而未展示的额外模块或单元。举例来说,计算装置30可包含用于发射及接收数据的收发器模块,且可包含允许计算装置30与另一装置或网络之间的无线或有线通信的电路。计算装置30还可包含扬声器和麦克风(所述两者在图1中均未展示),以在其中计算装置30为移动无线电话(例如,智能电话)的实例中实现电话通信,或在其中计算装置30为媒体播放器或平板计算机的实例中实现扬声器。在一些情况下,在其中计算装置30为桌上型计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口单元46和显示单元42可在计算装置30的外部。
图2为说明示范性图形处理管线80的框图。实例管线80包含输入汇编程序级82、顶点着色器级84、外壳着色器级86、镶嵌器级88、域着色器级90、几何着色器级92、光栅器级94、像素着色器级96,和输出合并器级98。在一些实例中,例如DirectX 11API等API可经配置以使用图3中所展示的所述级中的每一者。下文将图形处理管线80描述为使用GPU 36来执行,但可由多种其它图形处理器来执行。
图形处理管线80一般包含可编程级(例如,图2中通过具有圆角的框加以说明)和固定功能级(例如,图2中通过具有方角的框加以说明)。举例来说,与图形显现管线80的某些级相关联的图形显现操作一般通过可编程着色器处理器来执行,而与图形显现管线80的其它级相关联的其它图形显现操作一般通过与GPU 36相关联的非可编程、固定功能硬件单元来执行。由着色单元40执行的图形显现级一般可被称作“可编程”级,而通过固定功能单元执行的级一般可被称作固定功能级。
在图2的实例中将输入汇编程序级82展示为固定功能级且其一般负责将图形数据(三角形、线和点)供应到图形处理管线80。举例来说,输入汇编程序级82可收集高阶 表面、图元及其类似者的顶点数据,且将顶点数据和属性输出到顶点着色器级84。因此,输入汇编程序级80可使用固定功能操作从片外存储器(例如,存储单元48)读取顶点。输入汇编程序级80可接着根据这些顶点创建管线工作项,同时还产生顶点识别符(“VertexIDs”)、实例识别符(“InstanceIDs”,其可供顶点着色器使用)和图元识别符(“PrimitiveIDs”,其可供几何着色器和像素着色器使用)。在读取顶点时,输入汇编程序级80可自动地产生VertexIDs、InstanceIDs和PrimitiveIDs。
顶点着色器级84可处理所接收的顶点数据和属性。举例来说,顶点着色器级84可执行每顶点处理,例如,变换、剥皮、顶点移位及计算每顶点材料属性。在一些实例中,顶点着色器级84可产生纹理坐标、顶点颜色、顶点照明、雾效因子及其类似者。顶点着色器级84一般采用单个输入顶点且输出单个经处理的输出顶点。
外壳着色器级86接收来自顶点着色器级84的图元且负责执行至少两个动作。第一,外壳着色器级86通常负责确定一组镶嵌因子。外壳着色器级86可每图元产生一次镶嵌因子。镶嵌因子可供镶嵌器级88使用以确定镶嵌给定图元的精细程度(例如,将图元分裂成较小部分)。外壳着色器级86还负责产生稍后将供域着色器级90使用的控制点。也就是说,例如,外壳着色器级86负责产生将供域着色器级90使用以创建最终在显现中使用的实际的经镶嵌的顶点的控制点。
当镶嵌器级88接收到来自外壳着色器级86的数据时,镶嵌器级88使用若干算法中的一者来确定用于当前图元类型的适当采样模式。举例来说,一般来说,镶嵌器级88将所请求的镶嵌的量(如通过外壳着色器级86确定)转换成当前“域”内的一群组坐标点。也就是说,取决于来自外壳着色器级86的镶嵌因子,以及镶嵌器级88的特定配置,镶嵌器级88确定需要对当前图元中的哪些点进行采样以便将输入图元镶嵌到较小部分中。镶嵌器级的输出可为一组域点,其可包含重心坐标。
除由外壳着色器级86产生的控制点之外,域着色器级90还采用域点,且使用域点来创建新顶点。域着色器级90可使用针对当前图元、纹理、程序算法或任何其它内容产生的控制点的完整列表将每一经镶嵌的点的重心“位置”转换成传递到管线中的下一级的输出几何。
几何着色器级92可接收通过顶点数据定义的图元(例如,三个顶点用于三角形,两个顶点用于线,或单个顶点用于点)且进一步处理所述图元。举例来说,几何着色器级82可执行每图元处理,例如,轮廓-边缘检测和阴影体挤出,以及其它可能的处理操作。因此,几何着色器级92可接收一个图元作为输入(其可包含一或多个顶点)且输出零个、一个或多个图元(其再次可包含一或多个顶点)。输出图元可含有量比无几何着色器级92 情况下可能有可能的数据量多的数据。输出数据的总量可等于顶点大小乘以顶点计数的所得值,且可根据调用来限制。来自几何着色器级92的流输出可允许将到达此级的图元存储到芯片外存储器,例如,存储单元48(图1)。通常将流输出系结到几何着色器级92,且可将流输出与几何着色器级92一起编程(例如,使用API)。
光栅器级94通常为固定功能级,其负责截割图元及准备将图元用于像素着色器级96。举例来说,光栅器级94可执行截割(包含定制的截割边界)、透视分割、观察口/剪刀选择及实施方案、显现目标选择及图元设置。以此方式,光栅器级94可产生供像素着色器级96着色的数个片段。
像素着色器级96接收来自光栅器级94的片段且产生每像素数据,例如颜色。像素着色器级96还可执行每像素处理,例如纹理掺合及照明模型计算。因此,像素着色器级96可接收一个像素作为输入且可在相同的相对位置处输出一个像素(或对于像素,为零值)。
输出合并器级98一般负责组合各种类型的输出数据(例如,像素着色器值、深度和模板信息)以产生最终结果。举例来说,输出合并器级98可对显现目标(像素位置)执行固定功能掺合、深度和/或模板操作。
在一些实例中,根据本发明的方面,GPU 36可压缩来自流输出(例如,在几何着色器级92之后)或输出合并器级98的经着色像素。举例来说,GPU 36可将经着色像素从输出合并器级98写入到芯片上存储器高速缓冲存储器(例如,GPU存储器38)。GPU 36可执行本发明的技术以在将像素数据从芯片上存储器传送到GPU 36外部的存储器时压缩经着色像素数据。在一些实例中,GPU 36可逐个块地执行压缩(例如,4×4块、8×8块、16×16块及其类似者)。
图3A到3C为说明编码实例2×2像素块120的概念图。在图3A到3C中所展示的实例中,每一像素122A到122D具有四个相关联的样本(在像素122中展示为方框),此情形表示4x MSAA方案。虽然将关于图3A到3C所描述的技术描述为由GPU 36执行,但所述技术可由多种其它处理单元来执行。
在图3A中所展示的实例中,像素122A、122C和122D为具有样本值7(0000111)(仅出于说明的目的展示的值)的非边缘像素。然而,像素122B为具有具值7(0000111)的一个样本和具值5(00000101)(再次,仅出于说明的目的而展示的值)的三个样本的边缘像素。
因此,如图3B中所展示,GPU 36可识别像素122A、122C和122D为非边缘像素且可将样本值压缩为单个样本值(7)。归因于不同样本值,GPU 36可确定像素122B为边 缘像素,且可能不将样本值压缩为单个值。
GPU 36可产生边缘掩码以指示哪些像素为边缘像素。在图3A到3C中所展示的实例中,边缘掩码可为0100(例如,呈光栅次序,其中1指示122B为边缘像素)。如上文关于图1所提到的,GPU 36还可产生基准值。举例来说,GPU 36可使用逐位“与”运算产生基准值,所述逐位“与”运算可等于(7)&(5&5&7&5)&(7)&(7)=5(00000101)。在其它实例中,GPU 36可使用替代方法(例如,算术平均值、平均数、中值及其类似者)产生基准值。
在一些实例中,GPU 36可使用差掩码指示增量值。举例来说,在图3A到3C中所展示的实例中,GPU 36可执行逐位异或运算,所述逐位异或运算可等于(7)^(5^5^7^5)^(7)^(7)=2(00000010)。GPU 36还可产生位置掩码以指示实际样本值不同于基准值的样本中的每一者的位置。在一些实例中,GPU 36可设置用于每一非边缘像素的一个位置位(因为所有样本相同)和用于每一边缘像素的四个位置位(每一样本一个位)。因此,在图3A到3C中所展示的实例中,位置掩码可等于产生1001011(光栅次序)的(1)(0 0 1 0)(1)(1)。也就是说,关于图3C,(1)涉及像素122A,(0 0 1 0)涉及像素122B,(1)涉及像素122C,且(1)涉及像素122D。
根据本发明的方面,不是对于单个颜色存储8位每像素(bpp)(例如,4样本×4样本×8位颜色=128b),而是经压缩块存储器覆盖面积可为大约1.7bpp(例如,8位基准颜色+8位差掩码+4位边缘掩码+7位位置掩码(增量=1+4*1+1+1)=27位每2×2像素块)。因此,27位每块除以16MSAA样本等于大约1.68bpp。
关于上文所展示的实例,假设格式为RGBA8888格式且使用4x MSAA。根据此实例,经压缩块存储32b基准颜色(8b每通道)、32b差掩码(8b每通道)、16b边缘掩码(1b每像素)和变化大小的位置掩码每经编码样本(例如,0到8b每样本,其中每一颜色通道一不同位)。因此,经压缩块存储器覆盖面积粗略地为96位加增量位。增量存储器覆盖面积可取决于块内容。虽然关于特定格式和混叠方案描述上文所描述的实例,但应理解,本发明的技术可适用于其它格式和其它抗混叠技术。
另外,虽然关于颜色值描述图3A到3C中所展示的实例,但可针对深度值执行相同技术。举例来说,关于z-值,每一像素122可具有四个相关联的z-值。GPU 36可以与上文所描述的颜色压缩相同的方式执行深度压缩。也就是说,GPU 36可产生基准深度、边缘掩码(例如,指示哪些像素为边缘像素)、差掩码(例如,指示基准深度与实际深度之间的差),及位置掩码(例如,指示具有非零增量值的样本的位置)。
图4为说明根据本发明的方面的用于编码图形数据的实例过程的流程图。虽然将图 4中所展示的过程描述为由GPU 36(图1)执行,但所述技术可由多种其它处理单元来实施。
在图4的实例中,GPU 36将像素值显现给高速缓冲存储器(140)。高速缓冲存储器可包含在(例如)GPU存储器38中,使得高速缓冲存储器为芯片上存储器。GPU 36可确定高速缓冲存储器是否为满的,或另外准备将写入到高速缓冲存储器的数据从芯片上存储器中写出(142)。
如果高速缓冲存储器为满的(步骤142的“是”分支),那么GPU 36可编码高速缓冲存储器中的像素的颜色值(144)。举例来说,对于非边缘像素,GPU 36可压缩样本值以产生用于所有样本的单个值。对于边缘像素,GPU 36可能并不压缩样本值。在任何情况下,GPU 36可确定样本的基准值,且确定基准值与实际样本值之间的差。
另外,GPU 36可编码高速缓冲存储器中的像素的深度值(146)。举例来说,如上文所描述,GPU 36可以与颜色值相同的方式编码深度值。也就是说,对于非边缘像素,GPU 36可压缩样本值以产生用于所有样本的单个值。对于边缘像素,GPU 36可能并不压缩样本值。在任何情况下,GPU 36可确定样本的基准深度值,且确定基准深度值与实际样本值之间的差。
在译码颜色和深度值之后,GPU 36可将经编码图形数据从高速缓冲存储器写入到系统存储器(148)。举例来说,GPU 36可将经编码图形数据从高速缓冲存储器写入到显示单元缓冲器44和/或存储单元48。应理解,图4中所展示的步骤仅作为一个实例提供。也就是说,图4中所展示的步骤未必需要按所展示的次序来执行,且可执行较少、额外或替代步骤。
图5为说明根据本发明的方面的用于编码颜色和/或深度值的实例过程的流程图。虽然将图5中所展示的过程描述为由GPU 36(图1)执行,但所述技术可由多种其它处理单元来实施。在一些实例中,可在执行图4的步骤144和/或146时执行图5的实例中所展示的过程。
在图5中所展示的实例中,GPU 36可确定像素是否为边缘像素(160)。举例来说,关于编码颜色,GPU 36可通过识别像素的不同颜色样本来确定像素是否为边缘像素。关于深度,GPU 36可通过识别像素的不同深度样本来确定像素是否为边缘像素。在任何情况下,对于4x MSAA,如果像素的所有四个样本值相同,那么GPU 36可识别像素为非边缘像素。或者,如果像素的样本值中的一或多者不同,那么GPU 36可识别像素为边缘像素。
GPU 36可产生边缘掩码以指示像素块中的边缘像素的位置(162)。举例来说,GPU 36 可产生指示像素块中的每一边缘像素的位置的位串。GPU 36还可产生块的基准值(164)。也就是说,当编码颜色时,GPU 36可产生块的基准颜色。当编码深度信息时,GPU 36可产生基准深度值。
在产生基准值之后,GPU 36可产生指示基准值与块中的样本中的每一者的实际值之间的差的增量值(166)。在一些实例中,GPU 36可产生非边缘像素的单个增量值,所述增量值表示基准值与组合样本值之间的差(因为所有样本的值相等)。GPU 36可产生边缘像素的每一样本的增量值,所述增量值还表示基准值与样本值之间的差。
GPU 36还可产生位置掩码以指示哪些样本值与所产生的增量相关联(168)。举例来说,GPU 36可产生指示不同于基准值的每一样本值的位置的位串。在一些实例中,非边缘像素可用单个值来表示,而不管与像素相关联的样本的数目,如上文所描述。
应理解,图5中所展示的步骤仅作为一个实例提供。也就是说,图5中所展示的步骤未必需要按所展示的次序来执行,且可执行较少、额外或替代步骤。
图6为说明根据本发明的方面的用于解码图形数据的实例过程的流程图。虽然将图6中所展示的过程描述为由GPU 36(图1)执行,但所述技术可由多种其它处理单元来实施。
GPU 36可从系统存储器检索像素值(180)。举例来说,GPU 36可从显示单元缓冲器44和/或存储单元48读取像素值。GPU 36还可确定经读取的像素值是否为经编码值(182)。也就是说,在一些实例中,GPU 36可经预先配置以在任何时候在本地GPU存储器(例如,GPU存储器38)与系统存储器(例如,显示单元缓冲器44和/或存储单元48)之间传送此类数据时,执行图形数据的编码及解码。在此类实例中,可能并不执行确定步骤182。然而,在其它实例中,GPU 36可为可配置的,且可能并非始终执行编码/解码功能(例如,取决于系统资源)。在此类实例中,GPU 36可确定从系统存储器读取的数据是否先前经编码。
在任何情况下,如果像素值经编码(步骤182的“是”分支),那么GPU 36可解码像素的颜色值(184)。举例来说,GPU 36可确定基准值,确定哪些样本不同于基准值,及组合所接收增量值与基准值以产生经解码像素值。如上文所提到的,可将基准值、边缘掩码(指示不同于基准值的样本)和增量掩码与经译码数据一起提供。GPU 36还可以相同方式解码像素的深度值(186)。在解码颜色和/或深度值之后,GPU 36可将像素值写入到高速缓冲存储器,例如GPU存储器38(188)。
应理解,图6中所展示的步骤仅作为一个实例提供。也就是说,图6中所展示的步骤未必需要按所展示的次序来执行,且可执行较少、额外或替代步骤。举例来说,虽然 图6说明解码颜色和深度值两者,但在一些实例中,可能仅解码颜色或深度值。
图7为说明根据本发明的方面的用于解码颜色和/或深度值的实例过程的流程图。虽然将图7中所展示的过程描述为由GPU 36(图1)执行,但所述技术可由多种其它处理单元来实施。在一些实例中,可在执行图6的步骤184和/或186时执行图7中所展示的过程。
在图7的实例中,GPU 36可确定像素块的基准值(200)。在一些实例中,GPU 36可接收基准值的指示。举例来说,如上文关于图5所提到的,36可在编码时确定基准值。因此,可将基准值与经检索数据包含在一起。GPU 36还可确定块的像素的增量值(202)。以与基准值相同的方式,可将块的增量值与经检索数据包含在一起。
组合所接收基准值与所接收增量值的方式可取决于像素是边缘像素还是非边缘像素。因此,GPU 36可(例如)使用所接收边缘掩码确定像素是边缘像素还是非边缘像素(204)。
GPU 36可按边缘掩码次序扫描像素。对于边缘像素(步骤204的“是”分支),GPU36可组合随后的四个(对于4x MSAA)增量值与基准值以产生像素的实际的单独样本值(例如,4个实际样本值)(206)。如果像素并非边缘像素(步骤204的“否”分支),那么GPU可组合随后的单个增量值与基准值以产生像素的组合样本值(208)。
可执行关于图7所描述的步骤以用于解码颜色和/或深度值。应理解,图7中所展示的步骤仅作为一个实例提供。也就是说,图7中所展示的步骤未必需要按所展示的次序来执行,且可执行较少、额外或替代步骤。
还应理解,取决于实例,本文中所描述的方法中的任一者的某些动作或事件可以用不同顺序执行、可以添加、合并或全部省略(例如,实践所述方法并不需要所有所描述动作或事件)。此外,在某些实例中,可(例如)通过多线程处理、中断处理或多个处理器同时而非顺序地执行动作或事件。
在一或多个实例中,所描述功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么功能可作为一或多个指令或代码存储在包括非暂时性计算机可读媒体的制造物品上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可以是可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。以实例说明而非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器,或可用以携载或存储呈指令或数据结构形式且可由计算机存取的所要程序代码的任何其它媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光 光盘、光学光盘、数字影音光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。上述各者的组合也应包含在计算机可读媒体的范围内。
代码可由一或多个处理器执行,所述一或多个处理器例如一或多个DSP、通用微处理器、ASIC、FPGA,或其它等效集成或离散逻辑电路。另外,在一些方面中,可在专用硬件和/或软件模块内提供本文中所描述的功能性。并且,可将所述技术完全实施于一或多个电路或逻辑元件中。
本发明的技术可以在广泛多种装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示技术的装置的功能方面,但未必需要通过不同硬件单元实现。确切地说,如上文所描述,各种单元可以结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已描述各种实例。这些及其它实例在所附权利要求书的范围内。

颜色缓冲和深度缓冲压缩.pdf_第1页
第1页 / 共24页
颜色缓冲和深度缓冲压缩.pdf_第2页
第2页 / 共24页
颜色缓冲和深度缓冲压缩.pdf_第3页
第3页 / 共24页
点击查看更多>>
资源描述

《颜色缓冲和深度缓冲压缩.pdf》由会员分享,可在线阅读,更多相关《颜色缓冲和深度缓冲压缩.pdf(24页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 104272740 A (43)申请公布日 2015.01.07 CN 104272740 A (21)申请号 201380022746.6 (22)申请日 2013.05.01 61/641,257 2012.05.01 US 13/873,897 2013.04.30 US H04N 19/186(2014.01) H04N 19/14(2014.01) H04N 19/176(2014.01) H04N 19/423(2014.01) H04N 19/103(2014.01) H04N 19/593(2014.01) H04N 1/64(2006.01) G06。

2、T 9/00(2006.01) G06T 15/00(2011.01) G06T 15/40(2011.01) (71)申请人 高通股份有限公司 地址 美国加利福尼亚州 (72)发明人 尤卡 - 佩卡阿尔沃 (74)专利代理机构 北京律盟知识产权代理有限 责任公司 11287 代理人 宋献涛 (54) 发明名称 颜色缓冲和深度缓冲压缩 (57) 摘要 在实例中, 本发明提供一种译码包括多个像 素的图形数据的方法, 所述方法包含 : 通过图形 处理单元 GPU 执行多样本抗混叠以产生所述多个 像素中的每一像素的一或多个样本值。所述方 法还可包含确定像素是否包括边缘像素, 其中所 述确定包括对于每。

3、一像素识别不同样本值。所述 方法还可包含基于所述边缘像素确定编码所述像 素。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2014.10.30 (86)PCT国际申请的申请数据 PCT/US2013/039056 2013.05.01 (87)PCT国际申请的公布数据 WO2013/166141 EN 2013.11.07 (51)Int.Cl. 权利要求书 4 页 说明书 13 页 附图 6 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书4页 说明书13页 附图6页 (10)申请公布号 CN 104272740 A CN 104272740 A 1/。

4、4 页 2 1. 一种编码包括多个像素的图形数据的方法, 所述方法包括 : 通过图形处理单元 GPU 确定所述多个像素中的每一像素的一或多个样本值 ; 确定每一像素是否包括边缘像素, 其中所述确定包括对于每一像素识别所述相应像素 的所述一或多个样本值中的不同样本值 ; 以及 基于所述边缘像素确定编码所述像素。 2. 根据权利要求 1 所述的方法, 其进一步包括将所述经编码像素数据存储到所述 GPU 外部的缓冲器。 3. 根据权利要求 2 所述的方法, 其进一步包括将所述经编码像素数据存储到块高速缓 冲存储器, 且其中存储所述经编码像素数据包括将所述块高速缓冲存储器的内容写出到所 述缓冲器。 4。

5、. 根据权利要求 1 所述的方法, 其中确定所述一或多个样本值包括执行多样本抗混叠 以产生所述多个像素中的每一像素的所述一或多个样本值。 5. 根据权利要求 1 所述的方法, 其中所述一或多个样本值包括颜色值且其中确定像素 是否包括边缘像素包括对于每一像素识别所述像素的所述样本值是否包含不同颜色值。 6. 根据权利要求 5 所述的方法, 其中编码所述像素进一步包括 : 产生识别像素块中的边缘像素的边缘掩码 ; 产生所述像素块的基准颜色值 ; 以及 产生所述像素块的每一像素的颜色样本值与所述像素块的所述基准颜色之间的增量 值。 7. 根据权利要求 1 所述的方法, 其中所述一或多个样本值包括深度。

6、值且其中确定像素 是否包括边缘像素包括对于每一像素识别所述像素的所述样本值是否包含不同深度值。 8. 根据权利要求 7 所述的方法, 其中编码所述像素进一步包括 : 产生识别像素块中的边缘像素的边缘掩码 ; 产生所述像素块的基准深度值 ; 以及 产生所述像素块的每一像素的深度样本值与所述像素块的所述基准深度值之间的增 量值。 9. 一种用于编码包括多个像素的图形数据的设备, 所述设备包括一或多个处理器, 所 述一或多个处理器经配置以 : 确定所述多个像素中的每一像素的一或多个样本值 ; 确定每一像素是否包括边缘像素, 其中所述确定包括对于每一像素识别所述相应像素 的所述一或多个样本值中的不同样。

7、本值 ; 以及 基于所述边缘像素确定编码所述像素。 10. 根据权利要求 9 所述的设备, 其中所述一或多个处理器经进一步配置以将所述经 编码像素数据存储到 GPU 外部的缓冲器。 11. 根据权利要求 10 所述的设备, 其中所述一或多个处理器经进一步配置以将所述经 编码像素数据存储到块高速缓冲存储器, 且其中存储所述经编码像素数据包括将所述块高 速缓冲存储器的内容写出到所述缓冲器。 12. 根据权利要求 9 所述的设备, 其中为了确定所述一或多个样本值, 所述一或多个处 理器经配置以执行多样本抗混叠以产生所述多个像素中的每一像素的所述一或多个样本 权 利 要 求 书 CN 10427274。

8、0 A 2 2/4 页 3 值。 13. 根据权利要求 9 所述的设备, 其中所述一或多个样本值包括颜色值且其中为了确 定像素是否包括边缘像素, 所述一或多个处理器经配置以对于每一像素识别所述像素的所 述样本值是否包含不同颜色值。 14. 根据权利要求 13 所述的设备, 其中为了编码所述像素, 所述一或多个处理器经配 置以 : 产生识别像素块中的边缘像素的边缘掩码 ; 产生所述像素块的基准颜色值 ; 以及 产生所述像素块的每一像素的颜色样本值与所述像素块的所述基准颜色之间的增量 值。 15. 根据权利要求 9 所述的设备, 其中所述一或多个样本值包括深度值且其中为了确 定像素是否包括边缘像素。

9、, 所述一或多个处理器经配置以对于每一像素识别所述像素的所 述样本值是否包含不同深度值。 16. 根据权利要求 15 所述的设备, 其中为了编码所述像素, 所述一或多个处理器经配 置以 : 产生识别像素块中的边缘像素的边缘掩码 ; 产生所述像素块的基准深度值 ; 以及 产生所述像素块的每一像素的深度样本值与所述像素块的所述基准深度值之间的增 量值。 17. 一种用于编码包括多个像素的图形数据的设备, 所述设备包括 : 用于确定所述多个像素中的每一像素的一或多个样本值的装置 ; 用于确定每一像素是否包括边缘像素的装置, 其中所述确定包括对于每一像素识别所 述相应像素的所述一或多个样本值中的不同样。

10、本值 ; 以及 用于基于所述边缘像素确定编码所述像素的装置。 18. 根据权利要求 17 所述的设备, 其进一步包括用于将所述经编码像素数据存储到 GPU 外部的缓冲器的装置。 19. 根据权利要求 18 所述的设备, 其进一步包括用于将所述经编码像素数据存储到块 高速缓冲存储器的装置, 且其中用于存储所述经编码像素数据的所述装置包括用于将所述 块高速缓冲存储器的内容写出到所述缓冲器的装置。 20. 根据权利要求 17 所述的设备, 其中所述用于确定所述一或多个样本值的装置包括 用于执行多样本抗混叠以产生所述多个像素中的每一像素的所述一或多个样本值的装置。 21. 根据权利要求 17 所述的设。

11、备, 其中所述一或多个样本值包括颜色值且其中所述用 于确定像素是否包括边缘像素的装置包括用于对于每一像素识别所述像素的所述样本值 是否包含不同颜色值的装置。 22. 根据权利要求 21 所述的设备, 其中用于编码所述像素的所述装置进一步包括 : 用于产生识别像素块中的边缘像素的边缘掩码的装置 ; 用于产生所述像素块的基准颜色值的装置 ; 以及 用于产生所述像素块的每一像素的颜色样本值与所述像素块的所述基准颜色之间的 增量值的装置。 权 利 要 求 书 CN 104272740 A 3 3/4 页 4 23. 根据权利要求 17 所述的设备, 其中所述一或多个样本值包括深度值且其中所述用 于确定。

12、像素是否包括边缘像素的装置包括用于对于每一像素识别所述像素的所述样本值 是否包含不同深度值的装置。 24. 根据权利要求 23 所述的设备, 其中用于编码所述像素的所述装置进一步包括 : 用于产生识别像素块中的边缘像素的边缘掩码的装置 ; 用于产生所述像素块的基准深度值的装置 ; 以及 用于产生所述像素块的每一像素的深度样本值与所述像素块的所述基准深度值之间 的增量值的装置。 25. 一种非暂时性计算机可读媒体, 其具有存储在其上的指令, 所述指令在被执行时致 使一或多个处理器进行以下操作 : 确定所述多个像素中的每一像素的一或多个样本值 ; 确定每一像素是否包括边缘像素, 其中所述确定包括对。

13、于每一像素识别所述相应像素 的所述一或多个样本值中的不同样本值 ; 以及 基于所述边缘像素确定编码所述像素。 26. 根据权利要求 25 所述的非暂时性计算机可读媒体, 其中所述指令致使所述一或多 个处理器将所述经编码像素数据存储到 GPU 外部的缓冲器。 27. 根据权利要求 26 所述的非暂时性计算机可读媒体, 其中所述指令致使所述一或多 个处理器将所述经编码像素数据存储到块高速缓冲存储器, 且其中存储所述经编码像素数 据包括将所述块高速缓冲存储器的内容写出到所述缓冲器。 28. 根据权利要求 25 所述的非暂时性计算机可读媒体, 其中为了确定所述一或多个样 本值, 所述指令致使所述一或多。

14、个处理器执行多样本抗混叠以产生所述多个像素中的每一 像素的所述一或多个样本值。 29. 根据权利要求 25 所述的非暂时性计算机可读媒体, 其中所述一或多个样本值包括 颜色值且其中为了确定像素是否包括边缘像素, 所述指令致使所述一或多个处理器对于每 一像素识别所述像素的所述样本值是否包含不同颜色值。 30. 根据权利要求 29 所述的非暂时性计算机可读媒体, 其中为了编码所述像素, 所述 指令致使所述一或多个处理器进行以下操作 : 产生识别像素块中的边缘像素的边缘掩码 ; 产生所述像素块的基准颜色值 ; 以及 产生所述像素块的每一像素的颜色样本值与所述像素块的所述基准颜色之间的增量 值。 31。

15、. 根据权利要求 25 所述的非暂时性计算机可读媒体, 其中所述一或多个样本值包括 深度值且其中为了确定像素是否包括边缘像素, 所述指令致使所述一或多个处理器对于每 一像素识别所述像素的所述样本值是否包含不同深度值。 32. 根据权利要求 31 所述的非暂时性计算机可读媒体, 其中为了编码所述像素, 所述 指令致使所述一或多个处理器进行以下操作 : 产生识别像素块中的边缘像素的边缘掩码 ; 产生所述像素块的基准深度值 ; 以及 产生所述像素块的每一像素的深度样本值与所述像素块的所述基准深度值之间的增 权 利 要 求 书 CN 104272740 A 4 4/4 页 5 量值。 权 利 要 求 。

16、书 CN 104272740 A 5 1/13 页 6 颜色缓冲和深度缓冲压缩 0001 本申请案主张 2012 年 5 月 1 日申请的第 61/641,257 号美国临时申请案的权利, 所述申请案的全部内容借此以引用的方式并入本文中。 技术领域 0002 本发明涉及显现计算机图形。 背景技术 0003 提供用于视觉呈现的内容的装置一般包含图形处理单元 (GPU)。GPU 将表示内容 的像素显现在显示器上。GPU 产生显示器上的每一像素的一或多个像素值且对显示器上的 每一像素的像素值执行图形处理以显现每一像素以用于呈现。 发明内容 0004 本发明的方面一般来说涉及压缩图形数据, 压缩图形数。

17、据可被称作译码图形数 据。举例来说, 图形数据的像素可由一或多个样本 ( 例如, 一或多个颜色样本、 一或多个深 度样本, 及其类似者 ) 构成, 其中每一样本对像素值有贡献。本发明的方面一般来说涉及压 缩与像素相关联的样本值以减少表示像素值所需的数据的量。 本发明的方面还可涉及识别 位于目标边缘处的像素, 所述像素可具有不同样本值。 在一些实例中, 可在压缩与边缘像素 相关联的样本时相对于基准值产生样本增量。 0005 在实例中, 一种编码包括多个像素的图形数据的方法包含 : 通过图形处理单元 (GPU) 确定所述多个像素中的每一像素的一或多个样本值 ; 确定每一像素是否包括边缘像 素, 其。

18、中所述确定包括对于每一像素识别所述相应像素的所述一或多个样本值中的不同样 本值 ; 及基于所述边缘像素确定编码所述像素。 0006 在另一实例中, 一种用于编码包括多个像素的图形数据的设备包含一或多个处理 器, 所述一或多个处理器经配置以 : 确定所述多个像素中的每一像素的一或多个样本值 ; 确定每一像素是否包括边缘像素, 其中所述确定包括对于每一像素识别所述相应像素的所 述一或多个样本值中的不同样本值 ; 及基于所述边缘像素确定编码所述像素。 0007 在另一实例中, 一种用于编码包括多个像素的图形数据的设备包含 : 用于确定所 述多个像素中的每一像素的一或多个样本值的装置 ; 用于确定每一。

19、像素是否包括边缘像素 的装置, 其中所述确定包括对于每一像素识别所述相应像素的所述一或多个样本值中的不 同样本值 ; 及用于基于所述边缘像素确定编码所述像素的装置。 0008 在另一实例中, 一种非暂时性计算机可读媒体, 其具有存储在其上的指令, 所述指 令在被执行时致使一或多个处理器进行以下操作 : 确定所述多个像素中的每一像素的一或 多个样本值 ; 确定每一像素是否包括边缘像素, 其中所述确定包括对于每一像素识别所述 相应像素的所述一或多个样本值中的不同样本值 ; 及基于所述边缘像素确定编码所述像 素。 0009 在附图和下文描述中阐述本发明的一或多个实例的细节。其它特征、 目标和优点 说。

20、 明 书 CN 104272740 A 6 2/13 页 7 将从所述描述和图式以及权利要求书而显而易见。 附图说明 0010 图 1 为说明可经配置以实施本发明的方面的计算装置的框图。 0011 图 2 为说明图形处理管线的概念图。 0012 图 3A 为说明实例 22 像素块的概念图, 其中每一像素具有四个相关联的样本。 0013 图 3B 为说明根据本发明的方面的增量样本值的概念图。 0014 图 3C 为说明根据本发明的方面的增量位置掩码的概念图。 0015 图 4 为说明根据本发明的方面的用于编码图形数据的实例过程的流程图。 0016 图 5 为说明根据本发明的方面的用于编码颜色和 。

21、/ 或深度值的实例过程的流程 图。 0017 图 6 为说明根据本发明的方面的用于解码图形数据的实例过程的流程图。 0018 图 7 为说明根据本发明的方面的用于解码颜色和 / 或深度值的实例过程的流程 图。 具体实施方式 0019 本发明的方面一般来说涉及压缩图形数据, 压缩图形数据可被称作译码图形数 据。举例来说, 图形数据的像素可由一或多个样本 ( 例如, 一或多个颜色样本、 一或多个深 度样本, 及其类似者 ) 构成, 其中每一样本对像素值有贡献。本发明的方面一般来说涉及压 缩与像素相关联的样本值以减少表示像素值所需的数据的量。 本发明的方面还可涉及识别 位于目标边缘处的像素, 所述像。

22、素可具有不同样本值。 在一些实例中, 可在压缩与边缘像素 相关联的样本时相对于基准值产生样本增量。 0020 图 1 为说明可实施本发明的用于译码图形数据的技术的计算装置 30 的框图。计 算装置30的实例包含(但不限于)无线装置、 移动或蜂窝电话(包含所谓的智能电话)、 个 人数字助理 (PDA)、 视频游戏控制台 ( 包含视频显示器、 移动视频游戏装置、 移动视频会议 单元 )、 膝上型计算机、 桌上型计算机、 电视机顶盒、 平板计算装置、 电子图书阅读器、 固定或 移动媒体播放器, 及其类似者。 0021 在图1的实例中, 计算装置30包含 : 中央处理单元(CPU)32, 其具有CPU。

23、存储器34 ; 图形处理单元 (GPU)36, 其具有 GPU 存储器 38 和译码单元 60 ; 显示单元 42 ; 显示缓冲器单 元 44 ; 用户接口单元 46 ; 及存储单元 48。另外, 存储单元 48 可存储具有编译程序 54 的 GPU 驱动程序 50、 GPU 程序 52 和本地编译的 GPU 程序 56。 0022 CPU 32 的实例包含 ( 但不限于 ) 数字信号处理器 (DSP)、 通用微处理器、 专用集成 电路(ASIC)、 现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路。 尽管在图1的 实例中将 CPU 32 和 GPU 36 说明为分离单元, 但在一些。

24、实例中, CPU 32 和 GPU 36 可集成到 单个单元中。CPU 32 可执行一或多个应用程序。应用程序的实例可包含网络浏览器、 电子 邮件应用程序、 电子数据表、 视频游戏、 音频和 / 或视频俘获、 播放或编辑应用程序, 或起始 待经由显示单元 42 呈现的图像数据的产生的其它应用程序。 0023 在图 1 中展示的实例中, CPU 32 包含 CPU 存储器 34。CPU 存储器 34 可表示在执 行机器或目标代码中使用的芯片上存储装置或存储器。 CPU存储器34可各自包括能够存储 说 明 书 CN 104272740 A 7 3/13 页 8 固定数目个数字位的硬件存储器寄存器。。

25、与从存储单元 48 读取值或将值写入到存储单元 48 相比较, CPU 32 可能能够更迅速地从本地 CPU 存储器 34 读取值或将值写入到本地 CPU 存储器 34, 存储单元 48 可为 ( 例如 ) 通过系统总线存取的系统存储器。 0024 GPU 36 表示用于执行图形操作的一或多个专用处理器。也就是说, 例如, GPU 36 可为专用硬件单元, 其具有用于显现图形及执行 GPU 应用程序的固定功能和可编程组件。 GPU 36 还可包含 DSP、 通用微处理器、 ASIC、 FPGA, 或其它等效集成或离散逻辑电路。 0025 GPU 36还包含GPU存储器38, 其可表示在执行机器。

26、或目标代码中使用的芯片上存 储装置或存储器。GPU 存储器 38 可包括能够存储固定数目个数字位的一或多个硬件存储 器寄存器。与从存储单元 48 读取值或将值写入到存储单元 48 相比较, GPU 36 可能能够更 迅速地从本地 GPU 存储器 38 读取值或将值写入到本地 GPU 存储器 38, 存储单元 48 可 ( 例 如 ) 通过系统总线存取。 0026 显示单元 42 表示能够显示视频数据、 图像、 文本或任何其它类型的数据以供查 看器消耗的单元。显示单元 42 可包含液晶显示器 (LCD)、 发光二极管 (LED) 显示器、 有机 LED(OLED)、 主动矩阵 OLED(AMOL。

27、ED) 显示器, 或其类似者。 0027 显示缓冲器单元 44 表示专用于存储供显示单元 42 呈现影像 ( 例如, 照片或视频 帧 ) 的数据的存储器或存储装置。显示缓冲器单元 44 可表示包含多个存储位置的二维缓 冲器。显示缓冲器单元 44 内的存储位置的数目可实质上类似于待显示在显示单元 42 上的 像素的数目。举例来说, 如果显示单元 42 经配置以包含 640480 个像素, 那么显示缓冲器 单元 44 可包含 640480 个存储位置。显示缓冲器单元 44 可存储由 GPU 36 处理的像素中 的每一者的最终像素值。显示单元 42 可从显示缓冲器单元 44 检索最终像素值, 且基于。

28、存 储在显示缓冲器单元 44 中的像素值显示最终图像。 0028 用户接口单元46表示用户可用来交互或以其它方式介接以与计算装置30的其它 单元 ( 例如, CPU 32) 通信的单元。用户接口单元 46 的实例包含 ( 但不限于 ) 轨迹球、 鼠 标、 键盘及其它类型的输入装置。用户接口单元 46 还可为触摸屏且可作为显示单元 42 的 一部分而并入。 0029 存储单元 48 可包括一或多个计算机可读存储媒体。存储单元 48 的实例包含 ( 但不限于 ) : 随机存取存储器 (RAM)、 只读存储器 (ROM)、 电可擦除可编程只读存储器 (EEPROM)、 CD-ROM 或其它光盘存储装。

29、置、 磁盘存储装置或其它磁性存储装置、 快闪存储器, 或可用以存储呈指令或数据结构形式的所要程序代码且可通过计算机或处理器存取的任 何其它媒体。 0030 在一些实例实施方案中, 存储单元 48 可包含致使 CPU 32 和 / 或 GPU 36 执行本发 明中归于 CPU 32 和 GPU 36 的功能的指令。在一些实例中, 存储单元 48 可被视为非暂时性 存储媒体。术语 “非暂时性” 可指示存储媒体不体现于载波或传播信号中。然而, 术语 “非 暂时性” 应被解释为意味着存储单元 48 为不可移动的。作为一个实例, 可将存储单元 48 从 计算装置 30 中去除, 且将其移动到另一装置。作。

30、为另一实例, 可将实质上类似于存储单元 48的存储单元插入到计算装置30中。 在某些实例中, 非暂时性存储媒体可存储可随时间而 改变 ( 例如, 在 RAM 中 ) 的数据。 0031 存储单元 48 存储 GPU 驱动程序 50 和编译程序 54、 GPU 程序 52 及本地编译的 GPU 程序 56。GPU 驱动程序 50 表示提供接口以供存取 GPU 36 的计算机程序或可执行码。CPU 说 明 书 CN 104272740 A 8 4/13 页 9 32 执行 GPU 驱动程序 50 或其部分以与 GPU 36 介接且, 出于此原因, 在图 1 的实例中将 GPU 驱动程序 50 展示。

31、为经标记为 CPU 32 内的 “GPU 驱动程序 50” 的短划线框。由 CPU 32 执行 的程序或其它可执行码 ( 包含 GPU 程序 52) 可存取 GPU 驱动程序 50。 0032 GPU 程序 52 可包含以高级 (HL) 编程语言撰写 ( 例如, 使用应用程序编程接口 (API) 的代码。API 的实例包含开放计算语言 (“OpenCL” )、 开放图形库 (“OpenGL” ) 和 DirectX, 如由 Microsoft 公司开发的。一般来说, API 包含由相关联硬件执行的一组预定 的标准化命令。API 命令允许用户发指令给 GPU 的硬件组件以执行命令而无需用户了解所。

32、 述硬件组件的详情。 0033 GPU程序52可调用或以其它方式包含通过GPU驱动程序50提供的一或多个函数。 CPU 32 一般执行其中嵌有 GPU 程序 52 的程序且, 在遇到 GPU 程序 52 后将 GPU 程序 52 传 递到 GPU 驱动程序 50( 例如, 呈命令流的形式 )。在此上下文中, CPU 32 执行 GPU 驱动程序 50 以处理 GPU 程序 52。也就是说, 例如, GPU 驱动程序 50 可通过将 GPU 程序 52 编译成可 通过 GPU 36 执行的目标或机器代码来处理 GPU 程序 52。在图 1 的实例中将此目标代码展 示为本地编译的 GPU 程序 5。

33、6。 0034 在一些实例中, 编译程序 54 可在执行其中嵌有 GPU 程序 52 的程序期间实时地或 接近实时地操作以编译 GPU 程序 52。举例来说, 编译程序 54 一般表示将根据 HL 编程语言 定义的 HL 指令精简到低级 (LL) 编程语言的 LL 指令的模块。在编译之后, 这些 LL 指令能 够通过特定类型的处理器或其它类型的硬件来执行, 其它类型的硬件例如 FPGA、 ASIC 及其 类似者 ( 包含 ( 例如 )CPU 32 和 GPU 36)。 0035 根据处理器或其它类型的硬件的指令集架构, 在提供较低抽象或较低等级抽象的 意义上, LL 编程语言被视为低级。LL 。

34、语言一般是指汇编语言和 / 或机器语言。汇编语言为 比机器语言稍微高级的 LL 语言, 但一般可在不使用编译程序或其它转译模块的情况下将 汇编语言转换成机器语言。作为一个实例, 机器语言表示定义与通过底层硬件 ( 例如, 处理 器 ) 原生地执行的指令 ( 例如, x86 机器代码 ( 其中 x86 是指由因特尔公司开发的 x86 处 理器的指令集架构 ) 类似 ( 如果不相同的话 ) 的指令的任何语言。 0036 在任何情况下, 编译程序 54 可将根据 HL 编程语言定义的 HL 指令转译成底层硬件 所支持的 LL 指令。编译程序 54 去除与 HL 编程语言 ( 和 API) 相关联的抽。

35、象, 使得根据这 些 HL 编程语言定义的软件能够更直接地通过实际底层硬件来执行。 0037 在图 1 的实例中, 当执行包含 GPU 程序 52 的 HL 代码时, 编译程序 54 可从 CPU 32 接收 GPU 程序 52。编译程序 54 可编译 GPU 程序 52 以产生符合 LL 编程语言的本地编译的 GPU 程序 56。编译程序 54 接着输出包含 LL 指令的本地编译的 GPU 程序 56。 0038 GPU 36 一般接收本地编译的 GPU 程序 56( 如通过经标记为 GPU 36 内的 “本地编 译的 GPU 程序 56” 的短划线框展示 ), 于是, 在一些情况下, GP。

36、U 36 显现图形且将图像的经 显现部分输出到显示缓冲器单元 44。举例来说, GPU 36 可产生待显示在显示单元 42 处的 数个图元。图元可包含以下各者中的一或多者 : 线 ( 包含曲线、 样条线等 )、 点、 圆、 椭圆、 多 边形 ( 其中通常多边形被定义为一或多个三角形的集合 ) 或任何其它二维 (2D) 图元。术 语 “图元” 还可指三维 (3D) 图元, 例如立方体、 圆柱体、 球体、 锥体、 角锥、 环面或其类似者。 一般来说, 术语 “图元” 是指能够通过 GPU 36 显现以用于经由显示单元 42 显示为图像 ( 或 在视频数据的上下文中为帧 ) 的任何基本几何形状或元素。

37、。 说 明 书 CN 104272740 A 9 5/13 页 10 0039 GPU 36可通过应用一或多个模型变换(其还可在状态数据中加以指定)将图元和 图元的其它状态数据(例如, 定义颜色、 纹理、 照明、 摄像机配置或其它方面的状态数据)变 换成所谓的 “世界空间” 。一旦进行了变换, GPU 36 便可对作用中摄像机应用视图变换 ( 再 次地, 其还可在定义摄像机的状态数据中加以指定 ) 以将图元和光的坐标变换到摄像机或 视觉空间中。GPU 36 还可执行顶点着色以鉴于任何作用中光来显现图元的外观。GPU 36 可在上述模型、 世界空间或视点空间中的一或多者中执行顶点着色 ( 但其通。

38、常在世界空间 中执行 )。 0040 一旦图元经着色, GPU 36 便可执行投影以将图像投影到具有极点的单位立方体 中, 作为一个实例, 在 (-1, -1, -1) 和 (1, 1, 1) 处。此单位立方体通常被称作正规化可视空 间。在将模型从视觉空间变换到正规化可视空间之后, GPU 36 可执行截割以去除至少部分 地不会驻留在可视空间内的任何图元。换句话说, GPU 36 可去除不在摄像机的帧内的任何 图元。 GPU 36可接着将图元的坐标从可视空间映射到屏幕空间, 从而有效地将图元的3D坐 标缩减到屏幕的 2D 坐标。 0041 在给出定义图元的经变换及经投影的顶点和其相关联的着色数。

39、据的情况下, GPU 36 可接着将图元光栅化。举例来说, GPU 36 可计算及设置被图元覆盖的屏幕的像素的颜 色。在光栅化期间, GPU 36 可应用与图元相关联的任何纹理 ( 其中纹理可包含状态数据 )。 GPU 36 还可在光栅化期间执行 Z- 缓冲算法 ( 还被称作深度测试 ), 以确定图元和 / 或目标 中的任一者是否被任何其它目标遮挡。Z- 缓冲算法根据图元的深度将图元排序, 使得 GPU 36知道将每一图元绘制到屏幕的次序。 GPU 36将经显现的像素输出到显示缓冲器单元44。 0042 在一些实例中, 发生混叠, 这是因为真实世界的目标具有连续的平滑曲线和线, 而 典型显示器。

40、可经配置以输出光的离散点(即, 像素)。 像素经均匀地染色且始终具有相同形 状, 此情形可导致经显现的图像的线在外观上变为锯齿状。 通过MSAA, 可对单个像素产生多 个样本。可接着组合 ( 例如, 平均化 ) 所述样本以确定最终像素值。 0043 因此, GPU 36 可按比所显示的分辨率高的分辨率显现图像。GPU 36 可接着在显示 之前将图像向下采样到适当大小。 可使结果沿着目标的边缘从一行像素到另一行像素较平 滑地转变。可使用因子 4、 8、 16 或其它值来执行 MSAA。 0044 如本文所描述,“像素” 可指图像中可见的单个片段。 “样本” 可指对像素有贡献的 单个值。 举例来说。

41、, 样本可包含对最终图像中的一个像素有贡献的颜色值(例如, 单个RGBA 值)。 在四样本MSAA模式中, 红色、 绿色、 蓝色、 (RGBA)四个样本可对每一像素有贡献。 在 其它实例中, 样本可包含深度值 ( 例如, z- 值 )。另外,“边缘” 可指图像的一或多个点 ( 例 如, 一或多个像素), 所述点在对点有贡献的样本值之间具有亮度、 颜色或深度不连续性。 举 例来说, 在四样本 MSAA 模式中, 如果所有四个样本不相等, 那么可将对应像素分类为边缘 像素。 0045 “块” 可指 NN 像素群组。 “块高速缓冲存储器” 可指存储一组未经压缩块的 GPU 存储器 ( 例如, 芯片上。

42、存储装置 )。当将块从高速缓冲存储器写入到系统存储器时, 可计算 块编码。当将经压缩块从系统存储器读取到高速缓冲存储器时, 可计算块解码。在一些实 例中, 红蓝 (RB)( 或红绿蓝 (RGB) 写入可去往块高速缓冲存储器, 且 RB 色读取 ( 或 RGB) 可来自块高速缓冲存储器。 0046 如果像素被单个图元覆盖, 那么所述像素内部的所有样本 ( 例如, MSAA 样本 ) 可 说 明 书 CN 104272740 A 10 6/13 页 11 共享相同颜色和 / 或深度信息。因此, 可能存在样本等级的 4x 重复信息。还有可能来自多 个图元的四个样本共享相同颜色和 / 或深度数据。举例。

43、来说, 在相对较小的块 ( 例如, 44 像素块 ) 内部, 像素可具有类似颜色和 / 或深度。本发明的方面涉及压缩此类颜色和深度 数据。 0047 显示缓冲器单元 44 可临时存储经显现的图像的经显现的像素, 直到显现整个图 像为止。在此上下文中, 显示缓冲器单元 44 可被视为图像帧缓冲器。显示缓冲器单元 44 可接着发射经显现的图像以显示在显示单元 42 上。显示缓冲器单元 44 可包含用于多种数 据的存储装置, 多种数据包含颜色数据 ( 例如, 红色、 绿色、 蓝色、 (RGBA) 或任何其它颜色 空间中的数据 ) 和深度数据 ( 例如, 指示相对于其它图元的像素的像素深度的 z- 值。

44、 )。 0048 在任何情况下, 如上文所提到的, 当显现像素数据时, GPU 36 可从 GPU 36 外部的 存储器 ( 例如, 显示缓冲器单元 44 和 / 或存储单元 48, 一般被称作 “系统存储器” ) 读取数 据及将数据写入到 GPU 36 外部的存储器。在显现单个图像期间需要在系统存储器与 GPU 36 之间传送的数据的量可为相当大的且可限制显现性能。举例来说, 关于模式显现 ( 立即 模式和 / 或保留模式显现 ), GPU 36 可多次显现最终图像的单个像素。当 GPU 36 使用多样 本抗混叠 (MSAA) 技术时, 可进一步拉紧本地 GPU 存储器 38 与系统存储器之。

45、间的带宽 ( 归 因于与MSAA相关联的额外样本)。 因此, 当使用绘制调用将像素直接显现给系统存储器时, 足够的存储器带宽可能无法用以在系统存储器与本地 GPU 存储器 38 之间传送颜色和深度 数据。 0049 另外, 典型视频和 / 或图像压缩算法无法进行优化以执行 3D 颜色缓冲显现的压 缩, 这是因为存储器存取模式可为随机的, 单元存取大小可能较小, 且用于图形显现的压缩 可能需要为无损的。另外, 典型视频和 / 或图像压缩技术无法适用于计算机产生的图形, 这 是因为 MSAA 的概念一般不适用于视频 / 图像域。 0050 本发明的方面一般涉及压缩图形数据, 所述压缩可减少需要在G。

46、PU存储器38与系 统存储器 ( 即, 显示单元缓冲器 44 和 / 或存储单元 48) 之间传送的数据的量。举例来说, 根据本发明的方面, GPU 36 可压缩与像素相关联的样本值以减少表示像素值所需的数据的 量。 0051 在图 1 中所展示的实例中, 译码单元 60 可负责译码图形数据。举例来说, 当将图 形数据作为应译码数据 62 写入到显示单元缓冲器 44 和 / 或存储单元 48 时, 译码单元 60 可编码经显现的图形数据。同样地, 当从显示单元缓冲器 44 和 / 或存储单元 48 读取经译 码数据 62 时, 译码单元 60 可解码经译码数据 62。虽然在图 1 的实例中将译。

47、码单元 60 展示 为包含在 GPU 36 中, 但在其它实例中, 译码单元 60 可并入到计算装置 30 的任何其它组件 中。 0052 在一些实例中, 译码单元 60 可以不同于非边缘像素的方式译码 ( 压缩 ) 边缘像 素。举例来说, 如上文所提到的, 用于非边缘像素的样本可共享相同颜色、 深度和 / 或其它 样本。因此, GPU 36 可用相同的单个样本值表示所有样本。然而, 如上文所提到的, 边缘像 素并不具有相等的样本值。选择用于所有样本的代表性样本值可导致有损压缩。 0053 根据本发明的方面, 译码单元 60 可通过组合用于像素的所有样本值来译码非边 缘像素。举例来说, 使用四。

48、样本 MSAA 方案采样的非边缘像素可具有四个相等的颜色样本。 因此, 译码单元 60 可将样本组合成单个样本值。 说 明 书 CN 104272740 A 11 7/13 页 12 0054 译码单元60可通过识别与具有不同值(例如, 不等于与像素的其它样本相关联的 其它样本的至少一个颜色、 亮度和 / 或深度值 ) 的像素相关联的样本来删除边缘像素。译 码单元 60 可从光栅器或显现后端 ( 如下文图 2 中所展示 ) 检测边缘像素。在检测到边缘 像素之后, 译码单元 60 可确定用于边缘像素的基准值且可仅存储用于样本的不同于基准 值的位, 所述操作可被称作基于位平面的压缩。以此方式, 译。

49、码单元 60 可保留样本的所有 信息, 同时仍压缩表示像素所需的数据的量。 0055 出于解释的目的, 假设 : 译码单元 60 经配置以在将 44 像素块从 GPU 存储器 38 写入到显示单元缓冲器 44 和 / 或存储单元 38 时译码此类块。还假设 : 使用四样本 MSAA 方 案来采样每一像素。在检测到边缘像素之后, 译码单元 60 可产生用于块的识别边缘像素的 位置的边缘掩码。举例来说, 译码单元 60 可产生识别 44 块中的边缘像素的位置的 16 位 边缘掩码 ( 例如, 1 位每像素, 其中 0 表示非边缘像素且 1 表示边缘像素, 或反过来也是一 样 )。 0056 当译码颜色数据时, 译码单元 60 还可确定块的基准颜色。在其中使用 RGBA8888 格式用于颜色样本的实例中, 可使用一个 32 位值来表示基准颜色。译码单元 60 可通过组 合颜色样本来确定块的基准颜色。举例来说, 译码单元 60 可执行 “与” 运算以组合样本, 或 确定算术平均值、 平均数、 中值或其类似者。 0057 译码单元 60 可接。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1