CN107004280A - 用于高效的纹理压缩的方法和装置 - Google Patents
用于高效的纹理压缩的方法和装置 Download PDFInfo
- Publication number
- CN107004280A CN107004280A CN201480079739.4A CN201480079739A CN107004280A CN 107004280 A CN107004280 A CN 107004280A CN 201480079739 A CN201480079739 A CN 201480079739A CN 107004280 A CN107004280 A CN 107004280A
- Authority
- CN
- China
- Prior art keywords
- texture
- texture block
- texel
- processor
- rbf
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/40—Analysis of texture
- G06T7/49—Analysis of texture based on structural texture description, e.g. using primitives or placement rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/40—Analysis of texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/004—Predictors, e.g. intraframe, interframe coding
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
描述了用于纹理压缩的装置和方法。例如,方法的一个实施例包括:确定多个纹理块纹素中的每一个纹理块纹素与多个点中的每一个点之间的距离;确定对所述纹理块采样的纹素颜色值的集合;以及使用所述多个纹理块纹素中的每一个纹理块纹素与所述多个点之间的每一个点之间的所述距离以及对所述纹理块采样的所述纹理颜色值的集合来生成用于压缩所述纹理块的近似系数的集合。
Description
背景
技术领域
本发明总体涉及计算机处理器领域。更具体地,本发明涉及用于高效的纹理压缩的装置和方法。
相关技术描述
纹理映射是在图形流水线中实现以将纹理施加至形状或多边形的表面的公知技术。纹理数据典型地存储在N x N个“纹素(texel)”(有时也称为“纹理元素”或“纹理像素”)的矩阵中。由此,以与由像素数组表示图像的方式相同的方式,由纹素数组表示纹理。当执行纹理映射时,图形处理单元(GPU)内的逻辑将纹素映射至输出图像中的适当像素。
实现纹素压缩技术以减少由纹理数据消耗的存储器的量。当前的纹理压缩方法不将纹理图像作为纹理图像坐标的函数来对待,所述纹理图像的坐标能以数值方式近似。相反,这些技术使用算法方法来标识占主导的颜色并对块纹素之间的颜色梯度译码。压缩通常是算法密集型的,并且带外地(out of band)和/或离线地(off-line)应用。解压缩使用多个步骤,并且经常涉及相邻纹素之间的时间和/或空间上的依赖关系。这些因素驱动了增加的存储器/高速缓存尺寸和带宽要求,并限制了对于大量并行实现的适用性。
附图说明
结合以下附图,从以下具体实施方式中可获得对本发明更好的理解,其中:
图1是具有处理器的计算机***的实施例的框图,所述处理器具有一个或多个处理器核以及图形处理器;
图2是处理器的一个实施例的框图,所述处理器具有一个或多个处理器核、集成存储器控制器以及集成图形处理器;
图3是图形处理器的一个实施例的框图,所述图形处理器可以是分立的图形处理单元,或可以是与多个处理核集成的图形处理器;
图4是用于图形处理器的图形处理引擎的实施例的框图;
图5是图形处理器的另一实施例的框图;
图6是包括处理元件的阵列的线程执行逻辑的框图;
图7示出根据实施例的图形处理器执行单元指令格式;
图8是图形处理器的另一实施例的框图,所述图形处理器包括图形流水线、媒体流水线、显示引擎、线程执行逻辑以及渲染输出流水线。
图9A是示出根据实施例的图形处理器命令格式的框图;
图9B是示出根据实施例的图形处理器命令序列的框图;
图10示出根据实施例的用于数据处理***的示例性图形软件架构;
图11示出用于纹理压缩和解压缩的架构的一个实施例;
图12A-B示出在一个实施例中用于执行压缩的示例性中心点放置;
图12C示出在一个实施例中的块尺寸、中心点与压缩率之间的关系;
图13示出在一个实施例中的利用解压缩矩阵、系数向量和纹素块来执行的操作;以及
图14示出根据本发明的一个实施例的方法。
具体实施方式
在下面的描述中,为了进行解释,阐述了众多具体细节以便提供对以下描述的本发明的多个实施例的透彻理解。然而,对本领域技术人员显而易见的是,可以在没有这些具体细节中的一些细节的情况下实施本发明的各实施例。在其他实例中,公知的结构和设备以框图形式示出,以避免使本发明的多个实施例的基本原理模糊。
示例性图形处理器架构和数据类型
概述——图1-3
图1是根据实施例的数据处理***100的框图。数据处理***100包括一个或多个处理器102以及一个或多个图形处理器108,并且可以是单处理器台式***、多核工作站***或具有大量处理器102或处理器核107的服务器***。在一个实施例中,数据处理***100是在移动设备、手持式设备或嵌入式设备中使用的片上***集成电路(SOC)。
数据处理***100的实施例可包括或可并入以下各项内:基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台)。在一个实施例中,数据处理***100是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理***100也可包括可穿戴设备,可与可穿戴设备耦合或可集成在可穿戴设备内,所述可穿戴设备诸如,智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一个实施例中,数据处理***100是电视机或机顶盒设备,所述电视机或机顶盒设备具有一个或多个处理器102以及由一个或多个图形处理器108生成的图形界面。
数据处理***100的实施例可包括或可并入以下各项内:基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台)。在一个实施例中,数据处理***100是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理***100也可包括可穿戴设备,可与可穿戴设备耦合或可集成在可穿戴设备内,所述可穿戴设备诸如,智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一个实施例中,数据处理***100是电视机或机顶盒设备,所述电视机或机顶盒设备具有一个或多个处理器102以及由一个或多个图形处理器108生成的图形界面。
一个或多个处理器102各自都包括一个或多个处理器核107,所述一个或多个处理器核107用于处理指令,所述指令当被执行时,执行用于***和用户软件的操作。在一个实施例中,一个或多个处理器核107中的每一个都配置成处理特定的指令集109。指令集109可促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经由超长指令字(VLIW)的计算。多个处理器核107各自都可处理不同的指令集109,不同的指令集109可包括用于促进对其他指令集的仿真的指令。处理器核107也可包括其他处理设备,诸如,数字信号处理器(DSP)。
在一个实施例中,处理器102包括高速缓存存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。在一个实施例中,高速缓存存储器在处理器102的各种组件之间共享。在一个实施例中,处理器102也使用利用高速缓存一致性技术而可在处理器核107之间共享的外部高速缓存(例如,第3级(L3)高速缓存或末级高速缓存(LLC))(未示出)。寄存器组106附加地包括在处理器102中,处理器102可包括用于存储不同类型数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可专用于处理器102的设计。
处理器102耦合至处理器总线110以在处理器102与***100中的其他组件之间传输数据信号。***100使用示例性“中枢”***架构,所述示例性“中枢”***架构包括存储器控制器中枢116和输入输出(I/O)控制器中枢130。存储器控制器中枢116促进存储器设备与***100的其他组件之间的通信,而I/O控制器中枢(ICH)130提供经由本地I/O总线至I/O设备的连接。
存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或具有适当的性能以充当进程存储器的某个其他存储器设备。存储器120可存储用于在处理器102执行进程时使用的数据122和指令121。存储器控制器中枢116也与任选的外部图形处理器112耦合,所述任选的外部图形处理器112可与处理器120中的一个或多个图形处理器108通信以执行图形和媒体操作。
ICH 130使***设备能够经由高速I/O总线而连接至存储器120和处理器102。IO***设备包括音频控制器146、固件接口128、无线收发机126(例如,Wi-Fi、蓝牙)、数据存储设备124(例如,硬盘驱动器、闪存等)以及用于将旧式(legacy)(例如,个人***2(PS/2))设备耦合至***的旧式I/O控制器。一个或多个通用串行总线(USB)控制器142连接输入设备(诸如,键盘和鼠标144的组合)。网络控制器134也可耦合至ICH 130。在一个实施例中,高性能网络控制器(未示出)耦合至处理器总线110。
图2是处理器200的实施例的框图,所述处理器具有一个或多个处理器核202A-N,集成存储器控制器214以及集成图形处理器208。处理器200可包括附加的核,所述附加的核多至由虚线框标识的附加核202N并包括由虚线框标识的附加核202N。核202A-N中的每一个都包括一个或多个内部高速缓存单元204A-N。在一个实施例中,每一个核都具有对一个或多个共享高速缓存单元206的访问权。
内部高速缓存单元204A-N和共享高速缓存单元206表示处理器200内的高速缓存存储器层次结构。高速缓存存储器层次结构可包括每一个核内的至少一个层级的指令和数据高速缓存以及一个或多个层级的共享的中间级高速缓存(诸如,第2级(L2)、第3级(L3)、第4级(L4)或其他层级高速缓存),其中,在外部存储器之前的最高层级的高速缓存被分类为末级高速缓存(LLC)。在一个实施例中,高速缓存一致性逻辑维持各种高速缓存单元206与204A-N之间的一致性。
处理器200也可包括一组一个或多个总线控制器单元126和***代理210。一个或多个总线控制器单元管理一组***总线(诸如,一个或多个***组件互连总线(例如,PCI、PCI Express))。***代理210提供用于各种处理器组件的管理功能。在一个实施例中,***代理210包括用于管理对各种外部存储器设备(未示出)的访问的一个或多个集成存储器控制器214。
在一些实施例中,核202A-N中的一个或多个包括对同时的多线程操作的支持。在此类实施例中,***代理210包括用于在多线程处理期间协调并操作核202A-N的组件。***代理210可附加地包括功率控制单元(PCU),所述PCU包括用于调节核202A-N和图形核208的功率状态的逻辑和组件。
处理器200附加地包括用于执行图形处理操作的图形处理器208。在一个实施例中,图形处理器208与一组共享高速缓存单元206以及***代理单元210耦合,***代理单元210包括一个或多个集成存储器控制器214。在一个实施例中,显示控制器211与图形处理器208耦合,以将图形处理器输出驱动至一个或多个所耦合的设备。显示控制器211可以是经由至少一个互连而与图形处理器耦合的分开的模块,或者可以集成在图形处理器208或***代理210内。
在一个实施例中,使用基于环的互连单元212来耦合处理器200的多个内部组件,然而可使用替代的互连单元,诸如,点对点互连、交换互连或其他技术(包括本领域中公知的技术)。在一个实施例中,图形处理器208经由I/O链路213来与环形互连212耦合。
示例性I/O链路213表示各种各样的I/O互连中的至少一者,所述I/O互连包括促进各种处理器组件与高性能嵌入式存储器模块218(诸如,eDRAM)模块之间的通信的封装上I/O互连。在一个实施例中,核202-N和图形处理器208中的每一者都将嵌入式存储器模块218用作共享的末级高速缓存。
在一个实施例中,核202A-N是执行相同的指令集架构的同构核。在另一实施例中,核202A-N就指令集架构(ISA)方面而言是异构的,其中,核202A-N中的一个或多个执行第一指令集,而其他核中的至少一个执行第一指令集的子集或不同的指令集。
处理器200可以是一个或多个基板的部分,或可使用各种工艺技术中的任一技术而实现在一个或多个基板上,所述工艺技术例如,互补式金属-氧化物半导体(CMOS)、双极结型/互补式金属-氧化物半导体(CMOS)(BiCMOS)或N型金属-氧化物-半导体逻辑(NMOS)。附加地,处理器200可实现在一个或多个芯片上,或可实现为片上***(SOC)集成电路,所述SOC集成电路除其他组件之外还具有所示组件。
图3是图形处理器300的一个实施例的框图,所述图形处理器300可以是分立的图形处理单元,或可以是与多个处理核集成的图形处理器。在一个实施例中,经由至图形处理器上的寄存器的存储器映射的I/O接口,并且经由置入处理器存储器中的命令来与图形处理器通信。图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是至以下各项的接口:本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存和/或***存储器。
图形处理器300也包括用于将显示输出数据驱动到显示设备320的显示控制器302。显示控制器302包括用于显示的一个或多个上层(overlay)平面以及视频或用户接口元件的多个层的综合的硬件。在一个实施例中,图形处理器300包括用于将媒体编码至一个或多个媒体编码格式、从一个或多个媒体编码格式解码或在一个或多个媒体编码格式之间转码的视频编解码引擎306,所述媒体编码格式包括但不限于:移动图片专家组(MPEG)格式(诸如,MPEG-2)、高级视频译码(AVC)格式(诸如,H.264/MPEG-4AVC)以及电影电视工程师协会(SMPTE)421M/VC-1,以及联合图像专家组(JPEG)格式(诸如,JPEG和运动JPEG(MJPEG)格式)。
在一个实施例中,图形处理器300包括用于执行二维(2D)光栅化(rasterizer)操作(包括例如位边界块转移)的块图像转移(BLIT)引擎304。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个组件来执行2D图形操作。图形处理引擎310是用于执行图形操作(包括三维(3D)图形操作和媒体操作)的计算引擎。
GPE 310包括用于执行3D操作的3D流水线312,所述3D操作诸如,使用作用于3D基元形状(例如,矩形、三角形等)的处理函数来渲染三维图像和场景。3D流水线312包括可编程和固定功能元件,所述可编程和固定功能元件执行元件内的各种任务和/或繁衍(spawn)执行线程至3D/媒体子***315。当3D流水线312可用于执行媒体操作时,GPE 310的实施例也包括专门用于执行媒体操作(诸如,视频后处理和图像增强)的媒体流水线316。
在一个实施例中,媒体流水线316包括用于执行一个或多个专业媒体操作的固定功能或可编程逻辑单元,所述专业媒体操作诸如,取代或代表视频编解码引擎306的视频解码加速、视频去隔行(de-interlacing)以及视频编码加速。在一个实施例中,媒体流水线316附加地包括用于繁衍供在3D/媒体子***315上执行的线程的线程繁衍单元。所繁衍的线程在3D/媒体子***中所包括的一个或多个图形执行单元上执行用于媒体操作的计算。
3D/媒体子***315包括用于执行由3D流水线312和媒体流水线316繁衍的线程的逻辑。在一个实施例中,流水线将线程执行请求发送至3D媒体子***315,所述3D媒体子***315包括用于仲裁各种请求并将各种请求分派至可用的线程执行资源的线程分派逻辑。执行资源包括用于处理3D和媒体线程的图形执行单元的阵列。在一个实施例中,3D/媒体子***315包括用于线程指令和数据的一个或多个内部高速缓存。在一个实施例中,子***也包括用于在多个线程之间共享数据并用于存储输出数据的共享存储器,所述共享存储器包括寄存器和可寻址存储器。
3D/媒体处理——图4
图4是用于图形处理器的图形处理引擎410的实施例的框图。在一个实施例中,图形处理引擎(GPE)410是图3中示出的GPE 310的某个版本。GPE 410包括3D流水线412和媒体流水线416,其中的每一者可以与图3的3D流水线312和媒体流水线316的实现方式不同或类似。
在一个实施例中,GPE 410与命令流送器403耦合,所述命令流送器403将命令流提供至GPE 3D和媒体流水线412、416。命令流送器403耦合至存储器,所述存储器可以是***存储器、或者内部高速缓存存储器和共享高速缓存存储器中的一个或多个。命令流送器403从存储器接收命令,并且将这些命令发送至3D流水线412和/或媒体流水线416。3D和媒体流水线通过以下方式来处理命令:通过经由相应流水线内的逻辑来执行操作;或通过将一个或多个执行线程分派至执行单元阵列414。在一个实施例中,执行单元阵列414是可缩放的,使得此阵列包括基于GPE 410的目标功率和性能等级的可变数量的执行单元。
采样引擎430与存储器(例如,高速缓存存储器或***存储器)和执行单元阵列414耦合。在一个实施例中,采样引擎430提供用于可缩放执行单元阵列414的存储器访问机制,所述存储器访问机制允许执行阵列414从存储器读取图形和媒体数据。在一个实施例中,采样引擎430包括用于为媒体执行专业图像采样操作的逻辑。
采样引擎430中的专业媒体采样逻辑包括去噪/去隔行模块432、运动估计模块432以及图像缩放和过滤模块436。去噪/去隔行模块432包括用于对经解码的视频数据执行去噪或去隔行中的一者或多者的逻辑。去隔行逻辑将隔行的(interlaced)视频内容的交替场组合为单个视频帧。去噪逻辑降低或去除来自视频和图像数据的数据噪声。在一个实施例中,去噪逻辑和去隔行逻辑是运动自适应的,并且基于在视频数据中检测到的运动量来使用空间或时间上的过滤。在一个实施例中,去噪/去隔行模块432包括专用运动检测逻辑(例如,在运动估计引擎434内)。
运动估计引擎434通过对视频数据执行视频加速功能(诸如,运动向量估计和预测)来提供对视频操作的硬件加速。运动估计引擎确定运动向量,所述运动向量描述图像数据在相继的视频帧之间的变换。在一个实施例中,图形处理器媒体编解码器使用视频运动估计引擎以在宏块层级上执行对视频的操作,所述在宏块层级上对视频的操作原本可能是计算密集型的以使用通用处理器来执行。在一个实施例中,运动估计引擎434一般可用于图形处理器组件以辅助视频解码和处理功能,所述视频解码和处理功能对视频数据内的运动的方向和幅度是敏感的或自适应于视频数据内的运动的方向或幅度。
图像缩放和过滤模块436执行图像处理操作以增强所生成的图像和视频的视觉质量。在一个实施例中,缩放和过滤模块436在将数据提供至执行单元阵列414之前的采样操作期间处理图像和视频数据。
在一个实施例中,图形处理引擎410包括数据端口444,所述数据端口444为图形子***提供访问存储器的附加机制。数据端口444促进用于操作的存储器访问,所述操作包括渲染目标写入、恒定缓冲器读取、抓取存储器空间读取/写入以及媒体表面访问。在一个实施例中,数据端口444包括用于对存储器的访问进行高速缓存的高速缓存存储器空间。高速缓存存储器可以是单个数据高速缓存,或者可分离为用于经由数据端口来访问存储器的多个子***的多个高速缓存(例如,渲染缓冲器高速缓存、恒定缓冲器高速缓存,等等)。在一个实施例中,在执行单元阵列414中的执行单元上执行的线程通过经由数据分配互连交换消息来与数据端口通信,所述数据分配互连耦合图形处理引擎410的子***中的每一个。
执行单元——图5-7
图5是图形处理器的另一实施例的框图。在一个实施例中,图形处理器包括环形互连502、流水线前端504、媒体引擎537和图形核580A-N。环形互连502将图形处理器耦合至其他处理单元(包括其他图形处理器或一个或多个通用处理器核)。在一个实施例中,图形处理器是集成在多核处理***内的许多处理器中的一个。
图形处理器经由环形互连502接收批量命令。传入的命令由流水线前端504中的命令流送器503解释。图形处理器包括用于经由(多个)图形核580A-N来执行3D几何处理和媒体处理的可缩放执行逻辑。对于3D几何处理命令,命令流送器503将命令供应至几何流水线536。对于至少一些媒体处理命令,命令流送器503将命令供应至视频前端534,所述视频前端534与媒体引擎537耦合。媒体引擎537包括用于视频和图像后处理的视频质量引擎(VQE)530以及用于提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX)533引擎。几何流水线536和媒体引擎537各自都生成用于由至少一个图形核580A提供的线程执行资源的执行线程。
图形处理器包括可缩放线程执行资源,所述可缩放线程执行单元特征为模块化核580A-N(有时称为核片(core slice)),每一个模块化核都具有多个子核550A-N、560A-N(有时称为核子片(core sub-slice))。图形处理器可具有任何数量的图形核580A至580N。在一个实施例中,图形处理器包括图形核580A,所述图形核580A至少具有第一子核550A和第二核子核560A。在另一实施例中,图形处理器是具有单个子核(例如,550A)的低功率处理器。在一个实施例中,图形处理器包括多个图形核580A-N,每一个图形核都包括第一子核的集合550A-N以及第二子核的集合560A-N。第一子核的集合550A-N中的每一个子核都至少包括执行单元552A-N和媒体/纹理采样器554A-N的第一集合。第二子核的集合560A-N中的每一个子核都至少包括执行单元562A-N和采样器564A-N的第二集合。在一个实施例中,每一个子核550A-N、560A-N都共享一组共享资源570A-N。在一个实施例中,共享资源包括共享高速缓存存储器和像素操作逻辑。其他共享资源也可包括在图形处理器的各种实施例中。
图6示出线程执行逻辑600,所述线程执行逻辑600包括在图形处理引擎的一个实施例中采用的处理元件的阵列。在一个实施例中,线程执行逻辑600包括像素着色器602、线程分派器604、指令高速缓存606、包括多个执行单元608A-N的可缩放执行单元阵列、采样器610、数据高速缓存612和数据端口614。在一个实施例中,所包括的组件经由互连结构被互连,所述互连结构链接至组件中的每一个组件。线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样器610和执行单元阵列608A-N中的一者或多者而至存储器(诸如,***存储器或高速缓存存储器)的一个或多个连接。在一个实施例中,每一个执行单元(例如,608A)是能够为每一个线程并行地执行多个同时的线程并处理多个数据元素的单独的向量处理器。执行单元阵列608A-N包括任何数量的单独执行单元。
在一个实施例中,执行单元阵列608A-N主要用于执行“着色器”程序。在一个实施例中,阵列608A-N中的执行单元执行包括对许多标准的3D图形着色器指令的原生支持的指令集,使得以最少的转换来执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、碎片着色器)和通用处理(例如,计算和媒体着色器)。
执行单元阵列608A-N中的每一个执行单元对数据元素的数组操作。数据元素的数量是“执行尺寸”或用于指令的通道数量。执行通道是用于数据元素访问、掩码和指令内的流控制的执行的逻辑单元。通道的数量可独立于用于特定的图形处理器的物理ALU或FPU的数量。执行单元608A-N支持整数和浮点数据类型。
执行单元指令集包括单指令多数据(SIMD)指令。各种数据元素可作为紧缩数据类型被存储在寄存器中,并且执行单元将基于元素的数据尺寸来处理各种元素。例如,当对256位宽的向量操作时,向量的256个位被存储在寄存器中,并且执行单元将此向量操作为四个单独的64位紧缩数据元素(四字(QW)尺寸的数据元素)、八个单独的32位紧缩数据元素(双字(DW)尺寸的数据元素)、十六个单独的16位紧缩数据元素(字(W)尺寸的数据元素)、或三十二个单独的8位数据元素(字节(B)尺寸的数据元素)。然而,不同的向量宽度和寄存器尺寸是可能的。
一个或多个内部指令高速缓存(例如,606)被包括在线程执行逻辑600中以对用于执行单元的线程指令进行高速缓存。在一个实施例中,一个或多个数据高速缓存(例如,612)被包括以对线程执行期间的线程数据进行高速缓存。采样器610被包括,以便为3D操作提供纹理采样,并为媒体操作提供媒体采样。在一个实施例中,采样器610包括专用纹理或媒体采样功能,用于在将所采样的数据提供至执行单元之前的采样过程期间处理纹理或媒体数据。
在执行期间,图形和媒体流水线经由线程繁衍和分派逻辑而将线程发起请求发送至线程执行逻辑600。线程执行逻辑600包括本地线程分派器604,所述本地线程分派器604仲裁来自图形和媒体流水线的线程发起请求,并且在一个或多个执行单元608A-N上实例化所请求的线程。例如,几何流水线(例如,图5的536)将顶点处理、曲面细分(tessellation)或集合处理线程分派至线程执行逻辑600。线程分派器604也可处理来自执行着色器程序的运行时线程繁衍请求。
一旦一组几何对象已被处理并光栅化为像素数据,就调用像素着色器602,以便进一步计算输出信息并使结果被写入输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器等)。在一个实施例中,像素着色器602计算将跨光栅化的对象而***值的各种顶点属性的值。随后,像素着色器602执行API供应的像素着色器程序。为了执行像素着色器程序,像素着色器602经由线程分派器604而将线程分派至执行单元(例如,608)。像素着色器602使用采样器610中的纹理采样逻辑来访问存储在存储器中的纹理映射中的纹理数据。对纹理数据和输入几何数据的算术操作计算用于每一个几何碎片的像素颜色数据,或丢弃一个或多个像素而不进行进一步处理。
在一个实施例中,数据端口614提供存储器访问机制,以供线程执行逻辑600将经处理的数据输出到存储器,从而在图形处理器输出流水线上进行处理。在一个实施例中,数据端口614包括或耦合至一个或多个高速缓存存储器(例如,数据高速缓存612),所述高速缓存存储器用于对用于经由数据端口进行的存储器访问的数据进行高速缓存。
图7是示出根据实施例的图形处理器执行单元指令格式的框图。在一个实施例中,图形处理器执行单元支持具有按照多种格式的指令的指令集。实线框示出一般被包括在执行单元指令中的组件,而虚线框包括任选的且仅被包括在指令的子集中的组件。所述和所示的指令是宏指令,体现在它们是供应至执行单元的指令,这与源自一旦指令经处理就进行的指令解码的微操作相对照。
在一个实施例中,图形处理器执行单元原生地支持按照128位格式710的指令。基于所选择的指令、指令选项或操作数的数量,64位压缩的指令格式730可用于一些指令。原生的128位格式710提供对所有指令选项的访问,而在64位格式730中,一些选项和操作是受限的。在64位格式730中可用的原生指令随实施例不同而变化。在一个实施例中,使用索引字段713中的索引集合来部分地压缩指令。执行单元硬件基于索引值来引用压缩表的集合,并且使用压缩表输出来重构按照128位格式710的原生指令。
对于每一种格式,指令操作码712定义执行单元将执行的操作。执行单元跨每一个操作数的多个数据元素并行地执行每一个指令。例如,响应于加法指令,执行单元跨表示纹理元素或图片元素的每一个颜色通道执行同时的加法操作。默认地,执行单元跨操作数的所有数据通道执行每一条指令。指令控制字段712允许对某些执行选项(诸如,通道选择(例如,预测)和数据通道顺序(例如,拌和(swizzle)))的控制。对于128位指令710,执行尺寸字段716限制将被并行地执行的数据通道的数量。执行尺寸字段716不可用于64位紧凑的指令格式730。
一些执行单元指令具有多达三个操作数,这三个操作数包括两个源操作数scr0722、scr1 722以及一个目的地718。在一个实施例中,执行单元支持双目的地指令,其中目的地中的一个是隐含的。数据操纵指令可具有第三源操作数(例如,SRC2 724),其中,指令操作码JJ12确定源操作数的数量。指令的最后一个源操作数可以是利用指令传递的立即数(例如,硬编码的)值。
在一个实施例中,基于操作码位字段对指令分组以简化操作码解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的类型。示出的精确的操作码分组是示例性的。在一个实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,mov,cmp)。移动和逻辑组742共享五个最高有效位(MSB),其中,移动指令是0000xxxxb(例如,0x0x)形式的,并且逻辑指令是0001xxxxb(例如,0x01)形式的。流控制指令组744(例如,call,jmp)包括0010xxxxb(例如,0x20)形式的指令。混杂的指令组746包括指令的拌和,包括0011xxxxb(e.g.,0x30)形式的同步指令(例如,wait,send)。并行的数学指令组748包括0100xxxxb(e.g.,0x40)形式的逐成分的算术指令(例如,add,mul)。并行的数学组748跨数据通道并行地执行算术操作。向量数学组750包括0101xxxxb(e.g.,0x50)形式的算术指令(例如,dp4)。向量数学组对向量操作数执行算术(诸如,点积计算)。
图形流水线——图8
图8是图形处理器的另一实施例的框图,所述图形处理器包括图形流水线820、媒体流水线830、显示引擎840、线程执行单元850以及渲染输出流水线870。在一个实施例中,图形处理器是包括一个或多个通用处理核的多核处理***内的图形处理器。图形处理器通过对一个或多个控制寄存器(未示出)的寄存器写入或经由通过环形互连802而发布至图形处理器的命令而受控。环形互连820将图形处理器耦合至其他处理组件(诸如,其他图形处理器或通用处理器)。由命令流送器803解释来自环形互连的命令,所述命令流送器803将指令供应至图形流水线820或媒体流水线830的各个组件。
命令流送器803指导顶点取出器805组件的操作,所述顶点取出器805从存储器读取顶点数据,并且执行由命令流送器803提供的顶点处理命令。顶点取出器805将顶点数据提供给顶点着色器807,所述顶点着色器807对每一个顶点执行坐标空间变换和照明操作。顶点取出器805和顶点着色器通过经由线程分派器831将执行线程分派至执行单元852A、852B来执行顶点处理指令。
在一个实施例中,执行单元852A、852B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。执行单元852A、852B具有附连的L1高速缓存851,所述附连的L1高速缓存专用于每一个阵列或在多个阵列之间被共享。高速缓存可配置为数据高速缓存、指令高速缓存、或经分区以在不同的分区中包含数据和指令的单个高速缓存。
在一个实施例中,图形流水线820包括用于执行硬件加速的对3D对象的曲面细分的曲面细分组件。可编程壳体(hull)着色器811配置曲面细分操作。可编程域着色器817提供对曲面细分输出的后端评估。曲面细分器813在壳体着色器811的指示下操作,并且包含专用逻辑,所述专用逻辑用于基于作为输入而被提供至图形流水线820的粗糙的几何模型来生成精细的几何对象的集合。如果不使用曲面细分,则可绕过曲面细分组件811、813、817。
可由几何着色器819经由分派至执行单元852A、852B的一个或多个线程来处理完整的几何对象,或完整的几何对象可直接继续到裁剪器829。几何着色器对整个几何对象操作,而不是像在图形流水线的先前的级中那样对顶点或顶点微片处理。如果禁用曲面细分,则几何着色器819从顶点着色器807接收输入。几何着色器819是可由几何着色器程序编程的,以便在禁用曲面细分单元时执行几何曲面细分。
在光栅化之前,由裁剪器829处理顶点数据,所述裁剪器829是固定功能裁剪器或具有裁剪和几何着色器功能的可编程裁剪器。在一个实施例中,渲染输出流水线870中的光栅化器873分派像素着色器以将几何对象转换为它们各自的像素表示。在一个实施例中,像素着色器逻辑被包括在线程执行逻辑850中。
图形引擎具有允许数据和消息在图形引擎的主要组件之间传送的互连总线、互连结构或某个其他互连机制。在一个实施例中,执行单元852A、852B和相关联的(多个)高速缓存851、纹理和媒体采样器854、以及纹理/采样器858高速缓存858经由数据端口856互连,以执行与图形引擎的渲染输出流水线组件的存储器访问和通信。在一个实施例中,采样器854、高速缓存851、858和执行单元852A、852B各自都具有分开的存储器访问路径。
在一个实施例中,渲染输出流水线870包含将基于顶点的对象转换为它们相关联的基于像素的表示的光栅化器和深度测试组件873。在一个实施例中,光栅化逻辑包括用于执行固定功能三角和直线光栅化的窗口器/掩码器单元。在一个实施例中,相关联的渲染和深度缓冲器高速缓存878、879也是可用的。像素操作组件877对数据执行基于像素的操作,但是在一些实例中,与2D操作相关联的像素操作(例如,利用混合(blend)进行的位块图像转移)由2D引擎841执行,或在显示时由显示控制器843使用上层的显示平面来替代。在一个实施例中,共享的L3高速缓存875可用于所有的图形组件,从而允许在不使用主***存储器的情况下共享数据。
图形处理器媒体流水线830包括媒体引擎337和视频前端834。在一个实施例中,视频前端834从命令流送器803接收流水线命令。然而,在一个实施例中,媒体流水线830包括分开的命令流送器。视频前端834在将命令发送至媒体引擎837之前处理媒体命令。在一个实施例中,媒体引擎包括线程繁衍功能,以便繁衍用于经由线程分派器831而分派至线程执行逻辑850的线程。
在一个实施例中,图形引擎包括显示引擎840。在一个实施例中,显示引擎840在图形处理器外部,并且经由环形互连802或某个其他互连总线或结构而与图形处理器耦合。显示引擎840包括2D引擎841和显示控制器843。显示引擎840包含能够独立地操作3D流水线的专用逻辑。显示控制器843与显示设备(未示出)耦合,所述显示设备可以是如在膝上型计算机中的***集成的显示设备或经由显示设备连接器而附连的外部显示设备。
图形流水线820和媒体流水线830可配置以基于多个图形和媒体编程接口来执行操作,并且不专用于任何一个应用编程接口(API)。在一个实施例中,用于图形处理器的驱动器软件将专用于特定图形或媒体库的API调用转化为可由图形处理器处理的命令。在各种实施例中,为Khronos Group所支持的开放图形库(OpenGL)和开放计算语言(OpenCL)、来自微软公司的Direct3D库提供支持,或者在一个实施例中,为OpenGL和D3D两者提供支持。也可为开放源计算机视觉库(OpenCV)提供支持。如果可完成从未来API的流水线至图形处理器的流水线的映射,则也将支持兼容3D流水线的未来API。
图形流水线编程——图9A-9B
图9A是示出根据实施例的图形处理器命令格式的框图,图9B是示出根据实施例的图形处理器命令序列的框图。图9A中的实线框示出一般被包括在图形命令中的组件,而虚线包括任选的且仅被包括在图形命令的子集中的组件。图9A的示例性图形处理器命令格式900包括用于标识该命令的目标客户机的数据字段902、命令操作码(操作码)904以及用于命令的相关数据906。子操作码905和命令尺寸908也包括在一些命令中。
客户机902指定图形设备中处理命令数据的客户机单元。在一个实施例中,图形处理器命令解析器检查每一个命令的客户机字段以调整对命令的未来处理,并且将命令数据路由至适当的客户机单元。在一个实施例中,图形处理器客户机单元包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每一个客户机单元都具有处理命令的对应的处理流水线。一旦由客户机单元接收到命令,此客户机单元就读取操作码904以及子操作码905(如果存在),以便确定将执行的操作。客户机单元使用命令的数据906字段中的信息来执行命令。对于一些命令,预期显式的命令尺寸908来指定命令的尺寸。在一个实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些命令的尺寸。在一个实施例中,命令经由双字的倍数而对准。
图9B中的流程图示出采样命令序列910。在一个实施例中,以图形处理器的实施例为特征的数据处理***的软件或固件使用所示的命令序列的某个版本来建立、执行并终止图形操作的集合。出于示例性目的示出并描述采样命令序列,然而,实施例不限于这些命令,也不限于此命令序列。此外,命令能以命令序列中的批量命令被发布,使得图形处理器将以至少部分地并发的方式来处理命令序列。
取样命令序列910能以流水线转储清除(flush)命令912开始,以使任何活动的流水线完成用于流水线的当前待定的命令。在一个实施例中,3D流水线922和媒体流水线924不并发地操作。执行流水线转储清除以使活动的图形流水线完成任何待定的命令。响应于流水线转储清除,用于图形处理器的命令解析器将暂停命令处理,直到活动的绘制引擎完成待定的操作且相关读取高速缓存被无效为止。任选地,渲染高速缓存中被标记为“脏(dirty)”的任何数据可转储清除至存储器。流水线转储清除命令912可用于流水线同步,或可在将图形处理器置于低功率状态之前使用。
当命令序列要求图形处理器在多个流水线之间显式地切换时,使用流水线选择命令913。除非上下文将为两个流水线发布命令,否则在发布流水线命令之前,在执行上下文内,流水线选择命令913仅需要一次。在一个实施例中,紧接着经由流水线选择命令913进行的流水线切换之前,需要流水线转储清除命令912。
流水线控制命令914配置用于操作的图形流水线,并且用于对3D流水线922和媒体流水线924编程。流水线控制命令914为活动的流水线配置流水线状态。在一个实施例中,流水线控制命令914用于流水线同步,并且用于在处理批量命令之前,清除来自活动的流水线内的一个或多个高速缓存存储器的数据。
返回缓冲器状态命令916用于配置供相应的流水线用于写入数据的返回缓冲器的集合。一些流水线操作需要对一个或多个返回缓冲器的分配、选择或配置,在处理期间,操作将中间数据写入到所述一个或多个返回缓冲器中。图形处理器也使用一个或多个返回缓冲器以存储输出数据并执行跨线程通信。返回缓冲器状态916包括选择用于流水线操作集合的返回缓冲器的尺寸和数量。
命令序列中的其余命令基于用于操作的活动的流水线而有所不同。基于流水线确定920,命令序列被定制至以3D流水线状态930开始的3D流水线922或以媒体流水线状态940开始的媒体流水线924。
用于3D流水线状态930的命令包括用于以下状态的3D状态设置命令:顶点缓冲器状态、顶点元素状态、恒定颜色状态、深度缓冲器状态以及在处理3D基元命令之前将配置的其他状态变量。至少部分地基于使用中的特定的3D API来确定这些命令的值。3D流水线状态930命令也能够在如果不使用某些流水线元件时选择性地禁用或绕过那些元件。
3D基元932命令用于提交将由3D流水线处理的3D基元。经由3D基元932命令而被传递至图形处理器的命令和相关联的参数被转发至图形流水线中的顶点取出函数。顶点取出函数使用3D基元932命令数据来生成顶点数据结构。顶点数据结构被存储在一个或多个返回缓冲器中。3D基元932命令用于经由顶点着色器对3D基元执行顶点操作。为了处理顶点着色器,3D流水线922将着色器执行线程分派至图形处理器执行单元。
3D流水线922经由执行934命令或事件来触发。在一个实施例中,寄存器写入触发命令执行。在一个实施例中,经由命令序列中的“go”(“走”)或“kick”(“踢除”)命令来触发执行。在一个实施例中,使用流水线同步命令以通过图形流水线来转储清除命令序列来触发命令执行。3D流水线将为3D基元执行几何处理。一旦操作完成,得到的几何对象被光栅化,并且像素引擎对得到的像素上色。用于控制像素着色和像素后端操作的附加命令也可被包括以用于那些操作。
当执行媒体操作时,采样命令序列910跟随媒体流水线924路径。一般而言,用于媒体流水线924的编程的特定使用和方式取决于将执行的媒体或计算操作。在媒体解码期间,特定的媒体解码操作可卸载至媒体流水线。也可绕过媒体流水线,并且可使用由一个或多个通用处理核提供的资源完全地或部分地执行媒体解码。在一个实施例中,媒体流水线也包括用于通用图形处理器单元(GPGPU)操作的元件,其中,图形处理器用于使用与图形基元的渲染不是显式相关的计算着色器程序来执行SIMD向量操作。
以与3D流水线922类似的方式来配置媒体流水线924。媒体流水线状态命令940的集合被分派或置入到命令序列中并在媒体对象命令942之前。媒体流水线状态命令940包括用于配置将用于处理媒体对象的媒体流水线元件的数据。这包括用于配置媒体流水线内的视频解码和视频编码逻辑的数据,诸如,编码或解码格式。媒体流水线状态命令940也支持使用指向包含批量状态设置的“间接”状态元素的一个或多个指针。
媒体对象命令942提供指向用于由媒体流水线处理的媒体对象的指针。媒体对象包括包含待处理的视频数据的存储器缓冲器。在一个实施例中,在发布媒体对象命令942之前,所有媒体流水线状态都必须是有效的。一旦流水线状态经配置,并且媒体对象命令942经排队列,媒体流水线924就经由执行934命令或等效的执行事件(例如,寄存器写入)来触发。随后,可通过由3D流水线922或媒体流水线924提供的操作对来自媒体流水线924的输出进行后处理。在一个实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。
图形软件架构——图10
图10示出根据实施例的用于数据处理***的示例性图形软件架构。软件架构包括3D图形应用1010、操作***1020以及至少一个处理器1030。处理器1030包括图形处理器1032以及一个或多个通用处理器核1034。图形应用1010和操作***1020各自都在数据处理***的***存储器1050中执行。
在一个实施例中,3D图形应用1010包含一个或多个着色器程序,所述着色器程序包括着色器指令1012。着色器语言指令可以是高级着色器语言(诸如,高级着色器语言(HLSL)或OpenGL着色器语言(GLSL))中的。应用也包括适用于由通用处理器核1034执行的机器语言中的可执行指令1014。应用也包括由顶点数据定义的图形对象1016。
操作***1020可以是来自微软公司的操作***、专属的类UNIX操作***、或使用Linux内核的变体的开放源类UNIX操作***。当Direct3D API在使用中时,操作***1020使用前端着色器编译器1024以将HLSL中的任何着色器指令1012编译为低级着色器语言。编译可以是即时(just-in-time)编译,或应用可执行共享预编译。在一个实施例中,在3D图形应用1010的编译期间,高级着色器被编译为低级着色器。
用户模式图形驱动器1026可包含后端着色器编译器1027以将着色器指令1012编译为硬件专用表示。当OpenGL API在使用中时,GLSL高级语言中的着色器指令1012被传递至用于模式图形驱动器1026以进行编译。用户模式图形驱动器使用操作***内核模式函数1028来与内核模式图形驱动器1029通信。内核模式图形驱动器1029与图形处理器1032通信以分派命令和指令。
就本文中所描述的各种操作和功能的程度而言,它们可被描述或定义为硬件电路、软件代码、指令、配置和/或数据。内容可具体化在硬件逻辑中,或可具体化为直接可执行的软件(“目标”或“可执行”形式)、源代码、设计成用于在图形引擎上执行的高级着色器代码或用于特定处理器或图形核的指令集中的低级汇编语言代码。本文中所述的实施例的软件内容可经由具有存储于其上的内容的制品来提供,或者可经由操作通信接口以便经由此通信接口来发送数据的方法来提供。
非暂态机器可读存储介质可使机器执行所描述的功能或操作,并且包括以可由机器(例如,计算设备、电子***等)访问形式存储信息的任何机制,诸如,可记录/非可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等)。通信接口包括对接至硬连线的、无线的、光学介质等中的任一者以向另一设备通信的任何机制,诸如,存储器总线接口、处理器总线接口、网际连接、盘控制器等。通信接口通过以下方式来配置,提供配置参数或发送信号以使通信接口准备好提供描述软件内容的数据信号。可经由发送至该通信接口的一个或多个命令或信号来访问此通信接口。
所描述的各种组件可以是用于执行所描述的操作或功能的装置。本文所述的每个组件包括软件、硬件,或者软件和硬件的组合。组件可实现为软件模块、硬件模块、专用硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。除了本文中所述的内容之外,还可对本发明的所公开的实施例和实现方式进行各种修改而不背离它们的范围。因此,本文中的示例和范例应当被解释成解说性的,而非限制性的。本发明的范围应当仅通过参照所附权利要求书来界定。
用于高效的纹理压缩的装置和方法
以下所描述的本公开的实施例支持高性能、可缩放、有损耗的图形纹理压缩,同时允许对图像质量、压缩率和块尺寸的灵活选择。在一个实施例中,压缩和解压缩两者具有相同的每纹素成本,并仅使用乘加指令。此外,纹素解压缩不需要相邻纹素之间的空间或时间上的依赖关系。结果,本文中所述的技术特别适用于大量并行的实现方式和硬件加速。
为了实现前述结果,本发明的一个实施例将纹理图像数据块作为两坐标的多变量函数来对待。在压缩阶段,在每一个纹素处采样多变量函数,并且在中心点的稀疏栅格上以数值方式对多变量函数近似,以获得组成纹理块的经压缩的表示的近似系数的向量。在解压缩阶段,近似系数随后用于评估每一个纹素坐标处的多变量函数以重新创建原始纹素的近似值。可分开对待颜色通道和α通道。
具体而言,在一个实施例中,径向基函数(RBF)近似用于对纹理块上的颜色函数进行数值近似。它允许块尺寸的灵活选择,诸如,4x4至16x16。也支持矩形(非正方形)块。
如图11中所示,在本发明的一个实施例中,在图形处理单元的纹理采样器1100(参见例如图5中的纹理采样器554A-N、图6中的610以及图8中的854)内执行压缩和解压缩操作。具体而言,对称的纹理压缩逻辑1150(例如,使用RBF近似)实现下文中描述的技术来压缩未经压缩的纹理数据1101。随后,所得到的经压缩的纹理数据1107可存储在纹理存储位置1110(例如,纹理高速缓存、主存储器、大容量存储设备等)中,用于在纹理映射操作期间的后续使用。
对称的纹理解压缩逻辑1120使用下文中描述的解压缩技术(例如,为纹理块确定颜色值向量[T])来解压缩经压缩的纹理数据1107以生成经解压缩的纹理数据1130。随后,所得到的经解压缩的纹理数据1130可由像素着色器1105和/或图形流水线中的其他级使用以执行纹理映射操作。
如上文所述,在一个实施例中,使用RFB近似来压缩纹理数据。近似的准确性以及因此图像质量和压缩率通过相对于块内的纹素的数量(下文中标记为B)来选择近似RBF中心点计数(下文中标记为N)来控制。
近似方法(包括RBF近似)在域边界(即,这种情况下的块边界)处遭受增加的错误率。为了限制此效应,本发明的一个实施例将RBF中心点置于纹理块边缘上,如图12A(其示出具有四个中心点1250的实现方式)中和图12B(其示出具有八个中心点1251的实现方式)中所示。为了保持RBF中心点放置的对称性,如图12A中所示的放置在块角落中的四个中心可用作基线实现方式(即,最小数量的中心点)。随后,通过如图12B中所示以等距设置将四个新中心添加至边缘(每个边缘添加一个)来生成后续的配置。可添加4个中心点的附加集合以将边缘细分为相等长度的线段(例如,12个中心点将产生3条线段,16个中心点将产生4条线段,等等)。
图12C提供用于使用不同数量的中心点的不同的块尺寸(例如,4x4,5x5等)的示例性压缩率。作为示例,具有4个中心点的4x 4纹理块将产生.25的压缩率,而具有12个中心点的相同纹理块将产生.75的压缩率。
在一个实施例中,RBF近似基于径向基函数(radial basis function)来计算近似系数,所述径向基函数对近似中心点与近似的数据位置(例如,纹素)之间的距离向量的范数(norm)计算。可使用广泛类别的径向基函数而仍符合本发明的实施例。在一个特定实施例中,使用分别标记为GAUS和MQ的高斯RBF和复二次方程(multiquadratic)RBF:
BF近似使用附加的参数来控制被称为形状参数的径向基函数曲线形状,下文中标记为ep。元组(tuple)<B,N,栅格,RBF,ep>构成压缩/解压缩方法的控制集(其中,B是块内的纹素的数量,而N是RBF中心点计数)。RBF近似的细节为本领域技术人员熟知,因此将不在此描述,以避免使本发明的基本原理含糊。下文中描述用于对一个纹理块的近似(压缩)和评估(解压缩)阶段的操作。
在一个实施例中个,根据以下方程执行压缩:
在一个实施例中,通过首先计算纹理数据位置点与近似中心点之间的距离矩阵[DM]来确定压缩矩阵。作为示例,在具有16个纹素且使用4个中心点的4x 4纹理块中,距离矩阵包括64个元素(即,具有表示4个中心点中的一个中心点与16个纹素中的一个纹素之间的距离的每一个元素)。随后,使用所配置的RBF类型和形状参数ep值,对距离矩阵[DM]计算逐成员的(member-wise)RBF值的压缩矩阵[RDM]。
在一个实施例中,构建向量[T],此向量[T]包含对块采样的B个纹素颜色值。作为示例,对于4x 4纹理块,将对块采样16个纹素颜色值(即,B=16)。
随后,本发明的一个实施例解线性方程组[RDM]*[A]=[T]以求出近似系数的向量[A]。这可通过以下方式来实现:以数值方式计算[RDM]矩阵的伪逆(pseudoinverse)[iDRM],并且计算[iRDM][T]的矩阵积来确定包括经压缩的纹理数据的向量[A]。
在一个实施例中,对于<B,N,栅格,RBF,ep>的固定组合,计算距离矩阵[DM]并计算解压缩矩阵[RDM]的操作可预先计算,并且可提供为常数。此外,由于[RDM]矩阵可能不是方的(square),并且此[RDM]矩阵所定义的线性方程组是过定的(overdetermined),因此经典意义上的逆矩阵不存在。替代地,本发明的一个实施例使用Moore-Penrose伪逆矩阵,以便基于以下方程求出方程组的最佳拟合解:
最后,对于<B,N,栅格,RBF,ep>的固定组合,计算矩阵积[iRDM][T]的操作可预先计算,并且可提供为常数。结果,如以上讨论所暗示,可将压缩阶段减少为对于每个纹理块为单个矩阵-向量积运算,其中,矩阵提供为常数。
在一个实施例中,根据以下方程执行解压缩:
为了求出纹素颜色值的向量[T],确定解压缩矩阵[RDM]和近似系数向量[A]的积(例如,计算[RDM]*[A]=[T])。结果,可将解压缩阶段减少为对于每个纹理块为单个矩阵-向量积运算,其中,将矩阵作为常数提供给算法。在一个实施例中,以与当以经压缩的格式被存储时与输入颜色数据相同的精度来表示近似系数[A]。
图13提供用于具有4个中心点的4x 4纹理块的前述方程的示例性表示。在所示示例中,[RDM]矩阵1301重新成形以生成4x 16解压缩矩阵1302,随后,所述4x 16解压缩矩阵1302乘以近似系数矩阵[A]以获得1x 16版本的纹素块1304。随后,纹素块1304重新成形以获得最终的[T]矩阵1305。
在图14中示出用于执行压缩的方法。在1401处,使用纹理块的每一个数据位置点与每一个中心点之间的距离来计算距离矩阵[DM]。对于具有4个中心点的4x 4纹理块,这产生64个值。在1402处,使用所配置的RBF类型和形状参数ep值,对距离矩阵[DM]计算逐成员的RBF值的RBF矩阵[RDM]。在1403处,构建对块采样的B个纹素颜色值的向量[T]。随后,在1404处,解线性方程组[RDM]*[A]=[T]以求出近似系数的向量[A]。
以上呈现的技术可通过在压缩和解压缩阶段两者中仅使用乘加运算(例如,以便执行所述的矩阵乘法)来实现。此外,取决于块尺寸和所选择的压缩率,压缩和解压缩阶段两者具有相等的每纹素成本。由于这些技术使用颜色近似,因此它们提供以下附加的益处:适用于子采样和过采样方案。此外,低计算复杂度和成本使这些技术适用于硬件加速和/或实时应用,并且产生对存储器带宽和功耗的限制。
本发明的多个实施例可包括上述各个步骤。可在可用于使通用或专用处理器执行这些步骤的机器可执行指令中具体化这些步骤。或者,可由包含用于执行这些步骤的硬连线逻辑的专用硬件组件,或可由被编程的计算机组件和自定义硬件组件的任何组合来执行这些步骤。
如本文中所述,指令可以指硬件的具体配置,例如,配置成用于执行某些操作或具有预定功能的专用集成电路(ASIC),或者被存储在被具体化在非暂态计算机可读介质中的存储器中的软件指令。因此,可使用存储在一个或多个电子设备(例如,终端站、网络元件等)上并在其上被执行的代码和数据来执行附图中所示的技术。此类电子设备使用诸如非暂态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)之类的计算机机器可读介质和暂态计算机机器可读通信介质(例如,电、光、声或其他形式的传播信号——诸如载波、红外信号、数字信号等)来(内部地和/或在网络上与其他电子设备之间进行)存储和传递代码和数据。另外,此类电子设备一般包括耦合至一个或多个其他组件的一个或多个处理器的集合,所述一个或多个其他组件例如是一个或多个存储设备(非暂态机器可读存储介质)、用户输入/输出设备(例如,键盘、触摸屏和/或显示器)以及网络连接。该组处理器和其他组件的耦合一般是通过一个或多个总线和桥(也称为总线控制器)实现的。存储设备和携带网络话务的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子设备的存储设备通常存储用于在该电子设备的一个或多个处理器的集合上执行的代码和/或数据。当然,本发明的实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。贯穿此具体实施方式,为了进行解释,陈述了众多具体细节以提供对本发明的透彻理解。然而,对本领域技术人员显而易见的是,没有这些具体细节中的一些细节也可实施本发明。在某些实例中,并不详细描述公知的结构和功能,以免使本发明的主题模糊。因此,本发明的范围和精神应根据所附权利要求书来确定。
Claims (25)
1.一种方法,包括:
确定多个纹理块纹素中的每一个纹理块纹素与多个点中的每一个点之间的距离;
确定对所述纹理块采样的纹素颜色值的集合;以及
使用所述多个纹理块纹素中的每一个纹理块纹素与所述多个点之间的每一个点之间的所述距离以及对所述纹理块采样的所述纹理颜色值的集合来生成用于压缩所述纹理块的近似系数的集合。
2.如权利要求1所述的方法,其中,所述多个点包括有理基函数(RBF)中心点。
3.如权利要求2所述的方法,进一步包括:
使用多个纹理块纹素中的每一个纹理块纹素与多个点中的每一个点之间的距离来确定距离矩阵[DM];
使用指定类型的RBF和指定的形状参数ep值来对所述距离矩阵[DM]确定逐成员的RBF值的RBF矩阵[RDM]。
4.如权利要求3所述的方法,其中,所述指定类型的RBF从由高斯有理基函数和复二次方程有理基函数组成的组中选出。
5.如权利要求3所述的方法,其中,确定纹素颜色值的集合包括:构建对所述纹理块采样的B个纹素颜色值的向量[T],其中,B是所述纹理块中的纹素的数量。
6.如权利要求5所述的方法,其中,生成所述近似系数的集合包括:
使用方程[RDM]*[A]=[T]来确定包括所述近似系数的向量[A]。
7.如权利要求6所述的方法,进一步包括:
确定所述RBF矩阵[RDM]的伪逆矩阵[iRDM];以及
使[iRDM]乘以[T]以确定[A]。
8.如权利要求7所述的方法,其中,所述纹理块包括4x4纹理块、5x5纹理块、6x6纹理块、7x7纹理块或8x8纹理块。
9.如权利要求8所述的方法,其中,所述近似中心点从由4个、8个、12个、16个或20个中心点组成的组中选出。
10.如权利要求7所述的方法,其中,所述纹理块包括矩形纹理块。
11.如权利要求6所述的方法,进一步包括:
通过使用方程[RDM]*[A]=[T]确定所述向量[T]来解压缩所述纹理块。
12.一种处理器,包括:
纹理压缩逻辑,用于
确定多个纹理块纹素中的每一个纹理块纹素与多个点中的每一个点之间的距离;
确定对所述纹理块采样的纹素颜色值的集合;以及
使用所述多个纹理块纹素中的每一个纹理块纹素与所述多个点之间的每一个点之间的所述距离以及对所述纹理块采样的所述纹理颜色值的集合来生成用于压缩所述纹理块的近似系数的集合。
13.如权利要求1所述的处理器,其中,所述多个点包括有理基函数(RBF)中心点。
14.如权利要求13所述的处理器,其中,所述纹理压缩逻辑用于:使用多个纹理块纹素中的每一个纹理块纹素与多个点中的每一个点之间的距离来确定距离矩阵[DM];以及使用指定类型的RBF和指定的形状参数ep值来对所述距离矩阵[DM]确定逐成员的RBF值的RBF矩阵[RDM]。
15.如权利要求14所述的处理器,其中,所述指定类型的RBF从由高斯有理基函数和复二次方程有理基函数组成的组中选出。
16.如权利要求14所述的处理器,其中,确定纹素颜色值的集合包括:构建对所述纹理块采样的B个纹素颜色值的向量[T],其中,B是所述纹理块中的纹素的数量。
17.如权利要求16所述的处理器,其中,所述纹理压缩逻辑用于:通过使用方程[RDM]*[A]=[T]确定包括所述近似系数的向量[A]来生成所述近似系数的集合。
18.如权利要求17所述的处理器,其中,所述纹理压缩逻辑用于:确定所述RBF矩阵[RDM]的伪逆矩阵[iRDM];以及使[iRDM]乘以[T]以确定[A]。
19.如权利要求18所述的处理器,其中,所述纹理块包括4x4纹理块、5x5纹理块、6x6纹理块、7x7纹理块或8x8纹理块。
20.如权利要求19所述的处理器,其中,所述近似中心点从由4个、8个、12个、16个或20个中心点组成的组中选出。
21.如权利要求18所述的处理器,其中,所述纹理块包括矩形纹理块。
22.如权利要求17所述的处理器,进一步包括:
纹理解压缩逻辑,用于通过使用方程[RDM]*[A]=[T]确定所述向量[T]来解压缩所述纹理块。
23.一种机器可读介质,具有存储于其上的程序代码,当由机器执行所述程序代码时,所述程序代码使所述机器执行以下操作:
确定多个纹理块纹素中的每一个纹理块纹素与多个点中的每一个点之间的距离;
确定对所述纹理块采样的纹素颜色值的集合;以及
使用所述多个纹理块纹素中的每一个纹理块纹素与所述多个点之间的每一个点之间的所述距离以及对所述纹理块采样的所述纹理颜色值的集合来生成用于压缩所述纹理块的近似系数的集合。
24.如权利要求23所述的机器可读介质,其中,所述多个点包括有理基函数(RBF)中心点。
25.如权利要求24所述的机器可读介质,进一步包括使所述机器执行以下操作的附加程序代码:
使用多个纹理块纹素中的每一个纹理块纹素与多个点中的每一个点之间的距离来确定距离矩阵[DM];
使用指定类型的RBF和指定的形状参数ep值来对所述距离矩阵[DM]确定逐成员的RBF值的RBF矩阵[RDM]。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/PL2014/000077 WO2016007028A1 (en) | 2014-07-10 | 2014-07-10 | Method and apparatus for efficient texture compression |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107004280A true CN107004280A (zh) | 2017-08-01 |
Family
ID=51300805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480079739.4A Pending CN107004280A (zh) | 2014-07-10 | 2014-07-10 | 用于高效的纹理压缩的方法和装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10140732B2 (zh) |
EP (1) | EP3167433A1 (zh) |
JP (1) | JP6379225B2 (zh) |
KR (1) | KR102071766B1 (zh) |
CN (1) | CN107004280A (zh) |
SG (1) | SG11201610362RA (zh) |
TW (1) | TWI590198B (zh) |
WO (1) | WO2016007028A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016048176A1 (en) * | 2014-09-26 | 2016-03-31 | Intel Corporation | Method and apparatus for filtering compressed textures |
CN111726639B (zh) | 2016-11-18 | 2023-05-30 | 上海兆芯集成电路有限公司 | 纹理砖压缩及解压缩方法以及使用该方法的装置 |
MX2021002585A (es) | 2018-09-04 | 2021-07-21 | Lutron Tech Co Llc | Comunicación con sistemas de control de carga y control de estos. |
WO2020236984A1 (en) | 2019-05-20 | 2020-11-26 | Lutron Technology Company Llc | Communicating with and controlling load control systems |
CA3144460A1 (en) * | 2019-07-26 | 2021-02-04 | Lutron Technology Company Llc | Configuring color control for lighting devices |
KR20220134848A (ko) * | 2021-03-26 | 2022-10-06 | 삼성전자주식회사 | 그래픽 처리 장치 및 그의 동작 방법 |
US11704860B2 (en) | 2021-05-14 | 2023-07-18 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US11853764B2 (en) | 2021-05-14 | 2023-12-26 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US11830123B2 (en) | 2021-05-14 | 2023-11-28 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US11875444B2 (en) * | 2021-05-14 | 2024-01-16 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US11908064B2 (en) | 2021-05-14 | 2024-02-20 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070076971A1 (en) * | 2005-09-30 | 2007-04-05 | Nokia Corporation | Compression of images for computer graphics |
CN101536526A (zh) * | 2006-08-31 | 2009-09-16 | Ati科技公司 | 纹理压缩技术 |
CN102138158A (zh) * | 2008-06-26 | 2011-07-27 | 微软公司 | 统一纹理压缩框架 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7925087B2 (en) * | 2006-11-14 | 2011-04-12 | Siemens Aktiengesellschaft | Method and system for image segmentation by evolving radial basis functions |
PL2289173T3 (pl) * | 2008-05-15 | 2018-03-30 | Koninklijke Philips N.V. | Sposób, urządzenie, oraz produkt w postaci programu komputerowego do kompresji i dekompresji obrazu sekwencjonowania genów |
US8452111B2 (en) * | 2008-06-05 | 2013-05-28 | Microsoft Corporation | Real-time compression and decompression of wavelet-compressed images |
CN102934428B (zh) * | 2010-12-16 | 2015-08-05 | 北京航空航天大学 | 一种图像压缩中利用人眼视觉模型的小波系数量化方法 |
KR101418096B1 (ko) * | 2012-01-20 | 2014-07-16 | 에스케이 텔레콤주식회사 | 가중치예측을 이용한 영상 부호화/복호화 방법 및 장치 |
GB2503691B (en) * | 2012-07-04 | 2019-08-14 | Advanced Risc Mach Ltd | Methods of and apparatus for encoding and decoding data |
-
2014
- 2014-07-10 KR KR1020167034520A patent/KR102071766B1/ko active IP Right Grant
- 2014-07-10 SG SG11201610362RA patent/SG11201610362RA/en unknown
- 2014-07-10 WO PCT/PL2014/000077 patent/WO2016007028A1/en active Application Filing
- 2014-07-10 US US15/300,256 patent/US10140732B2/en active Active
- 2014-07-10 JP JP2016572319A patent/JP6379225B2/ja active Active
- 2014-07-10 EP EP14750022.7A patent/EP3167433A1/en not_active Withdrawn
- 2014-07-10 CN CN201480079739.4A patent/CN107004280A/zh active Pending
-
2015
- 2015-06-04 TW TW104118156A patent/TWI590198B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070076971A1 (en) * | 2005-09-30 | 2007-04-05 | Nokia Corporation | Compression of images for computer graphics |
CN101536526A (zh) * | 2006-08-31 | 2009-09-16 | Ati科技公司 | 纹理压缩技术 |
CN102138158A (zh) * | 2008-06-26 | 2011-07-27 | 微软公司 | 统一纹理压缩框架 |
Non-Patent Citations (3)
Title |
---|
GREGORY E. FASSHAUER ET AL.: "On choosing "optimal" shape parameters for RBF approximation", 《NUMERICAL ALGORITHMS》 * |
HWANG-SOO KIM ET AL.: "Image coding by fitting RBF-surfaces to subimages", 《PATTERN RECOGNITION LETTERS》 * |
胡可云 等: "《数据挖掘理论与应用》", 30 April 2008, 清华大学出版社 * |
Also Published As
Publication number | Publication date |
---|---|
US10140732B2 (en) | 2018-11-27 |
TWI590198B (zh) | 2017-07-01 |
JP2017523507A (ja) | 2017-08-17 |
KR20170007373A (ko) | 2017-01-18 |
SG11201610362RA (en) | 2017-01-27 |
TW201618037A (zh) | 2016-05-16 |
EP3167433A1 (en) | 2017-05-17 |
JP6379225B2 (ja) | 2018-08-22 |
WO2016007028A1 (en) | 2016-01-14 |
KR102071766B1 (ko) | 2020-03-02 |
US20170154443A1 (en) | 2017-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11887001B2 (en) | Method and apparatus for reducing the parameter density of a deep neural network (DNN) | |
CN107004280A (zh) | 用于高效的纹理压缩的方法和装置 | |
WO2017049496A1 (en) | Apparatus and method for local quantization for convolutional neural networks (cnns) | |
CN109643443A (zh) | 图形处理器流水线中的高速缓存和压缩互操作性 | |
US20190087680A1 (en) | Edge-Based Coverage Mask Compression | |
WO2017074608A1 (en) | Variable precision shading | |
US9705526B1 (en) | Entropy encoding and decoding of media applications | |
US9412195B2 (en) | Constant buffer size multi-sampled anti-aliasing depth compression | |
US20160283549A1 (en) | Value sorter | |
US10410081B2 (en) | Method and apparatus for a high throughput rasterizer | |
CN106687924A (zh) | 用于基于当前状态来更新着色器程序的方法和装置 | |
EP3221850A1 (en) | Apparatus and method for efficient frame-to-frame coherency exploitation for sort-last architectures | |
EP3198405A1 (en) | Method and apparatus for simd structured branching | |
CN106575443A (zh) | 用于多点采样图形保真的分层索引位 | |
WO2016126400A1 (en) | Method and apparatus for direct and interactive ray tracing of a subdivision surface | |
US9600926B2 (en) | Apparatus and method decoupling visibility bins and render tile dimensions for tiled rendering | |
US10198850B2 (en) | Method and apparatus for filtering compressed textures | |
CN107004252A (zh) | 用于在处理浮点值时实现功率节省技术的装置与方法 | |
EP3198564A1 (en) | Efficient tessellation cache | |
WO2017116779A1 (en) | A method of color transformation using at least two hierarchical lookup tables (lut) | |
CN109219832B (zh) | 用于帧缓冲器压缩的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170801 |
|
WD01 | Invention patent application deemed withdrawn after publication |