对颜色查找表的大小进行压缩的制作方法

文档序号:11531101阅读:531来源:国知局
对颜色查找表的大小进行压缩的制造方法与工艺



背景技术:

本发明总体上涉及图形处理。

在各种不同的情况下,需要对显示器上将显示的颜色进行调整。举几个例子,这样的调整的示例包括皮肤肤色调调调整、色温调整、以及颜色饱和度调整。

典型地,这些颜色变换是使用三维查找表来实现的。三维查找表的问题在于,查找表的维度是选定颜色空间中输入颜色分量的数量的函数。作为示例,用于srgb颜色空间的查找表需要三个输入,并且因此使用三维查找表。当输入和输出两者都处于伴随着每个颜色8位深度的srgb空间中时,这种查找表的大小为48兆字节。

因此,使用三维查找表涉及在存储器容量和存储器带宽要求方面的巨大负担。

附图说明

关于以下附图描述了一些实施例:

图1是本发明的一个实施例的处理流程;

图2是本发明的一个实施例的流程表;

图3是一个实施例的示意图;

图4是另一实施例的示意图;

图5是又另一实施例的示意图;

图6是根据一个实施例的数据处理系统的框图;

图7是根据一个实施例在图6所示的处理器的框图;

图8是根据一个实施例在图6所示的图形处理器的框图;

图9是根据一个实施例的图形处理引擎的框图;

图10是根据另一实施例的图形处理器的框图;

图11展示了用于一个实施例的线程执行逻辑;

图12是根据一个实施例的图形处理器执行单元指令格式的框图;

图13是图形处理器的另一实施例的框图;

图14a是根据一个实施例的图形处理器命令格式的框图;

图14b是根据一个实施例的图形处理器命令序列的框图;并且

图15是用于一个实施例的图形软件架构。

具体实施方式

通过从第一颜色空间转换到第二颜色空间,可以使用一个或多个二维查找表(lut)来执行常规地由多个三维查找表处理的任务。在一些实施例中,这可以减少存储要求和存储器带宽要求。

一般地,在实现颜色变换算法的过程中不改变诸如亮度的给定颜色分量的任何情况下,可以转换到仅需要二维查找表的中间色彩空间。例如,如果颜色信息是srgb形式的,并且变换仅涉及色度(cb和cr)颜色分量而不涉及亮度(明度)或y颜色分量,则在一些实施例中,通过从srgb转换到ycbcr颜色空间,仅涉及cb和cr颜色分量的单一查找表是可能的。

其结果是,可以使用二维查找表。然后,在变换已经完成之后,可以将所述颜色空间转换回到第一颜色空间。

最终结果可能是以两个额外颜色转换步骤的较低成本显着减小查找表的大小。然而,对于颜色空间转换进行的额外数学运算可能在较低维度查找表的查找表数据的插值过程中通过较少的计算来补偿。

下表示出了传统三维8位rgb空间与nx2d空间之间的查找表大小的比较,其中用于2d查找表的数量的示例值n=3。颜色变换的准确度随着查找表中的样本数量的最大而增大:

上表示出了在一些实施例中可以实现存储要求的节省。作为示例,可以使用ycbcr作为具有三个查找表(n=3)的中间颜色空间、通过将rgb颜色空间转换到ycbcr颜色空间、使用三个二维查找表以及然后转换回到rgb颜色空间来实现通常用三维查找表来实现的皮肤色调增强算法。

参考图1,一般步骤是接收输入像素以及然后转换到适当的颜色空间,如框10所示。然后使用只具有所需数量的二维查找表的中间颜色空间(框12)。最后,在颜色转换已经发生之后,可以将中间颜色空间变换回到原始颜色空间,如框14所示。

图2中示出了用于创建查找表的序列。所述序列可以以软件、固件和/或硬件形式实现。在软件和固件实施例中,所述序列可以通过存储在一个或多个非瞬态计算机可读介质(例如磁性、光学或半导体存储设备)中的计算机执行的指令来实现。

最初,如框16所示,选择颜色变换算法。举几个例子,这可以包括用于色域映射、颜色校正、自适应亮度、自适应对比度增强、皮肤色调调整、色温或白度调整的算法。然后,如框18所示,选择中间颜色空间。例如,可以选择中间颜色空间,使得所述颜色空间是在颜色变换中实际只利用三个颜色空间分量中两个颜色空间分量的颜色空间,从而有助于向一个或多个二维查找表转变。

然后,如框20所示,选择二维查找表所需的颜色分量。接下来,如框22所示,选择查找表的数量。最后,如框24所示,创建使用所选定算法的所需数量的查找表。

可能存在需要多个查找表的情况。例如,在皮肤色调调整中,一种算法可以用于较深的皮肤色调,并且另一种算法可以用于校正较浅的皮肤色调。因此,rgb输入像素被转换到ycbcr颜色空间,并且然后使用两个查找表来调整cb和cr分量,一个查找表提供用于较深的皮肤色调提供并且另一查找表提供用于较浅的皮肤色调。在某些情况下,可能需要检测器来评估是涉及浅皮肤色调还是较深皮肤色调。

以下示例描述了用于在像素的色相处于指定范围内的情况下增强所述像素的颜色饱和度的算法的查找表创建过程。最初,输入和输出颜色空间被注明,并且在这种情况下是srgb。所选定中间颜色空间是ycbcr。如果色相处于一组给定范围内,则变换算法用于检测色相和变换饱和度。此示例中的查找表数量为1。查找表中的样本数为33。所创建的具有8位颜色深度的查找表大小为2178字节。具有传统三维查找表的查找表大小为105千字节。

因此,根据一个实施例,图3所示的硬件实施例可以实现用于补偿皮肤色调暗度的二维查找表技术。最初,颜色信息被传递到颜色空间转换单元30。在该示例中,颜色空间可以从rgb转换到ycbcr。然后,皮肤暗度检测器32检测是否涉及皮肤色调,并且如果是这样,则确定皮肤色调是多深并且根据所述皮肤色调是比阈值更深还是比阈值更浅来选择合适的查找表(表34或表36)。然后,基于皮肤暗度的确定,使用适当的二维查找表。最后,在颜色空间转换单元38处将颜色空间转换回到原始颜色空间。

