首页 / 专利库 / 电脑图像 / 着色器 / 顶点着色器 / 利用图元复制的顶点着色器

利用图元复制的顶点着色器

阅读:795发布:2020-05-13

专利汇可以提供利用图元复制的顶点着色器专利检索,专利查询,专利分析的服务。并且半导体 封装装置的 实施例 可以包括一种技术,其用于确定针对一组图元的一个或多个条件,并且基于所确定的针对一组图元的一个或多个条件在 顶点 着色器 处执行图元复制。公开并要求保护其他实施例。,下面是利用图元复制的顶点着色器专利的具体信息内容。

1.一种图形处理器系统,包括:
处理器;
存储器,其通信地耦合到所述处理器;以及
逻辑,其通信地耦合到所述处理器和所述存储器,其用于:
确定针对一组图元的一个或多个条件,以及
基于所确定的针对所述一组图元的一个或多个条件,来在顶点着色器处执行图元复制。
2.根据权利要求1所述的系统,其中,所述逻辑还用于:
重新配置图形流水线以在所述顶点着色器处执行图元复制。
3.根据权利要求2所述的系统,其中,所述逻辑还用于:
配置所述顶点着色器以生成原始图元的复制图元,并且调整针对第二目标的复制图元的相对于针对所述原始图元的第一目标的相应位置属性。
4.根据权利要求3所述的系统,其中,所述第一目标和所述第二目标中的每一个分别包括渲染目标和视口中的一个或多个。
5.根据权利要求1-4中任一项所述的系统,其中,所述逻辑还用于:
基于是否对于几何着色器中每个发射的顶点仅改变层和视口中的一个或多个以及位置输出属性来确定第一条件;
基于所述几何着色器中声明的发射的顶点的数量是否小于阈值来确定第二条件;以及基于来自几何体中的每个顶点是否发射到单独的渲染目标以及单独的视口中的一个来确定第三条件。
6.根据权利要求5所述的系统,其中,所述逻辑还用于确定所述第一条件、所述第二条件以及所述第三条件中的每一个是否满足,并且如果满足,则:
将与位置、层、视口计算以及图元复制相关的操作从所述几何着色器移动到所述顶点着色器;以及
将与所有其他输出属性相关的操作从所述几何着色器移动到所述顶点着色器。
7.一种半导体封装装置,包括:
一个或多个衬底;以及
逻辑,其耦合到一个或多个衬底,其中,所述逻辑至少部分地在可配置逻辑和固定功能硬件逻辑中的一个或多个中实现,所述逻辑耦合到所述一个或多个衬底,用于:
确定针对一组图元的一个或多个条件,以及
基于所确定的针对所述一组图元的一个或多个条件,来在顶点着色器处执行图元复制。
8.根据权利要求7所述的装置,其中,所述逻辑还用于:
重新配置图形流水线以在所述顶点着色器处执行图元复制。
9.根据权利要求8所述的装置,其中,所述逻辑还用于:
配置所述顶点着色器以生成原始图元的复制图元,并且调整针对第二目标的复制图元的相对于针对所述原始图元的第一目标的相应位置属性。
10.根据权利要求9所述的装置,其中,所述第一目标和所述第二目标中的每一个分别包括渲染目标和视口中的一个或多个。
11.根据权利要求7-10中任一项所述的装置,其中,所述逻辑还用于:
基于是否对几何着色器中的每个发射的顶点仅改变层和视口中的一个或多个以及位置输出属性来确定第一条件;
基于所述几何着色器中声明的发射的顶点的数量是否小于阈值来确定第二条件;以及基于来自几何体中的每个顶点是否发射到单独的渲染目标以及单独的视口中的一个来确定第三条件。
12.根据权利要求11所述的装置,其中,所述逻辑还用于确定所述第一条件、所述第二条件以及所述第三条件中的每一个是否满足,并且如果满足,则:
将与位置、层、视口计算以及图元复制相关的操作从所述几何着色器移动到所述顶点着色器;以及
将与所有其他输出属性相关的操作从所述几何着色器移动到所述顶点着色器。
13.根据权利要求7或12所述的装置,其中,耦合到所述一个或多个衬底的所述逻辑包括定位在所述一个或多个衬底内的晶体管沟道区。
14.一种处理图形的方法,包括:
确定针对一组图元的一个或多个条件;以及
基于所确定的针对所述一组图元的一个或多个条件,来在顶点着色器处执行图元复制。
15.根据权利要求14所述的方法,还包括:
重新配置图形流水线以在所述顶点着色器处执行图元复制。
16.根据权利要求15所述的方法,还包括:
配置所述顶点着色器以生成原始图元的复制图元,并且调整针对第二目标的复制图元的相对于针对所述原始图元的第一目标的相应位置属性。
17.根据权利要求16所述的方法,其中,所述第一目标和所述第二目标中的每一个分别包括渲染目标和视口中的一个或多个。
18.根据权利要求14-17中任一项所述的方法,还包括:
基于是否对于几何着色器中的每个发射的顶点仅改变层和视口中的一个或多个以及位置输出属性来确定第一条件;
基于所述几何着色器中声明的发射的顶点的数量是否小于阈值来确定第二条件;以及基于来自几何体中的每个顶点是否发射到单独的渲染目标以及单独的视口中的一个来确定第三条件。
19.根据权利要求18所述的方法,还包括确定所述第一条件、所述第二条件以及所述第三条件中的每一个是否满足,并且如果满足,则:
将与位置、层、视口计算以及图元复制相关的操作从所述几何着色器移动到所述顶点着色器;以及
将与所有其他输出属性相关的操作从所述几何着色器移动到所述顶点着色器。
20.一种用于处理图形的设备,包括:
用于确定针对一组图元的一个或多个条件的单元;以及
用于基于所确定的针对所述一组图元的一个或多个条件,来在顶点着色器处执行图元复制的单元。
21.根据权利要求20所述的装置,还包括:
用于重新配置图形流水线以在所述顶点着色器处执行图元复制的单元。
22.根据权利要求21所述的装置,还包括:
用于配置所述顶点着色器以生成原始图元的复制图元,并且调整针对第二目标的复制图元的相对于针对所述原始图元的第一目标的相应位置属性的单元。
23.根据权利要求22所述的装置,其中,所述第一目标和所述第二目标中的每一个分别包括渲染目标和视口中的一个或多个。
24.根据权利要求20-23中任一项所述的装置,还包括:
用于基于是否对于几何着色器中的每个发射的顶点仅改变层和视口中的一个或多个以及位置输出属性来确定第一条件的单元;
用于基于所述几何着色器中声明的发射的顶点的数量是否小于阈值来确定第二条件的单元;以及
用于基于来自几何体中的每个顶点是否发射到单独的渲染目标以及单独的视口中的一个来确定第三条件的单元。
25.根据权利要求24所述的装置,还包括确定所述第一条件、所述第二条件以及所述第三条件中的每一个是否满足,并且如果满足,则
用于将与位置、层、视口计算以及图元复制相关的操作从所述几何着色器移动到所述顶点着色器的单元;以及
用于将与所有其他输出属性相关的操作从所述几何着色器移动到所述顶点着色器的单元。

说明书全文

利用图元复制的顶点着色器

技术领域

[0001] 实施例一般涉及图形系统。更具体地,实施例涉及利用图元复制的顶 点着色器。

背景技术

[0002] 美国专利公开No.20160086299描述了仅位置着色流线。在仅位置着 色中,存在两个几何流水线,一个称为剔除流水线的修剪版本和一个称为 重放流水线的完整版本。因此,剔除流水线与主应用并行执行位置着色器, 但通常更快地生成关键结果,因为它仅获取和着色顶点的位置属性并避免 光栅化以及针对缓冲区的像素渲染。此外,剔除流水线使用这些关键 结果来计算所有三形的可见性信息,无论它们是否被剔除。另一方面, 重放流水线消耗可见性信息以跳过剔除三角形并仅着色最终传递到光栅级 的可见三角形。在一些实施例中,两个流水线一起可以隐藏丢弃三角形的 长剔除行程,并且可以更快地完成工作。附图说明
[0003] 通过阅读以下说明书和所附权利要求,并参考以下附图,本领域技术 人员将清楚实施例的各种优点,其中:
[0004] 图1是根据实施例的图形处理系统的示例的框图
[0005] 图2是根据实施例的半导体封装装置的示例的框图;
[0006] 图3A至图3C是根据实施例的处理图形的方法的示例的流程图
[0007] 图4是根据实施例的电子处理系统的示例的框图;
[0008] 图5是根据实施例的图形流水线的示例的框图;
[0009] 图6是根据实施例的图形处理系统的示例的框图;
[0010] 图7是根据实施例的图形处理器单元(GPU)架构的示例的框图;
[0011] 图8是根据实施例的图形处理器单元(GPU)架构的另一示例的框图;
[0012] 图9是根据实施例的图形处理器单元(GPU)架构的另一示例的框图;
[0013] 图10是根据实施例的处理系统的框图;
[0014] 图11是根据实施例的处理器的示例的框图;
[0015] 图12是根据实施例的图形处理器的示例的框图;
[0016] 图13是根据实施例的图形处理器的图形处理引擎的示例的框图;
[0017] 图14是根据一些实施例的图形处理器核的硬件逻辑的示例的框图;
[0018] 图15A至图15B示出了根据实施例的线程执行逻辑的示例;
[0019] 图16是示出了根据实施例的图形处理器指令格式的示例的框图;
[0020] 图17是根据实施例的图形处理器的另一示例的框图;
[0021] 图18A是示出了根据实施例的图形处理器命令格式的示例的框图;
[0022] 图18B是示出了根据实施例的图形处理器命令序列的示例的框图;
[0023] 图19示出了根据实施例的用于数据处理系统的示例图形软件架构;
[0024] 图20A是示出了根据实施例的IP核开发系统的示例的框图;
[0025] 图20B示出了根据实施例的集成电路封装组件的横截面侧视图的示例;
[0026] 图21是示出了根据实施例的片上系统集成电路的示例的框图;
[0027] 图22A到图22B是示出了根据实施例的在SoC内使用的示例性图形处 理器的框图;以及
[0028] 图23A至图23B示出了根据实施例的另外的示例性图形处理器逻辑。

具体实施方式

