CN107004293A - 仅位置流水线中的宽松拣分 - Google Patents
仅位置流水线中的宽松拣分 Download PDFInfo
- Publication number
- CN107004293A CN107004293A CN201580061612.4A CN201580061612A CN107004293A CN 107004293 A CN107004293 A CN 107004293A CN 201580061612 A CN201580061612 A CN 201580061612A CN 107004293 A CN107004293 A CN 107004293A
- Authority
- CN
- China
- Prior art keywords
- pel
- coordinate
- storehouse
- processor
- point
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- 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/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
在剔除管道中,已经计算了三角形顶点的位置,并且可以通过基于这些坐标取三角形组并对其进行拣分来探索所述坐标。作为一个示例,分块中所有三角形可以组成一个组。将所述三角形组拣分为仓。在每个仓内,所述三角形基于其深度被拣分。
Description
背景技术
减少图形处理中的存储器流量以降低功率使用和/或提高性能是非常重要的。
仅位置着色(position-only shading)减少了存储器流量。仅位置着色流水线(position-only shading pipeline)包括两个管道,即剔除管道和重放管道。三角形进入剔除管道,并且对顶点执行位置渲染。然后接着是不同类型的剔除测试,例如背面(BF)和视锥(VF)剔除,而且还有零覆盖剔除(丢弃不覆盖任何样本的三角形)。最终,剔除管道记录哪些三角形经得起所有剔除测试,例如记录在位流(每个三角形一个位)中。此后,执行重放管道,并且在此,仅对幸存的三角形的顶点执行全顶点着色,紧接着是图形管道的剩余部分。
附图说明
关于以下附图对一些实施例进行描述:
图1是一个实施例的示意性描绘;
图2是一个实施例的流程图;
图3是根据一个实施例的数据处理系统的框图;
图4是根据一个实施例在图3中所示的处理器的框图;
图5是根据一个实施例图3的图形处理器的框图;
图6是根据一个实施例的图形处理引擎的框图;
图7是根据另一个实施例的图形处理器的框图;
图8展示了一个实施例的线程执行逻辑;
图9是根据一个实施例的图形处理器执行单元指令格式的框图;
图10是图形处理器的另一个实施例的框图;
图11A是根据一个实施例的图形处理器命令格式的框图;
图11B是根据一个实施例的图形处理器命令序列的框图;以及
图12是一个实施例的图形软件架构。
具体实施方式
在仅位置着色流水线的剔除管道中,已经计算了三角形顶点的位置,并且可以通过基于这些坐标对三角形组进行拣分(sorting)来探索所述坐标。作为一个示例,绘制调用中的一系列三角形可以组成一组。所述三角形组被拣分至具有某个粒度的仓(bin)(例如,16×16像素分块仓)中。在每个仓中,则可以粗略地对所述三角形基于其深度进行拣分。
当栅格化过程在重放管道中开始时,所述管道一次一个仓地、并且可选地还按照拣分的深度顺序(从前到后,如果深度测试较小或小于例如)消耗所述三角形。在转移至下一小屏幕空间区域之前,在小屏幕空间区域(比如分块)中对基本上所有的三角形进行访问。
在一些实施例中,这种一次区域处理显著提高了深度缓冲器高速缓存和颜色缓冲器高速缓存的效率。在一些实施例中,可以减少向颜色和深度缓冲器的存储器流量,并且这些缓冲器通常是当前图形处理器的主要带宽消耗者。
图1中示出了流水线10的实施例。三角形(在框12上方示出)由仅位置着色器12处理。这紧接着是背面(BF)、视锥(VF)和零覆盖剔除(方框14)。在完成剔除之后,计算表示性坐标集合,例如(x,y)和深度z,并且然后可以将三角形(或一组三角形)装(或拣分)(方框16)入仓缓冲器20中的适当列表中。在方框18,记录位流中幸存的三角形。对命令缓冲器的一遍进行仅位置着色前端(剔除管道),并(针对未被剔除的三角形)将三角形标识符(ID)存储在仓中,其指标是从三角形的被量化中心计算的,并且被转换成莫顿代码(或希尔伯特代码)。
在重放管道中,基于装仓按照被拣分的顺序处理(方框22)幸存的三角形(在方框22上方示出)。例如,如果所有的三角形被装入16×16分块中,则可以通过首先按照深度顺序拣分这些三角形并且然后(例如)从前到后对其进行栅格化来处理这种分块内部的三角形列表。按深度顺序进行拣分是可选的。当被禁用时,仅对幸存三角形的顶点执行全顶点着色(VS)24,接着是管道的剩余部分26。
来自同一选定仓的三角形被优先化,以便在开始提交下一选定仓内的三角形之前提交给栅格化器。这继续进行,直到所有的仓都已被处理,并且因此,所有的三角形都已经被发送至图形流水线。
可以通过许多方式来计算表示性坐标。例如,可以使用一组中三角形的平均顶点位置。另一选项是在顶点上方建立定界框,并使用定界框的中心的坐标作为表示性坐标。
一旦计算了三角形、或一组三角形的表示性坐标,就找到了合适的仓并且将每个表示性坐标映射至具体仓。可以通过首先对表示性坐标进行量化并且然后将其转换成沿空间填充曲线的整数位置(比如像莫顿、希尔伯特或扫描线顺序)来完成这个映射。所述整数位置对应于仓。量化分辨率被选定为使得使用预定数量的仓。除了x和y之外,装仓可以或可以不考虑深度(z),这意味着每个屏幕空间位置可以与不止一个仓重叠。
在重放管道中,按线性顺序一次访问一个仓(即,沿莫顿曲线的仓),并且使用三角形id在不重新运行命令缓冲器的情况下读取三角形。在对仓中的三角形进行渲染时,可以检索着色器。对于每个仓,所述仓中的三角形被读取并被用正确的着色器渲染。在一个实施例,绘制调用标识符(ID)、或每个三角形的着色器标识符(ID)可以与三角形ID一起被存储。或者可以使用查找表来使一定范围的三角形id“指”向不同着色器等。
对于重放命令流的简单版本,每个三角形的位数被加倍至每个三角形两个位。第二个位被协同用于16或32个三角形的分组,所述三角形被基于重心或平均位置一起拣分至分块中。这16至32个位是分块标识符(ID)。此外,在更高的粒度上,例如对于下至两三千个三角形的分组的每个绘制调用和/或层级,同样记录了位掩码,对应于这组三角形所触摸的所有分块(或在更大的粒度上)。可以将这个位掩码与当前正在重放的分块进行比较,并且可以跳过命令流的较大区段。通过调整粒度(屏幕空间中的和命令流中的两者),这些位掩码可以被保持在每个三角形1位以下。然后,每个三角形的总位数升高至最多3位。
在一个实施例中,所述流水线是后拣分(sort/last)流水线,从而使得获得正确的结果将取决于屏幕空间中的拣分。这样,则不受限于在渲染下一分块之前对单个分块渲染所有的几何结构。可以对几何结构的一部分进行拣分,并对此几何结构的经拣分的三角形进行渲染,并且然后对进一步的几何结构进行拣分和渲染。
所述拣分都可以是宽松的,因为它在两个方面上接近。首先,它在一组N个三角形内的表示性点的基础上接近,并且所述组被放置在单个分块中。所述组中的所述三角形因此可以覆盖属于其他分块的像素。这是与中拣分(sort-middle)架构相比的关键差别。第二,所述三角形首先被拣分至具有指定尺寸的仓中;然而,可以根据或者深度或者其他标准在每个分块中对其进行进一步拣分,例如,每个三角形使用哪种纹理或着色器(即,状态)或其在纹理空间中的位置。
参考图2,序列30可以在软件、固件和/或硬件中实现。在软件和固件实施例中,可以由存储在一个或多个非瞬态计算机可读介质(如磁性、光学或半导体存储设备)上的计算机执行指令来实现。一般地,这些指令将是图形处理单元的一部分,所述图形处理单元是负责图形特征的硬件单元。
如框32中所指示的,序列30通过执行仅位置着色来开始。这紧接着的是框34中的剔除。
在框36,可以将图元形成组,例如,绘制调用中的三角形数量。然后,所述图元被基于其表示性坐标进行拣分(框38)。在一个实施例中,所述坐标可以是x、y、和深度坐标。
然后,如框40中所指示的,表示性坐标被映射至具体仓。接下来,基于每个仓内的图元深度进行拣分(框42)。最终,在框44中,一次一个仓地、并且(可选地)按深度顺序进行栅格化。
投影到大屏幕空间区域的三角形(在此被称为“大”三角形)将与许多仓重叠,并且会对性能有害。所述大三角形可以被如下处理:
·最容易的方案是简单地禁能对大三角形的整理和装仓。
·大三角形可以被顶着仓边界拆分,并且可以在许多仓上复制。这意味着将在不同时间处理大三角形的不同部分。
·所述表示性点可以包括某个面积度量。映射功能然后对不同仓中与较小三角形相比的大三角形进行映射。所述大三角形则可以首先被处理,例如,在转移至较小三角形之前。这种装仓可以被以多分辨率的方式完成,从而当面积度量增大时降低平面空间仓分辨率。
因而,装仓可以考虑三角形尺寸、以及其他信息比如状态。这样,装仓时使用的坐标不应该被解释为仅包括空间中的位置,而且还可以包括例如三角形尺寸和状态。
目前Direct3D和OpenGL规范不允许驱动器或硬件更改已提交的三角形的渲染顺序。然而,Direct3D考虑引入顺序屏障,其中,图形处理单元可以自由更改这些屏障之间的三角形顺序。这种技术通过还可用于OpenGL和OpenGL ES,这将有益于在移动设备上进行渲染。
图3是根据实施例的数据处理系统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之间共享所述外部高速缓存。寄存器组106附加地包括在处理器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可以存储数据122和指令121,以供在处理器102执行过程时使用。存储器控制器中枢116还与可选的外部图形处理器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。
图4是处理器200的实施例的框图,所述处理器具有一个或多个处理器核202A-N、集成存储器控制器214、以及集成图形处理器208。处理器200可包括多达且包括由虚线框表示的附加核202N的附加核。内核202A-N中的每一个包括一个或多个内部高速缓存单元204A-N。在一个实施例中,每个内核还可以访问一个或多个共享高速缓存单元206。
所述内部高速缓存单元204A-N和共享的高速缓存单元206代表处理器200内部的高速缓存存储器层级。高速缓存存储器层级可以包括每个核内的至少一级指令和数据高速缓存、以及一级或多级共享中级高速缓存(比如2级(L2)、三级(L3)、四级(L4)、或其他级高速缓存,其中,外部存储器之前的最高级高速缓存被分类为末级高速缓存(LLC))。在一个实施例中,高速缓存一致性逻辑维持各个高速缓存单元206与204A-N之间的一致性。
处理器200还可以包括一个或多个总线控制器单元216的集合以及系统代理210。所述一个或多个总线控制器单元管理外围总线集合,诸如一个或多个外围组件互连总线(例如,PCI总线、PCI快速总线)。系统代理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互连中的至少一个,包括促进各处理器部件与高性能嵌入式存储器模块218(比如eDRAM模块)之间的通信的封装体I/O互连。在一个实施例中,核202-N中的每一个和图形处理器208使用嵌入式存储器模块218作为共享末级高速缓存。
在一个实施例中,核202A-N是在同一指令集架构上执行的均质核。在另一实施例中,核202A-N就指令集架构(ISA)而言是异质的,其中,核202A-N中的一个或多个执行第一指令集,而其他核中的至少一个执行所述第一指令集的子集或不同的指令集。
处理器200可以是使用多种处理技术(例如,互补型金属氧化物半导体(CMOS)、双极结型/互补型金属氧化物半导体(BiCMOS)、或N型金属氧化物半导体逻辑(NMOS))中的任何处理技术的一个或多个衬底的一部分或者实现在所述一个或多个衬底上。另外,处理器200可以实现在一个或多个芯片上或者被实现为具有除其他部件之外的所展示的部件的片上系统(SOC)集成电路。
图5是图形处理器300的一个实施例的框图,所述图形处理器可以是分立的图形处理单元、或者可以是与多个处理核集成的图形处理器。在一个实施例中,图形处理器经由到图形处理器上的寄存器的映射I/O接口并且经由被放置在处理器中的命令与存储器进行通信。图形处理器300包括存储器接口314以便访问存储器。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存、和/或到系统存储器的接口。
图形处理器300还包括显示控制器302,所述显示控制器用于将显示输出数据驱动到显示设备320。显示控制器302包括用于显示器的一个或多个重叠平面的硬件以及多层视频或用户接口元件的组成。在一个实施例中,图形处理器300包括用于编码、解码、或者向、从或在一个或多个媒体编码格式之间进行媒体代码转换的视频编解码器引擎306,包括但不限于:运动图像专家组(MPEG)(诸如MPEG-2)、高级视频编码(AVC)格式(诸如H.264/MPEG-4AVC)、以及电影&电视工程师协会(SMPTE)421M/VC-1、和联合图像专家组(JPEG)格式(诸如JPEG、以及运动JPEG(MJPEG)格式)。
在一个实施例中,图形处理器300包括块图像转移(BLIT)引擎304以便执行二维(2D)栅格化器操作,包括例如位边界块转移。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个部件来执行2D图形操作。图形处理引擎310是用于执行图形操作的计算引擎,所述图形操作包括三维(3D)图形操作和媒体操作。
GPE 310包括用于执行3D操作的3D流水线312,比如使用作用于3D图元形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景。3D流水线312包括可编程且固定的功能元件,所述可编程且固定功能元件在到3D/媒体子系统315的元件和/或生成的执行线程内执行各种任务。虽然3D流水线312可以用来执行媒体操作,但是GPE 310的实施例还包括媒体流水线316,所述媒体流水线具体地用于执行媒体操作,诸如视频后处理和图像增强。
在一个实施例中,媒体流水线316包括固定功能或可编程逻辑单元以便代替、或代表视频编解码器引擎306来执行一种或多种专门的媒体操作,比如视频解码加速、视频去隔行、以及视频编码加速。在一个实施例中,媒体流水线316附加地包括线程生成单元以便生成用于在3D/媒体子系统315上执行的线程。所生成的线程对3D/媒体子系统中所包括的一个或多个图形执行单元的媒体操作进行计算。
3D/媒体子系统315包括用于执行3D流水线312和媒体流水线316生成的线程的逻辑。在一个实施例中,流水线向3D/媒体子系统315发送线程执行请求,所述3D/媒体子系统包括用于仲裁并将各请求分派到可用的线程执行资源的线程分派逻辑。所述执行资源包括用于处理3D线程和媒体线程的图形执行单元阵列。在一个实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一个实施例中,子系统还包括共享存储器(包括寄存器和可寻址存储器)以便在线程之间共享数据并用于存储输出数据。
图6是用于图形处理器的图形处理引擎410的实施例的框图。在一个实施例中,图形处理引擎(GPE)410是图5中示出的GPE 310的版本。所述GPE 410包括3D流水线412和媒体流水线416,其中每个流水线可以与图5的3D流水线312和媒体流水线316的实现方式不同或者类似。
在一个实施例中,GPE 410与命令流送器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包括用于高速缓存对存储器的访问的高速缓存存储器空间。所述高速缓存存储器可以是单个数据高速缓存或被分割为用于所述多个子系统的多个高速缓存,所述多个高速缓存经由数据端口访问存储器(例如,渲染缓冲器高速缓存、恒定缓冲器高速缓存等)。在一个实施例中,在执行单元阵列414中的执行单元上执行的线程通过经由数据分配互连来交换消息而与所述数据端口进行通信,所述数据分配互连耦合所述图形处理引擎410的所述子系统中的每个子系统。
图7是图形处理器的另一个实施例的框图。在一个实施例中,所述图形处理器包括环形互连502、流水线前端504、媒体引擎537、以及图形核580A-N。所述环形互连502将所述图形处理器耦合至其他处理单元,包括其他图形处理器或者一个或多个通用处理器核。在一个实施例中,图形处理器是集成在多核处理系统内的多个处理器之一。
图形处理器经由所述环形互连502接收多批命令。传入命令由流水线前端504中的命令流送器503来解译。图形处理器包括用于经由所述(多个)图形核580A-N来执行3D几何处理和媒体处理的可扩展执行逻辑。针对3D几何处理命令,命令流转换器503将所述命令供应至几何流水线536。针对至少一些媒体处理命令,命令流转换器503将所述命令供应至视频前端534,所述视频前端与媒体引擎537耦合。媒体引擎537包括用于视频和图像后处理的视频质量引擎(VQE)530以及用于提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX)533引擎。几何流水线536和媒体引擎537各自生成执行线程,所述执行线程用于由至少一个图形核580A提供的线程执行资源。
图形处理器包括可扩展线程执行资源表征模块核580A-N(有时被称为核分片),各个可扩展线程执行资源表征模块核具有多个子核550A-N、560A-N(有时被称为核子分片)。图形处理器可以具有任意数量的图形核580A至580N。在一个实施例中,图形处理器包括图形核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的集合。在一个实施例中,所述共享资源包括共享高速缓存存储器和像素操作逻辑。其他共享资源还可以包括在图形处理器的各实施例中。
图8展示了线程执行逻辑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上实例化所述请求的线程。例如,所述几何流水线(例如,图3的536)将顶点处理、镶嵌或几何处理线程分派至所述线程执行逻辑600。线程分派器604还可处理来自执行着色器程序的运行时间线程生成请求。
一旦一组几何对象被处理并被栅格化成像素数据,则像素着色器602被调用以便进一步计算输出信息并且使得结果被写入到输出表面(例如,色彩缓冲器、深度缓冲器、模板缓冲器等)。在一个实施例中,像素着色器602计算各顶点属性的值,所述各顶点属性跨栅格化对象被内插。像素着色器602然后执行API供应的像素着色器程序。为了执行所述像素着色器程序,所述像素着色器602经由所述线程分派器604将线程分派至执行单元(例如,608A)。像素着色器602使用采样器610中的纹理采样逻辑来访问存储在存储器中的纹理图中的纹理数据。对纹理数据和输入几何数据的算术运算计算每个几何碎片的像素颜色数据,或丢弃一个或多个像素而不进行进一步处理。
在一个实施例中,数据端口614提供存储器访问机制,供线程执行逻辑600将经处理的数据输出至存储器以便在图形处理器输出流水线上进行处理。在一个实施例中,数据端口614包括并耦合至一个或多个高速缓存存储器(例如,数据高速缓存612)从而经由数据端口高速缓存数据以供存储器访问。
图9是根据实施例的框图,展示了图形处理器执行单元的指令格式。在一个实施例中,图形处理器执行单元支持具有采用多种格式的指令的指令集。实线框展示了通常包括在执行单元指令中的部件,而虚线包括是可选的或者仅包括在指令子集中的部件。如所展示,所描述的指令格式是宏指令,因为它们是供应至所述执行单元的指令,这与从指令解码产生的微操作相反(一旦所述指令被处理)。
在一个实施例中,图形处理器执行单元本机地支持采用128位格式710的指令。64位压缩指令格式730可用于基于所选择的指令、指令选项、以及操作数量的一些指令。所述本机128位格式710提供对所有指令选项的访问,而一些选项和操作限制在所述64位格式730中。在所述64位格式730中可用的本地指令随实施例而改变。在一个实施例中,使用索引字段713中的索引值的集合来部分地压缩所述指令。所述执行单元硬件基于所述索引值来参考压缩表集合并且使用所述压缩表输出来重构采用128位格式710的本地指令。
对于每种格式,指令操作码712限定了所述执行单元要执行的操作。所述执行单元跨每个操作数的所述多个数据元素来并行地执行每条指令。例如,响应于添加指令,所述执行单元跨每个颜色通道执行同步添加操作,所述颜色通道表示纹理元素或图片元素。默认地,所述执行单元跨所述操作数的所有数据通道执行每条指令。指令控制字段712使能控制某些执行选项,诸如通道选择(例如,预测)以及数据通道排序(例如,重排)。针对128位指令710,执行大小字段716限制了将被并行执行的数据通道的数量。所述执行大小字段716不可用于所述64位紧凑指令格式730。
一些执行单元指令具有多达三个操作数,包括两个源操作数(src0 720、src1722)和一个目的地操作数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形式(例如,0x30)的同步指令(例如,wait、send)。并行数学指令分组748包括采用0100xxxxb形式(例如,0x40)的部件式的算术指令(例如,add、mul)。所述并行数学分组748跨数据通道并行地执行算术运算。向量数学分组750包括采用0101xxxxb形式(例如,0x50)的算术指令(例如,dp4)。所述向量数学分组对向量操作数执行算术运算,诸如点积运算。
图10是图形处理器的另一个实施例的框图,所述图形处理器包括图形流水线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对象的硬件加速镶嵌的镶嵌部件。可编程的外壳着色器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包括单独的命令流送器。视频前端834在将所述命令发送至所述媒体引擎837之前处理媒体命令。在一个实施例中,所述媒体引擎包括用于生成线程以用于经由所述线程分派器831分派至所述线程执行逻辑850的线程生成功能。
在一个实施例中,所述图形引擎包括显示引擎840。在一个实施例中,显示引擎840在图形处理器外部并经由环形互连802、或某个其他互连总线或结果耦合至图形处理器。显示引擎840包括2D引擎841和显示控制器843。显示引擎840包含能够独立于3D流水线而运行的专用逻辑。显示控制器843与显示设备(未示出)耦合,所述显示设备可以是系统集成显示设备(如在膝上型计算机中)、或者(经由显示设备连接器附接的)外部显示设备。
图形流水线820和媒体流水线830可配置成用于基于多个图形和媒体编程接口执行操作并且并非专用于任何一种应用编程接口(API)。在一个实施例中,所述图形处理器的驱动器软件将专用于特定图形或媒体库的API调度转换成可由所述图形处理器处理的命令。在各实施例中,为由科纳斯(Khronos)集团所支持的开放图形库(OpenGL)和开放计算语言(OpenCL)、来自微软公司的Direct3D库、或者在一个实施例中的OpenGL和D3D两者提供支持。还可以为开源计算机视觉库(OpenCV)提供支持。如果可进行从未来API的流水线到所述图形处理器的流水线的映射,则具有兼容3D流水线的未来API也将受到支持。
图11A是根据实施例的展示了图形处理器命令格式的框图,并且图11B是根据实施例的展示了图形处理器命令序列的框图。图11A中的实线框展示了通常包括在图形命令中的部件,而虚线包括是可选的或者仅包括在所述图形命令的子集中的部件。图11A的示例性图形处理器命令格式900包括用于标识所述命令的目标客户端902的数据字段、命令操作码(opcode)904、以及用于所述命令的相关数据906。子操作码905和命令大小908也包括在一些命令中。
客户端902限定了处理命令数据的图形设备的客户端单元。在一个实施例中,图形处理器命令解析器检查每个命令的客户端字段以便调整对命令的进一步处理并将命令数据路由至合适的客户端单元。在一个实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元、和媒体单元。每个客户端单元具有对命令进行处理的相应处理流水线。一旦命令被客户端单元接收到,客户端单元就读取操作码904以及子操作码905(如果存在的话)从而确定要执行的操作。客户端单元使用命令的数据字段906内的信息来执行所述命令。对于一些命令,期望明确的命令大小908来限定命令的大小。在一个实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些命令的大小。在一个实施例中,命令经由双倍字长的倍数被对齐。
图11B中流程图示出了样本命令序列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状态设置命令。至少部分地基于使用中的特定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进入排队,则经由执行934命令或等效的执行事件(例如,寄存器写入)来触发所述媒体流水线924。然后可以通过由所述3D流水线922或所述媒体流水线924提供的操作对来自所述媒体流水线924的输出进行后处理。在一个实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。
图12展示了根据实施例的数据处理系统的示例性图形软件架构。所述软件架构包括3D图形应用1010、操作系统1020、以及至少一个处理器1030。所述处理器1030包括图形处理器1032以及一个或多个通用处理器核1034。所述图形应用1010和操作系统1020各自在所述数据处理系统的系统存储器1050中执行。
在一个实施例中,所述3D图形应用1010包含一个或多个着色器程序,所述一个或多个着色器程序包括着色器指令1012。着色器语言指令可以采用高级着色器语言,诸如高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。所述应用还包括可执行指令1014,所述可执行指令采用适合用于由所述通用处理器核1034执行的机器语言。所述应用还包括由顶点数据限定的图形对象1016。
所述操作系统1020可以是来自微软公司的操作系统、专用UNIX式操作系统、或使用Linux内核变体的开源UNIX式操作系统。当在使用Direct3D API时,所述操作系统1020使用前端着色器编译器1024以便将采用HLSL的任何着色器指令1012编译成低级着色器语言。所述编译可以是即时编译,或者所述应用可执行共享预编译。在一个实施例中,在对所述3D图形应用1010进行编译的过程中,高级着色器被编译成低级着色器。
用户模式图形驱动器1026可以包含用于将所述着色器指令1012变换成硬件专用的表示的后端着色器编译器1027。当在使用OpenGL API时,将采用GLSL高级语言的着色器指令1012传递至用户模式图形驱动器1026以用于编译。所述用户模式图形驱动器使用操作系统内核模式功能1028来与内核模式图形驱动器1029进行通信。所述内核模式图形驱动器1029与所述图形处理器1032进行通信以便分派命令和指令。
在本文所描述的各操作或功能程度上,它们可以被描述或定义为硬件电路、软件代码、指令、配置和/或数据。所述内容可以在硬件逻辑中被具体化、或者具体化为直接可执行软件(“对象”或“可执行”形式)、源代码、被设计成用于在图形引擎上执行的高级着色器代码、或者针对具体处理器或图形核的指令集中的低级组件语言代码。本文中所描述的实施例的软件内容可以经由一种其上存储有内容的制品或经由一种操作通信接口经由通信接口发送数据的方法被提供。
一种非瞬态机器可读存储介质可以使机器执行所描述的功能或操作,并且包括存储具有机器(例如,计算设备、电子系统等)可存取形式的信息的任何机制,如可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等)。一种通信接口包括与硬连线、无线、光等介质中的任一者接口连接以彼此通信的任何机制,如,存储器总线接口、处理器总线接口、互联网连接、磁盘控制器等。通过提供配置参数或发送信号来对通信接口进行配置以使通信接口准备用于提供描述软件内容的数据信号。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。
所描述的各部件可以是用于执行所描述的操作或功能的装置。本文所描述的每个部件包括软件、硬件或它们的组合。部件可以被实现为软件模块、硬件模块、专用硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。除了本文所描述的内容之外,在不脱离其范围的情况下,可以对公开的实施例和本发明的实现方式进行各种修改。因此,本文的说明和示例应在说明性的而非限制性意义上被解释。本发明的范围应当仅参照以下权利要求书来衡量。
下面的条款和/或示例涉及另外的实施例:
一个示例实施例可以是一种方法,所述方法包括:执行仅位置着色;基于表示性坐标将经着色的图元拣分为仓;以及基于仓内的图元的深度对所述仓内的图元进行拣分。所述方法还可以包括:对所述经着色的图元进行拣分包括对一组经着色的图元进行拣分。所述方法还可以包括:形成由分块内的所有三角形组成的组。所述方法还可以包括:对所述经着色的图元进行拣分包括将所述图元装入仓内。所述方法还可以包括:一次一个仓地对经拣分的图元进行栅格化。所述方法还可以包括:对按深度顺序拣分的图元进行渲染。所述方法还可以包括:基于坐标进行拣分包括基于坐标、深度、图元尺寸和状态进行拣分。所述方法还可以包括:所述坐标被计算为组中的三角形的平均顶点位置。所述方法还可以包括:计算所述坐标包括:在三角形顶点上建立定界框以及使用所述框的中心的坐标。所述方法还可以包括:通过对坐标进行量化以及随后将坐标转换成沿空间填充曲线的整数位置,将所述坐标映射至仓。
另一示例实施例可以是至少一种或多种非瞬态计算机可读介质,存储有指令,所述指令在被执行时执行包括以下各项的序列:执行仅位置着色;基于表示性坐标将经着色的图元拣分为仓;以及基于仓内的图元的深度对所述仓内的图元进行拣分。所述介质可以包括:对所述经着色的图元进行拣分包括对一组经着色的图元进行拣分。所述介质可以包括:所述序列包括:形成由分块内的所有三角形组成的组。所述介质可以包括:对所述经着色的图元进行拣分包括将所述图元装入仓内。所述介质可以包括:所述序列包括:一次一个仓地对经拣分的图元进行栅格化。所述介质可以包括:所述序列包括:对按深度顺序拣分的图元进行栅格化。所述介质可以包括:基于坐标进行拣分包括基于坐标、深度、图元尺寸和状态进行拣分。所述介质可以包括:所述坐标被计算为组中的三角形的平均顶点位置。所述介质可以包括:计算所述坐标包括:在三角形顶点上建立定界框;以及使用所述框的中心的坐标。所述介质可以包括:所述序列包括:通过对坐标进行量化以及随后将坐标转换成沿空间填充曲线的整数位置,将所述坐标映射至仓。
另一示例实施例中可以是一种装置,包括:处理器,所述处理器用于执行仅位置着色;基于表示性坐标将经着色的图元拣分为仓;以及基于仓内的图元的深度对所述仓内的图元进行拣分;以及存储设备,所述存储设备耦合至所述处理器。所述装置可以包括:所述处理器用于拣分一组经着色的图元。所述装置可以包括:所述处理器用于形成由分块内的所有三角形组成的组。所述装置可以包括:所述处理器用于将所述图元装入仓内。所述装置可以包括:所述处理器用于一次一个仓地对经拣分的图元进行栅格化。所述装置可以包括:所述处理器用于对按深度顺序拣分的图元进行栅格化。所述装置可以包括:所述处理器用于基于坐标、深度、图元尺寸和状态进行拣分。所述装置可以包括:所述处理器用于将所述坐标计算为组中的三角形的平均顶点位置。所述装置可以包括:所述处理器用于在三角形顶点上建立定界框以及使用所述框的中心的坐标。所述装置可以包括:所述处理器用于:通过对坐标进行量化以及随后将坐标转换成沿空间填充曲线的整数位置,将所述坐标映射至仓。
本文描述的图形处理技术可以采用各种硬件架构来实现。例如,可以将图形功能集成到芯片组内。替代性地,可以使用分立的图形处理器。作为又一实施例,图形功能可以通过通用处理器(包括多核处理器)来实现。
本说明书中通篇提到“一个实施例”或“实施例”表示结合所述实施例所述的具体特征、结构或特性包含在本公开所包含的至少一个实现中。因此,短语“一个实施例”或“在一实施例中”的出现不一定都表示同一个实施例。此外,除了所示的特定实施例以外,可以以其他适当的形式来实现所述特定特征、结构或特性,并且所有这样的形式都可以涵盖在本申请的权利要求内。
尽管有限数量的实施例已经被描述,但是本领域技术人员将理解大量的其修改和变型。所附权利要求旨在将所有这种修改和变型涵盖为落入本公开的真实的精神和范围内。
Claims (25)
1.一种方法,包括:
执行仅位置着色;
基于表示性坐标将经着色的图元拣分为仓;以及
对仓内的图元进行拣分。
2.如权利要求1所述的方法,其中,对所述经着色的图元进行拣分包括对一组经着色的图元进行拣分。
3.如权利要求2所述的方法,包括:形成由分块内的所有三角形组成的组。
4.如权利要求1所述的方法,其中,对所述经着色的图元进行拣分包括将所述图元装入仓内。
5.如权利要求4所述的方法,包括:一次一个仓地对经拣分的图元进行栅格化。
6.如权利要求5所述的方法,包括:对按深度顺序拣分的图元进行栅格化。
7.如权利要求1所述的方法,其中,基于坐标进行拣分包括基于坐标、深度、图元尺寸和状态进行拣分。
8.如权利要求1所述的方法,其中,所述坐标被计算为组中的三角形的平均顶点位置。
9.如权利要求1所述的方法,其中,计算所述坐标包括:在三角形顶点上建立定界框;以及使用所述框的中心的坐标。
10.如权利要求4所述的方法,包括:通过对坐标进行量化以及随后将坐标转换成沿空间填充曲线的整数位置,将所述坐标映射至仓。
11.一种或多种非瞬态计算机可读介质,存储有指令,所述指令在被执行时执行包括以下各项的序列:
执行仅位置着色;
基于表示性坐标将经着色的图元拣分为仓;以及
基于仓内的图元的深度对所述仓内的图元进行拣分。
12.如权利要求11所述的介质,其中,对所述经着色的图元进行拣分包括对一组经着色的图元进行拣分。
13.如权利要求12所述的介质,所述序列包括:形成由分块内的所有三角形组成的组。
14.如权利要求11所述的介质,其中,对所述经着色的图元进行拣分包括将所述图元装入仓内。
15.如权利要求14所述的介质,所述序列包括:一次一个仓地对经拣分的图元进行栅格化。
16.如权利要求15所述的介质,所述序列包括:对按深度顺序拣分的图元进行栅格化。
17.如权利要求11所述的介质,其中,基于坐标进行拣分包括基于坐标、深度、图元尺寸和状态进行拣分。
18.如权利要求11所述的介质,其中,所述坐标被计算为组中的三角形的平均顶点位置。
19.如权利要求11所述的介质,其中,计算所述坐标包括:在三角形顶点上建立定界框;以及使用所述框的中心的坐标。
20.如权利要求14所述的介质,所述序列包括:通过对坐标进行量化以及随后将坐标转换成沿空间填充曲线的整数位置,将所述坐标映射至仓。
21.一种装置,包括:
处理器,所述处理器用于:执行仅位置着色;基于表示性坐标将经着色的图元拣分为仓;以及基于仓内的图元的深度对所述仓内的图元进行拣分;以及
存储设备,所述存储设备耦合至所述处理器。
22.如权利要求21所述的装置,所述处理器用于拣分一组经着色的图元。
23.如权利要求22所述的装置,所述处理器用于形成由分块内的所有三角形组成的组。
24.如权利要求21所述的装置,所述处理器用于将所述图元装入仓内。
25.如权利要求24所述的装置,所述处理器用于:一次一个仓地对经拣分的图元进行栅格化。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/566,852 US10249079B2 (en) | 2014-12-11 | 2014-12-11 | Relaxed sorting in a position-only pipeline |
US14/566,852 | 2014-12-11 | ||
PCT/US2015/059653 WO2016093998A1 (en) | 2014-12-11 | 2015-11-09 | Relaxed sorting in a position-only pipeline |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107004293A true CN107004293A (zh) | 2017-08-01 |
CN107004293B CN107004293B (zh) | 2021-02-26 |
Family
ID=56107909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580061612.4A Expired - Fee Related CN107004293B (zh) | 2014-12-11 | 2015-11-09 | 仅位置流水线中的宽松拣分 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10249079B2 (zh) |
EP (1) | EP3238180A4 (zh) |
JP (1) | JP2018502381A (zh) |
KR (1) | KR102569331B1 (zh) |
CN (1) | CN107004293B (zh) |
WO (1) | WO2016093998A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9842428B2 (en) * | 2014-06-27 | 2017-12-12 | Samsung Electronics Co., Ltd. | Dynamically optimized deferred rendering pipeline |
US20180082464A1 (en) * | 2016-09-16 | 2018-03-22 | Tomas G. Akenine-Moller | Apparatus and method for an efficient 3d graphics pipeline |
US20180082465A1 (en) * | 2016-09-16 | 2018-03-22 | Prasoonkumar Surti | Apparatus and method for optimized tile-based rendering |
US10706612B2 (en) * | 2017-04-01 | 2020-07-07 | Intel Corporation | Tile-based immediate mode rendering with early hierarchical-z |
GB2565301A (en) * | 2017-08-08 | 2019-02-13 | Nokia Technologies Oy | Three-dimensional video processing |
US10672185B2 (en) | 2018-07-13 | 2020-06-02 | Nvidia Corporation | Multi-rate shading using replayed screen space tiles |
US11195326B2 (en) * | 2018-09-21 | 2021-12-07 | Advanced Micro Devices, Inc. | Method and system for depth pre-processing and geometry sorting using binning hardware |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6597363B1 (en) * | 1998-08-20 | 2003-07-22 | Apple Computer, Inc. | Graphics processor with deferred shading |
US7505036B1 (en) * | 2004-07-30 | 2009-03-17 | 3Dlabs Inc. Ltd. | Order-independent 3D graphics binning architecture |
WO2011078858A1 (en) * | 2009-12-23 | 2011-06-30 | Intel Corporation | Image processing techniques |
CN103999443B (zh) * | 2011-12-07 | 2017-08-15 | 英特尔公司 | 基于线性化5d边缘方程的样本剔除 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU1776001A (en) | 1999-11-18 | 2001-05-30 | Info Assets, Inc. | Rendering image data |
US6747653B2 (en) | 2001-12-31 | 2004-06-08 | Intel Corporation | Efficient object storage for zone rendering |
US20080273031A1 (en) | 2005-12-08 | 2008-11-06 | Xgi Technology Inc. (Cayman) | Page based rendering in 3D graphics system |
US20090046098A1 (en) | 2007-08-14 | 2009-02-19 | Stmicroelectronics S.R.L. | Primitive binning method for tile-based rendering |
GB0900700D0 (en) | 2009-01-15 | 2009-03-04 | Advanced Risc Mach Ltd | Methods of and apparatus for processing graphics |
CN104025181B (zh) | 2011-12-30 | 2016-03-23 | 英特尔公司 | 用于去耦合采样的基于分类的块延迟着色体系结构 |
US10134101B2 (en) | 2012-02-27 | 2018-11-20 | Intel Corporation | Using cost estimation to improve performance of tile rendering for image processing |
-
2014
- 2014-12-11 US US14/566,852 patent/US10249079B2/en active Active
-
2015
- 2015-11-09 WO PCT/US2015/059653 patent/WO2016093998A1/en active Application Filing
- 2015-11-09 EP EP15867193.3A patent/EP3238180A4/en not_active Withdrawn
- 2015-11-09 JP JP2017530147A patent/JP2018502381A/ja active Pending
- 2015-11-09 KR KR1020177012685A patent/KR102569331B1/ko active IP Right Grant
- 2015-11-09 CN CN201580061612.4A patent/CN107004293B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6597363B1 (en) * | 1998-08-20 | 2003-07-22 | Apple Computer, Inc. | Graphics processor with deferred shading |
US7505036B1 (en) * | 2004-07-30 | 2009-03-17 | 3Dlabs Inc. Ltd. | Order-independent 3D graphics binning architecture |
WO2011078858A1 (en) * | 2009-12-23 | 2011-06-30 | Intel Corporation | Image processing techniques |
CN103999443B (zh) * | 2011-12-07 | 2017-08-15 | 英特尔公司 | 基于线性化5d边缘方程的样本剔除 |
Also Published As
Publication number | Publication date |
---|---|
JP2018502381A (ja) | 2018-01-25 |
EP3238180A4 (en) | 2018-07-04 |
US10249079B2 (en) | 2019-04-02 |
US20160171756A1 (en) | 2016-06-16 |
WO2016093998A1 (en) | 2016-06-16 |
CN107004293B (zh) | 2021-02-26 |
KR20170095815A (ko) | 2017-08-23 |
KR102569331B1 (ko) | 2023-08-21 |
EP3238180A1 (en) | 2017-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104978760B (zh) | 映射多速率着色到单片程序 | |
US11164359B2 (en) | Apparatus and method for using alpha values to improve ray tracing efficiency | |
CN108369747B (zh) | 用于在光线追踪架构中提取和使用路径着色一致性的方法和装置 | |
CN109564695A (zh) | 用于高效3d图形流水线的装置和方法 | |
CN106575449A (zh) | 仅位置着色管线 | |
CN107430523A (zh) | 图形处理器的高效抢占 | |
CN109564700A (zh) | 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化 | |
CN107004293A (zh) | 仅位置流水线中的宽松拣分 | |
CN108711133A (zh) | 带有早期分层的z的基于图块的立即模式渲染 | |
US9990758B2 (en) | Bounding volume hierarchy generation using a heterogeneous architecture | |
CN110136223A (zh) | 使用三角形的属性的加权平均来合并粗像素着色的片段 | |
CN110458905A (zh) | 用于层级自适应曲面细分的设备和方法 | |
CN109643464A (zh) | 用于高效深度预过程的方法和装置 | |
CN107077833B (zh) | 用于最后排序架构的高效的帧到帧相干性利用的装置和方法 | |
CN106575431A (zh) | 用于高度高效的图形处理单元(gpu)执行模型的方法和装置 | |
CN108701368A (zh) | 用于经实施例化的几何结构的更有效的光线跟踪方法和装置 | |
CN106796713A (zh) | Msaa中使用索引位进行压缩 | |
CN107408210A (zh) | 基于边缘的覆盖掩码压缩 | |
CN107077828A (zh) | 对颜色查找表的大小进行压缩 | |
CN110956687A (zh) | 用于光线追踪重度实例化场景的跨实例从前到后遍历的装置和方法 | |
CN108369748A (zh) | 用于光线追踪架构中的负载平衡的方法和装置 | |
CN108475441A (zh) | 光线追踪期间的详细级别选择 | |
CN107077758A (zh) | 零覆盖光栅化剔除 | |
US11783530B2 (en) | Apparatus and method for quantized convergent direction-based ray sorting | |
CN107004294A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210226 Termination date: 20211109 |