根据另一实施例,可以使用二维查找表而不是三维查找表来完成部分色相和饱和度控制。检测像素的色相,并且根据用户的要求调整色相/饱和度。在一个实施例中,用户可以提供用于几个锚定颜色(色相)(在一个实施例中为六个锚定像素)的色相/饱和度调整因子。然后,在一个实施例中,可以通过图形用户接口上的滑块控制来获取用户输入。所述算法将rgb像素转换到ycbcr像素,并且仅改变cb和cr分量。因此,单个二维查找表就足够了。

参考图4,硬件实施例可以由接收rgb像素的色相检测模块40来实现。在检测到色相之后,例如从图形用户接口接收如框42所示的用户色相/饱和度调整因子。然后,如框44所示,将颜色空间转换到ycbcr。接下来,如框46所示,使用二维查找表(lut)基于用户调整因子来调整cb和cr分量。最后,将颜色空间转换回到rgb(框48)。

根据又另一实施例,可以实现色域压缩算法。所述算法映射出特定显示面板的色域内的色域像素。所述算法将rgb像素转换到hsv颜色空间、并且仅修改所述颜色空间的s和v分量,保持h分量不变。虽然s和v调整涉及h分量作为输入,但是整个色相区域可以被划分为三到六个子区域,并且可以利用具有对应的s和v分量的那些许多二维查找表。

参考图5,硬件实施例可以由一系列模块来实现。第一模块50检测超出色域(outofgamut)像素。然后,如框52所示,将颜色空间从rgb转换到hsv。如框54所示,色相区域被划分为n个子区域。接下来,选择n个二维lut(基于子区域的数量),并且然后修改s和v分量(框56)。最后,在修改s和v分量之后将颜色空间转换回到rgb,如框60所示。

图4和图5的实施例还可以用软件或固件来实现。

尽管在一些显示器中使用了rgbw颜色空间,但具有更多颜色分量的颜色空间将是可用的。本文描述的原理可以适用于更多的颜色分量。具有n个颜色分量的颜色像素可以用数量n个m维lut进行处理,其中m<n并且n是某一选定正整数。

图6是根据实施例的数据处理系统100的框图。数据处理系统100包括一个或多个处理器102和一个或多个图形处理器108,并且可以是单处理器桌面系统、多处理器工作站系统、或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,数据处理系统100是用于移动设备、手持设备或嵌入式设备的片上系统(soc)集成电路。

数据处理系统100的实施例可以包括或者被并入基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台)、移动游戏控制台、手持游戏控制台或联网游戏控制台。在一个实施例中,数据处理系统100是移动电话、智能电话、平板计算设备或移动因特网设备。数据处理系统100还可以包括、耦合或集成在可穿戴设备(如智能手表可穿戴设备、智能眼镜设备、增强现实设备、或虚拟现实设备)内。在一个实施例中,数据处理系统100是具有一个或多个处理器102以及由所述一个或多个图形处理器108生成的图形接口的电视或机顶盒设备。

所述一个或多个处理器102各自包括用于处理多个指令的一个或多个处理器核107,所述指令在被执行时执行用于系统和用户软件的操作。在一个实施例中,所述一个或多个处理器核107各自被配置为用于处理特定指令集109。指令集109可以有助于复杂指令集计算(cisc)、简化指令集计算(risc)、或经由超长指令字(vliw)的计算。多个处理器核107可以各自处理不同的指令集109,所述指令集可以包括便于其他指令集的仿真的指令。处理器核107还可以包括其他处理设备,例如数字信号处理器(dsp)。

在一个实施例中,处理器102包括高速缓冲存储器104。取决于架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。在一个实施例中,高速缓存存储器在处理器102的各个组件之间共享。在一个实施例中,处理器102还使用外部高速缓存(例如,三级(l3)高速缓存或最后一级高速缓存(llc))(未示出),所述外部高速缓存可以使用已知的高速缓存相干性技术在处理器核107之间共享。处理器102中另外包括寄存器组106,所述处理器可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器、以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器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耦合,所述外部图形处理器可以与处理器102中的所述一个或多个图形处理器108通信以执行图形和媒体操作。

ich130使得多个外围设备能够经由高速i/o总线连接到存储器120和处理器102。i/o外围设备包括音频控制器146、固件接口128、无线收发器126(例如,wi-fi、蓝牙)、数据存储设备124(例如,硬盘驱动、闪速存储器等)、以及用于将传统(例如,个人系统2(ps/2))设备耦合到系统的传统i/o控制器。一个或多个通用串行总线(usb)控制器142连接多个输入设备,例如键盘和鼠标144组合。网络控制器134还可以耦合到ich130。在一个实施例中,高性能网络控制器(未示出)耦合到处理器总线110。

图7是具有一个或多个处理器核202a-n、集成存储器控制器214、以及集成图形处理器208的处理器200的一个实施例的框图。处理器200可以包括多达并且包括用虚线框表示的附加核202n。所述核202a-n各自包括一个或多个内部高速缓存单元204a-n。在一个实施例中,每个核还可以访问一个或多个共享高速缓存单元206。

内部高速缓存单元204a-n和共享高速缓存单元206表示处理器200内的高速缓存存储器层级。高速缓存存储器层级可以包括每个核内的至少一级指令数据高速缓存以及一级或多级共享中级高速缓存(如二级(l2)、三级(l3)、四级(l4)或其他级的高速缓存),其中在外部存储器之前的最高级高速缓存被归类为最后一级高速缓存(llc)。在一个实施例中,高速缓存相干性逻辑维持各高速缓存单元206和204a-n之间的相干性。

处理器200还可以包括一组一个或多个总线控制器单元216和系统代理210。所述一个或多个总线控制器单元管理一组外围总线,例如一个或多个外围组件互连总线(例如,pci、pciexpress)。系统代理210提供用于各个处理器组件的管理功能。在一个实施例中,系统代理210包括管理对各个外部存储器设备(未示出)的访问的一个或多个集成存储器控制器214。

