《颜色缓冲和深度缓冲压缩.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 可接。