[0029] 参照图1,图形处理器系统10的实施例可包括处理器11,通信地耦合 到处理器11的存储器12,以及通信地耦合到处理器11和存储器12的逻辑 13,其用于确定针对一组图元的一个或多个条件,以及基于所确定的针对 一组图元的一个或多个条件,在顶点着色器处执行图元复制。在一些实施 例中,逻辑13可以被配置为重新配置图形流水线以在顶点着色器处执行图 元复制。例如,逻辑13可以被配置为配置顶点着色器以生成原始图元的复 制图元,并调整针对第二目标的复制图元的相对于针对原始图元的第一目 标的相应位置属性。例如,第一和第二目标中的每一个可以分别包括渲染 目标和视口中的一个或多个。在一些实施例中,逻辑13还可以被配置为基 于是否对于几何着色器中的每个发射的顶点仅改变层和视口中的一个或多 个以及位置输出属性来确定第一条件,基于几何着色器中的声明的发射的 顶点的数量是否小于阈值来确定第二条件,并基于来自几何体中的每个顶 点是否发射到单独的渲染目标和单独的视口中的一个来确定第三条件。例 如,逻辑13还可以被配置为确定是否满足第一、第二和第三条件中的每一 个,并且如果满足,则将与位置、层、视口计算和图元复制相关的操作从 几何着色器移动到顶点着色器,并将与所有其他输出属性相关的操作移动 到顶点着色器。在一些实施例中,逻辑13可以位于包括处理器11(例如, 在同一管芯上)的各种组件中或与其共同定位
[0030] 例如,图元可以对应于基本图形构造。在一些实施例中,图元可以对 应于定义多边形或其他形状的顶点集合。例如,图元可以对应于三角形。 在本文的一些实施例中,第一视口可以对应于立体虚拟现实系统的左眼视 口,而第二视口可以对应于立体虚拟现实系统的右眼视口。可替换地,例 如,第一视口可以是第一组视口的一部分,其对应于立方体渲染系统的第 一面,并且其中第二视口可以是第二组视口的一部分,其对应于第二视口 的立方体渲染系统的第二面。例如,可能有六个视口对应于立方体的每个 面。在另一个替换示例中,第一视口可以对应于级联阴影贴图的第一级联, 并且第二视口可以对应于级联阴影贴图的第二级联(例如,对于两个或更 多个视口,仅受视口的数量限制)。如上所述,虽然结合将图元复制到第一 和第二视口来描述一些实施例,但实际上一些实施例可以对多于两个视口 执行这种复制。本领域技术人员将意识到,存在许多可以受益于多个渲染 目标和/或多个视口的其他应用。
[0031] 上述处理器11、存储器12、逻辑13、大容量存储设备15、以及其他 系统组件中的每个的实施例可以用硬件、软件或其任何合适的组合来实现。 例如,硬件实现可以包括可配置逻辑,例如可编程逻辑阵列(PLA)、现场 可编程阵列(FPGA)、复杂可编程逻辑器件(CPLD)或使用电路技术的 固定功能逻辑硬件,例如,专用集成电路(ASIC)、互补金属化物半导体 (CMOS)或晶体管-晶体管逻辑(TTL)技术,或其任何组合。处理器11 的实施例可以包括通用处理器、专用处理器、中央处理器单元(CPU)、图 形处理器单元(GPU)、内核、执行单元、控制器微控制器等。
[0032] 可替代地或另外地,这些组件的全部或部分可以在一个或多个模中 实现为存储在机器或计算机可读存储介质中的由处理器或计算设备执行的 一组逻辑指令,所述机器或计算机可读存储介质诸如随机存取存储器 (RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等。 例如,用于执行组件的操作的计算机程序代码可以以一种或多种操作系统  (OS)适用/适当的编程语言的任何组合来编写,包括诸如PYTHON、PERL、 JAVA、SMALLTALK、C++、C#等的面向对象的编程语言,和传统的过程 编程语言,例如“C”编程语言或类似的编程语言。例如,主机存储器13、 永久存储介质或其他系统存储器可以存储一组指令,所述一组指令当由主 机处理器12执行时,使得系统10实现系统10的一个或多个组件、特征或 方面(例如,逻辑13、确定针对一组图元的一个或多个条件,在顶点着色 器处执行图元复制,等等)。
[0033] 现在参照图2,半导体封装装置20的实施例可包括一个或多个衬底21, 以及耦合到一个或多个衬底21的逻辑22,其中逻辑22至少部分地实现在 可配置逻辑和固定功能硬件逻辑中的一个或多个。耦合到一个或多个衬底 21的逻辑22可以被配置为确定针对一组图元的一个或多个条件,并且基于 所确定的针对一组图元的一个或多个条件在顶点着色器处执行图元复制。 在一些实施例中,逻辑22可以被配置为重新配置图形流水线以在顶点着色 器处执行图元复制。例如,逻辑22可以被配置为配置顶点着色器以生成原 始图元的复制图元,并调整针对第二目标的复制图元的相对于针对原始图 元的第一目标的相应位置属性。例如,第一和第二目标中的每一个可以分 别包括渲染目标和视口中的一个或多个。在一些实施例中,逻辑22还可以 被配置为基于是否对于几何着色器中的每个发射的顶点仅改变层和视口中 的一个或多个以及位置输出属性来确定第一条件,基于几何着色器中的声 明的发射的顶点的数量是否小于阈值来确定第二条件,并基于来自几何体 中的每个顶点是否发射到单独的渲染目标和单独的视口中的一个来确定第 三条件。例如,逻辑22还可以被配置为确定是否满足第一、第二和第三条 件中的每一个,并且如果满足,则将与位置、层、视口计算和图元复制相 关的操作从几何着色器移动到顶点着色器,并将与所有其他输出属性相关 的操作从几何着色器移动到顶点着色器。在一些实施例中,耦合到一个或 多个衬底21的逻辑22可以包括位于一个或多个衬底21内的晶体管沟道区 域。
[0034] 逻辑22以及装置20的其他组件的实施例可以以硬件、软件或其任何 组合来实现,包括以硬件形式的至少部分实现。例如,硬件实现可以包括 可配置逻辑,例如,PLA、FPGA、CPLD或使用电路技术的固定功能逻辑 硬件,例如ASIC、CMOS或TTL技术,或其任何组合。另外,这些组件 的全部或部分可以在一个或多个模块中实现为存储在机器或计算机可读存 储介质中的由处理器或计算设备执行的一组逻辑指令,所述机器或计算机 可读存储介质诸如RAM、ROM、PROM、固件、闪存等。例如,用于执行 组件的操作的计算机程序代码可以以一种或多种OS适用/适当的编程语言 的任何组合来编写,包括诸如PYTHON、PERL、JAVA、SMALLTALK、C ++、C#等的面向对象的编程语言,和传统的过程编程语言,例如“C”编 程语言或类似的编程语言。
[0035] 装置20可以实现方法25(图3A至图3C)或本文所讨论的任何实施 例的一个或多个方面。在一些实施例中,所示装置20可包括一个或多个衬 底21(例如,,蓝宝石,砷化镓)和耦合到衬底的逻辑22(例如,晶体 管阵列和其他集成电路/IC组件)。逻辑22可以至少部分地实现在可配置逻 辑或固定功能逻辑硬件中。在一个示例中,逻辑22可以包括定位(例如, 嵌入)在衬底21内的晶体管沟道区域。因此,逻辑22和衬底21之间的界 面可以不是突变结。逻辑22还可以被认为包括在衬底21的初始晶片上生 长的外延层。
[0036] 现在转到图3A至图3C,处理图形的方法25的实施例可以包括在框 28处确定针对一组图元的一个或多个条件,并且基于所确定的针对一组图 元的一个或多个条件在顶点着色器处执行图元复制。方法25的一些实施例 可以包括在方框30处重新配置图形流水线以在顶点着色器处执行图元复制。 例如,在框31处,方法25可以包括配置顶点着色器以生成原始图元的复 制图元并且调整针对第二目标的复制图元的相对于针对原始图元的第一目 标的相应位置属性。例如,在框32处第一和第二目标中的每一个可以分别 包括渲染目标和视口中的一个或多个。方法25的一些实施例可以进一步包 括在框33处基于是否对于几何着色器中的每个发射的顶点仅改变层和视口 中的一个或多个以及位置输出属性来确定第一条件,以及在框34处基于几 何着色器中所声明的发射顶点的数量是否小于阈值来确定第二条件,并且 在框35处基于来自几何体的每个顶点是否被发射到单独的渲染目标和单独 的视口中的一个中来确定第三条件。例如,方法25还可以包括在框36处 确定第一、第二和第三条件中的每一个是否被满足,并且在框37处如果满 足,则将与位置、层、视口计算和图元复制相关的操作从几何着色器移动 到顶点着色器,并且在框38处将与所有其他输出属性相关的操作从几何着 色器移动到顶点着色器。
[0037] 方法25的实施例可以实现在系统、装置、计算机、设备等,例如,本 文所描述的那些中。更具体地,方法25的硬件实现可以包括可配置逻辑, 例如,PLA、FPGA、CPLD或使用电路技术的固定功能逻辑硬件,例如ASIC、 CMOS或TTL技术,或其任何组合。另外或可替代地,方法25可以在一 个或多个模块中实现为存储在机器或计算机可读存储介质中的由处理器或 计算设备执行的一组逻辑指令,所述机器或计算机可读存储介质诸如RAM、 ROM、PROM、固件、闪存等。例如,用于执行组件的操作的计算机程序 代码可以以一种或多种OS适用/适当的编程语言的任何组合来编写,包括 诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等的面向对象的 编程语言,和传统的过程编程语言,例如“C”编程语言或类似的编程语言。
[0038] 例如,方法25可以在结合下面的示例20至25所描述的计算机可读介 质上实现。方法25的实施例或部分可以在固件、应用(例如,通过应用编 程接口(API))或在操作系统(OS)上运行的驱动器软件中实现。另外, 逻辑指令可以包括汇编指令、指令集架构(ISA)指令、机器指令、机器相 关指令、微代码、状态设置数据、用于集成电路的配置数据、使对于硬件 (例如,主处理器、中央处理单元/CPU、微控制器等)而言是本地的电子 电路和/或其他结构组件个性化的状态信息。
[0039] 一些实施例可以有利地将几何复制从几何着色器传送到具有图元复制 硬件(HW)特征的顶点着色器。一些实施例可以减少与一些虚拟现实(VR) 应用中的每眼(例如,每视口)几何复制相关的计算开销。其他一些图形 系统可以在VR应用中处理几何复制,在DirectX/OpenGL API级别进行复 制绘制调用,在几何着色器级别进行几何复制,或者明确使用API扩展, 允许每个渲染目标的几何体相乘(例如,被称为多视图扩展)。关于API级 别的复制绘制调用,这种方法在应用和图形驱动器中引起性能开销(例如, 2次(2x)或更多绘制调用)。几何着色器级别的几何复制可能会导致GPU 性能降低。通常,几何着色器可以提供几何扩展可能性。然而,在VR应用 的情况下,其中通常仅复制一个顶点的属性(例如,位置),几何体的使用 可能是不准确的并且可能不会如预期的那样提高GPU性能。关于多视图扩 展,该方法可以在应用开发者上强制执行专用于仅兼容原始复制扩展的HW 的单独实现。
[0040] 与传统方法相比,一些实施例可以在可能的情况下利用图元复制HW 特征将几何复制从几何着色器传送到顶点着色器。例如,图形驱动器可以 检测可以应用传输的用户应用中的特定场景,并调整图形流水线以将几何 复制移动到顶点着色器级。有利地,一些实施例可以减少必须分派和执行 的着色器实例的数量以及移动以执行几何复制的数据量。一些实施例还可 以通过减少在三维(3D)几何流水线中执行几何复制所需的时间来对克服 CPU和/或GPU开销具有积极影响。而且,不使用API扩展的应用可以获 得类似的性能增益,就像它们使用扩展一样(例如,一些实施例可能不要 求HW/驱动器系统是多视图扩展兼容的)。
[0041] 现在转向图4,电子处理系统40的实施例可包括中央处理器单元(CPU) 部分(例如,在虚线上方)和GPU部分(例如,在虚线下方)。CPU部分 可以支持图形应用41(例如3D应用)和图形(gfx)驱动器42(例如3D gfx 驱动器),而GPU部分可以支持增强的顶点着色器(VS)43(例如,包括 外壳着色器(HS))、域着色器(DS)、几何着色器(GS)逻辑、与位置计 算相关的逻辑等)、光栅级44和像素着色器(PS)/输出合并级45。在一些 图形和/或3D应用中,可以将相同的几何投影到不同的视口中和/或渲染目 标阵列切片,只有位置属性在不同的视口/切片之间基本上变化。一些使用 场景包括但不限于虚拟现实(VR)、立方体贴图渲染和体素照明以及级联阴 影贴图。在CPU部分,传统图形应用可以在DirectX/OpenGL应用编程接 口(API)级别对各种视口/切片使用多遍渲染和/或复制绘制调用。然而, 多次通过渲染或多次绘制调用可能在CPU部分(例如,图形应用41和/或 图形驱动器42)中产生性能开销。在GPU部分,一些其他系统可以在GS 处发生复制(例如,位于传统VS和光栅级44之间)。但是,GS处的复制 也可能通过分离类似的几何对象来阻碍GPU性能优化,因此几乎没有高速 缓存重用。GPU在启用GPU中的几何着色器时也可能会产生很大的性能开 销,而且并非所有API都支持几何着色器。
[0042] 有利地,电子处理系统40的一些实施例可以在顶点着色器43处执行 图元复制。例如,新的API构造可以在顶点着色器43处启用图元复制,从 而提高CPU级开销并避免GS复制引起的问题。特别地,在一些实施例中, 图形驱动器42可以包括图元复制命令,并且顶点着色器43可以包括与位 置计算有关的逻辑(例如,从GS移动到VS)。
[0043] 根据一些实施例,方法和/或装置可以使得能够在位置属性中的每个视 口改变的情况下跨多个视口复制图元。有利地,利用位置属性中的每个视 口变化来复制多个视口的图元可以使图形软件能够在单遍中执行诸如立体 渲染、立方体贴图渲染和/或级联阴影贴图生成的操作,从而节省重复,例 如,顶点着色和曲面细分。一些实施例还可以基于GPU架构和GPU使用 基于区块的渲染在仅着色器的位置中提供每视口的有效图元复制的实现。
[0044] 在一些实施例中,GPU部分可以包括图元复制HW特征(例如,如下 面更详细地讨论的),其允许顶点着色器43复制系统解释的位置输出顶点 属性。可以将这些副本分配给多个渲染目标和/或视口。
[0045] 当且仅当满足以下条件时,一些实施例可以将几何复制从几何着色器 传送到顶点着色器:1)在GS中,仅改变每个发射的顶点的层和/或视口以 及位置输出属性;2)GS中声明的发射顶点的数量足够小,以满足原始复 制特征的限制;3)来自GS的每个顶点都被发射到单独的渲染目标或单独 的视口中。为了在VS级而不是GS级处执行复制,图形驱动器的一些实施 例可以采取以下步骤:1)编译器单元可以检测几何着色器是否满足上述条 件;2)然后可以将与位置、层和/或视口计算有关的逻辑从GS移动到VS (例如,可以使用HW原语复制特征应用在VS级执行位置复制的专用技 术);3)与输出属性(例如,每发射顶点的常数)计算的其余部分相关的 剩余逻辑可以作为常规输出计算从GS移动到VS;4)编译器单元可以通知 图形驱动器状态单元以应用3D原语复制几何命令而不是常规命令;以及5) 图形驱动器状态单元不向HW提交几何着色器命令。有利地,一些实施例 可以提供功率和性能增益,因为GS不被执行,并且作为发射-顶点不变的 输出属性仅被发送一次而不是跨越GS中的所有发射的顶点被发送多次(例 如,每个发射的顶点)。
[0046] 现在转向图5,图形流水线50的实施例示出了图形流水线中的图元复 制能的一个示例。不限于特定实现,可以根据各种实施例来提供一些有 用的示例数据结构。可以定义根据实施例的状态分组,其可以作为称为 3DSTATE_PRIMITIVE_REPLICATION的附加3D状态结构暴露给API。该 状态结构可以例如由顶点着色器43输入,并且所提供的信息可以用在原语 复制过程中。用于数据结构的伪代码可以表示如下:
[0047] typedef struct 3DSTATE_PRIMITIVE_REPLICATION{
[0048] INT numReplicas;
[0049] INT replicaMask;
[0050] INT[16]VPAIoffsets;
[0051] INT[16]RTAIoffsets;
[0052] }
[0053] 其中:numReplicas指定最后一个前光栅着色器产生的复制位置的数量(例 如,该值与最后一个前光栅着色器的位置数组长度匹配);replicaMask指定 应该绘制哪些副本(例如,如果位k(0<=k<16)是清除的,则副本k将 不被光栅化;位k>=numReplicas可以被忽略);RTAIOffsets指定要针对每 个副本添加到SV_RenderTargetArraylndex的偏移(例如,其中SV可以指 示系统生成的值);以及VPAIOffsets指定要针对每个副本添加到 SV_ViewportArraylndex的偏移。
[0054] 在一些实施例中,还可以定义被称为“POS”的数据结构和被称为 “VERTEX HEADER”的顶点头部数据结构,其包含位置属性的阵列以及 与顶点数据相关联的其他数据(例如,其中VPI对应于视口索引)。该数据 结构可以由光栅化器之前的最后一个活动着色器级填充。用于数据结构的 伪代码可以表示如下:
[0055] typedef struct POS{
[0056] FLOAT X;
[0057] FLOAT Y;
[0058] FLOAT Z;
[0059] FLOAT W;}
[0060] typedef struct VERTEX_HEADER{
[0061] INT32 RTAI;
[0062] INT32 VPI;
[0063] INT32 PointWidth;
[0064] POS[numReplica]POSITION;
[0065] }
[0066] 图形流水线50可以在最后有效顶点着色器级51处利用上述数据结构。 如果状态启用了图元复制,则在图元组装之前的最后有效顶点着色器级51 可以将多个位置(例如,针对N+1视口,Vtx_Pos[0]到Vtx_Pos)与标头 一起写入顶点52。第一裁剪器53a可以生成用于访问多个位置的右顶点数 据地址,但是可以使用用于属性数据的相同的地址。原始复制块53b可以 通过适当地偏移视口和渲染目标索引来根据状态参数输入这些顶点、创建 对象,并复制图元。所有新位置可以通过用于多个视口55的透视分割和归 一化设备坐标(NDC)级53c和裁剪测试逻辑54。函数56的其余部分可以 在复制的图元上正常发生。
[0067] 图形流水线50可以有利地在光栅流水线中提供原始复制支持。光栅流 水线可以构建针对位置相关数据的图元和复制的图元偏移位置。每个复制 对象可以支持其自己的视口和渲染目标,有利地提供更大的灵活性。相邻 地包装用于复制的位置数据可以提供高速缓存益处并且可以减少位置读取 带宽。复制原语后,其余的图形流水线可能只需要很少的更改。有利地, 图形流水线50的一些实施例可以在顶点着色器51处执行图元复制。例如, 新的API构造可以在顶点着色器51处启用图元复制,从而改善CPU级开 销并且避免由GS复制引起的问题。特别地,在一些实施例中,图形驱动器 可以包括图元复制命令,并且顶点着色器51可以包括与位置计算有关的逻 辑(例如,从GS移动到VS)。
[0068] 现在转向图6,图形处理系统60的实施例可以包括重放流水线61和剔 除流水线62。一些实施例可以在剔除流水线中提供原始复制,而不是或者 另外在重放流水线中提供原始复制。例如,系统60可以包括剔除流水线62 中的图元复制63,并且对象可见性记录64可以将剔除/渲染信息传递给重 放流水线61。
[0069] 现在转向图7和8,GPU架构70的实施例可以遵循虚拟几何流水线71, 其中顶点经由顶点着色器71b-e变换,然后像素被三角形光栅化,然后将像 素着色并写入帧缓冲器77。图7示出了与API和编程模型匹配的基线GPU 架构70的更高级视图,而图8示出了基线GPU的更详细的微架构80。GPU 可以是统一的着色器模型,并且可以由三部分组成:非切片81、切片82 和非核85。
[0070] 在一些实施例中,3D图像可以作为三角形表面的集合开始,其中三角 形的顶点限定对象的形状。可以将这些顶点的输入列表提供给顶点取回器 (VF)71a,顶点取回器(71)又从存储器中取回与顶点相关联的属性。在 随后的顶点着色器(VS)71b中,使用可编程着色器来变换顶点的取回属 性。例如,可编程着色器可以充当子例程,该子例程将顶点映射到屏幕上, 并通过对其属性执行数学运算来向3D环境中的对象添加特殊效果。这些着 色器被分派到线程处理器-称为执行单元(EU),其中诸如位置、颜色、 纹理坐标等顶点的属性被变换,并且计算的值被存储在本地存储器82a中 以供随后的流水线级参考。VS单元的输出进入下一流水线级,其可以包括 外壳着色器(HS)71c、曲面细分71d和域着色器(DS)71e(如果适用), 或者发送到图元组装器71g,其中三角形(例如,图元)已创建。
[0071] 有利地,图形处理器70的一些实施例可以包括图元复制器71h,其通 信耦合到图元组装器71g以复制三角形。在一些实施例中,图元复制器71h 可以与顶点着色器71b-e中的一个或多个紧密耦合。例如,新的API构造可 以在顶点着色器71b-e处启用图元复制,从而提高CPU级开销并避免GS 复制引起的问题。特别地,在一些实施例中,图形驱动器可以包括图元复 制命令,并且顶点着色器71b-e可以包括与位置计算有关的逻辑(例如,从 GS移动到VS)。
[0072] 在三角形的创建和三角形的复制之后,第一裁剪级71i可以基于每个视 口丢弃视口截头体外部的三角形。视口平截头体平面内的三角形被接受并 发送到后续的流水线级。此外,另一裁剪级71j还可以裁剪与视锥体的平面 相交的三角形。可以通过简单的剔除级
71k再次检查在视口截头体丢弃和 裁剪操作中存活的三角形以确认三角形是否将是最终图像的一部分,并且 可以丢弃未通过这些测试的对象(例如,,丢弃或忽视)。例如,可以在 简单剔除级71k中丢弃面向后,退化,零面积等三角形。如下所述,对于 一些应用,可以通过视口平截头体裁剪级71i或简单剔除级71k丢弃超过三 角形的百分之八十(80%)。最后,可以将传递的三角形发送到设置单元72。
[0073] 基线架构70的另一部分是包含光栅化73、模板和深度74、着色和纹 理75以及颜色集群76的像素流水线。像素流水线以光栅化单元73开始, 光栅化单元73可以确定所有像素的位置,像素位于由几何流水线71发送 的三角形的内部或边缘上。此外,它将三角形划分为像素的对称块,其可 以被发送到深度(Z)流水线74以进行深度测试。由于3D场景中的多个对 象可以映射到相同位置,深度流水线74可以确定嵌入在框中的像素是最接 近观察者还是属于不同对象的被先前观察到的像素隐藏。然后可以对通过 深度测试的像素进行着色(着色和纹理单元75)以确定它们的颜色和与它 们相关的其他属性。最后,像素的计算值可以被发送到颜色流水线76,颜 色流水线76可以可选地将计算的值与先前已知的状态混合或者发送它们以 更新帧缓冲器77。
[0074] 如图8所示,从顶点取回器71a到简单剔除级71k的几何流水线71可 以类似地提供为微架构80的非切片部分81中的几何流水线81a。从几何流 水线81a发出的可编程着色器可以经由全局线程分派81b被分派到本地线 程处理器82d,并且计算值可以记录在本地存储器82a中。来自几何流水线 81a的经过的三角形可以被运送到切片82,其中它们可以通过光栅化步行 被分成像素的对称块。可以经由像素散列机制82b对像素块进行散列以决 定该块是否将在切片中被渲染。散列机构82b不仅可以负责负载平衡,还 可以保持像素一致性。
[0075] 如上所述,3D场景中的多个三角形可以重叠,并且在散列机构82b上 可以有责任经由计算群集82c将给定屏幕坐标处的像素块发送到相同的切 片82以及相同的本地线程调度82d。这样做是为了保持像素的深度和颜色 一致性。此外,微架构的切片部分82可以分成两个功能块,即像素流水线 82e和计算群集82c。如上所述,像素流水线82e可以包含光栅化、深度和 颜色群集,而计算群集82c可以包含用于执行可编程着色器的EU 82f的阵 列。每个EU 82f可以支持具有不同单指令多数据(SIMD)宽度的多个线 程上下文-即在一个实施例中,不同单指令多数据宽度是8、16或32。在 内部,EU 82f可能有两个流水线,每个流水线是4流的。每个流水线可以 具有四流SIMD处理器,并且可以执行浮点和标量指令二者。每个计算集 群82c还可以具有共享纹理采样单元82g和加载/存储单元82h,其可以执 行收集的读取以及分散的写入。另外,共享功能可以具有由统一的L2高速 缓存83备份的它们自己的私有高速缓存,如图8所示。最后,类似的架构 代可以尝试满足不同的细分市场,例如,从电话/平板设备到高端游戏计算 机。因此,类似的架构代可能支持具有不同数量的计算集群82c和切片82 的产品。
[0076] 在一些实施例中,非核85可以包含高速缓存/存储器接口84、最后一 级高速缓存(LLC)85a以及存储器86。就像切片82一样,非核配置也可 以是依赖市场细分的。例如,高端配置可以具有最后一级高速缓存以及嵌 入式动态随机存取存储器(eDRAM)85b,而用于电话/平板电脑的配置可 以具有存储器控制器和系统存储器。
[0077] 有利地,GPU架构70和/或微架构80的一些实施例可以在多个视口中 复制图元,其中在单个几何遍中每个视口的位置属性变化。在一些实施例 中,该特征可以使图形软件能够使用单遍执行诸如立体渲染、立方体贴图 渲染和级联阴影贴图生成之类的操作,从而节省例如重复的顶点着色和曲 面细分。在一些实施例中,该特征还可以允许利用可以应用于原始位置的 任意变换来评估不同视图处的位置的灵活性。例如,一些实施例可以允许 在多个视口之间复制任意计算的位置属性。
[0078] 以下是使用场景的非限制性示例,其中可以将具有相同属性的相同几 何体投影到不同视口中和/或渲染目标阵列索引,并且仅位置属性变化。
[0079] 1、立体渲染:图元复制器可以将图元复制到两个视口中,一个视口用 于左眼视口和一个视口用于右眼视口。例如,每个视口可能在X/Y方向上 具有不同的偏移。
[0080] 2、立方体贴图渲染/体素照明:图元复制器可以一次将图元映射到所有 6个立方体面上和/或一次计算6个体素面中的每一个的光贡献。例如,每 个视口可以投射到不同平面上/从不同平面投影。
[0081] 3、级联阴影贴图:图元复制器可以利用单个几何遍计算多个插入部分 (级联)的阴影贴图。在此示例中,所有视口都具有未修改的坐标。
[0082] 不限于特定实现,可以根据各种实施例提供一些有用的示例API特征。 提供跨视口复制图元的API特征在诸如用于3D TV的立体渲染(例如,具 有眼睛跟踪)、用于虚拟现实的立体渲染、立方体图生成和级联阴影图的应 用中可能是有用的。提供API特征以跨视口复制图元并呈现目标数组索引 (RTAI)在诸如立方体图生成和级联阴影图之类的应用中可能是有用的。 提供用于应用位置偏移的API特征在诸如具有眼睛跟踪(例如,用于XYW) 的3D电视(TV)的立体渲染和用于虚拟现实的立体渲染(例如,用于X) 的应用中可能是有用的。提供用于应用位置调和的API特征在诸如立方体 图生成(例如,用于XYW)的应用中可能是有用的。提供用于应用位置否 定的API特征在诸如立方体图生成之类的应用中可能是有用的。在下面的 非限制性示例用例I、II和III中提供了进一步的细节。
[0083] 用例I:虚拟现实-左/右眼渲染:
[0084] 1、参与者:人w/VR集,VR应用,3D驱动器/GPU;
[0085] 2、目标:投射在VR集上的左眼/右眼图像;
[0086] 3、事件的示例序列:
[0087] a.人开启穿戴VR设备的VR应用;
[0088] b.VR应用使用新的API来在3D驱动器中配置2个视口;
[0089] c.VR应用使用新的高级着色语言(HLSL)构造来计算每个视口位置 属性并跨视口广播其他属性;
[0090] d.VR应用提交一组双眼共用的绘制调用;以及
[0091] e.VR集显示两个图像,具有复制的几何图形以及每个眼睛视图的移位。
[0092] 用例II:立方体贴图渲染:
[0093] 1、参与者:3D应用,3D驱动器,GPU;
[0094] 2、目标:在单遍中呈现的立方体贴图(一次绘制调用);
[0095] 3、示例事件序列:
[0096] a.3D应用使用新的API在3D驱动器中配置6个视口;
[0097] b.3D应用使用新的HLSL构造来跨越来自VS的视口广播几何体,具 有不同的XYZW(例如,其中X,Y,Z是坐标,而W指示特定视口)混 合和否定(6个立方体面);以及[0098] c.3D应用提交一组绘制调用以生成所有6个立方体面。
[0099] 用例III:级联阴影图:
[0100] 1、参与者:3D应用,3D驱动器,GPU;
[0101] 2、目标:以单次通过(一次绘制调用)呈现的阴影图级联;
[0102] 3、示例事件序列:
[0103] a.3D应用使用现有API在3D驱动器中配置N个视口,具有不同的高 度/宽度;
[0104] b.3D应用使用新的HLSL构造在VS的视口中广播几何体;以及
[0105] c.3D应用提交一组绘制调用以在一次通过中生成所有N个阴影贴图级 联。
[0106] 现在转到图9,一些实施例有利地还可以在GPU架构90中执行图元复 制,GPU架构包括仅位置着色(POSH)流水线,其中图元可以被复制到多 个视口,并且可以基于每个视图对它们执行丢弃检查并且仅渲染这样的图 元,在其中至少有一个视图可见。有利地,GPU架构90的一些实施例可以 降低针对VR/立体声应用的API/驱动器处理开销。与API级复制方法相比, GPU架构90的一些实施例可以表现出GPU性能的益处,并且与几何着色 器复制方法相比表现出更高的性能。
[0107] GPU架构90可以包括两个几何流水线,即被称为剔除流水线91的第 一几何流水线和被称为重放流水线93的第二几何流水线。流水线91、93 都可以执行相同的应用的不同的实例,其中每个实例可能正在进行完全不 同的绘制调用。剔除流水线91的责任可以是计算三角形的可见性信息,无 论三角形是否被拒绝。由剔除流水线91确定的可见性信息可以存储在可见 性记录寄存器92(例如,先进先出(FIFO)寄存器)中,其可以通信地耦 合在剔除流水线91和重放流水线93之间。存储在可见性寄存器92中的信 息又可以由重放流水线93消耗以用于跳过丢弃的三角形。此外,剔除流水 线91可以通过仅获取和着色位置属性来更快地生成该关键信息,例如,作 为仅位置着色器。以这种方式,流水线91、93可以一起工作,不仅减少了 剔除三角形序列所需的工作量,而且还有效地跳过它们。
[0108] 重放流水线93可以与图7中的流水线71类似地配置,图7中的流水 线71包括顶点取回器93a、顶点着色器93b、外壳着色器93c、曲面细分单 元93d、域着色器93e和图元组装器93g。重放流水线93有利地可以进一 步包括图元复制器93h,其通信地耦合到图元组装器93g,以基于每个视口 来复制组装的图元。在一些实施例中,图元复制器93h可以与顶点着色器 93b-e中的一个或多个紧密耦合。例如,新的API构造可以在顶点着色器 93b-e处启用图元复制,从而提高CPU级开销并避免GS复制引起的问题。 特别地,在一些实施例中,图形驱动器可以包括图元复制命令,并且顶点 着色器93b-e可以包括与位置计算有关的逻辑(例如,从GS移动到VS)。 重放流水线93还可包括:第一剔除器93i,用于执行视锥体丢弃;3D裁剪 器93j,用于裁剪与视锥体相交的三角形;以及简单的剔除器93k,用于在 三角形上执行简单的剔除。
[0109] 如图9所示,图元复制器93h在图元组装器93g之后的图形流水线中 提供。图元复制器可以负责一次接受一个输入图元,并且然后为每个编程 的视口生成原始图元的多个复制品,并对例如系统解释的值(例如视口索 引、渲染目标数组索引和/或图层索引)进行一些调整。。
[0110] 图形流水线93的其余部分可以如前所述通过一次接受一个三角形来执 行,一次对一个视图进行丢弃测试和剔除。同样地,GPU架构90还可以包 括像素流水线94(例如,包括设置单元94a、光栅化单元94b、模板和深度 单元94c、着色和纹理单元94d,以及颜色混合单元94e)和本地存储器95。
[0111] 如图9所示,类似的图元复制器91d也被添加到剔除流水线91,并且 所有复制品可以在原始组装之后生成。剔除流水线91还可包括顶点取回器91a、顶点着色器91b、图元组装器91c、第一剔除器91e以用于执行图元的 可见性测试和/或剔除视锥体外的图元,以及简单的剔除器91f以用于在图 元上执行简单的剔除。所有组装和复制的图元都可以进行视口丢弃和简单 的剔除测试。如果三角形的任何复制品是可见的,则可以每个原始三角形 记录可见性流,将每个三角形标记为可见。如果由于可见性测试而拒绝所 有副本,则可见性流可以将三角形记录不可见。
[0112] 可替换地,在一些实施例中,剔除流水线91可被编程为具有覆盖所有 视图共有的整个视锥体的保守视口。在该替换示例中,剔除流水线91可能 不需要复制任何图元,而是可以仅基于每个组装的图元执行可见性测试并 记录可见性流。
[0113] 除了潜在的性能改进之外,仅位置着色还提供节省功率并增强架构90 的可伸缩性的机会。可以经由剔除流水线91利用GPU内的资源,使得GPU 可以更快地完成关键工作的计算。
[0114] 通常,着色属性可包括位置、法线、颜色和纹理坐标作为示例。在一 些实施例中,当要实现仅位置着色时,可以仅从存储器中读取位置属性而 不是读取所有属性,然后选择位置属性。在一些实施例中,这节省了时间, 计算周期和存储器带宽。因此,在一些实施例中,在顶点取回期间,顶点 取回器91a可以仅取回位置属性。在一些实施例中,位置着色器的计算可 以在时间上进一步解耦,使得GPU可以有效地隐藏一些剔除序列。机制可 以“预执行”位置着色器并且可以代表主应用有效地消耗其延迟,使得可 以跳过长时间运行的剔除序列。简而言之,在一些实施例中,仅位置着色 器不仅可以实现性能增益,而且还可以通过对丢弃的顶点执行更少的工作 来节省功率。
[0115] 在一些实施例中,可以从剔除流水线91中省略一些流水线,例如曲面 细分和几何着色器。如果绘制调用包括曲面细分、几何着色器或在剔除流 水线91中未实现的其他功能,则剔除流水线91跳过该绘制调用,并且重 放流水线93可以以常规方式处理该绘制调用。例如,重放流水线93可能 不期望该绘制调用的可见性信息。为了实现这一点,驾驶员可以在绘图调 用命令中设置一个位,指示命令是否进入剔除流水线91的域。类似地,可 能存在这样的情况:当仅顶点绘制调用可能需要经由先前绘制调用的像素 着色器计算的信息。这可能在应用中很少发生,但是驱动器仍然可以设置 该位,指示不会经由剔除流水线91处理这些类型的绘制调用。重放流水线 93包括其流水线中的丢弃/裁剪/剔除级以处理那些的情况。在一些实施例中, 剔除流水线91可以不包括3D裁剪器,因此与视锥台平面相交的三角形可 以被视为通过(例如,它们可以在剔除流水线91中被标记为可见)。然后, 重放流水线93可以处理所有图元裁剪。
[0116] 可见性FIFO 92可以将信息记录为绘制调用的每个三角形的按位序列。 例如,失败三角形为零(0),而通过三角形为一(1)。存在于FIFO 92中 的该信息可以经由剔除流水线91生成,并且可以由重放流水线93消耗以 用于跳过丢弃的三角形。在一些实施例中,FIFO 92的大小可以控制剔除流 水线91可以向前行进多远,并且因此可以影响架构的性能。
[0117] 在一些实施例中,可以禁用仅位置着色。例如,绘图调用驱动器可以 选择性地选择启用或禁用可见性记录。例如,如果绘制调用中只有几个顶 点,则与可见性记录相关联的开销可能无法证明在时间、存储器带宽和计 算周期方面的可见性记录的成本。可以针对特定绘制调用禁用可见性记录 的其他示例包括绘制调用中的所有顶点已知都是可见的线和情况。当禁用 仅位置着色时,重放流水线可能不会查找该绘制调用的任何按位信息,并 且可能没有整个绘制调用的可见性信息。
[0118] 本地存储器95可以用于记录由几何流水线91、93中的丢弃逻辑以及 用于渲染像素的像素流水线94两者引用的顶点的着色属性。回想顶点可以 具有任意数量的属性,例如位置、法线、颜色、纹理坐标等。这些属性可 以由各种顶点着色器着色,并且结果可以记录在本地存储器95中以供将来 参考。无论何时不再需要,记录的信息都可以被解除引用。例如,当剔除 逻辑丢弃三角形时或者当呈现给定三角形的所有像素时,可以取消引用信 息。在一些实施例中,本地存储器95可以是为顶点分配的寄存器的空闲列 表,并且然后在不需要时返回到池。
[0119] 剔除技术可以改善图形处理器中的性能。一些技术包括背面剔除、视 锥体剔除、Z-max遮挡剔除和遮挡查询。通常,剔除技术减少了渲染图像 所做的不必要工作量,例如,通过丢弃完全在视场(在图形中也称为视锥 体)之外的三角形。通常,较早的剔除测试在图形流水线中可能是优选的, 因为之后可以更早地在流水线中丢弃数据,并且可以降低成本。可以使用 仅位置着色(POS)流水线(例如,剔除流水线91)更早地执行Z-max遮 挡剔除。
[0120] 系统总览
[0121] 图10是根据实施例的处理系统100的框图。在各种实施例中,系统100 包括一个或多个处理器102和一个或多个图形处理器108,并且可以是单处 理器桌面系统、多处理器工作站系统或具有大量处理器102或处理器核107 的服务器系统。在一个实施例中,系统100是结合在用于移动、手持或嵌 入式设备中的片上系统(SoC)集成电路内的处理平台。有利地,处理系统 100的一些实施例可以在顶点着色器处执行图元复制。例如,新的API构造 可以在顶点着色器处启用图元复制,从而提高CPU级开销并避免GS复制 引起的问题。特别地,在一些实施例中,图形驱动器可以包括图元复制命 令,并且顶点着色器可以包括与位置计算有关的逻辑(例如,从GS移动到 VS)。例如,系统100可以实现方法25的一个或多个方面(图3A至3C)。
[0122] 在一个实施例中,系统100可以包括或者并入在基于服务器的游戏平 台、包括游戏和媒体控制台的游戏控制器、移动游戏控制台、手持游戏控 制台或在线游戏控制台内。在一些实施例中,系统100是移动电话、智能 电话、平板计算设备或移动互联网设备。处理系统100还可以包括、与其 耦合或集成在可穿戴设备(诸如智能手表可穿戴设备、智能眼镜设备、增 强现实设备或虚拟现实设备)内。在一些实施例中,处理系统100是具有 一个或多个处理器102和由一个或多个图形处理器108生成的图形界面的 电视或机顶盒设备。
[0123] 在一些实施例中,一个或多个处理器102各自包括一个或多个处理器 核107以处理指令,所述指令在被执行时执行用于系统和用户软件的操作。 在一些实施例中,一个或多个处理器核107中的每一个被配置为处理特定 指令集109。在一些实施例中,指令集109可以促进复杂指令集计算(CISC)、 精简指令集计算(RISC)或经由极长指令字(VLIW)的计算。多个处理器 核107可以各自处理不同的指令集109,其可以包括用于促进其他指令集的 模拟的指令。处理器核107还可以包括其他处理设备,诸如数字信号处理 器(DSP)。
[0124] 在一些实施例中,处理器102包括高速缓存存储器104。取决于架构, 处理器102可具有单个内部高速缓存或多个级别的内部高速缓存。在一些 实施例中,高速缓存存储器在处理器102的各种组件之间共享。在一些实 施例中,处理器102还使用外部高速缓存(例如,级别3(L3)高速缓存或 最终级高速缓存(LLC))(未示出),其可以使用已知的高速缓存一致性技 术在处理器核107之间共享。处理器102中另外包括寄存器文件106,其可 以包括不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器 和指令指针寄存器)以用于存储不同类型的数据。一些寄存器可以是通用 寄存器,而其他寄存器可以专用于处理器102的设计。
[0125] 在一些实施例中,一个或多个处理器102与一个或多个接口总线110 耦合,以在处理器102与系统100中的其他组件之间发送诸如地址、数据 或控制信号之类的通信信号。在一个实施例中,接口总线110可以是处理 器总线,例如直接媒体接口(DMI)总线的版本。然而,处理器总线不限 于DMI总线,并且可以包括一个或多个外围组件互连总线(例如,PCI、 快速PCI)、存储器总线或其他类型的接口总线。在一个实施例中,处理器 102包括集成存储器控制器116和平台控制器集线器130。存储器控制器116 促进存储器设备与系统100的其他组件之间的通信,而平台控制器集线器 (PCH)130经由本地I/O总线提供到I/O设备的连接。
[0126] 存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随 机存取存储器(SRAM)设备、闪存设备、相变存储器设备或具有合适性能 以充当进程存储器的一些其他存储器设备。在一个实施例中,存储器设备 120可以作为系统100的系统存储器来操作,以存储数据122和指令121以 供当一个或多个处理器102执行应用或进程时使用。存储器控制器116还 与可选的外部图形处理器112耦合,该外部图形处理器112可以与处理器 102中的一个或多个图形处理器108通信以执行图形和媒体操作。在一些实 施例中,显示设备111可以连接到处理器102。显示设备111可以是内部显 示设备中的一个或多个,如在移动电子设备或膝上型设备中或经由显示接 口(例如,显示端口等)附接的外部显示设备。在一个实施例中,显示设 备111可以是头戴式显示器(HMD),诸如用于虚拟现实(VR)应用或增 强现实(AR)应用的立体显示设备。
[0127] 在一些实施例中,平台控制器集线器130使外围设备能够经由高速I/O 总线连接到存储器设备120和处理器102。I/O外围设备包括但不限于音频 控制器146、网络控制器134、固件接口128、无线收发器126、触摸传感 器125、数据存储设备124(例如,硬盘驱动器、闪存等)。数据存储设备 124可以经由存储接口(例如,SATA)或经由外围总线(例如,外围组件 互连总线(例如,PCI、快速PCI))连接。触摸传感器125可包括触摸屏传 感器、压力传感器或指纹传感器。无线收发器126可以是Wi-Fi收发器、蓝 牙收发器,或移动网络收发器,例如3G、4G或长期演进(LTE)收发器。 固件接口128实现与系统固件的通信,并且可以是例如统一的可扩展固件 接口(UEFI)。网络控制器134可以启用到有线网络的网络连接。在一些实 施例中,高性能网络控制器(未示出)与接口总线110耦合。在一个实施 例中,音频控制器146是多通道高清晰度音频控制器。在一个实施例中, 系统100包括可选的传统I/O控制器140,其用于将传统(例如,个人系统 2(PS/2))设备耦合到系统。平台控制器集线器130还可以连接到一个或多 个通用串行总线(USB)控制器142、连接输入设备,例如键盘鼠标
143 组合、相机144或其他USB输入设备。
[0128] 应当意识到,所示的系统100是示例性的而非限制性的,因为也可以 使用不同配置的其他类型的数据处理系统。例如,存储器控制器116和平 台控制器集线器130的实例可以集成到离散的外部图形处理器(例如,外 部图形处理器112)中。在一个实施例中,平台控制器集线器130和/或存 储器控制器116可以是一个或多个处理器102外部的。例如,系统100可 以包括外部存储器控制器116和平台控制器集线器130,其可以被配置为与 处理器
102通信的系统芯片组内的存储器控制器集线器和外围控制器集线 器。
[0129] 图11是具有一个或多个处理器核202A-202N、集成存储器控制器214 和集成图形处理器208的处理器200的实施例的框图。图11的与本文任何 其它附图的元件具有相同的附图标记(或名称)的那些元件可以以与本文 其他地方所描述类似的任何方式操作或起作用,但不限于此。处理器200 可以包括附加核多达以下并且包括由虚线框表示的附加核202N。处理器核 202A-202N中的每一个包括一个或多个内部高速缓存单元204A-204N。在 一些实施例中,每个处理器核还可以存取一个或多个共享高速缓存单元206。 有利地,处理器200的一些实施例可以在顶点着色器处执行图元复制。例 如,新的API构造可以在顶点着色器处启用图元复制,从而提高CPU级开 销并避免GS复制引起的问题。特别地,在一些实施例中,图形驱动器可以 包括图元复制命令,并且顶点着色器可以包括与位置计算有关的逻辑(例 如,从GS移动到VS)。例如,处理器200可以实现方法25的一个或多个 方面(图3A至
3C)。
[0130] 内部高速缓存单元204A-204N和共享高速缓存单元206表示处理器 200内的高速缓存存储器分层结构。高速缓存存储器分层结构可以在每个处 理器核中包括至少一个级别的指令和数据高速缓存以及一个或多个级别的 共享中级高速缓存,例如级别2(L2)、级别3(L3)、级别4(L4)或其他 级别的高速缓存,其中外部存储器之前的最高级别的高速缓存被分类为 LLC。在一些实施例中,高速缓存一致性逻辑保持各种高速缓存单元206 和204A-204N之间的一致性。
[0131] 在一些实施例中,处理器200还可以包括一组一个或多个总线控制器 单元216和系统代理核210。一个或多个总线控制器单元216管理一组外围 总线,例如一个或多个PCI或者快速PCI总线。系统代理核210针对各种 处理器组件提供管理功能。在一些实施例中,系统代理核210包括一个或 多个集成存储器控制器214以管理对各种外部存储器设备(未示出)的存 取。
[0132] 在一些实施例中,处理器核202A-202N中的一个或多个包括对同时多 线程的支持。在这样的实施例中,系统代理核210包括用于在多线程处理 期间协调和操作核202A-202N的组件。系统代理核210可以另外包括功率 控制单元(PCU),其包括用于调节处理器核
202A-202N和图形处理器208 的功率状态的逻辑和组件。
[0133] 在一些实施例中,处理器200另外包括图形处理器208以执行图形处 理操作。在一些实施例中,图形处理器208与该组共享高速缓存单元206 以及与包括一个或多个集成存储器控制器214的系统代理核210耦合。在 一些实施例中,系统代理核210还包括显示控制器211,用于将图形处理器 输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器211 还可以是经由至少一个互连与图形处理器耦合的独立模块,或者可以集成 在图形处理器208内。
[0134] 在一些实施例中,使用基于环的互连单元212来耦合处理器200的内 部组件。然而,可以使用替代的互连单元,诸如点对点互连、交换互连或 其他技术,包括本领域众所周知的技术。在一些实施例中,图形处理器208 经由I/O链路213与环形互连212耦合。
[0135] 示例性I/O链路213表示多种I/O互连中的至少一种,包括促进各种处 理器组件与高性能嵌入式存储器模块218(诸如eDRAM模块)之间的通信 的封装I/O互连。在一些实施例中,处理器核202A-202N和图形处理器208 中的每一个使用嵌入式存储器模块218作为共享的最后级高速缓存。
[0136] 在一些实施例中,处理器核202A-202N是执行相同指令集架构的同质 核。在另一个实施例中,处理器核202A-202N在指令集架构(ISA)方面是 异构的,其中一个或多个处理器核202A-N执行第一指令集,而其他核中的 至少一个核执行第一指令集的子集或不同的指令集。在一个实施例中,就 微架构而言,处理器核202A-202N是异构的,其中具有相对较高功耗的一 个或多个核与具有较低功耗的一个或多个功率核耦合。另外,除了其他组 件之外,处理器200可以在一个或多个芯片上实现,或者作为具有除了其 它组件之外的所示组件的SoC集成电路来实现。
[0137] 图12是图形处理器300的框图,其可以是离散图形处理单元,或者可 以是与多个处理核集成的图形处理器。在一些实施例中,图形处理器经由 存储器映射的I/O接口与图形处理器上的寄存器以及放置在处理器存储器 中的命令进行通信。在一些实施例中,图形处理器300包括访问存储器的 存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部高 速缓存、一个或多个共享外部高速缓存,和/或到系统存储器的接口。有利 地,处理器300的一些实施例可以在顶点着色器处执行图元复制。例如, 新的API构造可以在顶点着色器处启用图元复制,从而提高CPU级开销并 避免GS复制引起的问题。特别地,在一些实施例中,图形驱动器可以包括 图元复制命令,并且顶点着色器可以包括与位置计算有关的逻辑(例如, 从GS移动到VS)。例如,处理器200可以实现方法25的一个或多个方面 (图3A至3C)。
[0138] 在一些实施例中,图形处理器300还包括显示控制器302以将显示输 出数据驱动到显示设备320。显示控制器302包括用于一个或多个覆盖平面 的硬件,用于多层视频或用户面元素的显示和合成。显示设备320可以是 内部或外部显示设备。在一个实施例中,显示设备320是头戴式显示设备, 诸如虚拟现实(VR)显示设备或增强现实(AR)显示设备。在一些实施例 中,图形处理器300包括视频编解码器引擎306,以将媒体编码为一个或多 个媒体编码格式,从一个或多个媒体编码格式解码,或在从一个或多个媒 体编码格式之间转码,媒体编码格式包括但不限于运动图像专家组(MPEG) 格式,例如诸如H.264/MPEG-4AVC的MPEG-2、高级视频编码(AVC)格 式,以及电影和电视工程师协会(SMPTE)421M/VC-1和联合图像专家组 (JPEG)格式,如JPEG和运动JPEG(MJPEG)格式。
[0139] 在一些实施例中,图形处理器300包括块图像传输(BLIT)引擎304 以执行二维(2D)光栅化器操作,包括例如位边界块传输。然而,在一个 实施例中,使用GPE 310的一个或多个组件来执行2D图形操作。在一些实 施例中,图形处理引擎310是用于执行图形操作的计算引擎,所述图形操 作包括三维(3D)图形操作和媒体操作。
[0140] 在一些实施例中,GPE 310包括3D流水线312,其用于执行3D操作, 诸如使用作用于3D图元形状(例如,矩形、三角形等)的处理功能来渲染 三维图像和场景。3D流水线312包括执行元件内的各种任务和/或将执行线 程产生到3D/媒体子系统315的可编程和固定功能元件。尽管3D流水线312 可以用于执行媒体操作,但是GPE 310的实施例还包括专门用于执行媒体 操作(例如视频后处理和图像增强)的媒体流水线316。
[0141] 在一些实施例中,媒体流水线316包括固定功能或可编程逻辑单元, 其用于代替或代表视频编解码引擎306执行一个或多个专用媒体操作,诸 如视频解码加速、视频去隔行和视频编码加速。在一些实施例中,媒体流 水线316另外包括线程产生单元,其用于产生用于在3D/媒体子系统315上 执行的线程。产生的线程执行用于3D/媒体子系统315中包括的一个或多个 图形执行单元上的媒体操作的计算。
[0142] 在一些实施例中,3D/媒体子系统315包括用于执行由3D流水线312 和媒体流水线316产生的线程的逻辑。在一个实施例中,流水线将线程执 行请求发送到3D/媒体子系统
315,其包括用于仲裁并将各种请求分派给可 用的线程执行资源的线程分派逻辑。执行资源包括一系列图形执行单元来 处理3D和媒体线程。在一些实施例中,3D/媒体子系统315包括用于线程 指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统还包括 共享存储器(包括寄存器和可寻址存储器)以在线程之间共享数据并存储 输出数据。
[0143] 图形处理引擎
[0144] 图13是根据一些实施例的图形处理器的图形处理引擎410的框图。在 一个实施例中,图形处理引擎(GPE)410是图12中所示的GPE 310的一 个版本。图13中的具有与本文的任何其它图中的元件相同的附图标记(或 名称)的元件可以以类似于在本文其他地方描述的任何方式进行操作,但 不限于此。例如,图示了图12的3D流水线312和媒体流水线316。媒体 流水线316在GPE 410的一些实施例中是可选的,并且可以不明确地包括 在GPE 410内。例如并且在至少一个实施例中,单独的媒体和/或图像处理 器耦合到GPE 410。有利地,GPE 
410的一些实施例可以在顶点着色器处执 行图元复制。例如,新的API构造可以在顶点着色器处启用图元复制,从 而提高CPU级开销并避免GS复制引起的问题。特别地,在一些实施例中, 图形驱动器可以包括图元复制命令,并且顶点着色器可以包括与位置计算 有关的逻辑(例如,从GS移动到VS)。例如,GPE 410可以实现方法25 的一个或多个方面(图3A至3C)。
[0145] 在一些实施例中,GPE 410与命令流式传送器403耦合或者包括命令 流式传送器403,命令流式传送器403向3D流水线312和/或媒体流水线 316提供命令流。在一些实施例中,命令流式传送器403耦合到存储器,存 储器可以是系统存储器,或一个或多个内部高速缓存和共享高速缓存。在 一些实施例中,命令流式传送器403从存储器接收命令并将命令发送到3D 流水线312和/或媒体流水线316。这些命令是从存储用于3D流水线312和 媒体流水线316的命令的环形缓冲区中取出的指令。在一个实施例中,环 形缓冲区可以另外包括存储批量的多个命令的批量命令缓冲区。用于3D流 水线312的命令还可以包括对存储在存储器中的数据的引用,例如但不限 于用于3D流水线312的顶点和几何数据和/或用于媒体流水线316的图像 数据和存储器对象。3D流水线312以及媒体流水线316通过经由相应流水 线内的逻辑执行操作或通过将一个或多个执行线程分派到图形核阵列414 来处理命令和数据。在一个实施例中,图形核阵列414包括图形核的一个 或多个块(例如,图形核415A、图形核415B),每个块包括一个或多个图 形核。每个图形核包括一组图形执行资源,其包括用于执行图形和计算操 作的通用和图形特定执行逻辑,以及固定功能纹理处理和/或机器学习和人 工智能加速逻辑。
[0146] 在各种实施例中,3D流水线312包括固定功能和可编程逻辑,其用于 通过处理指令以及将线程分派到图形核阵列来处理一个或多个着色器程序, 诸如顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或 其他着色器程序。图形核阵列414提供执行资源块的统一块,以用于处理 这些着色器程序。图形核阵列414的图形核415A-414B内的多用途执行逻 辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可以执 行与多个着色器相关联的多个同时执行线程。
[0147] 在一些实施例中,图形核阵列414还包括执行逻辑,其用于执行媒体 功能,例如视频和/或图像处理。在一个实施例中,除了图形处理操作之外, 执行单元还包括可编程以执行并行通用计算操作的通用逻辑。通用逻辑可 以并行地或结合图10的处理器核107或如图11的核202A-202N内的通用 逻辑来执行处理操作。
[0148] 由在图形核阵列414上执行的线程生成的输出数据可以将数据输出到 在统一返回缓冲区(URB)318中的存储器。URB 418可以存储多个线程的 数据。在一些实施例中,URB 418可用于在图形核阵列414上执行的不同 线程之间发送数据。在一些实施例中,URB 418可另外用于图形核阵列上 的线程与共享功能逻辑420内的固定功能逻辑之间的同步。。
[0149] 在一些实施例中,图形核阵列414是可缩放的,使得阵列包括可变数 量的图形核,每个图形核基于GPE 410的目标功率和性能水平具有可变数 量的执行单元。在一个实施例中,执行资源是动态可缩放的,使得可以根 据需要启用或禁用执行资源。
[0150] 图形核阵列414与共享功能逻辑420耦合,共享功能逻辑420包括在 图形核阵列中的图形核之间共享的多个资源。共享功能逻辑420内的共享 功能是向图形核阵列414提供专用补充功能的硬件逻辑单元。在各种实施 例中,共享功能逻辑420包括但不限于采样器421、数学422和线程间通信 (ITC)423逻辑。另外,一些实施例在共享功能逻辑420内实现一个或多 个高速缓存425。
[0151] 实现共享功能,其中针对给定专用功能的需求不足以包括在图形核阵 列414内。而是将该专用功能的单个实例化实现为共享功能逻辑420中的 独立实体,并且在图形核阵列414内的执行资源之间共享。在图形核阵列 414之间共享并包括在图形核阵列414内的精确功能集在实施例中变化。在 一些实施例中,图形核阵列414广泛使用的共享功能逻辑420内的特定共 享功能可以包括在图形核阵列414内的共享功能逻辑416内。在各种实施 例中,图形核阵列414内的共享功能逻辑416可以包括共享功能逻辑420 内的一些或所有逻辑。在一个实施例中,共享功能逻辑420内的所有逻辑 元件可以在图形核阵列414的共享功能逻辑416内复制。在一个实施例中, 共享功能逻辑420被排除支持图形核阵列414内的共享功能逻辑416。
[0152] 图14是根据本文描述的一些实施例的图形处理器核500的硬件逻辑的 框图。具有与本文任何其他附图的元件相同的附图标记(或名称)的图14 的元件可以以与本文其他地方描述的方式类似的任何方式操作或起作用, 但不限于此。在一些实施例中,所示的图形处理器核500包括在图13的图 形核阵列414内。图形处理器核500(有时称为核切片(slice))可以是模 块化图形处理器内的一个或多个图形核。图形处理器核500是一个图形核 切片的示例,并且如本文所述的图形处理器可以包括基于目标功率和性能 包络的多个图形核切片。每个图形核500可以包括与多个子核501A-501F (也称为子片)耦合的固定功能块530,所述多个子核501A-501F包括通用 和固定功能逻辑的模块化块。有利地,处理器500的一些实施例可以在顶 点着色器处执行图元复制。例如,新的API构造可以在顶点着色器处启用 图元复制,从而提高CPU级开销并避免GS复制引起的问题。特别地,在 一些实施例中,图形驱动器可以包括图元复制命令,并且顶点着色器可以 包括与位置计算有关的逻辑(例如,从GS移动到VS)。例如,处理器500 可以实现方法25的一个或多个方面(图3A至
3C)。
[0153] 在一些实施例中,固定功能块530包括几何/固定功能流水线536,其 可以由图形处理器500中的所有子核共享,例如,在较低性能和/或较低功 率图形处理器实现中。在各种实施例中,几何/固定功能流水线536包括3D 固定功能流水线(例如,如图12和图13中的3D流水线312)、视频前端 单元、线程产生器和线程分派器,以及统一返回缓冲区管理器,所述统一 返回缓冲区管理器管理统一返回缓冲区,例如图13的统一返回缓冲区418。
[0154] 在一个实施例中,固定功能块530还包括图形SoC接口537、图形微 控制器538和媒体流水线539。图形SoC接口537提供图形核500与片上 系统集成电路的系统上的其他处理器核之间的接口。图形微控制器538是 可编程子处理器,其可配置为管理图形处理器500的各种功能,包括线程 分派、调度和抢占。媒体流水线539(例如,图12和图13的媒体流水线 316)包括用于促进多媒体数据(包括图像和视频数据)的解码、编码、预 处理和/或后处理的逻辑。媒体流水线539经由对于在子核501-501F内的计 算或采样逻辑的请求来实现媒体操作。
[0155] 在一个实施例中,SoC接口537使图形核500能够与通用应用处理器 核(例如,CPU)和/或SoC内的其他组件通信,所述其他组件包括存储器 层级元件,诸如共享的最后一级高速缓存存储器、系统RAM和/或嵌入式 片上或封装DRAM。SoC接口537还可以实现与SoC内的固定功能设备(例 如相机成像流水线)的通信,并且使得能够使用和/或实现可以在图形核500 和SoC内的CPU之间共享的全局存储器原子。SoC接口537还可以实现针 对图形核500的功率管理控制,并启用图形核500的时钟域与SoC内的其 他时钟域之间的接口。在一个实施例中,SoC接口537使得能够从命令流 式传输器和全局线程分派器接收命令缓冲区,命令流传输器和全局线程分 派器被配置为向图形处理器内的一个或多个图形核中的每一个提供命令和 指令。当要执行媒体操作时,可以将命令和指令分派给媒体流水线539,或 者当图形处理操作要被执行时,可以将命令和指令分派给几何和固定功能 流水线(例如,几何和固定功能流水线536、几何和固定功能流水线514)。
[0156] 图形微控制器538可以被配置为执行针对图形核500的各种调度和管 理任务。在一个实施例中,图形微控制器538可以在在子核501A-501F内 的执行单元(EU)阵列502A-502F、504A-504F内的各种图形并行引擎上 执行图形和/或计算工作负载调度。在该调度模型中,在包括图形核500的SoC的CPU核上执行的主机软件可以提交多个图形处理器门铃之一的工作 负载,其在适当的图形引擎上调用调度操作。调度操作包括确定下一个要 运行的工作负载,将工作负载提交给命令流式传输器,预先占用引擎上运 行的现有工作负载,监视工作负载的进度,以及在工作负载完成时通知主 机软件。在一个实施例中,图形微控制器538还可以促进针对图形核500 的低功率或空闲状态,从而为图形核500提供在低功率状态转换期间独立 于操作系统和/或系统上的图形驱动器软件来保存和恢复图形核500内的寄 存器的能力。
[0157] 图形核500可具有大于或小于所示子核501A-501F的子核,最多N个 模块化子核。对于每组N个子核,图形核500还可以包括共享功能逻辑510、 共享和/或高速缓冲存储器
512、几何/固定功能流水线514,以及用于加速 各种图形和计算处理操作的附加固定功能逻辑516。共享功能逻辑510可以 包括与图13的共享功能逻辑420相关联的逻辑单元(例如,采样器、数学 和/或线程间通信逻辑),其可以由图形核500内的每个N个子核共享。共 享和/或高速缓存存储器512可以是图形核500内的一组N个子核 501A-501F的最后一级高速缓存,并且还可以用作多个子核可访问的共享存 储器。可以包括几何/固定功能流水线514而不是固定功能块530内的几何/ 固定功能流水线536,并且可以包括相同或类似的逻辑单元。
[0158] 在一个实施例中,图形核500包括附加的固定功能逻辑516,其可包括 供图形核500使用的各种固定功能加速逻辑。在一个实施例中,附加固定 功能逻辑516包括用于使用的仅位置着色的附加几何流水线。在仅位置着 色中,存在两个几何流水线,几何/固定功能流水线516、536内的全几何流 水线,以及剔除(cull)流水线,所述剔除流水线是可包括在附加固定功能 逻辑516内的附加几何流水线。在一个实施例中,剔除流水线是全几何流 水线的修剪版本。全流水线和剔除流水线可以执行同一应用的不同实例, 每个实例具有单独的上下文。仅位置着色可以隐藏已丢弃的三角形的长剔 除运行,使得在一些实例中,可以更早地完成着色。例如并且在一个实施 例中,附加固定功能逻辑516内的剔除流水线逻辑可以与主应用并行地执 行位置着色器,并且通常比全流水线更快地生成关键结果,因为剔除流水 线仅取回并着色顶点的位置属性,而不执行像素的光栅化和渲染到帧缓冲 区。剔除流水线可以使用生成的关键结果来计算针对所有三角形的可见性 信息,而不管这些三角形是否被剔除。全流水线(在这种情况下可以称为 重放流水线)可以消耗可见性信息以跳过剔除的三角形以仅着色最终传递 到光栅级的可见三角形。
[0159] 在一个实施例中,附加固定功能逻辑516还可以包括机器学习加速逻 辑,例如固定功能矩阵乘法逻辑,以用于包括用于机器学习训练或推理的 优化的实现。
[0160] 在每个图形子核501A-501F内包括一组执行资源,其可用于响应于图 形流水线、媒体流水线或着色器程序的请求来执行图形、媒体和计算操作。 图形子核501A-501F包括多个EU阵列502A-502F、504A-504F、线程分派 和线程间通信(TD/IC)逻辑503A-503F、3D(例如,纹理)采样器505A-505F、 媒体采样器506A-506F、着色器处理器507A-507F和共享本地存储器(SLM) 508A-508F。EU阵列502A-502F、504A-504F每个包括多个执行单元,其 是能够在图形、媒体或计算操作的服务(包括图形、媒体或计算着色器程 序)中执行浮点和整数/定点逻辑操作的通用图形处理单元。TD/IC逻辑 503A-503F执行针对子核内的执行单元的本地线程分派和线程控制操作,并 促进在子核的执行单元上执行的线程之间的通信。3D采样器505A-505F可 以将纹理或其他3D图形相关的数据读取到存储器中。3D采样器可以基于 配置的样本状态和与给定纹理相关联的纹理格式来不同地读取纹理数据。 媒体采样器506A-506F可以基于与媒体数据相关联的类型和格式来执行类 似的读取操作。在一个实施例中,每个图形子核501A-501F可以替代地包 括统一的3D和媒体采样器。在每个子核501A-
501F内的执行单元上执行的 线程可以利用每个子核内的共享本地存储器508A-508F,以使得在线程组内 执行的线程能够使用片上存储器的公共池来执行。
[0161] 执行单元
[0162] 图15A-图15B示出了线程执行逻辑600,其包括根据本文描述的实施 例的图形处理器核中采用的处理元件阵列。具有与本文任何其他图的元件 相同的附图标记(或名称)的图15A-图15B的元素可以以与本文其他地方 描述的方式类似的任何方式操作或起作用,但不限于此。图15A示出了线 程执行逻辑600的概述,其可以包括用图14的每个子核501A-501F示出的 硬件逻辑的变体。图15B示出了执行单元的示例性内部细节。
[0163] 如图15A所示出的,在一些实施例中,线程执行逻辑600包括着色器 处理器602、线程分派器604、指令高速缓存606、包括多个执行单元 608A-608N的可缩放执行单元阵列、采样器610、数据高速缓存612和数据 端口614。在一个实施例中,可缩放执行单元阵列可以通过基于工作负载的 计算要求启用或禁用一个或多个执行单元(例如,执行单元608A、608B、 608C、608D、至608N-1和608N中的任何一个)来动态地缩放。在一个实 施例中,所包括的组件经由链接到每个组件的互连结构互连。在一些实施 例中,线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样 器610和执行单元608A-608N中的一个或多个的到存储器(例如系统存储 器或高速缓存存储器)的一个或多个连接。在一些实施例中,每个执行单 元(例如608A)是独立的可编程通用计算单元,其能够执行多个同时的硬 件线程,并且同时针对每个线程处理多个数据元素。在各种实施例中,执 行单元的阵列608A-608N是可缩放的以包括任何数量的单独执行单元。
[0164] 在一些实施例中,执行单元608A-608N主要用于执行着色器程序。着 色器处理器602可以处理各种着色器程序并经由线程分派器604来分派与 着色器程序相关联的执行线程。在一个实施例中,线程分派器包括用于仲 裁来自图形和媒体流水线的线程发起请求并在执行单元608A-608N中的一 个或多个执行单元上实例化所请求的线程的逻辑。例如,几何流水线可以 将顶点、曲面细分或几何着色器分派给线程执行逻辑以进行处理。在一些 实施例中,线程分派器604还可以处理来自执行着色器程序的运行时线程 产生请求。
[0165] 在一些实施例中,阵列608A-608N中的执行单元支持包括对许多标准 3D图形着色器指令的本机支持的指令集,使得来自图形库(例如,Direct 3D 和OpenGL)的着色器程序以最小的平移执行。执行单元支持顶点和几何处 理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如像素着色 器、片段着色器)和通用处理(例如,计算和媒体着色器)。每个执行单元 608A-608N能够执行多发单指令多数据(SIMD),并且多线程操作在面对 更高延迟的存储器存取时实现有效的执行环境。每个执行单元内的每个硬 件线程都具有专用的高带宽寄存器文件和相关联的独立线程状态。对于能 够进行整数、单精度和双精度浮点运算、SIMD分支能力、逻辑运算、超越 运算和其他杂项运算的流水线,每个时钟执行多次执行。在等待来自存储 器或共享功能中的一个的数据时,执行单元608A-608N内的依赖性逻辑使 等待线程休眠,直到返回所请求的数据。当等待线程处于休眠状态时,硬 件资源可能用于处理其他线程。例如,在与顶点着色器操作相关联的延迟 期间,执行单元可以执行针对像素着色器、片段着色器或其他类型的着色 器程序(包括不同的顶点着色器)的操作。
[0166] 执行单元阵列608A-608N中的每个执行单元对数据元素阵列进行操作。 数据元素的数量是“执行大小”或指令的通道数量。执行通道是指令内数 据元素访问、掩码和流程控制的逻辑执行单位。通道的数量可以独立于特 定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量。在 一些实施例中,执行单元608A-608N支持整数和浮点数据类型。
[0167] 执行单元指令集包括SIMD指令。各种数据元素可以作为封装的数据 类型存储在寄存器中,并且执行单元将基于元素的数据大小处理各种元素。 例如,当在256位宽度的矢量上操作时,矢量的256位被存储在寄存器中, 并且执行单元对作为四个独立的64位封装的数据元素(四字(QW)大小 的数据元素)、8个独立的32位封装的数据元素(双字(DW)大小的数据 元素)、16个独立的16位封装的数据元素(字(W)大小的数据元素)或 32个独立的8位数据元素(字节(B)大小的数据元素)的矢量进行操作。 但是,不同的矢量宽度和寄存器大小是可能的。
[0168] 在一个实施例中,一个或多个执行单元可以组合成具有线程控制逻辑 (607A-607N)的融合的执行单元609A-609N,该线程控制逻辑对于融合的 EU是公共的。多个EU可以融入EU组。融合EU组中的每个EU可以配 置为执行单独的SIMD硬件线程。根据实施例,融合的EU组中的EU的数 量可以变化。另外,可以针对每个EU执行各种SIMD宽度,包括但不限于 SIMD8、SIMD16和SIMD32。每个融合的图形执行单元609A-609N包括至 少两个执行单元。例如,融合的执行单元609A包括第一EU 608A、第二 EU 608B和线程控制逻辑607A,所述线程控制逻辑607A对于第一EU 608A 和第二EU 608B是共同的。线程控制逻辑607A控制在融合图形执行单元 609A上执行的线程,允许融合的执行单元609A-609N内的每个EU使用公 共指令指针寄存器来执行。
[0169] 一个或多个内部指令高速缓存(例如,606)被包括在线程执行逻辑600 中以对用于执行单元的线程指令进行高速缓存。在一些实施例中,包括一 个或多个数据高速缓存(例如,612)以在线程执行期间高速缓存线程数据。 在一些实施例中,包括采样器610以提供用于3D操作的纹理采样和用于媒 体操作的媒体采样。在一些实施例中,采样器610包括专门的纹理或媒体 采样功能,以在将采样数据提供给执行单元之前,在采样过程期间处理纹 理或媒体数据。
[0170] 在执行期间,图形和媒体流水线经由线程产生和分派逻辑将线程发起 请求发送到线程执行逻辑600。一旦一组几何对象已经被处理并光栅化为像 素数据,则调用着色器处理器602内的像素处理器逻辑(例如,像素着色 器逻辑、片段着色器逻辑等)以进一步计算输出信息并使结果被写入到输 出表面(例如,颜色缓冲区、深度缓冲区、模板缓冲区等等)。在一些实施 例中,像素着色器或片段着色器计算要在光栅化对象上内插的各种顶点属 性的值。在一些实施例中,着色器处理器602内的像素处理器逻辑然后执 行应用编程接口(API)供应的像素或片段着色器程序。为了执行着色器程 序,着色器602经由线程分派器604将线程分派给执行单元(例如,608A)。 在一些实施例中,着色器处理器602使用采样器
610中的纹理采样逻辑来 存取存储在存储器中的纹理映射中的纹理数据。对纹理数据和输入几何数 据的算术运算针对每个几何片段计算像素颜色数据,或从进一步处理中丢 弃一个或多个像素。
[0171] 在一些实施例中,数据端口614针对线程执行逻辑600提供存储器存 取机制,将经处理的数据输出到存储器以进一步在图形处理器输出流水线 上进行处理。在一些实施例中,数据端口614包括或耦合到一个或多个高 速缓存存储器(例如,数据高速缓存612)以对数据高速缓存以用于经由数 据端口对存储器存取。
[0172] 如图15B所示,图形执行单元608可包括指令获取单元637、通用寄 存器文件阵列(GRF)624、架构寄存器文件阵列(ARF)626、线程仲裁器 622、发送单元630、分支单元632、一组SIMD浮点单元(FPU)634,并 且在一个实施例中是一组专用整数SIMD ALU 635。GRF 624和ARF 626 包括一组通用寄存器文件和架构寄存器文件,所述架构寄存器文件与可在 图形执行单元608中活动的每个同时硬件线程相关联。在一个实施例中, 每个线程架构状态保持在ARF 626中,而在线程执行期间使用的数据存储 在GRF 624中。每个线程的执行状态(包括针对每个线程的指令指针)可, 可以保存在ARF 626中的线程专用寄存器中。
[0173] 在一个实施例中,图形执行单元608具有作为同时多线程(SMT)和 细粒度交织多线程(IMT)的组合的架构。该架构具有模块化配置,其可以 在设计时基于同时线程的目标数量和每个执行单元的寄存器数量进行微调, 其中执行单元资源被划分为用于执行多个同时线程的逻辑。
[0174] 在一个实施例中,图形执行单元608可以共发出多个指令,每个指令 可以是不同的指令。图形执行单元线程608的线程仲裁器622可以将指令 分派给发送单元630、分支单元632或SIMD FPU 634中的一个以供执行。 每个执行线程可以访问GRF 624内的128个通用寄存器,其中每个寄存器 可以存储32个字节,可作为32位数据元素的SIMD 8元素向量访问。在一 个实施例中,每个执行单元线程可以访问GRF 624内的4千字节,但是实 施例不限于此,并且在其他实施例中可以提供更多或更少的寄存器资源。 在一个实施例中,多达七个线程可以同时执行,尽管每个执行单元的线程 数量也可以根据实施例而变化。在七个线程可以访问4千字节的实施例中, GRF 624可以存储总共28千字节。灵活的寻址模式可以允许寄存器被一起 寻址以有效地构建更宽的寄存器或表示跨步的矩形块数据结构。
[0175] 在一个实施例中,经由由消息传递发送单元630执行的“发送”指令 来分派存储器操作、采样器操作和其他较长延迟系统通信。在一个实施例 中,将分支指令分派给专用分支单元632以促进SIMD发散和最终收敛。
[0176] 在一个实施例中,图形执行单元608包括一个或多个SIMD浮点单元 (FPU)634以执行浮点运算。在一个实施例中,FPU 634还支持整数计算。 在一个实施例中,FPU 634可以SIMD执行多达M个32位浮点(或整数) 操作,或者SIMD执行多达2M个16位整数或16位浮点操作。在一个实施 例中,至少一个FPU提供扩展的数学能力以支持高吞吐量的超越数学函数 和双精度64位浮点。在一些实施例中,还存在一组8位整数SIMD ALU 635, 并且可以具体地优化该组8位整数SIMD ALU 635以执行与机器学习计算 相关联的操作。
[0177] 在一个实施例中,可以在图形子核分组(例如,子切片)中实例化图 形执行单元608的多个实例的阵列。对于可缩放性,产品架构师可以选择 每个子核分组的确切执行单元数。在一个实施例中,执行单元608可以跨 多个执行通道执行指令。在另一实施例中,在图形执行单元608上执行的 每个线程在不同的信道上执行。
[0178] 图16是示出了根据一些实施例的图形处理器指令格式700的框图。在 一个或多个实施例中,图形处理器执行单元支持具有多种格式的指令的指 令集。实线框示出通常包含在执行单元指令中的组件,而虚线包括可选组 件或仅包含在指令的子集中的组件。在一些实施例中,所描述和示出的指 令格式700是宏指令,因为它们是供应给执行单元的指令,而不是在处理 指令时由指令解码产生的微操作。
[0179] 在一些实施例中,图形处理器执行单元本地支持128位指令格式710 的指令。基于所选择的指令、指令选项和操作数的数量,64位压缩指令格 式730可用于某些指令。原生128位指令格式710提供对所有指令选项的 访问,而一些选项和操作受限于64位格式730。
以64位格式730可用的原 生指令因实施例而异。在一些实施例中,部分地使用索引字段713中的一 组索引值来压缩指令。执行单元硬件基于索引值参考一组压缩表,并使用 压缩表输出来重建128位指令格式710的原生指令。
[0180] 对于每种格式,指令操作码712定义执行单元要执行的操作。执行单 元跨每个操作数的多个数据元素并行执行每条指令。例如,响应于添加指 令,执行单元在表示纹理元素或图片元素的每个颜色通道上执行同时添加 操作。默认情况下,执行单元在操作数的所有数据通道上执行每条指令。 在一些实施例中,指令控制字段714使得能够控制某些执行选项,诸如信 道选择(例如,预测)和数据信道顺序(例如,调配)。对于128位指令格 式710中的指令,执行大小字段716限制将被并行执行的数据信道的数量。 在一些实施例中,执行大小字段716不可用于64位压缩指令格式730。
[0181] 一些执行单元指令具有多达三个操作数,包括两个源操作数src0 722、 src1 722和一个目的地操作数718。在一些实施例中,执行单元支持双目的 地指令,其中目的地之一是隐含的。数据操作指令可以具有第三源操作数(例如,SRC2 724),其中指令操作码712确定源操作数的数量。指令的最 后一个源操作数可以是与指令一起传递的立即数(例如,硬编码)值。
[0182] 在一些实施例中,128位指令格式710包括访问/地址模式字段726,其 指定例如是否使用直接寄存器寻址模式或间接寄存器寻址模式。当使用直 接寄存器寻址模式时,一个或多个操作数的寄存器地址直接由指令中的位 提供。
[0183] 在一些实施例中,128位指令格式710包括访问/地址模式字段726,其 指定该指令的地址模式和/或访问模式。在一个实施例中,访问模式用于针 对该指令定义数据访问对齐。一些实施例支持包括16字节对齐访问模式和 1字节对齐访问模式的访问模式,其中访问模式的字节对齐确定指令操作数 的访问对齐。例如,当处于第一模式时,指令可以针对源操作数和目的地 操作数使用字节对齐寻址,并且当处于第二模式时,指令可以针对所有源 操作数和目的地操作数使用16字节对齐寻址。
[0184] 在一个实施例中,访问/地址模式字段726的地址模式部分确定指令是 使用直接寻址还是间接寻址。当使用直接寄存器寻址模式时,指令中的位 直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时, 可以基于指令中的地址寄存器值和地址立即数字段来计算一个或多个操作 数的寄存器地址。
[0185] 在一些实施例中,基于操作码712位字段对指令进行分组以简化操作 码解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的类 型。所示的精确操作码分组仅仅是示例。在一些实施例中,移动和逻辑操 作码组742包括数据移动和逻辑指令(例如移动(mov)、比较(cmp))。 在一些实施例中,移动和逻辑组742共享五个最高有效位(MSB),其中移 动(mov)指令为0000xxxxb的形式并且逻辑指令为0001xxxxb的形式。流 控制指令组744(例如,调用、跳转(jmp))包括形式为0010xxxxb(例如, 0x20)的指令。杂项指令组746包括指令混合,其包括以0011xxxxb(例如, 0x30)形式的同步指令(例如,等待,发送)。并行数学指令组748包括 0100xxxxb(例如,0x40)形式的分量算术指令(例如,加法、乘法(mul))。 并行数学组748跨数据通道并行执行算术运算。矢量数学组750包括形式 为0101xxxxb(例如,
0x50)的算术指令(例如,dp4)。矢量数学组对矢量 操作数执行算术运算,例如点积计算。
[0186] 图形流水线
[0187] 图17是图形处理器800的另一实施例的框图。图17中的具有与本文 任何其他图的元件相同的附图标记(或名称)的元件可以以与本文其他地 方所描述的任何类似的方式操作或起作用,但不限于此。有利地,处理器 300的一些实施例可以在顶点着色器处执行图元复制。例如,新的API构造 可以在顶点着色器处启用图元复制,从而提高CPU级开销并避免GS复制 引起的问题。特别地,在一些实施例中,图形驱动器可以包括图元复制命 令,并且顶点着色器可以包括与位置计算有关的逻辑(例如,从GS移动到 VS)。例如,处理器200可以实现方法25的一个或多个方面(图3A至3C)。
[0188] 在一些实施例中,图形处理器800包括几何流水线820、媒体流水线 830、显示引擎840、线程执行逻辑850和渲染输出流水线870。在一些实 施例中,图形处理器800是包括一个或多个通用处理核的多核处理系统内 的图形处理器。图形处理器通过向一个或多个控制寄存器(未示出)的寄 存器写入或经由环形互连802向图形处理器800发出的命令来控制。在一 些实施例中,环形互连802将图形处理器800耦合到其他处理组件,诸如 其他图形处理器或通用处理器。来自环形互连802的命令由命令流式传送 器803解释,命令流式传送器803向几何流水线820或媒体流水线830的 各个组件供应指令。
[0189] 在一些实施例中,命令流式传送器803引导从存储器读取顶点数据的 顶点获取器805的操作,并且执行由命令流式传送器803提供的顶点处理 命令。在一些实施例中,顶点获取器805将顶点数据提供给顶点着色器807, 顶点着色器807对每个顶点执行坐标空间变换和照明操作。在一些实施例 中,顶点获取器805和顶点着色器807通过经由线程分派器
831将执行线 程分派给执行单元852A、852B来执行顶点处理指令。
[0190] 在一些实施例中,执行单元852A、852B是具有用于执行图形和媒体 操作的指令集的矢量处理器的阵列。在一些实施例中,执行单元852A、852B 具有附接的L1高速缓存851,其专用于每个阵列或在阵列之间共享。高速 缓存可以配置为数据高速缓存、指令高速缓存或被划分以在不同分区中包 含数据和指令的单个高速缓存。
[0191] 在一些实施例中,几何流水线820包括曲面细分组件以执行3D对象的 硬件加速的曲面细分。在一些实施例中,可编程外壳着色器811配置曲面 细分操作。可编程域着色器817提供曲面细分输出的后端评估。曲面细分 器813在外壳着色器811的方向上操作并且包含专用逻辑以基于作为输入 提供给几何流水线820的粗略几何模型来生成一组详细几何对象。在一些 实施例中,如果不使用曲面细分,则曲面细分组件(例如,全着色器811、 曲面细分器813、以及区域着色器817)可以被绕过。
[0192] 在一些实施例中,完整的几何对象可以由几何着色器819经由分派到 执行单元852A、852B的一个或多个线程来处理,或者可以直接进行到裁剪 器829。在一些实施例中,几何着色器在整个几何对象上进行操作,而不是 像在图形流水线的先前级中那样在顶点或顶点片上进行操作。如果曲面细 分被禁用,则几何着色器819从顶点着色器807接收输入。在一些实施例 中,如果曲面细分单元被禁用,则几何着色器819能够由几何着色器程序 编程以执行几何曲面细分。如上面详细讨论的,如果条件允许,可以省略 或绕过几何着色器,并且可以将原始复制和各种几何着色器逻辑移动到顶 点着色器。
[0193] 在光栅化之前,裁剪器829处理顶点数据。裁剪器829可以是固定功 能裁剪器或具有裁剪和几何着色器功能的可编程裁剪器。在一些实施例中, 渲染输出流水线870中的光栅化器以及深度测试组件873调度像素着色器 以将几何对象转换为其每像素表示。在一些实施例中,像素着色器逻辑被 包括在线程执行逻辑850中。在一些实施例中,应用可以绕过光栅化器以 及深度测试组件873并且经由流出单元823访问未光栅化的顶点数据。
[0194] 图形处理器800具有允许数据和消息在处理器的主要组件之间传递的 互连总线、互连结构或一些其他互连机制。在一些实施例中,执行单元 852A-852B和关联的逻辑单元(例如,L1高速缓存851、采样器854以及 纹理高速缓存858等)经由数据端口856互连以执行存储器存取并且与处 理器的渲染输出流水线组件进行通信。在一些实施例中,采样器854、高速 缓存851、858和执行单元852A、852B各自具有分离的存储器存取路径。 在一个实施例中,纹理高速缓存858还可以被配置为采样器高速缓存。
[0195] 在一些实施例中,渲染输出流水线870包含将基于顶点的对象转换为 关联的基于像素的表示的光栅化器和深度测试组件873。在一些实施例中, 光栅器逻辑包括加窗器/掩码器单元,以执行固定功能三角形和线光栅化。 在一些实施例中,相关联的渲染高速缓存878和深度高速缓存879也是可 用的。像素操作组件877对数据执行基于像素的操作,尽管在一些实例中, 与2D操作相关联的像素操作(例如,具有混合的位块图像传送)由2D引 擎
841执行,或者在显示时通过显示器控制器843使用重叠显示平面替代。 在一些实施例中,共享的L3高速缓存875可用于所有图形组件,允许在不 使用主系统存储器的情况下共享数据。
[0196] 在一些实施例中,图形处理器媒体流水线830包括媒体引擎837和视 频前端834。在一些实施例中,视频前端834从命令流式传送器803接收流 水线命令。在一些实施例中,媒体流水线830包括单独的命令流式传送器。 在一些实施例中,视频前端834在将命令发送到媒体引擎837之前处理媒 体命令。在一些实施例中,媒体引擎837包括线程产生功能以产生线程从 而经由线程分派器831分派给线程执行逻辑850。
[0197] 在一些实施例中,图形处理器800包括显示引擎840。在一些实施例中, 显示引擎840在处理器800的外部并经由环形互连802或一些其他互连总 线或结构与图形处理器耦合。在一些实施例中,显示引擎840包括2D引擎 841和显示控制器843。在一些实施例中,显示引擎840包含能够独立于3D 流水线而操作的专用逻辑。在一些实施例中,显示控制器843与显示设备 (未示出)耦合,该显示设备可以是如膝上型计算机之类的系统集成显示 设备,或者经由显示设备连接器附接的外部显示设备。
[0198] 在一些实施例中,几何流水线820和媒体流水线830能够配置成基于 多个图形和媒体编程接口来执行操作,并且不特定于任何一种应用编程接 口(API)。在一些实施例中,用于图形处理器的驱动器软件将对特定图形 或媒体库特定的API调用转换成可由图形处理器处理的命令。在一些实施 例中,针对全部来自Khronos Group的开放图形库(OpenGL)和/或Vulkan 图形以及计算API提供支持。在一些实施例中,还可以针对来自微软公司 的Direct3D库提供支持。在一些实施例中,可以支持这些库的组合。也可 以对开源计算机视觉库(OpenCV)提供支持。如果能够从未来API的流水 线到图形处理器的流水线进行映射,则还将支持具有兼容3D流水线的未来API。
[0199] 图形流水线编程
[0200] 图18A是示出了根据一些实施例的图形处理器命令格式900的框图。 图18B是示出了根据一个实施例的图形处理器命令序列910的框图。图18A 中的实线框示出了通常包括在图形命令中的组件,而虚线包括可选的或仅 包含在图形命令的子集中的组件。图18A的示例性的图形处理器命令格式 900包括用于标识客户端902、命令操作码(操作码)904以及该命令的数 据906的数据字段。子操作码905和命令大小908也包含在一些命令中。
[0201] 在一些实施例中,客户端902指定处理命令数据的图形设备的客户端 单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端字 段以调节命令的进一步处理并将命令数据路由到适当的客户端单元。在一 些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D 单元、3D单元和媒体单元。每个客户端单元都有处理这些命令的相应处理 流水线。一旦客户端单元接收到该命令,客户端单元就读取操作码904和 子操作码905(如果存在)以确定要执行的操作。客户端单元使用数据字段 906中的信息来执行命令。对于某些命令,预期明确的命令大小908以指定 命令的大小。在一些实施例中,命令解析器基于命令操作码来自动确定命 令中的至少一些的大小。在一些实施例中,命令经由双字的倍数对齐。
[0202] 图18B中的流程示出了示例性图形处理器命令序列910。在一些实施 例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所 示命令序列的一个版本来设置、执行并终止一组图形操作。仅出于示例的 目的示出和描述示例命令序列,因为实施例不限于这些特定命令或该命令 序列。而且,命令可以作为命令序列中的一批命令发布,使得图形处理器 将至少部分地同时处理命令序列。
[0203] 在一些实施例中,图形处理器命令序列910可以以流水线刷新命令912 开始,以使任何活动图形流水线完成流水线的当前未决命令。在一些实施 例中,3D流水线922和媒体流水线924不同时操作。执行流水线刷新以使 活动图形流水线完成任何未决命令。响应于流水线刷新,图形处理器的命 令解析器将暂停命令处理,直到活动绘图引擎完成未决操作并且相关读取 高速缓存失效。可选地,渲染高速缓存中标记为“脏”的任何数据都可以 刷新到存储器。在一些实施例中,流水线刷新命令912可以用于流水线同 步或者在将图形处理器置于低功率状态之前使用。
[0204] 在一些实施例中,当命令序列要求图形处理器在流水线之间明确切换 时使用流水线选择命令913。在一些实施例中,在发布流水线命令之前,在 执行上下文中仅需要一次流水线选择命令913,除非该上下文将发布针对两 个流水线的命令。在一些实施例中,紧接在经由流水线选择命令913的流 水线切换之前需要流水线刷新命令912。
[0205] 在一些实施例中,流水线控制命令914配置图形流水线以用于操作, 并用于对3D流水线922和媒体流水线924进行编程。在一些实施例中,流 水线控制命令914配置活动流水线的流水线状态。在一个实施例中,流水 线控制命令914被用于流水线同步并且在处理一批命令之前清除来自活动 流水线内的一个或多个高速缓存存储器的数据。
[0206] 在一些实施例中,返回缓冲区状态命令916被用于配置一组返回缓冲 区以便相应流水线写入数据。一些流水线操作需要分配、选择或配置一个 或多个返回缓冲区,操作在处理期间将中间数据写入该返回缓冲区。在一 些实施例中,图形处理器还使用一个或多个返回缓冲区来存储输出数据并 执行交叉线程通信。在一些实施例中,返回缓冲区状态916包括选择返回 缓冲区的大小和数量以用于一组流水线操作。
[0207] 命令序列中的其余命令基于用于操作的活动流水线而不同。基于流水 线确定920,命令序列针对从3D流水线状态930开始的3D流水线922或 从媒体流水线状态940开始的媒体流水线924而定制。
[0208] 用于3D流水线状态930的命令包括用于顶点缓冲区状态、顶点元素状 态、常量颜色状态、深度缓冲区状态以及在处理3D图元命令之前要配置的 其他状态变量的3D状态设置命令。这些命令的值至少部分基于正在使用的 特定3D API来确定。在一些实施例中,如果某些流水线元件将不被使用, 3D流水线状态930命令还能够选择性地禁用或绕过那些元件。
[0209] 在一些实施例中,3D图元932命令被用于提交将由3D流水线处理的 3D图元。经由3D图元932命令传递给图形处理器的命令和相关联的参数 被转发到图形流水线中的顶点获取函数。顶点获取函数使用3D图元932命 令数据来生成顶点数据结构。顶点数据结构存储在一个或多个返回缓冲区 中。在一些实施例中,3D图元932命令被用于经由顶点着色器对3D图元 执行顶点操作。为了处理顶点着色器,3D流水线922将着色器执行线程分 派给图形处理器执行单元。
[0210] 在一些实施例中,3D流水线922经由执行934命令或事件来触发。在 一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序 列中的“开始”或“踢”命令来触发执行。在一个实施例中,使用流水线 同步命令来触发命令执行以通过图形流水线刷新命令序列。3D流水线将执 行针对3D图元的几何处理。一旦操作完成,得到的几何对象被光栅化,并 且像素引擎对所得像素着色。用于控制像素着色和像素后端操作的附加命 令也可以包含以用于这些操作。
[0211] 在一些实施例中,当执行媒体操作时,图形处理器命令序列910在媒 体流水线924路径之后。通常,针对媒体流水线924的具体使用和编程方 式取决于要执行的媒体或计算操作。在媒体解码期间,特定的媒体解码操 作可以被卸载到媒体流水线。在一些实施例中,媒体流水线也可以被绕过, 并且可以使用由一个或多个通用处理核提供的资源来全部或部分地执行媒 体解码。在一个实施例中,媒体流水线还包括用于通用图形处理器单元 (GPGPU)操作的元件,其中图形处理器用于使用与图形图元的渲染不明 确相关的计算着色器程序来执行SIMD矢量操作。
[0212] 在一些实施例中,媒体流水线924以与3D流水线922类似的方式配置。 在媒体对象命令942之前,用于配置媒体流水线状态940的一组命令被分 派或放入命令队列中。在一些实施例中,用于媒体流水线状态的命令940 包括用于配置将被用来处理媒体对象的媒体流水线元素的数据。这包括用 于配置媒体流水线内的视频解码和视频编码逻辑的数据,如编码或解码格 式。在一些实施例中,用于媒体流水线状态的命令940还支持使用指向包 含一批状态设置的“间接”状态元素的一个或多个指针。
[0213] 在一些实施例中,媒体对象命令942供应指向媒体对象的指针以用于 由媒体流水线处理。媒体对象包括包含要处理的视频数据的存储器缓冲区。 在一些实施例中,在发布媒体对象命令942之前,所有媒体流水线状态必 须是有效的。一旦流水线状态被配置并且媒体对象命令942入队,则媒体 流水线924经由执行命令944或等同的执行事件(例如寄存器写入)触发。 然后,来自媒体流水线924的输出可以由3D流水线922或媒体流水线924 提供的操作进行后处理。在一些实施例中,GPGPU操作以与媒体操作类似 的方式被配置和执行。
[0214] 图形软件架构
[0215] 图10示出了根据一些实施例的用于数据处理系统1000的示例性图形 软件架构。在一些实施例中,软件架构包括3D图形应用1010、操作系统 1020和至少一个处理器1030。
在一些实施例中,处理器1030包括图形处 理器1032和一个或多个通用处理器核1034。图形应用1010和操作系统1020 各自在数据处理系统的系统存储器1050中执行。有利地,系统
1000的一 些实施例可以在顶点着色器处执行图元复制。例如,新的API构造可以在 顶点着色器处启用图元复制,从而提高CPU级开销并避免GS复制引起的 问题。特别地,在一些实施例中,图形驱动器可以包括图元复制命令,并 且顶点着色器可以包括与位置计算有关的逻辑(例如,从GS移动到VS)。 例如,系统1000可以实现方法25的一个或多个方面(图3A至3C)。
[0216] 在一些实施例中,3D图形应用1010包含一个或多个着色器程序,其 包括着色器指令1012。着色器语言指令可以是高级着色器语言,诸如高级 着色器语言(HLSL)或OpenGL着色语言(GLSL)。该应用还包括适用于 由通用处理器核1034执行的机器语言的可执行指令1014。该应用还包括由 顶点数据定义的图形对象1016。
[0217] 在一些实施例中,操作系统1020是来自微软公司的  操作系统、专有类UNIX操作系统或者使用Linux内 核的变体的开源类UNIX操作系统。操作系统1020可以支持图形API 1022, 诸如Direct3D API、OpenGL API或Vulkan API。当Direct3D API被使用时, 操作系统1020使用前端着色器编译器1024来将HLSL中的任何着色器指 令1012编译成较低级着色器语言。编译可以是即时(JIT)编译或应用可以 执行着色器预编译。在一些实施例中,在编译3D图形应用1010期间将高 级着色器编译成低级着色器。在一些实施例中,着色器指令1012以中间形 式(例如,Vulkan API使用的标准可移植中间表示(SPIR)的版本)提供。
[0218] 在一些实施例中,用户模式图形驱动器1026包含后端着色器编译器 1027以将着色器指令1012转换成硬件特定表示。当OpenGL API被使用时,GLSL高级语言的着色器指令1012被传递给用户模式图形驱动器1026以供 编译。在一些实施例中,用户模式图形驱动器
1026使用操作系统内核模式 功能1028来与内核模式图形驱动器1029通信。在一些实施例中,内核模 式图形驱动器1029与图形处理器1032通信以分派命令和指令。
[0219] IP核实现
[0220] 至少一个实施例的一个或多个方面可以通过代表和/或定义诸如处理器 之类的集成电路内的逻辑的存储在机器可读介质上的代表性代码来实现。 例如,机器可读介质可以包括表示处理器内的各种逻辑的指令。当由机器 读取时,指令可以使机器制造逻辑以执行本文描述的技术。被称为“IP核” 的这种表示是用于集成电路的逻辑的可重用单元,其可以作为描述集成电 路的结构的硬件模型存储在有形的、机器可读介质上。硬件模型可以供应 给各种客户或制造设施,这些客户或制造设施在制造集成电路的制造机器 上加载硬件模型。集成电路可以被制造为使得电路执行结合本文描述的任 何实施例描述的操作。
[0221] 图20A是示出了根据实施例的可用于制造集成电路以执行操作的IP核 开发系统1100的框图。IP核开发系统1100可以用于生成模块化的、可重 用的设计,其可以被结合到更大的设计中或被用于构建整个集成电路(例 如,SOC集成电路)。设计工具1130可以用高级编程语言(例如,C/C++) 生成IP核设计的软件模拟1110。软件模拟1110可以用于使用模拟模型1112 来设计、测试和验证IP核的行为。模拟模型1112可以包括功能、行为和/ 或时序模拟。然后,可以根据模拟模型1112来创建或合成寄存器传输级 (RTL)设计。RTL设计
1115是对硬件寄存器之间的数字信号流进行建模 的集成电路的行为的抽象,包括使用建模的数字信号执行的关联逻辑。除 了RTL设计1115之外,还可以创建、设计或合成逻辑电平或晶体管级的较 低级设计。因此,初始设计和模拟的具体细节可能会有所不同。
[0222] RTL设计1115或等同物可以进一步由设计工具合成为硬件模型1120, 其可以是硬件描述语言(HDL)或物理设计数据的一些其他表示。可以进 一步模拟或测试HDL以验证IP核设计。可以使用非易失性存储器1140(例 如,硬盘、闪存或任何非易失性存储介质)来存储IP核设计,以便传送到 第三方制造设施1165。可替代地,IP核设计可以通过有线连接1150或无线 连接1160被发送(例如,经由因特网)。制造设施1165然后可以制造至少 部分地基于IP核设计的集成电路。所制造的集成电路可以被配置为根据本 文描述的至少一个实施例执行操作。
[0223] 图20B示出了根据本文描述的一些实施例的集成电路封装组件1170的 横截面侧视图。集成电路封装组件1170示出了如本文所述的一个或多个处 理器或加速器设备的实现。封装组件1170包括连接到衬底1180的多个硬 件逻辑单元1172、1174。逻辑1172、1174可以至少部分地在可配置逻辑或 固定功能逻辑硬件中实现,并且可以包括处理器核、图形处理器或本文描 述的其他加速器设备中的任何的一个或多个部分。逻辑1172、1174的每个 单元可以在半导体管芯内实现,并且经由互连结构1173与衬底1180耦合。 互连结构1173可以被配置为在逻辑1172、1174和衬底1180之间路由电信 号,并且可以包括互连,例如但不限于凸块或支柱。在一些实施例中,互 连结构1173可以被配置为路由电信号,例如,与逻辑1172、1174的操作相 关联的输入/输出(I/O)信号和/或电源或接地信号。在一些实施例中,衬底 1180是基于环氧树脂层压衬底。在其他实施例中,封装衬底1180可以包 括其他合适类型的衬底。封装组件1170可以经由封装互连1183连接到其 他电子器件。封装互连1183可以耦合到衬底1180的表面以将电信号路由 到其他电子设备,例如母板、其他芯片组或多个芯片模块。
[0224] 在一些实施例中,逻辑单元1172、1174与桥1182电耦合,桥1182被 配置为在逻辑1172、1174之间路由电信号。桥1182可以是提供针对电子信 号的路由的密集互连结构。桥
1182可以包括由玻璃或合适的半导体材料构 成的桥衬底。可以在桥衬底上形成电路由特征,以在逻辑1172、1174之间 提供芯片到芯片的连接。
[0225] 尽管示出了两个逻辑单元1172、1174和桥1182,但是本文描述的实施 例可以在一个或多个管芯上包括更多或更少的逻辑单元。一个或多个管芯 可以通过零个或多个桥连接,因为当逻辑包括在单个管芯上时可以排除桥 1182。可替换地,多个管芯或逻辑单元可以通过一个或多个桥连接。另外, 多个逻辑单元、管芯和桥可以以其他可能的配置(包括三维配置)连接在 一起。
[0226] 片上集成电路的示例性系统
[0227] 图21-图23示出了根据本文描述的各种实施例的可以使用一个或多个 IP核制造的示例性集成电路和相关联的图形处理器。除了所示的内容之外, 可以包括其他逻辑和电路,包括附加的图形处理器/核、外围接口控制器或 通用处理器核。
[0228] 图21是示出了根据实施例的可以使用一个或多个IP核制造的芯片集 成电路1200上的示例性系统的框图。示例性集成电路1200包括一个或多 个应用处理器1205(例如,CPU)、至少一个图形处理器1210,并且可以 另外包括图像处理器1215和/或视频处理器1220,其中的任何一个可以是 来自相同或多个不同的设计工具的模块化IP核。集成电路包括外围设备或 总线逻辑,其包括USB控制器1225、UART控制器1230、SPI/SDIO控制 器1235
2 2
和IS/I C控制器1240。另外,集成电路可包括显示设备1245,显 示设备1245耦合到以下中的一个或多个:高清晰度多媒体接口(HDMI) 控制器1250和移动工业处理器接口(MIPI)显示接口1255。存储可以由包 括闪存和闪存控制器的闪存子系统1260提供。存储器接口可以经由存储器 控制器1265被提供以访问SDRAM或SRAM存储器设备。有利地,电路 1200的一些实施例可以在顶点着色器处执行图元复制。例如,新的API构 造可以在顶点着色器处启用图元复制,从而提高CPU级开销并避免GS复 制引起的问题。特别地,在一些实施例中,图形驱动器可以包括图元复制 命令,并且顶点着色器可以包括与位置计算有关的逻辑(例如,从GS移动 到VS)。例如,电路1200可以实现方法25的一个或多个方面(图3A至 3C)。
[0229] 图22A-图22B是示出了根据本文描述的实施例的在SoC内使用的示例 性图形处理器的框图。图22A示出了根据一个实施例的可以使用一个或多 个IP核制造的片上系统集成电路的示例性图形处理器1310。图22B示出了 根据实施例的可以使用一个或多个IP核制造的片上系统集成电路的另外的 示例性图形处理器1340。图22A的图形处理器1310是低功率图形处理器 核的示例。图22B的图形处理器1340是更高性能图形处理器核的示例。每 个图形处理器1310、1340可以是图21的图形处理器1210的变体。
[0230] 如图22A所示,图形处理器1310包括顶点处理器1305和一个或多个 片段处理器1315A-1315N(例如,1315A、1315B、1315C、1315D到1315N-1 和1315N)。图形处理器1310可以经由单独的逻辑执行不同的着色器程序, 使得顶点处理器1305被优化以执行针对顶点着色器程序的操作,而一个或 多个片段处理器1315A-1315N执行针对片段或像素着色器程序的片段(例 如,像素)着色操作。顶点处理器1305执行3D图形流水线的顶点处理级 并生成图元和顶点数据。片段处理器1315A-1315N使用由顶点处理器1305 生成的图元和顶点数据来产生显示在显示设备上的帧缓冲区。在一个实施 例中,片段处理器1315A-1315N被优化以执行如OpenGL API中提供的片 段着色器程序,其可用于执行与针对Direct 3D API提供的像素着色器程序 类似的操作。
[0231] 图形处理器1310另外包括一个或多个存储器管理单元(MMU) 1320A-1320B、高速缓存1325A-1325B和电路互连1330A-1330B。一个或 多个MMU 1320A-1320B针对图形处理器1310提供虚拟到物理地址映射, 包括针对顶点处理器1305和/或片段处理器1315A-1315N,除了存储在一个 或多个高速缓存1325A-1325B中的顶点或图像/纹理数据之外,其可以参考 存储在存储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个 MMU 1320A-
1320B可以与系统内的其他MMU同步,包括与图21的一个 或多个应用处理器1205、图像处理器1215和/或视频处理器1220相关联的 一个或多个MMU,使得每个处理器1205-1220可以参与共享或统一的虚拟 存储器系统。根据实施例,一个或多个电路互连1330A-1330B使得图形处 理器1310能够经由SoC的内部总线或经由直接连接与SoC内的其他IP核 接口。
[0232] 如图22B所示,图形处理器1340包括图22A的图形处理器1310的一 个或多个MMU 1320A-1320B、高速缓存1325A-1325B和电路互连 1330A-1330B。图形处理器1340包括一个或多个着色器核1355A-1355N(例 如,1455A、1355B、1355C、1355D、1355E、1355F,至1355N-1和1355N), 其提供统一的着色器核架构,其中单核或类型或核可以执行所有类型的可 编程着色器代码,包括用于实现顶点着色器的着色器程序代码、片段着色 器和/或计算着色器。存在的着色器核的确切数量可以在实施例和实现之间 变化。另外,图形处理器1340包括核心间任务管理器1345,其充当线程调 度器以将执行线程分派到一个或多个着色器核心1355A-1355N和拼接单元1358以加速用于基于图块的渲染的拼接操作,其中场景的渲染操作被细分 在图像空间中,例如以利用场景内的局部空间相干性或优化内部高速缓存 的使用。
[0233] 图23A-图23B示出了根据本文描述的实施例的另外的示例性图形处理 器逻辑。图23A示出了可以包括在图21的图形处理器1210内的图形核1400, 并且可以是如图22B中的统一着色器核1355A-1355N。图23B示出了适合 于部署在多芯片模块上的高度并行的通用图形处理单元的附加通用图形处 理单元1430。
[0234] 如图23A所示,图形核1400包括共享指令高速缓存1402、纹理单元 1418和高速缓存/共享存储器1420,它们对于图形核1400内的执行资源是 公共的。图形核1400可以包括每个核的多个切片1401A-1401N或分区,并 且图形处理器可以包括图形核1400的多个实例。切片1401A-1401N可以包 括支持逻辑,其包括本地指令高速缓存1404A-1404N、线程分派器 1406A-1406N线程分派器1408A-1408N,以及一组寄存器1410A-1440N。 为了执行逻辑操作,切片1401A可以包括一组附加功能单元(AFU 1412A-1412N)、浮点单元(FPU 1414A-1414N)、整数算术逻辑单元(ALU 1416-1416N)、地址计算单元(ACU 1413A-1413N)、双精度浮点单元(DPFPU 1415A-1415N)和矩阵处理单元(MPU 1417A-1417N)。
[0235] 一些计算单元以特定精度操作。例如,FPU 1414A-1414N可以执行单 精度(32位)和半精度(16位)浮点运算,而DPFPU 1415A-1415N执行 双精度(64位)浮点运算。ALU 1416A-1416N可以以8位、16位和32位 精度执行可变精度整数运算,并且可以被配置用于混合精度运算。MPU 1417A-1417N还可以配置用于混合精度矩阵运算,包括半精度浮点运算和
8 位整数运算。MPU 1417-1417N可以执行各种矩阵操作以加速机器学习应用 框架,包括支持加速的通用矩阵到矩阵乘法(GEMM)。AFU 1412A-1412N 可以执行浮点或整数单元不支持的附加逻辑运算,包括三角运算(例如, 正弦、余弦等)。
[0236] 如图23B所示,通用处理单元(GPGPU)1430可以被配置为使得高度 并行的计算操作能够由图形处理单元阵列执行。另外,GPGPU 1430可以直 接链接到GPGPU的其他实例以创建多GPU集群以提高针对特别深度神经 网络的训练速度。GPGPU 1430包括主机接口1432,其用于实现与主机处 理器的连接。在一个实施例中,主机接口1432是快速PCI接口。
但是,主 机接口也可以是供应商特定的通信接口或通信结构。GPGPU 1430从主处理 器接收命令并使用全局调度器1434将与那些命令相关联的执行线程分发到 一组计算集群
1436A-1436H。计算集群1436A-1436H共享高速缓冲存储器 1438。高速缓冲存储器1438可以用作针对计算集群1436A-1436H内的高速 缓存存储器的更高级高速缓存。
[0237] GPGPU 1430包括经由一组存储器控制器1444A-1444B与计算集群 1436A-1436H耦合的存储器1434A-1434B。在各种实施例中,存储器 1434A-1434B可包括各种类型的存储器装置,包括动态随机存取存储器 (DRAM)或图形随机存取存储器,例如随机同步图形存取存储器 (SGRAM),包括图形双倍数据速率(GDDR)存储器。
[0238] 在一个实施例中,计算集群1436A-1436H每个包括一组图形核,例如 图23A的图形核1400,其可以包括多种类型的整数和浮点逻辑单元,其可 以以一系列精度执行计算操作,包括适合于机器学习计算。例如并且在一 个实施例中,每个计算集群1436A-1436H中的浮点单元的至少一个子集可 以被配置为执行16位或32位浮点运算,而浮点单元的不同子集可以配置 为执行64位浮点运算。
[0239] GPGPU 1430的多个实例可以被配置为作为计算集群操作。计算集群用 于同步和数据交换的通信机制因实施例而异。在一个实施例中,GPGPU 1430的多个实例通过主机接口1432进行通信。在一个实施例中,GPGPU 1430包括I/O集线器1439,其将GPGPU 1430与GPU链路1440耦合,GPU 链路1440使得能够直接连接到GPGPU的其他实例。在一个实施例中,GPU 链路1440耦合到专用GPU到GPU桥,其实现GPGPU 1430的多个实例之 间的通信和同步。在一个实施例中,GPU链路1440与高速互连耦合以发送 和接收数据到其他GPGPU或并行处理器。在一个实施例中,GPGPU 1430 的多个实例位于单独的数据处理系统中,并且经由可经由主机接口1432访 问的网络设备进行通信。在一个实施例中,GPU链路1440可被配置为实现 与主机处理器的连接,除了主机接口1432之外或作为其替代。
[0240] 虽然GPGPU 1430的所示配置可以被配置为训练神经网络,但是一个 实施例提供GPGPU 1430的备选配置,其可以被配置用于在高性能或低功 率推理平台内部署。在推理配置中,GPGPU 1430相对于训练配置包括更少 的计算集群1436A-1436H。另外,与存储器1434A-1434B相关联的存储器 技术可以在推理和训练配置之间不同,其中更高带宽的存储器技术致力于 训练配置。在一个实施例中,GPGPU 1430的推理配置可以支持推理特定指 令。例如,推理配置可以提供针对一个或多个8位整数点积指令的支持, 这些指令通常在针对部署的神经网络的推理操作期间使用。
[0241] 有利地,任何上述系统、处理器、图形处理器、装置和/或方法可以与 本文描述的任何各种实施例(例如,或其部分)集成或配置,包括例如下 面附加说明和示例中描述的那些。
[0242] 附加说明和示例:
[0243] 示例1可以包括一种图形处理器系统,包括处理器,通信地耦合到处 理器的存储器,以及通信地耦合到处理器和存储器的逻辑,其用于确定针 对一组图元的一个或多个条件,并且基于所确定的针对一组图元的一个或 多个条件来在顶点着色器处执行图元复制。。
[0244] 示例2可以包括示例1的系统,其中该逻辑还用于重新配置图形流水 线以在顶点着色器处执行图元复制。
[0245] 示例3可以包括示例2的系统,其中该逻辑还用于配置顶点着色器以 生成原始图元的复制图元,并调整针对第二目标的复制图元的相对于针对 原始图元的第一目标的相应位置属性。
[0246] 示例4可以包括示例3的系统,其中第一和第二目标中的每一个分别 包括渲染目标和视口中的一个或多个。
[0247] 示例5可以包括示例1的系统,其中该逻辑还用于基于是否对于几何 着色器中的每个发射的顶点仅改变层和视口中的一个或多个以及位置输出 属性来确定第一条件,基于几何着色器中声明的发射的顶点的数量是否小 于阈值来确定第二条件,并基于来自几何体中的每个顶点是否发射到单独 的渲染目标以及单独的视口中的一个来确定第三条件。
[0248] 示例6可以包括示例5的系统,其中逻辑还用于确定第一、第二和第 三条件中的每一个是否满足,并且如果满足,则将与位置、层、视口计算 以及图元复制相关的操作从几何着色器移动到顶点着色器,并将与所有其 他输出属性相关的操作从几何着色器移动到顶点着色器。
[0249] 示例7可以包括一种半导体封装装置,包括一个或多个衬底,以及耦 合到所述一个或多个衬底的逻辑,其中所述逻辑至少部分地在可配置逻辑 和固定功能硬件逻辑中的一个或多个中实现,该逻辑耦合到一个或多个衬 底,用于确定针对一组图元的一个或多个条件,并基于所确定的针对一组 图元的一个或多个条件来在顶点着色器处执行图元复制。
[0250] 示例8可以包括示例7的装置,其中逻辑还用于重新配置图形流水线 以在顶点着色器处执行图元复制。
[0251] 示例9可以包括示例8的装置,其中逻辑还用于配置顶点着色器以生 成原始图元的复制图元,并调整针对第二目标的复制图元的相对于针对原 始图元的第一目标的相应位置属性。
[0252] 示例10可以包括示例9的装置,其中第一和第二目标中的每一个分别 包括渲染目标和视口中的一个或多个。
[0253] 示例11可以包括示例7的装置,其中,逻辑还用于基于是否对于几何 着色器中的每个发射的顶点仅改变层和视口中的一个或多个以及位置输出 属性来确定第一条件,基于几何着色器中声明的发射的顶点的数量是否小 于阈值来确定第二条件,并基于来自几何体中的每个顶点是否发射到单独 的渲染目标以及单独的视口中的一个来确定第三条件。
[0254] 示例12可以包括示例11的装置,其中逻辑还用于确定第一、第二和 第三条件中的每一个是否满足,并且如果满足,则将与位置、层、视口计 算以及图元复制相关的操作从几何着色器移动到顶点着色器,并将与所有 其他输出属性相关的操作从几何着色器移动到顶点着色器。
[0255] 示例13可以包括示例7至12中任一示例的装置,其中耦合到一个或 多个衬底的逻辑包括定位在一个或多个衬底内的晶体管沟道区域。
[0256] 示例14可以包括一种处理图形的方法,包括确定针对一组图元的一个 或多个条件,以及基于所确定的针对一组图元的一个或多个条件来在顶点 着色器处执行图元复制。
[0257] 示例15可以包括示例14的方法,还包括重新配置图形流水线以在顶 点着色器处执行图元复制。
[0258] 示例16可以包括示例15的方法,还包括配置顶点着色器以生成原始 图元的复制图元,并调整针对第二目标的复制图元的相对于针对原始图元 的第一目标的相应位置属性。
[0259] 示例17可以包括示例16的方法,其中第一和第二目标中的每一个分 别包括渲染目标和视口中的一个或多个。
[0260] 示例18可以包括示例14的方法,还包括基于是否对于几何着色器中 的每个发射的顶点仅改变层和视口中的一个或多个以及位置输出属性来确 定第一条件,基于几何着色器中声明的发射的顶点的数量是否小于阈值来 确定第二条件,并基于来自几何体中的每个顶点是否发射到单独的渲染目 标以及单独的视口中的一个来确定第三条件。
[0261] 示例19可以包括示例18的方法,还包括确定第一、第二和第三条件 中的每一个是否满足,并且如果满足,则将与位置、层、视口计算以及图 元复制相关的操作从几何着色器移动到顶点着色器,并将与所有其他输出 属性相关的操作从几何着色器移动到顶点着色器。
[0262] 示例20可以包括至少一个计算机可读存储介质,包括一组指令,所述 指令当由计算设备执行时,使得计算设备用于确定针对一组图元的一个或 多个条件,并且基于所确定的针对一组图元的一个或多个条件来在顶点着 色器处执行图元复制。
[0263] 示例21可以包括示例20的至少一个计算机可读存储介质,包括另一 组指令,所述指令当由计算设备执行时,使得计算设备用于重新配置图形 流水线以在顶点着色器处执行图元复制。
[0264] 示例22可以包括示例21的至少一个计算机可读存储介质,包括另一 组指令,所述指令当由计算设备执行时,使得计算设备用于配置顶点着色 器以生成原始图元的复制图元,并且调整针对第二目标的复制图元的相对 于针对原始图元的第一目标的相应位置属性。
[0265] 示例23可以包括示例22的至少一个计算机可读存储介质,其中第一 和第二目标中的每一个分别包括渲染目标和视口中的一个或多个。
[0266] 示例24可以包括示例20的至少一个计算机可读存储介质,包括另一 组指令,所述指令当由计算设备执行时,使得计算设备用于基于是否对于 几何着色器中的每个发射的顶点仅改变层和视口中的一个或多个以及位置 输出属性来确定第一条件,基于几何着色器中声明的发射的顶点的数量是 否小于阈值来确定第二条件,并基于来自几何体中的每个顶点是否发射到 单独的渲染目标以及单独的视口中的一个来确定第三条件。
[0267] 示例25可包括示例24的至少一个计算机可读存储介质,包括另一组 指令,所述指令当由计算设备执行时,使得计算设备用于确定第一、第二 和第三中的每一个条件是否满足,如果满足,则将与位置、层、视口计算 以及图元复制相关的操作从几何着色器移动到顶点着色器,并将与所有其 他输出属性相关的操作从几何着色器移动到顶点着色器。
[0268] 示例26可以包括一种图形处理器装置,包括用于确定针对一组图元的 一个或多个条件的单元,以及用于基于所确定的针对一组图元的一个或多 个条件来在顶点着色器处执行图元复制的单元。
[0269] 示例27可以包括示例26的装置,还包括用于重新配置图形流水线以 在顶点着色器处执行图元复制的单元。
[0270] 示例28可以包括示例27的装置,还包括用于配置顶点着色器以生成 原始图元的复制图元并且调整针对第二目标的复制图元的相对于针对原始 图元的第一目标的相应位置属性的单元。
[0271] 示例29可以包括示例28的装置,其中第一和第二目标中的每一个分 别包括渲染目标和视口中的一个或多个。
[0272] 示例30可以包括示例26的装置,还包括用于基于是否对于几何着色 器中的每个发射的顶点仅改变层和视口中的一个或多个以及位置输出属性 来确定第一条件的单元,用于基于几何着色器中声明的发射的顶点的数量 是否小于阈值来确定第二条件的单元,以及用于基于来自几何体中的每个 顶点是否发射到单独的渲染目标以及单独的视口中的一个来确定第三条件 的单元。
[0273] 示例31可以包括示例30的装置,还包括用于确定第一、第二和第三 中的每一个条件是否满足,并且如果满足,则将与位置、层、视口计算以 及图元复制相关的操作从几何着色器移动到顶点着色器的单元,以及用于 将与所有其他输出属性相关的操作从几何着色器移动到顶点着色器的单元。
[0274] 实施例适用于所有类型的半导体集成电路(“IC”)芯片。这些IC芯片 的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、 存储器芯片、网络芯片、片上系统(SoC)、SSD/NAND控制器ASIC等。 另外,在一些附图中,信号导线用线表示。一些可以是不同的,以指示更 多组成信号路径,具有数字标签,以指示多个组成信号路径,和/或在一端 或多端具有箭头,以指示主要信息流方向。然而,这不应以限制方式解释。 而是,可以结合一个或多个示例性实施例使用这种附加细节,以便于更容 易地理解电路。任何表示的信号线,无论是否具有附加信息,实际上可以 包括可以在多个方向上行进的一个或多个信号,并且可以用任何合适类型 的信号方案来实现,例如,利用差分对、光纤线和/或单端线实现的数字或 模拟线路。
[0275] 可以给出示例尺寸/模型/值/范围,但是实施例不限于此。随着制造技术 (例如,光刻)随着时间的推移而成熟,预期可以制造更小尺寸的器件。 另外,为了简化说明和讨论,并且为了不使实施例的某些方面模糊,可以 在图中示出或不示出与IC芯片和其他组件公知的电源/接地连接。此外,可 以以框图形式示出布置以避免模糊实施例,并且还考虑到关于这种框图布 置的实现的细节高度依赖于实现该实施例的平台的事实,即,这些细节应 该在本领域技术人员的知识范围内。在阐述具体细节(例如,电路)以便 描述示例实施例的情况下,对于本领域技术人员来说显而易见的是,可以 在没有或具有这些具体细节的变化的情况下实践实施例。因此,该描述被 认为是说明性的而非限制性的。
[0276] 术语“耦合”在本文中可用于指代所讨论的组件之间的任何类型的直 接或间接关系,并且可以应用于电气、机械、流体、光学、电磁、机电或 其他连接。另外,除非另有说明,否则这里可以使用术语“第一”、“第二” 等仅仅是为了便于讨论,并且不带有特定的时间或按时间的顺序。
[0277] 如在本申请和权利要求中所使用的,由术语“中的一个或多个”连接 的项目列表可以表示所列术语的任何组合。例如,短语“A、B和C中的一 个或多个”和短语“A、B或C中的一个或多个”都可以表示A;B;C;A 和B;A和C;B和C;或A、B和C。
[0278] 本领域技术人员将从前面的描述中理解,实施例的广泛技术可以以各 种形式实现。因此,虽然已经结合其具体示例描述了实施例,但是实施例 的真实范围不应受此限制,因为在研究了附图、说明书和所附权利要求之 后,其他修改对于本领域技术人员将变得显而易见。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