在一个实施例中,所述核202a-n中的一者或多者包括用于同时多线程的支持。在这一实施例中,系统代理210包括用于在多线程处理过程中协调和操作核202a-n的组件。系统代理210可以另外包括功率控制单元(pcu),所述功率控制单元包括用于调节核202a-n和图形处理器208的功率状态的逻辑和组件。

处理器200另外包括用于执行多项图形处理操作的图形处理器208。在一个实施例中,图形处理器208与所述一组共享高速缓存单元206以及包括包括一个或多个集成存储器控制器214的系统代理单元210耦合。在一个实施例中,显示控制器211与图形处理器208耦合以将图形处理器输出驱动到一个或多个耦合的显示器。显示控制器211可以是经由至少一个互连件与所述图形处理器耦合的分开的模块,或者可以集成在图形处理器208或系统代理210内。

在一个实施例中,基于环的互连单元212用于耦合处理器200的内部组件,然而可以使用替代的互连单元,例如点对点互连、交换互连或其他技术,包括本领域公知的技术。在一个实施例中,图形处理器208经由i/o链路213与环形互连件212耦合。

示例性i/o链路213表示i/o互连件的多个品种中的至少一种,包括有助于各个处理器组件与诸如edram模块的高性能嵌入式存储器模块218之间的通信的封装i/o互连件。在一个实施例中,每个核202a-n和图形处理器208将嵌入式存储器模块218用作共享的最后一级高速缓存。

在一个实施例中,核202a-n是执行相同指令集架构的同质核。在另一实施例中,核202a-n在指令集架构(isa)方面是异构的,其中核202a-n中的一者或多者执行第一指令集,而其他核中的至少一者执行所述第一指令集的子集或不同的指令集。

处理器200可以是一个或多个衬底的一部分或者使用多种处理技术中的任何一种(例如互补金属氧化物半导体(cmos)、双极结/互补金属氧化物半导体(bicmos)或n型金属氧化物半导体逻辑(nmos))来实施在所述一个或多个衬底上。另外,处理器200可以被实施在一个或多个芯片上或实施为具有所示组件(除此之外还具有其他组件)的片上系统(soc)集成电路。

图8是图形处理器的一个实施例的框图,所述图形处理器可以是分立式图形处理单元、或者可以是与多个处理核集成的图形处理器300。在一个实施例中,所述图形处理器经由存储器映射的i/o接口以及经由置于处理器存储器中的命令与所述图形处理器上的多个寄存器进行通信。图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是到本地存储器、到一个或多个内部高速缓存、到一个或多个共享外部高速缓存、和/或到系统存储器的接口。

图形处理器300还包括用于将显示输出数据驱动到显示设备320的显示控制器302。显示控制器302包括用于显示和组合多层视频或用户接口元件的一个或多个覆盖平面的硬件。在一个实施例中,图形处理器300包括视频编解码器引擎306,所述视频编解码器引擎用于对来自或在以下一个或多个媒体编码格式之间的媒体进行编码、解码或转码,所述媒体编码格式包括但不限于:运动图像专家组(mpeg)格式,例如mpeg-2;高级视频编码(avc)格式,例如h.264/mpeg-4avc;以及电影与电视工程师协会(smpte)421m/vc-1和联合图像专家组(jpeg)格式,例如jpeg和motionjpeg(mjpeg)格式。

在一个实施例中,图形处理器300包括块图像传输(blit)引擎304,所述blit引擎用于执行包括例如位边界块传输的二维(2d)光栅化器操作。然而,在一个实施例中,使用图形处理引擎(gpe)310的一个或多个组件来执行2d图形操作。图形处理引擎310是用于执行包括三维(3d)图形操作和媒体操作的图形操作的计算引擎。

gpe310包括用于执行3d操作(例如使用作用于3d基元形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景)的3d流水线312。3d流水线312包括可编程和固定的功能元件,所述功能元件执行元件内的各种任务和/或向3d/媒体子系统315产生执行线程。虽然3d流水线312可以用于执行媒体操作,但是gpe310的实施例还包括专门用于执行诸如视频后处理和图像增强的媒体操作的媒体流水线316。

在一个实施例中,媒体流水线316包括用于执行一个或多个专门的媒体操作(例如视频解码加速、视频解交织和视频编码加速)来代替或代表视频编解码器引擎306的固定功能或可编程逻辑单元。在一个实施例中,媒体流水线316另外包括用于产生在3d/媒体子系统315上执行的线程的线程产生单元。所产生的线程对包括在所述3d/媒体子系统315中的一个或多个图形执行单元执行用于媒体操作的计算。

3d/媒体子系统315包括用于执行由3d流水线312和媒体流水线316产生的线程的逻辑。在一个实施例中,流水线将多个线程执行请求发送到3d/媒体子系统315,所述3d/媒体子系统包括用于仲裁各个请求和将其分派到可用的线程执行资源的线程分派逻辑。执行资源包括用于处理3d和媒体线程的图形执行单元阵列。在一个实施例中,3d/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一个实施例中,所述子系统还包括用于在多个线程之间共享数据并存储输出数据的共享存储器,所述共享存储器包括多个寄存器和可寻址存储器。

图9是用于图形处理器的图形处理引擎410的实施例的框图。在一个实施例中,图形处理引擎(gpe)410是图8所示的gpe310的一个版本。gpe410包括3d流水线412和媒体流水线416,所述流水线各自可以不同于或类似于图8的3d流水线312和媒体流水线316的实施方式。

在一个实施例中,gpe410与命令流传送器(commandstreamer)403耦合,所述命令流传送器向gpe3d流水线412和媒体流水线416提供命令流。命令流传送器403被耦合到存储器,所述存储器可以是系统存储器、或者是内部高速缓存存储器和共享高速缓存存储器中的一者或多者。命令流传送器403从所述存储器接收多个命令并将所述命令发送到3d流水线412和/或媒体流水线416。3d和媒体流水线由通过相应流水线内的逻辑进行操作或由将一个或多个执行线程分派到执行单元数组414来处理命令。在一个实施例中,执行单元阵列414是可缩放的,使得所述阵列基于gpe410的目标功率和性能水平而包括可变数量的执行单元。

