CN106575451B - 用于对像素区域进行着色的方法、装置、设备及存储介质 - Google Patents

用于对像素区域进行着色的方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN106575451B
CN106575451B CN201580042385.0A CN201580042385A CN106575451B CN 106575451 B CN106575451 B CN 106575451B CN 201580042385 A CN201580042385 A CN 201580042385A CN 106575451 B CN106575451 B CN 106575451B
Authority
CN
China
Prior art keywords
pixel
shading
sample
per
processor
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.)
Active
Application number
CN201580042385.0A
Other languages
English (en)
Other versions
CN106575451A (zh
Inventor
拉胡尔·P·萨瑟
马尔科·萨尔维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN106575451A publication Critical patent/CN106575451A/zh
Application granted granted Critical
Publication of CN106575451B publication Critical patent/CN106575451B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/46Descriptors for shape, contour or point-related descriptors, e.g. scale invariant feature transform [SIFT] or bags of words [BoW]; Salient regional features
    • G06V10/467Encoded features or binary features, e.g. local binary patterns [LBP]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/18Timing circuits for raster scan displays
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

着色率可以由像素内的分析样本设定。然后,基于该分析,系统确定针对像素区域使用粗像素、像素还是样本着色。基于所确定的着色类型,可以设定着色率。

Description

用于对像素区域进行着色的方法、装置、设备及存储介质
背景技术
本文涉及图形处理。
着色是将光照效果应用于要描绘的对象的过程。延迟着色是,在可见性(覆盖范围)被解析之后执行渲染的情况下,渲染场景的一种流行方式。特别地,会将着色延迟到所有遮挡被解析之后。通常这是在两个过程中进行。第一过程将着色所需的输入(表面法线、深度、视图向量等)写入到被称为几何缓冲区或G-缓冲区的缓冲区中。第二过程是进行着色计算的全屏过程(或计算着色器过程)。
针对每个G-缓冲区样本,通过读取当前样本的G-缓冲区、累加所有光的贡献,然后输出最终表面颜色来进行着色。
延迟着色的一个优点是仅对可见的表面片段进行着色。将着色延迟,直到完成所有几何处理。
当可见率与着色率不同时(例如,在多重采样抗锯齿(MSAA)或粗像素着色(CPS)中),难以决定以什么速率(每像素或每样本)来执行着色,因为G-缓冲区对全可见率可用。虽然这是安全的,但是以可见率对G-缓冲区进行着色是相当低效的(并且通常不需要)。
附图说明
针对以下附图描述了一些实施例:
图1是用于分析屏幕区域并将屏幕区域分类为样本、像素或粗略像素并且尽可能地减小着色率的流程图;
图2是根据一个实施例的数据处理系统的框图;
图3是根据一个实施例的图2所示的处理器的框图;
图4是根据一个实施例的图2的图形处理器的框图;
图5是根据一个实施例的图形处理引擎的框图;
图6是根据另一实施例的图形处理器的框图;
图7示出了一个实施例的线程执行逻辑;
图8是根据一个实施例的图形处理器执行单元指令格式的框图;
图9是图形处理器的另一实施例的框图;
图10A是根据一个实施例的图形处理器命令格式的框图;
图10B是根据一个实施例的图形处理器命令序列的框图;以及
图11是一个实施例的图形软件架构。
具体实施方式
通过分析屏幕区域中的样本,可以在该区域上将着色率减小到每像素一次或小于每像素一次(例如每2x2个像素一次)。可以选择以比其他部分更低的速率来对渲染公式中的某些分量进行着色。本文所描述的概念同样适用于这种多速率延迟着色。
为了复制MSAA产生的着色结果,当像素完全由单个图元覆盖时,则以每像素一次进行着色,如果该像素由不止一个图元覆盖,则以图元的数目作为次数进行着色。然而,关于有多少图元覆盖给定像素及其覆盖情况的信息通常在G-缓冲区中不可用。
一种技术通过分析视图空间深度、视图空间深度导数、及法线在像素内如何变化来找出像素内的样本是否被单个图元覆盖。参见Lauritzen等,“Deferred Rendering forCurrent and Future Rendering Pipelines”,SIGGRAPH 2010,课程:“BeyondProgrammable Shading”,2010年7月29日。如果表面被确定为局部平滑,可以将着色率减小到每像素一次并且针对该像素内的所有样本重新使用着色结果。
可以以类似的方式分析大于一个像素的区域(例如,2×2)。如果确定G-缓冲区表面在2×2区域或图块上局部平滑,则可以将着色率降低到每2×2区域一次(或每粗像素一次)。如果着色公式具有低频分量,则可以将这种分量的着色率减小到每2x2区域一次,并且在参与的像素中重新使用着色。
可以将标识粗像素的这一概念扩展到多级别的粗糙度并构建分级的着色结构。然后,在某级别处的子像素可以重新使用其上级的着色结果。图1示出了根据一种算法的流程图。
图1所示的序列可以在软件、固件和/或硬件中实现。在软件和固件实施例中,其可以由存储在一个或多个非暂态计算机可读介质(例如磁、光或半导体存储设备)中的计算机可读指令来执行。
图1的序列开始于分析一个像素位置(屏幕位置u,v)内的样本,以找出在最坏状况下与参考样本值偏离多少。换言之,确定该区域局部有多平滑。在一个实施例中,可以确定视图空间深度、视图空间深度导数和法线中的一个或多个在每像素中相对于参考像素的变化。参考像素可以是该区域中的任何像素,例如,将左上角的像素作为参考像素。这里重要的是:没有一个像素应与参考像素差别太大。由于检查了所有像素,因此选择哪个像素作为参考像素并不重要。可以从G-缓冲区获得该信息(例如,通过从深度缓冲区获取该信息)。
在菱形框12处的检查基于平滑度确定来确定是否应当使用每样本着色(例如,MSAA)。如果不是,则如框14所示,分析来自2x2像素块中的每个像素的代表性样本。也可以使用其他大小的块。
在菱形框16处的检查基于平滑度确定来确定是否应当使用每像素着色。如果不是,则在框20中针对粗像素着色分量来分析该块。在功能上,该块可以从2x2块中的每个像素读取代表性样本(例如,样本0)。然后,它将来自像素1、2和3的样本与来自像素0的样本进行比较(类似于在同一像素内将样本与框12中的参考样本进行比较),以决定是否需要进行每像素着色。粗像素着色是在帧或图片上以不同速率着色。如果是,则针对每像素着色分量来估计该块,如框18所示。然后在框22处实现最终的着色颜色。
如果针对每样本着色的第一检查确定了应该进行每样本着色,则在框24处估计每样本分量,接着在框22处实现最终着色颜色。因此,将该块标识为以下类型之一:样本着色、像素着色或粗像素着色。然后可以使用该分类结果来获得着色率。其优势在于,可以尽可能地降低着色率。
一些实现方案可以选择实现通过使用硬件加速度来计算屏幕空间中的区域上的值的散布的算法部分。一个这样的实现方案使用机器创建服务(MCS)压缩位和新的采样器命令,sample_LoadDelta。结合后,可以使用以下扩展:
<T>LoadDelta(uint2 uv,uint refSample)。
用户调用上述命令以分析屏幕空间位置uv处的像素位置内的表面值,并找出它们(在最坏情况下)与refSample处的值偏离多少。系统可以利用MCS位,并且如果所有位指向同一样本则返回0,因为所有值相同。
如果不是这种情况,则执行单元发出命令sample_LoadDelta到采样器。然后,采样器加载所有样本并计算与由refSample指定的参考样本值在通道方面的差异。
通过将计算卸载到采样器并通过使用MCS,该算法可以比在软件中运行更节能。因此,当MCS==0时,节省了带宽但跳过了纹理读取。当MCS!=0时,节省了采样器到EU的带宽。
类似地,可以想象出通过使用一个或多个颜色压缩方案(类似于MCS)在指定位置处指定的N×N区域上(或在粗像素上)工作的着色器指令的变形。这种指令可以用于将着色率减小到低于像素速率的速率。
这些技术不仅适用于延迟着色,而且也适用于局部后处理算法,例如颜色校正(例如,色调旋转、饱和度、对比度调整等)。通常在解析操作显示伪影之后应用后处理算法。使用这种技术,可以尽可能地仅以像素速率执行后处理,然后执行解析。每当深度或法线的变化超过用户定义的阈值时,可以返回到以MSAA速率的后处理。
Lauritzen提出控制每个像素和每个样本之间的着色率。创建G-缓冲区以包括视图空间位置、视图空间Z的导数和表面法线。如果某物需要着色,则lsPersample(..)函数返回
可以在perSample[]数组中收集此分析的结果。仅当每个像素被确定为以像素速率着色时,才可以在屏幕空间的2×2区域上进行类似的分析。在一个实施例中,可以通过使用具有最大允许视图空间深度(delta)的代表性样本(例如,样本0)在2×2区域上进行分析,该最大允许视图空间深度是在分析有贡献的像素时所允许视图空间深度的两倍。
一旦标识了区域的着色率,则可以通过同时以相似的着色率对所有区域进行着色并将中间结果存储在存储器(或者共享本地存储器(SLM)或全局存储器)中来增加或最大化单指令多数据(SIMD)效率。当对下一个更高速率的区域进行着色时,通过读取其上级的输出数据来添加来自其上级的贡献。
纹理化需要仔细地进行,并同时以粗速率进行着色。通常对于延迟着色,纹理化是在G-缓冲区生成过程中进行的。为了使着色频率(其可以是2×2大小的像素或1个像素)与采样频率相匹配,需要调整mip层级(通过使用偏置采样器)或者可以对来自较高mip层级的采样进行滤波。如果不小心处理,可以看到针对低频着色分量的锯齿。
图2是根据实施例的数据处理系统100的框图。数据处理系统100包括一个或多个处理器102和一个或多个图形处理器108,并且可以是单处理器台式系统、多处理器工作站系统或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,数据处理系统100是用于移动、手持或嵌入式设备中的片上系统集成电路(SOC)。
数据处理系统100的实施例可以包括或在基于服务器的游戏平台内并入游戏控制台(包括游戏和媒体控制台、移动游戏控制台、手持游戏控制台或在线游戏控制台)。在一个实施例中,数据处理系统100是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统100还可以包括、耦接到或集成在可穿戴设备(例如,智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备)。在一个实施例中,数据处理系统100是具有一个或多个处理器102和由一个或多个图形处理器108生成的图形界面的电视或机顶盒设备。
一个或多个处理器102各自包括一个或多个处理器核107以处理在被执行时执行系统和用户软件的操作的指令。在一个实施例中,一个或多个处理器核107中的每个被配置为处理特定指令集109。指令集109可以辅助复杂指令集计算(CISC)、精简指令集计算(RISC)或者经由超长指令字(VLIW)的计算。多个处理器核107可以各自处理不同的指令集109,指令集109可以包括用于辅助其他指令集仿真的指令。处理器核107还可以包括其它处理设备,例如数字信号处理器(DSP)。
在一个实施例中,处理器102包括缓存存储器104。根据架构,处理器102可以具有单个内部缓存或多级内部缓存。在一个实施例中,缓存存储器在处理器102的各种组件之间共享。在一个实施例中,处理器102还使用外部缓存(例如,3级(L3)缓存或最后级缓存(LLC))(未示出),其中该外部缓存可以通过使用已知的缓存一致性技术在处理器核107之间共享。寄存器文件106附加地包括在处理器102中,其可以包括用于存储不同类型数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以是特定于处理器102的设计。
处理器102耦接到处理器总线110以在处理器102和系统100中的其他组件之间传输数据信号。系统100使用示例性“集线器(hub)”系统架构,其包括存储器控制器集线器116和输入输出(I/O)控制器集线器130。存储器控制器集线器116辅助存储器设备与系统100的其它组件之间的通信,而I/O控制器集线器(ICH)130提供经由本地I/O总线到I/O设备的连接。
存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、快闪存储器设备或具有用作过程存储器的合适性能的某些其它存储器设备。存储器120可以存储数据122和指令121,用于在处理器102执行过程时使用。存储器控制器集线器116还与可选的外部图形处理器112耦接,可选的外部图形处理器112可以与处理器102中的一个或多个图形处理器108进行通信以执行图形和媒体操作。
ICH 130使外围设备能够经由高速I/O总线连接到存储器120和处理器102。I/O外围设备包括音频控制器146、固件接口128、无线收发器126(例如,Wi-Fi、蓝牙)、数据存储设备124(例如,硬盘驱动器、闪存等)、以及用于将传统(例如,个人系统2(PS/2))设备耦接到系统的传统I/O控制器。一个或多个通用串行总线(USB)控制器142连接输入设备(例如,键盘和鼠标144的组合)。网络控制器134也可以耦接到ICH 130。在一个实施例中,高性能网络控制器(未示出)耦接到处理器总线110。
图3是具有一个或多个处理器核202A-N、集成存储器控制器214和集成图形处理器208的处理器200的实施例的框图。处理器200可以包括额外的核,直到并包括由虚线框表示的附加核202N。每个核202A-N包括一个或多个内部缓存单元204A-N。在一个实施例中,每个核还可以访问一个或多个共享的缓存单元206。
内部缓存单元204A-N和共享缓存单元206表示处理器200内的缓存存储器层级。缓存存储器层级可以包括每个核内的至少一个级别的指令和数据缓存以及一个或多个级别的共享中级缓存(例如,2级(L2)、3级(L3)、4级(L4)或其他级缓存),其中外部存储器之前的最高级缓存被分类为最后级缓存(LLC)。在一个实施例中,缓存一致性逻辑维持各种缓存单元206和204A-N之间的一致性。
处理器200还可以包括一组(一个或多个)总线控制器单元216和系统代理210。一个或多个总线控制器单元管理一组外围总线,例如一个或多个外围组件互连总线(例如,PCI、PCI Express)。系统代理210为各种处理器组件提供管理功能。在一个实施例中,系统代理210包括一个或多个集成存储器控制器214,以管理对各种外部存储器设备(未示出)的访问。
在一个实施例中,核202A-N中的一个或多个包括对同步多线程的支持。在这种实施例中,系统代理210包括用于在多线程处理期间协调和操作核202A-N的组件。系统代理210还可以包括电源控制单元(PCU),其包括用于调节核202A-N和图形处理器208的电源状态的逻辑和组件。
处理器200还包括图形处理器208以执行图形处理操作。在一个实施例中,图形处理器208与一组共享缓存单元206和系统代理单元210(包括一个或多个集成存储器控制器214)耦接。在一个实施例中,显示控制器211与图形处理器208耦接,以将图形处理器输出驱动到一个或多个相耦接的显示器。显示控制器211可以是经由至少一个互连与图形处理器耦接的单独模块,或者可以集成在图形处理器208或系统代理210内。
在一个实施例中,基于环的互连单元212用于耦接处理器200的内部组件,然而,可以使用替代的互连单元(例如,点对点互连、交换互连或包括本领域公知技术的其它技术)。在一个实施例中,图形处理器208经由I/O链路213与环形互连212耦接。
示例性I/O链路213表示多种I/O互连中的至少一个,其中,多种I/O互连包括封装上的I/O互连,其辅助各种处理器组件和高性能嵌入式存储器模块218(例如,eDRAM模块)之间的通信。在一个实施例中,核202A-N中的每个和图形处理器208使用嵌入式存储器模块218作为共享的最后级缓存。
在一个实施例中,核202A-N是执行同一指令集架构的同构核。在另一个实施例中,核202A-N在指令集架构(ISA)方面是异构的,其中核202A-N中的一个或多个执行第一指令集,而其他核中的至少一个核执行第一指令集的子集或不同的指令集。
处理器200可以是一个或多个衬底的一部分或在一个或多个衬底上实现,其中衬底使用下述多种处理技术中的任何一种:例如,互补金属氧化物半导体(CMOS)、双极结/互补金属氧化物半导体(BiCMOS)或N型金属氧化物半导体逻辑(NMOS)。此外,处理器200可以在一个或多个芯片上实现或实现为具有所示组件(附加于其他组件)的片上系统(SOC)集成电路。
图4是图形处理器300的一个实施例的框图,图形处理器300可以是单独图形处理单元,或者可以是与多个处理核集成的图形处理器。在一个实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射I/O接口以及经由置于处理器存储器内的命令进行通信。图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部缓存、一个或多个共享外部缓存和/或到系统存储器的接口。
图形处理器300还包括显示控制器302,用于将显示输出数据驱动到显示设备320。显示控制器302包括针对一个或多个覆盖平面的硬件,用于显示和组合多层的视频或用户界面元件。在一个实施例中,图形处理器300包括视频编解码器引擎306,用于编码、解码或转码到一个或多个媒体编码格式、从一个或多个媒体编码格式转码或在一个或多个媒体编码格式之间进行转码,其中,媒体编码格式包括但不限于运动图像专家组(MPEG)格式(例如,MPEG-2)、高级视频编码(AVC)格式(例如,H.264/MPEG-4AVC)、电影电视工程师协会(SMPTE)421MA/C-1、联合图像专家组JPEG格式(例如,JPEG)以及动态JPEG(MJPEG)。
在一个实施例中,图形处理器300包括块图像传送(BLIT)引擎304,用于执行包括例如位边界块传送的二维(2D)光栅化操作。然而,在一个实施例中,通过使用图形处理引擎(GPE)310的一个或多个组件来执行2D图形操作。图形处理引擎310是用于执行图形操作(包括三维(3D)图形操作和媒体操作)的计算引擎。
GPE 310包括3D流水线312,用于执行3D操作,例如,通过使用作用于3D基本形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景。3D流水线312包括在元件内执行各种任务和/或产生执行线程到3D/媒体子系统315的可编程和固定功能元件。虽然3D流水线312可用于执行媒体操作,但GPE 310的实施例还包括特定用于执行媒体操作(例如,视频后处理和图像增强)的媒体流水线316。
在一个实施例中,媒体流水线316包括固定功能或可编程逻辑单元,用于执行一个或多个专用媒体操作,例如视频解码加速、视频去交错和视频编码加速,以代替或代表视频编解码器引擎306。在一个实施例中,媒体流水线316还包括线程产生单元以产生用于在3D/媒体子系统315上执行的线程。所产生的线程执行针对3D/媒体子系统中包括的一个或多个图形执行单元上的媒体操作的计算。
3D/媒体子系统315包括用于执行由3D流水线312和媒体流水线316产生的线程的逻辑。在一个实施例中,流水线向3D/媒体子系统315发送线程执行请求,其中,3D/媒体子系统315包括用于仲裁以及调度各种请求到可用线程执行资源的线程调度逻辑。执行资源包括用于处理3D和媒体线程的图形执行单元的阵列。在一个实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部缓存。在一个实施例中,子系统还包括共享存储器(包括寄存器和可寻址存储器),以在线程之间共享数据并存储输出数据。
图5是用于图形处理器的图形处理引擎410的实施例的框图。在一个实施例中,图形处理引擎(GPE)410是图4中所示的GPE 310的一个版本。GPE 410包括3D流水线412和媒体流水线416,其中每个可以是不同于或类似于图4的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、运动估计模块434和图像缩放和滤波模块436。去噪声/去交错模块432包括用于在解码的视频数据上执行去噪声或去交错算法中的一个或多个的逻辑。去交错逻辑将交错的视频内容的交错域组合成单个视频帧。去噪声逻辑减少或消除来自视频和图像数据的数据噪声。在一个实施例中,去噪声逻辑和去交错逻辑是运动自适应的,并且基于在视频数据中检测到的运动量来使用空间或时间滤波。在一个实施例中,去噪声/去交错模块432包括专用运动检测逻辑(例如,在运动估计引擎434内)。
运动估计引擎434通过执行视频加速功能(例如,对视频数据的运动向量估计和预测)来为视频操作提供硬件加速。运动估计引擎确定描述在连续视频帧之间的图像数据变换的运动向量。在一个实施例中,图形处理器媒体编解码器使用视频运动估计引擎434来以宏块级对视频执行操作,否则通过使用通用处理器执行时可能是计算密集的。在一个实施例中,运动估计引擎434通常可用于图形处理器组件以协助对视频数据内的运动的方向或大小敏感或适应的视频解码和处理功能。
图像缩放和滤波模块436执行图像处理操作以增强所生成的图像和视频的视觉质量。在一个实施例中,缩放和滤波模块436在将数据提供给执行单元阵列414之前处理采样操作期间的图像和视频数据。
在一个实施例中,图形处理引擎410包括数据端口444,该数据端口444为图形子系统提供了附加机制以访问存储器。数据端口444辅助针对包括下述内容的操作的存储器访问:渲染目标写入、常量缓冲区读取、暂时存储器空间读/写和介质表面访问。在一个实施例中,数据端口444包括用于缓存对存储器的访问的缓存存储器空间。缓存存储器可以是单个数据缓存或者被分成用于多个子系统的多个缓存(例如,渲染缓冲区缓存、常数缓冲区缓存等),其中,子系统经由数据端口访问存储器。在一个实施例中,在执行单元阵列414中的执行单元上执行的线程通过经由数据分布互连交换消息来与数据端口通信,其中数据分布互联与图形处理引擎410的每个子系统耦接。
图6是图形处理器的另一实施例的框图。在一个实施例中,图形处理器包括环形互连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。在一个实施例中,共享资源包括共享缓存存储器和像素操作逻辑。其他共享资源也可以包括在图形处理器的各种实施例中。
图7示出了包括在图形处理引擎的一个实施例中采用的处理元件阵列的线程执行逻辑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,其对来自图形和媒体流水线的线程发起请求进行仲裁,并在一个或多个执行单元608A-N上实例化所请求的线程。例如,几何流水线(例如,图6的536)将顶点处理、曲面细分(tessellation)或几何处理线程调度到线程执行逻辑600。线程调度器604还可以处理来自正在执行的着色器程序的运行时线程产生请求。
一旦一组几何对象已被处理并光栅化成像素数据,则调用像素着色器602以进一步计算输出信息并使得结果被写入输出表面(例如,颜色缓冲区、深度缓冲区、模板缓冲区等)。在一个实施例中,像素着色器602计算各种顶点属性的值,其要插值到经光栅化的对象。像素着色器602然后执行API提供的像素着色器程序。为了执行像素着色器程序,像素着色器602经由线程调度器604将线程调度到执行单元(例如,608A)。像素着色器602使用取样器610中的纹理采样逻辑来访问存储在存储器中的纹理图中的纹理数据。对纹理数据和输入几何数据的算术运算计算针对每个几何片段的像素颜色数据,或丢弃一个或多个像素而不进行进一步处理。
在一个实施例中,数据端口614为线程执行逻辑600将经处理的数据输出到存储器以在图形处理器输出流水线上进行处理提供存储器访问机制。在一个实施例中,数据端口614包括或者耦接到一个或多个缓存存储器(例如,数据缓存612)以经由数据端口缓存存储器访问的数据。
图8是示出根据实施例的图形处理器执行单元指令格式的框图。在一个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框示出了通常包括在执行单元指令中的组分,而虚线包括可选的或仅包括在指令子集中的部分。所示出的指令格式是宏指令,因为它们是提供给执行单元的指令,与处理指令时从指令解码产生的微操作正相反。
在一个实施例中,图形处理器执行单元原生地支持以128位格式710的指令。基于所选择的指令、指令选项和操作数的数目,64位压缩指令格式730可用于一些指令。本地128位格式710提供对所有指令选项的访问,而一些选项和运算被限制在64位格式730。在64位格式730中可用的本地指令随实施例变化。在一个实施例中,通过使用索引字段713中的一组索引值来部分地压缩指令。执行单元硬件基于索引值引用一组压缩表,并使用压缩表输出来重构以128位格式710的原生指令。
对于每种格式,指令操作码712定义了执行单元要执行的操作。执行单元在每个操作数的多个数据元素上并行执行每个指令。例如,响应于加指令,执行单元在表示纹理元素或图片元素的每个颜色通道上执行同步的加运算。默认情况下,执行单元在操作数的所有数据通道上执行每个指令。指令控制字段712使得能够控制某些执行选项,例如通道选择(例如,预测)和数据通道顺序(例如,swizzle)。对于128位指令710,执行尺寸字段716限制了将被并行执行的数据通道的数目。执行尺寸字段716不可用于64位压缩指令格式730中。
一些执行单元指令具有多达三个操作数,包括两个源操作数src0720、srd 722,以及一个目的地718。在一个实施例中,执行单元支持双目的地指令,在该指令中隐含了目的地中的一个。数据操纵指令可以具有第三源操作数(例如,SRC2 724),其中指令操作码JJ12确定源操作数的数目。指令的最后一个源操作数可以是与指令一起传递的立即值(例如,硬编码)。
在一个实施例中,基于操作码位字段对指令进行分组以简化操作码解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的类型。所示的精确的操作码分组是示例性的。在一个实施例中,移动和逻辑操作码分组742包括数据移动和逻辑指令(例如,mov、cmp)。移动和逻辑分组742共享五个最高有效位(MSB),其中移动指令是以0000xxxxb(例如,0x0x)的形式,而逻辑指令是以0001xxxb(例如0x01)的形式。流控制指令分组744(例如,call、jmp)包括以0010xxxxb(例如,0x20)的形式的指令。杂项指令分组746包括混合的指令,其包括以0011xxxxb(例如,0x30)的形式的同步指令(例如,wait、send)。并行数学指令分组748包括以0100xxxxb(例如,0x40)形式的分量形式算术指令(例如,add、mul)。并行数学分组748在数据通道上并行执行算术运算。向量数学分组750包括以0101xxxxb(例如,0x50)的形式的算术指令(例如,dp4)。向量数学分组执行诸如向量操作数的点积计算的算术。
图9是包括图形流水线820、媒体流水线830、显示引擎840、线程执行逻辑850和渲染输出流水线870的图形处理器的另一实施例的框图。在一个实施例中,图形处理器是在包括一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器由到一个或多个控制寄存器(未示出)的寄存器写入控制或者通过经由环形互连802发布到图形处理器的命令控制。环形互连802将图形处理器耦接到其它处理组件(例如,其它图形处理器或通用处理器)。来自环形互连的命令由命令流送器803解译,其中命令流送器803向图形流水线820或媒体流水线830的各个组件提供指令。
命令流送器803指导顶点获取器805组件的操作,其中顶点获取器从存储器读取顶点数据并执行由命令流送器803提供的顶点处理命令。顶点获取器805将顶点数据提供给顶点着色器807,其中顶点着色器807对每个顶点执行坐标空间变换和光照操作。顶点获取器805和顶点着色器807通过经由线程调度器831将执行线程调度到执行单元852A、852B来执行顶点处理指令。
在一个实施例中,执行单元852A、852B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。执行单元852A、852B具有附加的L1缓存851,其专用于每个阵列或在阵列之间共享。缓存可以被配置作为数据缓存、指令缓存或被分区以包括不同分区中的数据和指令的单个缓存。
在一个实施例中,图形流水线820包括曲面细分组件以执行3D对象的硬件加速曲面细分。可编程外壳着色器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经由数据端口856互连以执行存储器访问并与图形引擎的渲染输出流水线组件通信。在一个实施例中,采样器854、缓存851、858和执行单元852A、852B每个都具有单独的存储器访问路径。
在一个实施例中,渲染输出流水线870包括光栅和深度测试组件873,其将基于顶点的对象转换成与其相关联的基于像素的表示。在一个实施例中,光栅逻辑包括用于执行固定功能三角形和直线光栅化的加窗/遮蔽单元。在一个实施例中,相关联的渲染和深度缓冲区缓存878、879也是可用的。像素操作组件877对数据执行基于像素的操作,但在一些实例中,与2D操作(例如,采用混合的位块图像传送)相关联的像素操作由2D引擎841执行,或者代替为在显示时由显示器控制器843使用覆盖显示平面。在一个实施例中,共享L3缓存875可用于所有图形组件,从而允许在不使用主系统存储器的情况下共享数据。
图形处理器媒体流水线830包括媒体引擎837和视频前端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。
图10A是示出根据实施例的图形处理器命令格式的框图,并且图10B是示出根据实施例的图形处理器命令序列的框图。图10A中的实线框示出了通常包括在图形命令中的部分,而虚线包括可选的或仅包括在图形命令的子集中的部分。图10A的示例性图形处理器命令格式900包括用于标识命令的目标客户端902的数据字段、命令操作码(操作码)904和命令的相关数据906。子操作码905和命令大小908也包括在一些命令中。
客户端902指定处理命令数据的图形设备的客户端单元。在一个实施例中,图形处理器命令解析器检查每个命令的客户端字段以决定命令的进一步处理并将命令数据路由到适当的客户端单元。在一个实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每个客户端单元具有相对应的处理命令的处理流水线。一旦客户端单元接收到命令,客户端单元读取操作码904和子操作码905(如果存在)以确定要执行的操作。客户端单元通过使用命令的数据字段906中的信息来执行命令。对于一些命令,期望显式的命令大小908指定命令的大小。在一个实施例中,命令解析器基于命令操作码自动确定至少一些命令的大小。在一个实施例中,通过双字的倍数来将命令对齐。
图10B中的流程图示出了采样命令序列910。在一个实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示用于建立、执行并终止一组图形操作的命令序列的版本。出于示例性目的,示出和描述了采样命令序列,然而实施例不限于这些命令或命令序列。此外,命令可以作为命令序列中的一批命令被发出,使得图形处理器将以至少部分同时的方式处理命令序列。
样本命令序列910可以开始于流水线刷新命令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将着色器执行线程调度给图形处理器执行单元。
通过执行934命令或事件来触发3D流水线922。在一个实施例中,寄存器写入触发命令执行。在一个实施例中,通过命令序列中的“go”或“kick”命令触发执行。在一个实施例中,通过使用流水线同步命令来触发命令执行以通过图形流水线刷新命令序列。3D流水线将执行针对3D图元的几何处理。一旦操作完成,所得到的几何对象被光栅化,并且像素引擎对所得到的像素着色。还可以包括针对这些操作的用于控制像素着色和像素后端操作的附加命令。
当执行媒体操作时,采样命令序列910遵循媒体流水线924路径。一般来说,针对媒体流水线924的编程的具体使用和方式取决于要执行的媒体或计算操作。在媒体解码期间,可以将特定媒体解码操作卸载到媒体流水线。还可以绕过媒体流水线,并且可以通过使用由一个或多个通用处理核提供的资源全部或部分地执行媒体解码。在一个实施例中,媒体流水线还包括用于通用图形处理器单元(GPGPU)操作的元素,其中图形处理器用于通过使用未与图形图元的渲染显式相关的计算着色器程序来执行SIMD向量操作。
以与3D流水线922类似的方式配置媒体流水线924。将一组媒体流水线状态命令940调度到或置入到命令队列中媒体对象命令942之前。媒体流水线状态命令940包括用于配置将用于处理媒体对象的媒体流水线元素的数据。这包括用于配置媒体流水线内的视频解码和视频编码逻辑的数据(例如,编码或解码格式)。媒体流水线状态命令940还支持使用指向包括一批状态设置的“间接”状态元素的一个或多个指针。
媒体对象命令942提供指向媒体对象的指针以供媒体流水线处理。媒体对象包括包含要处理的视频数据的存储器缓冲区。在一个实施例中,在发出媒体对象命令942之前,所有媒体流水线状态必须是有效的。一旦配置了流水线状态并且媒体对象命令942已排队,则通过执行934命令或等同的执行事件(例如,寄存器写入)来触发媒体流水线924。然后可以通过由3D流水线922或媒体流水线924提供的操作来对来自媒体流水线924的输出进行后处理。在一个实施例中,以与媒体操作类似的方式配置和执行GPGPU操作。
图11示出了根据实施例的用于数据处理系统的示例性图形软件架构。软件架构包括3D图形应用1010、操作系统1020和至少一个处理器1030。处理器1030包括图形处理器1032和一个或多个通用处理器核1034。图形应用1010和操作系统1020每个都在数据处理系统的系统存储器1050中执行。
在一个实施例中,3D图形应用1010包括了包括着色器指令1012的一个或多个着色器程序。着色器语言指令可以是高级着色器语言,例如,高级着色器语言(HLSL)或OpenGL着色器语言GLSL)。应用程序还包括适于由通用处理器核1034执行的机器语言的可执行指令1014。应用程序还包括由顶点数据定义的图形对象1016。
操作系统1020可以是来自微软公司的操作系统、专有的类UNIX操作系统、或者是使用Linux内核的变形的开源类UNIX操作系统。当使用Direct3DAPI时,操作系统1020使用前端着色器编译器1024将以HLSL的任何着色器指令1012编译为较低级着色器语言。编译可以是即时编译,或者应用可以执行共享预编译。在一个实施例中,在3D图形应用1010的编译期间将高级着色器编译为低级着色器。
用户模式图形驱动器1026可以包含后端着色器编译器1027以将着色器指令1012转换成硬件特定表示。当使用OpenGL API时,将以GLSL高级语言的着色器指令1012传递到用户模式图形驱动器1026用于编译。用户模式图形驱动器使用操作系统内核模式功能1028与内核模式图形驱动器1029通信。内核模式图形驱动器1029与图形处理器1032通信以调度命令和指令。
就本文描述的各种操作或功能而言,它们可以被描述或定义为硬件电路、软件代码、指令、配置和/或数据。内容可以实现为硬件逻辑或直接作为可执行软件(“对象”或“可执行”形式)、源代码、设计用于在图形引擎上执行的高级着色器代码,或者用于特定处理器或图形核的指令集中的低级汇编语言代码。本文描述的实施例的软件内容可以通过在其上存储有该内容的制造品,或者通过操作通信接口以经由通信接口发送数据的方法来提供。
非暂态机器可读存储介质可以使得机器执行所描述的功能或操作,并且包括以机器(例如,计算设备,电子系统等)可访问的形式存储信息的任何机制,例如,可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等)。通信接口包括与任何硬连线、无线、光学等介质相接口以与另一设备进行通信的任何机制,例如存储器总线接口、处理器总线接口、互联网连接、磁盘控制器等。通信接口通过提供配置参数或发送信号来配置,以准备通信接口来提供描述软件内容的数据信号。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。
所描述的各种组件可以是用于执行所描述的操作或功能的装置。本文所描述的每个组件包括软件、硬件或其组合。组件可以被实现为软件模块、硬件模块、专用硬件(例如,特定应用硬件,特定应用集成电路(ASIC),数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。除了本文所描述的内容,可以对所公开的本发明的实施例和实现方式进行各种修改,而不背离本发明的范围。因此,本文的说明和示例应当解释为说明性的,而非限制性的。本发明的范围应仅通过参考所附权利要求来度量。
以下条款和/或实施例涉及另外的实施例:
一个示例实施例可以是一种方法,包括分析像素内的样本、确定针对像素区域使用粗像素、像素还是采样着色,并且基于所确定的着色类型,设置着色率。该方法还可以包括确定是否在所述区域中使用每样本着色。如果不是,则该方法还可以包括分析像素区域中每个像素的代表性样本。如果是,该方法还可以包括估计每像素样本分量。该方法还可以包括确定是否使用每像素着色。如果不是,则该方法还可以包括估计每像素着色分量。如果是,则该方法还可以包括估计每粗像素着色分量。该方法还可以包括其中所述分析样本包括确定样本与参考样本偏离多少。该方法还可以包括其中所述分析样本包括确定所述区域有多平滑。该方法还可以包括同时以相同着色率来对所有区域进行着色。
另一示例实施例可以是一个或多个非暂态计算机可读介质,存储有由处理器执行指令以用于执行包括下述内容的序列:分析像素内的样本、确定针对像素区域使用粗像素、像素还是样本着色、并且基于所确定的着色类型,设置着色率。该介质还可以存储用于执行包括下述内容的序列的指令:确定是否在所述区域中使用每样本着色。如果不是,则该介质还可以存储用于执行包括下述内容的序列的指令:分析像素区域中每个像素的代表性样本。如果是,则该介质还可以存储用于执行包括下述内容的序列的指令:估计每像素样本分量。该介质还可以存储用于执行包括下述内容的序列的指令:确定是否使用每像素着色。如果不是,则该介质还可以存储用于执行包括下述内容的序列的指令:估计每像素着色分量。如果是,则该介质还可以存储用于执行包括下述内容的序列的指令:估计每粗像素着色分量。该介质还可以存储用于执行包括所述序列的指令,其中所述分析样本包括确定样本与参考样本偏离多少。该介质还可以存储用于执行包括所述序列的指令,其中分析样本包括确定所述区域有多平滑。该介质还可以存储用于执行包括下述内容的序列的指令:同时以相同着色率来对所有区域进行着色。
另一示例实施例可以是一种装置,包括处理器和耦接到该处理器的存储设备,处理器用于分析像素内的样本,确定针对像素区域使用粗像素、像素还是样本着色,以及基于所确定的着色类型,设置着色率。该装置可以包括所述处理器用于确定是否在所述区域中使用每样本着色。如果不是,则该装置可以包括所述处理器用于分析像素区域中每个像素的代表性样本。如果是,则该装置可以包括所述处理器用于估计每像素样本分量。该装置可以包括所述处理器用于确定是否使用每像素着色。如果不是,则该装置可以包括所述处理器用于估计每像素着色分量。如果是,该装置可以包括所述处理器用于估计每粗像素着色分量。该装置可以包括操作系统、电池和固件以及用于更新所述固件的模块。
本文所描述的图形处理技术可以是在各种硬件架构中实现。例如,图形功能可以集成在芯片组内。可选地,可以使用离散图形处理器。作为另一实施例,图形功能可以由包括多核处理器的通用处理器来实现。
贯穿本说明书对“一个实施例”或“实施例”的参考指代与实施例相结合地描述的特定特征、结构或特性包括在至少一个实施例中,其中实施例包括在本公开内。因此,短语“一个实施例”或“在实施例中”的出现不一定指的是同一实施例。此外,可以以除了所示的特定实施例之外的其他合适的形式来建立特定特征、结构或特性,并且所有这种形式可以被包括在本申请的权利要求中。
虽然已经描述了有限数目的实施例,但是本领域技术人员将认识到来自其中的许多修改和变化。旨在所附权利要求覆盖落入本公开的真实精神和范围内的所有这种修改和变化。

Claims (28)

1.一种方法,包括:
分析像素内的样本;
确定针对像素区域要使用的着色类型是粗像素着色、像素着色还是样本着色;
基于所确定的着色类型,设置着色率;
确定是否在所述区域中使用每样本着色;以及
如果不在所述区域中使用每样本着色,则分析像素区域中每个像素的代表性样本。
2.如权利要求1所述的方法,包括:确定是否使用每像素着色。
3.如权利要求2所述的方法,包括:如果不使用每像素着色,则估计每像素着色分量。
4.如权利要求2所述的方法,包括:如果使用每像素着色,则估计每粗像素着色分量。
5.如权利要求1所述的方法,其中分析样本包括确定样本与参考样本偏离多少。
6.如权利要求1所述的方法,其中分析样本包括确定所述区域有多平滑。
7.如权利要求1所述的方法,包括同时以相同着色率来对所有区域进行着色。
8.一种装置,包括:
处理器,用于分析像素内的样本,确定针对像素区域要使用的着色类型是粗像素着色、像素着色还是样本着色,基于所确定的着色类型,设置着色率,确定是否在所述区域中使用每样本着色,以及如果不在所述区域中使用每样本着色,则分析像素区域中每个像素的代表性样本;以及
耦接到所述处理器的存储设备。
9.如权利要求8所述的装置,所述处理器用于确定是否使用每像素着色。
10.如权利要求9所述的装置,如果不使用每像素着色,则所述处理器用于估计每像素着色分量。
11.如权利要求9所述的装置,如果使用每像素着色,则所述处理器用于估计每粗像素着色分量。
12.如权利要求8所述的装置,包括操作系统。
13.如权利要求8所述的装置,包括电池。
14.如权利要求8所述的装置,包括固件以及用于更新所述固件的模块。
15.一个或多个计算机可读介质,存储有由处理器执行的指令以用于执行包括下述内容的序列:
分析像素内的样本;
确定针对像素区域要使用的着色类型是粗像素着色、像素着色还是样本着色;
基于所确定的着色类型,设置着色率;
确定是否在所述区域中使用每样本着色;以及
如果不在所述区域中使用每样本着色,则分析像素区域中每个像素的代表性样本。
16.如权利要求15所述的介质,所述序列包括:确定是否使用每像素着色。
17.如权利要求16所述的介质,所述序列包括:如果不使用每像素着色,则估计每像素着色分量。
18.如权利要求16所述的介质,所述序列包括:如果使用每像素着色,则估计每粗像素着色分量。
19.如权利要求15所述的介质,其中分析样本包括确定样本与参考样本偏离多少。
20.如权利要求15所述的介质,其中分析样本包括确定所述区域有多平滑。
21.如权利要求15所述的介质,所述序列包括同时以相同着色率来对所有区域进行着色。
22.一种设备,包括:
用于分析像素内的样本的装置;
用于确定针对像素区域要使用的着色类型是粗像素着色、像素着色还是样本着色的装置;
用于基于所确定的着色类型,设置着色率的装置;
用于确定是否在所述区域中使用每样本着色的装置;以及
用于如果不在所述区域中使用每样本着色则分析像素区域中每个像素的代表性样本的装置。
23.如权利要求22所述的设备,包括:用于确定是否使用每像素着色的装置。
24.如权利要求23所述的设备,包括:用于如果不使用每像素着色则估计每像素着色分量的装置。
25.如权利要求23所述的设备,包括:用于如果使用每像素着色则估计每粗像素着色分量的装置。
26.如权利要求22所述的设备,其中用于分析样本的装置包括用于确定样本与参考样本偏离多少的装置。
27.如权利要求22所述的设备,其中所述分析样本包括确定所述区域有多平滑。
28.如权利要求22所述的设备,包括用于同时以相同着色率来对所有区域进行着色的装置。
CN201580042385.0A 2014-09-16 2015-08-19 用于对像素区域进行着色的方法、装置、设备及存储介质 Active CN106575451B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/487,432 US9934606B2 (en) 2014-09-16 2014-09-16 Deferred coarse pixel shading
US14/487,432 2014-09-16
PCT/US2015/045831 WO2016043909A1 (en) 2014-09-16 2015-08-19 Deferred coarse pixel shading

Publications (2)

Publication Number Publication Date
CN106575451A CN106575451A (zh) 2017-04-19
CN106575451B true CN106575451B (zh) 2019-12-10

Family

ID=55455236

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580042385.0A Active CN106575451B (zh) 2014-09-16 2015-08-19 用于对像素区域进行着色的方法、装置、设备及存储介质

Country Status (6)

Country Link
US (1) US9934606B2 (zh)
EP (1) EP3195269A4 (zh)
JP (1) JP6464538B2 (zh)
KR (1) KR102241398B1 (zh)
CN (1) CN106575451B (zh)
WO (1) WO2016043909A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10152764B2 (en) * 2015-03-24 2018-12-11 Intel Corporation Hardware based free lists for multi-rate shader
US10257449B2 (en) * 2016-01-05 2019-04-09 Nvidia Corporation Pre-processing for video noise reduction
US10186076B2 (en) * 2016-03-29 2019-01-22 Intel Corporation Per-sample MSAA rendering using comprehension data
US10535186B2 (en) 2016-08-30 2020-01-14 Intel Corporation Multi-resolution deferred shading using texel shaders in computing environments
US10109078B1 (en) * 2017-04-10 2018-10-23 Intel Corporation Controlling coarse pixel size from a stencil buffer
US10235799B2 (en) 2017-06-30 2019-03-19 Microsoft Technology Licensing, Llc Variable rate deferred passes in graphics rendering
US10510185B2 (en) * 2017-08-25 2019-12-17 Advanced Micro Devices, Inc. Variable rate shading
JP7290852B2 (ja) * 2018-12-07 2023-06-14 国立大学法人東京工業大学 多コンテンツ描画システム及び多コンテンツ描画方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6697063B1 (en) * 1997-01-03 2004-02-24 Nvidia U.S. Investment Company Rendering pipeline
US7692659B1 (en) * 2006-11-06 2010-04-06 Nvidia Corporation Color-compression using automatic reduction of multi-sampled pixels

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3499541B2 (ja) 2001-07-25 2004-02-23 ザイオソフト株式会社 3次元画像表示方法、装置およびプログラム
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7496416B2 (en) * 2005-08-01 2009-02-24 Luxology, Llc Input/output curve editor
US7948500B2 (en) * 2007-06-07 2011-05-24 Nvidia Corporation Extrapolation of nonresident mipmap data using resident mipmap data
US8325184B2 (en) * 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
TWI425440B (zh) * 2008-07-03 2014-02-01 Nvidia Corp 複合多重樣本/超樣本抗頻疊
US8605086B2 (en) 2008-07-03 2013-12-10 Nvidia Corporation Hybrid multisample/supersample antialiasing
US8823736B2 (en) * 2012-01-20 2014-09-02 Intel Corporation Graphics tiling architecture with bounding volume hierarchies
US9684997B2 (en) * 2012-06-27 2017-06-20 Pixar Efficient rendering of volumetric elements
US9082212B2 (en) 2012-12-21 2015-07-14 Nvidia Corporation Programmable blending via multiple pixel shader dispatches
US10733794B2 (en) * 2013-12-13 2020-08-04 Nvidia Corporation. Adaptive shading in a graphics processing pipeline

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6697063B1 (en) * 1997-01-03 2004-02-24 Nvidia U.S. Investment Company Rendering pipeline
US7692659B1 (en) * 2006-11-06 2010-04-06 Nvidia Corporation Color-compression using automatic reduction of multi-sampled pixels

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Deferred rendering for current and future rendering pipelines;Andrew Lauritzen;《ACM SIGGRAPH 2010》;20100729;19-20 *

Also Published As

Publication number Publication date
US20160078672A1 (en) 2016-03-17
US9934606B2 (en) 2018-04-03
JP2017531224A (ja) 2017-10-19
KR20170033868A (ko) 2017-03-27
JP6464538B2 (ja) 2019-02-06
CN106575451A (zh) 2017-04-19
EP3195269A1 (en) 2017-07-26
KR102241398B1 (ko) 2021-04-16
WO2016043909A1 (en) 2016-03-24
EP3195269A4 (en) 2018-03-07

Similar Documents

Publication Publication Date Title
US10521874B2 (en) Method and apparatus for a highly efficient graphics processing unit (GPU) execution model
EP3608880B1 (en) Merging fragments for coarse pixel shading using a weighted average of the attributes of triangles
CN106575451B (zh) 用于对像素区域进行着色的方法、装置、设备及存储介质
WO2016153688A1 (en) Hardware based free lists for multi-rate shader
CN106662999B (zh) 用于simd结构化分支的方法和装置
CN107004293B (zh) 仅位置流水线中的宽松拣分
CN106575440B (zh) 恒定缓冲器大小多采样抗混叠深度压缩
CN107077758B (zh) 零覆盖光栅化剔除
US20160379400A1 (en) Three-Dimensional Renderer
US9576384B2 (en) Hierarchical index bits for multi-sampling anti-aliasing
WO2017171982A1 (en) Per-sample msaa rendering using compression data
US10089779B2 (en) Apparatus and method for conservative rasterization of polygons
US20170178278A1 (en) Method and apparatus for updating a shader program based on current state
US9922449B2 (en) Apparatus and method for dynamic polygon or primitive sorting for improved culling
US9633452B2 (en) Resolving multi-sampled anti-aliasing buffers into single sampled buffers
US9600926B2 (en) Apparatus and method decoupling visibility bins and render tile dimensions for tiled rendering
US20160093102A1 (en) Efficient tessellation cache
WO2016200531A1 (en) Improving pixel merge unit efficiency by identifying silhouette pixels

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
GR01 Patent grant
GR01 Patent grant