采样引擎430与存储器(例如,高速缓存存储器或系统存储器)和执行单元阵列414耦合。在一个实施例中,采样引擎430提供用于可缩放执行单元阵列414的存储器访问机制,所述存储器访问机制允许执行阵列414读取来自存储器的图形和媒体数据。在一个实施例中,采样引擎430包括用于执行针对媒体的专用图像采样操作的逻辑。

采样引擎430中的专用媒体采样逻辑包括去噪/解交织模块432、运动估计模块434、以及图像缩放和滤波模块436。去噪/解交织模块432包括用于对经解码的视频数据执行去噪或解交织算法中的一者或多者的逻辑。解交织逻辑将交织的视频内容的交替字段组合成单一的视频帧。去噪逻辑减少或去除来自视频和图像数据中的数据噪声。在一个实施例中,去噪逻辑和解交织逻辑是运动自适应的、并且使用基于所述视频数据中检测到的运动量的空间或时间滤波。在一个实施例中,去噪/解交织模块432包括专用运动检测逻辑(例如,在运动估计引擎434内)。

运动估计引擎434通过对视频数据执行诸如运动向量估计和预测的视频加速功能来提供用于视频操作的硬件加速。运动估计引擎确定描述连续视频帧之间的图像数据的变换的运动向量。在一个实施例中,图形处理器媒体编解码器使用视频运动估计引擎434对宏块级别的视频执行操作,所述操作在使用通用处理器执行时可能是计算密集型的。在一个实施例中,运动估计引擎434通常可用于图形处理器组件,以帮助对视频数据内的运动的方向或幅度敏感或适应的视频解码和处理功能。

图像缩放和滤波模块436执行图像处理操作以增强所生成的图像和视频的视觉质量。在一个实施例中,缩放和滤波模块436在将数据提供给执行单元阵列414之前在采样操作过程中对图像和视频数据进行处理。

在一个实施例中,图形处理引擎410包括数据端口444,所述数据端口为多个图形子系统提供访问存储器的附加机制。数据端口444便于对包括渲染目标写入、常量缓冲器读取、暂存存储器空间读取/写入、以及媒体表面访问的操作的存储器访问。在一个实施例中,数据端口444包括用于高速缓存对存储器的访问的高速缓存存储空间。所述高速缓存存储器可以是单一数据高速缓存或者被分成用于经由所述数据端口访问存储器的多个子系统的多个高速缓存(例如,渲染缓冲器高速缓存、常量缓冲器高速缓存等)。在一个实施例中,对执行单元阵列414中的执行单元执行的线程通过经由数据分配互连件交换消息来与数据端口通信,所述数据分配互连件耦合图形处理引擎410的每个子系统。

图10是图形处理器的另一实施例的框图。在一个实施例中,所述图形处理器包括环形互连502、流水线前端504、媒体引擎537、以及多个图形核580a-n。环形互连502将所述图形处理器耦合到其他处理单元(包括其他图形处理器或一个或多个通用处理器核)。在一个实施例中,所述图形处理器是集成在多核处理系统内的许多处理器之一。

所述图形处理器经由环形互连502接收多个批次的命令。进入的命令由流水线前端504中的命令流传送器503进行解释。所述图形处理器包括用于经由图形核580a-n执行3d几何结构处理和媒体处理的可缩放执行逻辑。对于3d几何结构处理命令,命令流传送器503将所述命令提供给几何结构流水线536。对于至少一些媒体处理命令,命令流传送器503将所述命令提供给与媒体引擎537耦合的视频前端534。媒体引擎537包括用于视频和图像后处理的视频质量引擎(vqe)530以及用于提供经硬件加速的媒体数据编码和解码的多格式编码/解码(mfx)引擎533。几何结构流水线536和媒体引擎537各自生成用于由至少一个图形核580a提供的线程执行资源的执行线程。

所述图形处理器包括以模块化核580a-n(有时称为核片)为特征的多个可缩放线程执行资源,所述模块化核各自具有多个子核550a-n、560a-n(有时称为核子片)。所述图形处理器可以具有任意数量的图形核580a至580n。在一个实施例中,所述图形处理器包括至少具有第一子核550a和第二子核560a的图形核580a。在另一实施例中,所述图形处理器是具有单个子核(例如,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。在一个实施例中,所述共享资源包括共享高速缓存存储器和像素操作逻辑。所述图形处理器的各种实施例中还可以包括其他共享资源。

图11示出了包括图形处理引擎的一个实施例中所采用的处理元件阵列的线程执行逻辑600。在一个实施例中,线程执行逻辑600包括像素着色器602、线程分派器604、指令高速缓存606、包括多个执行单元608a-n的可缩放执行单元阵列、采样器610、数据高速缓存612、以及数据端口614。在一个实施例中,所包括的组件经由互连结构互连,所述互连结构链接到每个组件。线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样器610、以及执行单元阵列608a-n中的一者或多者到存储器(如系统存储器或高速缓存存储器)的一个或多个连接件。在一个实施例中,每个执行单元(例如608a)是能够执行多个同步线程并且为每个线程并行处理多个数据元素的单独向量处理器。执行单元阵列608a-n包括任何数量的单独执行单元。

在一个实施例中,执行单元阵列608a-n主要用于执行多个“着色器”程序。在一个实施例中,阵列608a-n中的执行单元执行包括用于许多标准3d图形着色器指令的本机支持的指令集,使得来自多个图形库(例如,direct3d和opengl)的着色器程序以最小的转换来执行。所述执行单元支持顶点和几何结构处理(例如,顶点程序、几何结构程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。

执行单元阵列608a-n中的每个执行单元对多个数据元素阵列进行操作。数据元素的数量是“执行大小”、或指令的信道数。执行信道是指令内的数据元素访问、掩蔽和流控制的逻辑执行单元。信道的数量可以独立于特定图形处理器的物理alu或fpu的数量。执行单元608a-n支持整数和浮点数据类型。

所述执行单元指令集包括多个单指令多数据(simd)指令。各个数据元素可以作为打包数据类型存储在寄存器中,并且所述执行单元将基于所述元素的数据大小处理各个元素。例如,当在256位宽的向量上操作时,向量的256个位被存储在寄存器中,并且所述执行单元对作为四个分开的64位打包数据元素(四字(qw))大小数据元素)、八个分开的32位打包数据元素(双字(dw)大小数据元素)、十六个分开的16位打包数据元素(字(w)大小数据元素)、或三十二个分开的8位数据元素(字节(b)大小的数据元素)的向量进行操作。然而,不同的向量宽度和寄存器大小是可能的。

线程执行逻辑600中包括了用于对所述执行单元的线程指令进行高速缓存的一个或多个内部指令高速缓存(例如,606)。在一个实施例中,包括了用于在线程执行过程中对线程数据进行高速缓存的一个或多个数据高速缓存(例如,612)。包括了提供用于3d操作的纹理采样和用于媒体操作的媒体采样的采样器610。在一个实施例中,采样器610包括用于在将采样数据提供给执行单元之前在采样处理过程中对纹理或媒体数据进行处理的专门纹理或媒体采样功能。

在执行过程中,图形和媒体流水线通过线程产生和分派逻辑向线程执行逻辑600发送线程启动请求。线程执行逻辑600包括本地线程分派器604,所述本地线程分派器仲裁来自图形流水线和媒体流水线的线程发起请求、并且在一个或多个执行单元608a-n上实例化所请求的线程。例如,几何结构流水线(例如,图6的536)将顶点处理、镶嵌(tessellation)或几何结构处理线程分派到线程执行逻辑600。线程分派器604还可以对来自执行着色器程序的运行时线程产生请求进行处理。

一旦一组几何对象已经被处理并被光栅化成像素数据,像素着色器602被调用以进一步计算输出信息并且使结果被写入输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器等)。在一个实施例中,像素着色器602计算有待跨光栅化对象内插的各个顶点属性的值。像素着色器602然后执行api提供的像素着色器程序。为了执行像素着色器程序,像素着色器602经由线程分派器604将多个线程分派到执行单元(例如,608a)。像素着色器602使用采样器610中的纹理采样逻辑来访问存储在存储器中的纹理图中的纹理数据。对纹理数据和输入几何结构数据的算术运算计算每个几何结构片段的像素颜色数据、或者丢弃来自另一处理的一个或多个像素。

在一个实施例中,数据端口614提供存储器访问机制,用于线程执行逻辑600将处理后的数据输出到存储器,以便在图形处理器输出流水线上进行处理。在一个实施例中,数据端口614包括或耦合到一个或多个用于高速缓存数据的高速缓存存储器(例如,数据高速缓存612),以被经由所述数据端口进行存储器访问。

图12是示出根据实施例的图形处理器执行单元指令格式的框图。在一个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框示出了一般包括在执行单元指令中的组件,而虚线包括任选的或仅包括在所述指令的子集中的组件。所描述的指令格式是宏指令,因为它们是提供给执行单元的指令,而不是一旦指令被处理时由指令解码产生的微操作。

在一个实施例中,图形处理器执行单元在本机支持128位格式710的指令。64位压缩指令格式730可用于基于所选指令、多个指令选项和操作数数量的一些指令。本机128位格式710提供对所有指令选项的访问,而一些选项和操作在64位格式730中被限制。以64位格式730可用的本机指令根据实施例而变化。在一个实施例中,使用索引字段713中的一组索引值来部分地压缩所述指令。执行单元硬件基于所述索引值引用一组压缩表,并且使用压缩表输出来以128位格式710重构本机指令。

对于每种格式,指令操作码712定义所述执行单元要执行的操作。所述执行单元横跨每个操作数的多个数据元素并行地执行每条指令。例如,响应于添加指令,所述执行单元横跨表示纹理元素或图片元素的每个颜色通道执行同步添加操作。默认情况下,所述执行单元横跨操作数的所有数据信道执行每条指令。指令控制字段712使得能够控制某些执行选项,例如信道选择(例如,预测)和数据信道排序(例如,搅和)。对于128位指令710,执行大小字段716限制将并行执行的数据信道的数量。执行大小字段716不可用于64位紧凑指令格式730。

一些执行单元指令具有多达三个操作数,包括两个源操作数src0720、src1722和一个目的地718。在一个实施例中,所述执行单元支持双目的地指令,其中所述目的地之一是隐含的。数据操作指令可以具有第三源操作数(例如,src2724),其中指令操作码jj12确定源操作数的数量。指令的最后一个源操作数可以是与所述指令一起传递的立即数(例如,硬编码)值。

在一个实施例中,基于操作码位字段对多个指令进行分组以简化操作码解码740。对于8位操作码,位4、5和6允许所述执行单元确定操作码的类型。所示的精确操作码分组是示例性的。在一个实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,mov、cmp)。移动和逻辑组742共享五个最高有效位(msb),其中移动指令采用0000xxxxb(例如,0x0x)的形式,并且逻辑指令采用0001xxxxb(例如,0x01)的形式。流控制指令组744(例如,call、jmp)包括采用0010xxxxb(例如0x20)形式的指令。杂项指令组746包括多个指令的混合,所述指令包括采用0011xxxxb(例如,0x30)形式的同步指令(例如,等待发送)。并行数学指令组748包括采用0100xxxxb(例如,0x40)形式的分量算术指令(例如,add、mul)。并行数学组748横跨多个数据通道并行地执行算术运算。向量数学组750包括采用0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。所述向量数学组对向量操作数执行诸如点积计算的算术。

图13是图形处理器的另一实施例的框图,所述图形处理器包括图形流水线820、媒体流水线830、显示引擎840、线程执行逻辑850、以及渲染输出流水线870。在一个实施例中,所述图形处理器是包括一个或多个通用处理核的多核处理系统内的图形处理器。通过对一个或多个控制寄存器(未示出)的寄存器写入或通过经由环形互连802发出到图形处理器的命令来控制所述图形处理器。环形互连802将所述图形处理器耦合到其他处理组件,例如其他图形处理器或通用处理器。来自环形互连的命令由命令流传送器803进行解释,所述命令流传送器向图形流水线820或媒体流水线830的多个单独组件提供指令。

命令流传送器803指导顶点获取器805组件的操作,所述顶点获取器组件读取来自存储器的顶点数据并且执行由命令流传送器803提供的顶点处理命令。顶点获取器805将顶点数据提供给顶点着色器807,所述顶点着色器对每个顶点执行坐标空间变换和点亮操作。顶点获取器805和顶点着色器807通过经由线程分派器831将执行线程分派到执行单元852a、852b来执行顶点处理指令。

在一个实施例中,执行单元852a、852b是具有用于执行图形和媒体操作的指令集的向量处理器阵列。执行单元852a、852b具有附接的l1高速缓存851,所述l1高速缓存特定于每个阵列或在阵列之间共享。所述高速缓存可以被配置为数据高速缓存、指令高速缓存、或被分区以包含不同分区中的数据和指令的单个高速缓存。

在一个实施例中,图形流水线820包括用于执行3d对象的硬件加速镶嵌的镶嵌组件。可编程外壳着色器(hullshader)811对所述镶嵌操作进行配置。可编程域着色器817提供镶嵌输出的后端评估。镶嵌器813在外壳着色器811的方向上操作、并且包含用于基于作为输入提供到图形流水线820的粗略几何模型来生成一组详细几何对象的专用逻辑。如果不使用镶嵌,则镶嵌组件811、813、817可以被旁路。

完整的几何结构对象可以由几何结构着色器819经由分派到执行单元852a、852b的一个或多个线程来处理,或者可以直接进行到剪辑器829。所述几何结构着色器对整个几何结构对象进行操作,而不是像在图形流水线的先前阶段对顶点或顶点补丁进行操作。如果镶嵌被禁用,则几何结构着色器819接收来自顶点着色器807的输入。如果镶嵌单元被禁用,则几何结构着色器819可由几何结构着色器程序编程以执行几何结构镶嵌。

在光栅化之前,顶点数据由剪辑器829进行处理,所述剪辑器是具有剪辑和几何结构着色器功能的固定功能剪辑器或可编程剪辑器。在一个实施例中,渲染输出流水线870中的光栅化器873分派多个像素着色器以将所述几何对象转换为它们的每像素表示。在一个实施例中,线程执行逻辑850中包括像素着色器逻辑。

图形引擎具有互连总线、互连结构、或允许在所述图形引擎的主要组件之间传递数据和消息的一些其他互连机制。在一个实施例中,执行单元852a、852b和相关联的高速缓存851、纹理和媒体采样器854、以及纹理/采样器高速缓存858经由数据端口856互连,所述数据端口用于执行存储器访问并且与图形引擎的渲染输出流水线组件通信。在一个实施例中,采样器854,高速缓存851、858以及执行单元852a、852b各自具有分开的存储器访问路径。

在一个实施例中,渲染输出流水线870包含光栅化器和深度测试组件873,所述深度测试组件将基于顶点的对象转换为其相关联的基于像素的表示。在一个实施例中,光栅化器逻辑包括用于执行固定功能三角形和线光栅化的加窗器/掩蔽器。在一个实施例中,相关联的渲染和深度缓冲器高速缓存878、879也是可用的。像素操作组件877对数据进行基于像素的操作,然而在某些情况下,与2d操作(例如,利用混合的位块图像传输)相关联的像素操作由2d引擎841进行、或者在显示时使用覆盖显示平面由显示控制器843替代。在一个实施例中,共享l3高速缓存875可用于所有图形组件,从而允许在不使用主系统存储器的情况下共享数据。

图形处理器媒体流水线830包括媒体引擎837和视频前端834。在一个实施例中,视频前端834从命令流传送器803接收多个流水线命令。然而,在一个实施例中,媒体流水线830包括分开的命令流传送器。在将命令发送到媒体引擎837之前,视频前端834对媒体命令进行处理。在一个实施例中,所述媒体引擎包括线程产生功能,以经由线程分派器831产生用于分派到线程执行逻辑850的线程。

在一个实施例中,所述图形引擎包括显示引擎840。在一个实施例中,显示引擎840在图形处理器的外部、并且经由环连接件802或某些其他互连总线或结构与图形处理器耦合。显示引擎840包括2d引擎841和显示控制器843。显示引擎840包含能独立于3d流水线操作的专用逻辑。显示控制器843与显示设备(未示出)耦合,所述显示设备可以是如膝上型计算机中的系统集成显示设备、或经由显示设备连接器附接的外部显示设备。

图形流水线820和媒体流水线830可配置为基于多个图形和媒体编程接口来执行操作,并且不特定于任何一个应用编程接口(api)。在一个实施例中,用于图形处理器的驱动程序软件将特定于具体图形或媒体库的api调用转换为可由图形处理器处理的命令。在多个不同实施例中,为khronos集团所支持的开放图形库(opengl)和开放式计算语言(opencl)、来自microsoft公司的direct3d库提供支持,或者在一个实施例中为opengl和d3d两者提供支持。还可以为开源计算机视觉库(opencv)提供支持。如果可以将未来api的流水线映射到图形处理器的流水线,则还将支持具有兼容3d流水线的未来api。

图14a是示出根据实施例的图形处理器命令格式的框图,并且图14b是示出根据实施例的图形处理器命令序列的框图。图14a中的实线框示出了一般包括在图形命令中的组件,而虚线包括任选的或仅包括在所述图形命令的子集中的组件。图14a的示例性图形处理器命令格式900包括用于标识所述命令的目标客户端902、命令操作代码(操作码)904、以及用于所述命令的相关数据906的数据字段。一些命令中还包括子操作码905和命令大小908。

客户端902指定对所述命令数据进行处理的图形设备的客户端单元。在一个实施例中,图形处理器命令解析器检查每个命令的客户端字段以调节对所述命令的进一步处理并将命令数据路由到适当的客户端单元。在一个实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2d单元、3d单元、以及媒体单元。每个客户端单元都具有对所述命令进行处理的对应处理流水线。一旦命令被客户端单元接收,客户端单元读取操作码904和子操作码905(如果有的话),以确定要执行的操作。所述客户端单元使用所述命令的数据906字段中的信息来执行所述命令。对于某些命令,预期显式命令大小908指定所述命令的大小。在一个实施例中,命令解析器基于命令操作码自动地确定所述命令中的至少一些命令的大小。在一个实施例中,多个命令通过多个双字对齐。

图14b中的流程图示出了样本命令序列910。在一个实施例中,以所述图形处理器的实施例为特征的数据处理系统的软件或固件使用了所示的命令序列的版本,以建立、执行和终止一组图形操作。为了示例性目的示出和描述了样本命令序列,然而实施例不限于这些命令或此命令序列。此外,所述命令可以作为命令序列中的一批命令发出,使得图形处理器将以至少部分并发的方式对所述命令序列进行处理。

样本命令序列910可以以流水线转储清除(flush)命令912开始,以使任何活动的图形流水线完成流水线的当前待决命令。在一个实施例中,3d流水线922和媒体流水线924并未并发地操作。执行流水线转储清除以使活动的图形流水线完成任何待决命令。响应于流水线转储清除,用于所述图形处理器的命令解析器将暂停命令处理,直到活动的绘制引擎完成待决操作并且使相关的读取高速缓存无效。任选地,标记为‘脏’的渲染高速缓存中的任何数据都可以被转储清除到存储器。流水线转储清除命令912可以用于流水线同步或者在将图形处理器置于低功率状态之前使用。

当命令序列要求图形处理器明确地在流水线之间切换时,使用流水线选择命令913。在发出流水线命令之前,流水线选择命令913在执行上下文中只需要一次,除非所述上下文是为两条流水线发出命令。在一个实施例中,紧接在通过流水线选择命令913进行流水线切换之前需要流水线转储清除命令912。

流水线控制命令914配置图形流水线以便操作,并且用于对3d流水线922和媒体流水线924进行编程。流水线控制命令914为活动的流水线配置流水线状态。在一个实施例中,流水线控制命令914用于流水线同步、并且在处理一批命令之前从所述活动的流水线内的一个或多个高速缓存存储器中清除数据。

返回缓冲器状态命令916被用于为对应的流水线配置一组返回缓冲器以写入数据。一些流水线操作需要一个或多个返回缓冲器的分配、选择、或配置,在处理过程中所述操作将中间数据写入所述返回缓冲器中。所述图形处理器还使用一个或多个返回缓冲器来存储输出数据并执行交叉线程通信。返回缓冲器状态916包括选择用于一组流水线操作的返回缓冲器的大小和数量。

命令序列中的其余命令基于用于操作的活动流水线而不同。基于流水线确定920,对于从3d流水线状态930开始的3d流水线922或者从媒体流水线状态940开始的媒体流水线924来定制所述命令序列。

用于3d流水线状态930的命令包括用于顶点缓冲器状态、顶点元素状态、常量颜色状态、深度缓冲器状态、以及有待在处理3d基元命令之前配置的其他状态变量的3d状态设置命令。这些命令的值至少部分地基于使用中的特定3dapi来确定。如果这些元件不被使用,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向量操作,所述计算着色器程序不与图形基元的渲染明确相关。

媒体流水线924以与3d流水线922相似的方式进行配置。在媒体对象命令942之前,将一组媒体流水线状态命令940分派或放置到命令队列中。媒体流水线状态命令940包括用于配置媒体流水线元件的数据,所述媒体流水线元件将用于对媒体对象进行处理。所述媒体流水线状态命令包括用于在媒体流水线中配置视频解码和视频编码逻辑的数据,例如编码或解码格式。媒体流水线状态命令940还支持使用指向包含一批状态设置的“间接”状态元素的一个或多个指针。

媒体对象命令942提供由所述媒体流水线对多个媒体对象进行处理的指针。所述媒体对象包括包含有待处理的视频数据的存储器缓冲器。在一个实施例中,在发出媒体对象命令942之前,所有媒体流水线状态必须是有效的。一旦配置了流水线状态并且媒体对象命令942排好队,则媒体流水线924通过执行934命令或等效的执行事件(例如,寄存器写入)来触发。然后可以通过由3d流水线922或媒体流水线924提供的操作来对来自媒体流水线924的输出进行后处理。在一个实施例中,以与媒体操作类似的方式配置和执行gpgpu操作。

图15示出了根据实施例的用于数据处理系统的示例性图形软件架构。软件架构包括3d图形应用1010、操作系统1020、以及至少一个处理器1030。处理器1030包括图形处理器1032和一个或多个通用处理器核1034。图形应用1010和操作系统1020各自在数据处理系统的系统存储器1050中执行。

在一个实施例中,3d图形应用1010包含一个或多个着色器程序,所述着色器程序包括多个着色器指令1012。所述着色器语言指令可以是高级着色器语言,例如高级着色器语言(hlsl)或opengl着色器语言(glsl)。所述应用还包括适于由通用处理器核1034执行的机器语言的可执行指令1014。所述应用还包括由顶点数据定义的图形对象1016。

操作系统1020可以是来自microsoft公司的microsoftwindows操作系统、专有的unix类操作系统、或者使用linux内核变体的开源unix类操作系统。当direct3dapi正在使用时,操作系统1020使用前端着色器编译器1024以将hlsl中的任何着色器指令1012编译成较低级的着色器语言。编译可能是即时编译,或者所述应用可以执行共享预编译。在一个实施例中,在3d图形应用1010的编译过程中,高级着色器被编译成低级着色器。

用户模式图形驱动器1026可以包含用于将着色器指令1012转换成硬件特定的表示的后端着色器编译器1027。当openglapi正在使用时,glsl高级语言的着色器指令1012被传递给用户模式图形驱动程序1026进行编译。用户模式图形驱动器使用操作系统内核模式功能1028与内核模式图形驱动程序1029进行通信。内核模式图形驱动器1029与图形处理器1032进行通信以分派命令和指令。

在本文所描述的各操作或功能程度上,它们可以被描述或定义为硬件电路、软件代码、指令、配置和/或数据。可以以硬件逻辑或可直接执行软件(“对象”或“可执行”形式)、源代码、经设计用于在图形引擎上执行的高级着色器代码、或指令集中的用于特定处理器或图形核的低级汇编语言代码来实施内容。本文中所描述的实施例的软件内容可以经由一种其上存储有内容的制品或经由一种操作通信接口经由通信接口发送数据的方法被提供。

一种非瞬态机器可读存储媒体可以使机器执行所描述的功能或操作,并且包括存储具有机器(例如,计算设备、电子系统等)可存取形式的信息的任何机制,如可记录/不可记录媒体(例如,只读存储器(rom)、随机存取存储器(ram)、磁盘存储媒体、光存储媒体、闪存设备等)。通信接口包括与硬连线、无线、光学等介质中的任一者交互的任何机制,所述机制与诸如存储器总线接口、处理器总线接口、因特网连接件、磁盘控制器等的另一设备进行通信。通过提供配置参数或发送信号来配置所述通信接口,以便制备用于提供描述软件内容的数据信号的通信接口。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。

所描述的各组件可以是用于执行所描述的操作或功能的装置。本文所描述的每个组件包括软件、硬件或它们的组合。这些组件可以被实现为软件模块、硬件模块、专用硬件(例如,专用硬件、专用集成电路(asic)、数字信号处理器(dsp)等)、嵌入式控制器、硬连线电路等。除了本文所描述的内容之外,可以对所公开的实施例和实施方式进行各种修改,而不脱离它们的范围。因此,本文的说明和示例应在说明性的而非限制性意义上被解释。本发明的范围应当仅参照以下权利要求书来衡量。

以下项目和/或示例涉及进一步的实施例。

一个示例性实施例可以是一种方法,所述方法包括:从第一颜色空间转换到第二颜色空间;在所述第二颜色空间中使用二维查找表;以及从所述第二颜色空间转换到所述第一颜色空间。所述方法还可以包括:使用多于一个二维查找表。所述方法还可以包括:其中,所述第一颜色空间是rgb,并且所述第二颜色空间是ycbcr。如权利要求1所述的方法还可以包括:使用具有n个颜色分量的颜色像素;以及用数量n个m维lut进行处理,其中m<n并且n是正整数。如权利要求1所述的方法包括:使用所述第二颜色空间来实现仅具有两个变化颜色分量的校正。所述方法还可以包括:从其中所有三个分量都发生变化的所述第一颜色空间切换。所述方法还可以包括:对于给定的像素,确定将使用至少两个二维查找表中的哪一个。所述方法还可以包括:判定像素颜色比阈值更深还是更浅。所述方法还可以包括:检测rgb像素的色相;从用户处接收色相和饱和度调整因子;转换到ycbcr颜色空间;基于所述因子调整cb和cr颜色分量;以及然后往回转换到rgb颜色空间。所述方法还可以包括:从rgb转换到hsv颜色空间;将色相区域划分为n个子区域;以及使用n个二维查找表来修改s分量和v分量。

另一示例性实施例可以是一种或多种非瞬态计算机可读介质,存储有指令,所述指令被执行以便执行包括以下各项的序列:从第一颜色空间转换到第二颜色空间;在所述第二颜色空间中使用二维查找表;以及从所述第二颜色空间转换到所述第一颜色空间。所述介质可以包括:所述序列包括使用多于一个二维查找表。所述介质可以包括所述序列,其中所述第一颜色空间是rgb。所述介质可以包括所述序列,其中所述第二颜色空间是ycbcr。所述介质可以包括:所述序列包括使用所述第二颜色空间来实现仅具有两个变化颜色分量的校正。所述介质可以包括:所述序列包括从其中所有三个分量都发生变化的所述第一颜色空间切换。所述介质可以包括:所述序列包括对于给定的像素,确定将使用至少两个二维查找表中的哪一个。所述介质可以包括:所述序列包括判定像素颜色比阈值更深还是更浅。所述介质可以包括:所述序列包括检测rgb像素的色相;从用户处接收色相和饱和度调整因子;转换到ycbcr颜色空间;基于所述因子调整cb和cr颜色分量;以及然后往回转换到rgb颜色空间。所述介质可以包括:所述序列包括从rgb转换到hsv颜色空间;将色相区域划分为n个子区域;以及使用n个二维查找表来修改s分量和v分量。

另一示例性实施例可以是一种装置,所述装置包括:硬件设备,所述硬件设备用于从第一颜色空间转换到第二颜色空间,在所述第二颜色空间中使用二维查找表,并且从所述第二颜色空间转换到所述第一颜色空间;以及存储设备,所述存储设备被耦合到所述设备。所述装置可以包括:所述设备用于使用多于一个二维查找表。所述装置可以包括:其中所述第一颜色空间是rgb。所述装置可以包括:其中所述第二颜色空间是ycbcr。所述装置可以包括:所述设备用于使用所述第二颜色空间来实现仅具有两个变化颜色分量的校正。所述装置可以包括:所述设备用于从其中所有三个分量都发生变化的所述第一颜色空间切换。所述装置可以包括:所述设备用于对于给定的像素,确定将使用至少两个二维查找表中的哪一个。所述装置可以包括:所述设备用于判定像素颜色比阈值更深还是更浅。所述装置可以包括:所述设备用于检测rgb像素的色相;从用户处接收色相和饱和度调整因子;转换到ycbcr颜色空间;基于所述因子调整cb和cr颜色分量;并且然后往回转换到rgb颜色空间。所述装置可以包括:所述设备用于从rgb转换到hsv颜色空间;将色相区域划分为n个子区域;以及使用n个二维查找表来修改s分量和v分量。

本文所描述的图形处理技术可以采用各种硬件架构来实现。例如,图形功能可以被集成在芯片组内。可替代地,可以使用分立式图形处理器。作为又另一实施例,图形功能可以由包括多核处理器的通用处理器来实现。

贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包含在本公开内涵盖的至少一个实施方式中。因此,短语“一个实施例”或“在实施例中”的出现不一定指代相同的实施例。此外,除了所示的特定实施例以外,可以以其他适当的形式来实现所述特定特征、结构或特性,并且所有这样的形式都可以涵盖在本申请的权利要求内。

尽管已经描述了有限数量的实施例,但是本领域技术人员将由此意识到许多的修改和变化。旨在使得所附权利要求书覆盖落入本公开的真正精神和范围的所有此类修改和变体。

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