CN109690629B - 图元着色器 - Google Patents

图元着色器 Download PDF

Info

Publication number
CN109690629B
CN109690629B CN201780054424.8A CN201780054424A CN109690629B CN 109690629 B CN109690629 B CN 109690629B CN 201780054424 A CN201780054424 A CN 201780054424A CN 109690629 B CN109690629 B CN 109690629B
Authority
CN
China
Prior art keywords
shader
primitive
vertex
primitives
screen
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
CN201780054424.8A
Other languages
English (en)
Other versions
CN109690629A (zh
Inventor
托德·马丁
曼格西·P·尼娅休尔
兰迪·W·拉姆齐
迈克尔·曼托尔
劳伦·列费布尔
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.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Inc
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 ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of CN109690629A publication Critical patent/CN109690629A/zh
Application granted granted Critical
Publication of CN109690629B publication Critical patent/CN109690629B/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
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Abstract

公开了对图形处理流水线的改进。更具体地,新的图元着色器级执行以下各项的任务:如果启用曲面细分,则是顶点着色器级或者域着色器级;如果启用,则是几何着色器;以及固定功能图元汇编器。所述图元着色器级由驱动器根据用户提供的顶点或域着色器代码、几何着色器代码以及执行所述图元汇编器的功能的代码来进行编译。将所述固定功能图元汇编器的任务移动到在可编程硬件中执行的图元着色器提供许多益处,诸如移除固定功能交叉开关、移除在一般计算模式中不可用的专用参数和位置缓冲区以及其他益处。

Description

图元着色器
相关申请的交叉参考
本申请要求于2016年9月22日提交的美国临时申请号62/398,211、2017年1月25日提交的美国专利申请号15/415,823以及2017年2月7日提交的欧洲申请号EP17155075.9的权益,所述申请通过引用的方式并入本文,如同在此完整阐述一样。
技术领域
所公开的实施例总体涉及图形处理流水线,并且具体地涉及一种图元着色器。
背景技术
三维图形处理流水线接受来自主机(诸如计算系统的中央处理单元)的命令并且处理这些命令以生成用于在显示装置上显示的像素。图形处理流水线包括执行单独任务的多个级,诸如变换顶点位置和属性、计算像素颜色等等。图形处理流水线正在不断开发和改进。
发明内容
本发明提供了一种用于执行三维图形渲染的方法,所述方法包括:利用在并行处理单元中执行的图元着色器程序来在图形处理流水线的图元着色器级对一组顶点执行逐顶点操作;对与所述一组顶点相关联的一组图元执行剔除操作以生成一组剔除图元,所述剔除操作是用所述图元着色器在所述图元着色器级来执行的;利用所述图元着色器来在所述图元着色器级识别对于所述一组剔除图元的一个或多个屏幕细分;以及基于所述一组剔除图元的所述识别的屏幕细分来将所述一组剔除图元传输到一组屏幕空间流水线,所述传输由所述图元着色器执行并且经由通用本地数据存储库存储器,其中经由所述通用本地数据存储库存储器而非经由固定功能交叉开关或经由专用位置缓冲区和参数缓冲区来执行将所述一组剔除图元传输到所述一组屏幕空间流水线,其中所述图元着色器级包括在所述图形处理流水线的屏幕空间流水线之前的所述图形处理流水线的可编程级。
本发明还提供了一种加速处理装置(APD),其包括:图形处理流水线;通用本地数据存储库存储器,以及多个并行处理单元,其中所述图形处理流水线包括可编程图元着色器级,所述图元着色器级被配置成在所述多个并行处理单元上执行图元着色器程序,所述图元着色器级在所述图形处理流水线的屏幕空间流水线之前,所述图元着色器程序被配置成:对一组顶点执行逐顶点操作;对与所述一组顶点相关联的一组图元执行剔除操作以生成一组剔除图元;利用所述图元着色器来识别对于所述一组剔除图元的一个或多个屏幕细分;以及基于所述一组剔除图元的所述识别的屏幕细分来将所述一组剔除图元经由所述通用本地数据存储库存储器传输到所述图形处理流水线的一组屏幕空间流水线,其中经由所述通用本地数据存储库而非经由固定功能交叉开关或经由专用位置缓冲区和参数缓冲区来将所述一组剔除图元传输到所述一组屏幕空间流水线。
本发明还提供了一种计算装置,其包括:中央处理单元,以及加速处理装置(APD),所述APD包括:图形处理流水线;通用本地数据存储库存储器,以及多个并行处理单元,其中所述图形处理流水线包括可编程图元着色器级,所述图元着色器级被配置成在所述多个并行处理单元上执行图元着色器程序,所述图元着色器级在所述图形处理流水线的屏幕空间流水线之前,所述图元着色器程序被配置成:对从所述中央处理单元接收的一组顶点执行逐顶点操作;对与所述一组顶点相关联的一组图元执行剔除操作以生成一组剔除图元;利用所述图元着色器来识别对于所述一组剔除图元的一个或多个屏幕细分;以及基于所述一组剔除图元的所述识别的屏幕细分来将所述一组剔除图元经由所述通用本地数据存储库存储器传输到所述图形处理流水线的一组屏幕空间流水线,其中经由所述通用本地数据存储库而非经由固定功能交叉开关或经由专用位置缓冲区和参数缓冲区来将所述一组剔除图元传输到所述一组屏幕空间流水线。
附图说明
从以下结合附图通过实例给出的描述中可得到更详细的理解,在附图中:
图1是可实现一个或多个公开的实施例的示例性装置的框图;
图2是图1的装置的展示了另外的细节的框图;
图3A-图3C展示了图2所示的图形处理流水线的另外细节;
图4A展示了根据一个实例的修改的图形处理流水线,其允许在世界空间流水线中进行更灵活的处理以及从世界空间流水线到屏幕空间流水线的更灵活的传输;
图4B和图4C展示了当禁用曲面细分(图4B)和启用曲面细分时(图4C),将要为图元着色器执行的着色器程序的实例;并且
图4D展示了根据一个实例的图形处理流水线的另外细节;并且
图5是根据一个实例的用于执行图元着色器的功能的方法的流程图。
具体实施方式
本公开涉及图形处理流水线的改进。更具体地,新的图元着色器级执行以下各项的任务:如果启用曲面细分,则是顶点着色器级或者域着色器级;如果启用,则是几何着色器;以及固定功能图元汇编器。图元着色器级由驱动器根据用户提供的顶点或域着色器代码、几何着色器代码以及执行图元汇编器的功能的代码来进行编译。将固定功能图元汇编器的任务移动到在可编程硬件中执行的图元着色器提供许多益处,诸如移除固定功能交叉开关、移除在一般计算模式中不可用的专用参数和位置缓冲区以及其他益处。
图1是其中实现本公开的一个或多个方面的示例性装置100的框图。装置100包括例如计算机、游戏装置、手持装置、机顶盒、电视、移动电话或平板计算机。装置100包括处理器102、存储器104、存储装置106、一个或多个输入装置108以及一个或多个输出装置110。装置100还可选地包括输入驱动器112和输出驱动器114。应当理解,装置100可包括图1中未示出的附加部件。
处理器102包括位于同一管芯上的中央处理单元(CPU)、图形处理单元(GPU)、CPU和GPU或者一个或多个处理器内核,其中每个处理器内核可为CPU或GPU。存储器104位于与处理器102相同的管芯上,或者可与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。
存储装置106包括固定或可移除存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置108包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速度计、陀螺仪、生物识别扫描器或网络连接(例如,用于发送和/或接收无线IEEE 802信号的无线局域网卡)。输出装置110包括显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于发送和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入装置108通信,并且允许处理器102从输入装置108接收输入。输出驱动器114与处理器102和输出装置110通信,并且允许处理器102将输出发送到输出装置110。输出驱动器114包括加速处理装置(APD)116,其耦合到显示装置118。APD被配置成接受来自处理器102的计算命令和图形渲染命令、处理那些计算和图形渲染命令、并且将像素输出提供给显示装置118以供显示。
APD 116包括一个或多个并行处理单元,所述一个或多个并行处理单元被配置成根据单指令多数据(“SIMD”)范例来执行计算。然而,被描述为由APD 116执行的功能也可由不根据SIMD范例处理数据的处理装置来执行。
图2是装置100的框图,展示了与在APD 116上执行处理任务有关的另外细节。处理器102在系统存储器104中维护一个或多个控制逻辑模块,以供处理器102执行。控制逻辑模块包括操作系统120、驱动器122和应用程序126,并且可任选地包括未示出的其他模块。这些控制逻辑模块控制处理器102和APD 116的操作的各种方面。例如,操作系统120直接与硬件通信,并且为在处理器102上执行的其他软件提供与硬件的接口。驱动器122通过例如向在处理器102上执行的软件(例如,应用程序126)提供应用程序编程接口(“API”)来控制APD116的操作,以访问APD 116的各种功能。驱动器122还包括即时编译器,所述即时编译器将着色器代码编译成着色器程序,以便由APD 116的处理部件(诸如以下进一步详细讨论的SIMD单元138)来执行。
APD 116执行用于所选功能的命令和程序,诸如可适用于并行处理的图形操作和非图形操作。APD 116用于执行图形流水线操作,诸如像素操作、几何计算,并且基于从处理器102接收的命令将图像渲染到显示装置118。APD 116还基于从处理器102接收的命令来执行与图形操作不直接相关的或者不是图形处理流水线的“正常”信息流的一部分的计算处理操作,诸如与视频、物理模拟、计算流体动力学或其他任务相关的操作。
APD 116包括着色器引擎132(其在本文中可统称为“可编程处理单元202”),其包括一个或多个SIMD单元138,所述SIMD单元被配置成应处理器102的请求来根据SIMD范例以并行方式执行操作。SIMD范例是其中多个处理元件共享单个程序控制流程单元和程序计数器并且因此执行相同程序但是能够利用不同数据执行所述程序的一种范例。在一个实例中,每个SIMD单元138包括十六个通道,其中每个通道与SIMD单元138中的其他通道同时执行相同的指令,但是可用不同的数据执行所述指令。如果并非所有通道都需要执行给定指令,则可通过预测来关闭通道。预测也可用于执行具有不同控制流程的程序。更具体地,对于具有条件分支或其他指令的程序,其中控制流程是基于由单个通道执行的计算,对应于当前未执行的控制流程路径以及不同控制流程路径的串行执行的通道的预测允许遵循任意控制流程。
着色器引擎132中的基本执行单元是工作项。每个工作项表示将要在特定通道中并行执行的着色器程序的单个实例化。工作项通常作为单个SIMD单元138上的“波前”同时执行。多个波前被包括在“工作组”中,所述工作组包括指定来执行同一程序的工作项的集合。通过执行构成工作组的每个波前来执行工作组。波前可在单个SIMD单元138上顺序执行,或者在不同SIMD单元138上部分或完全并行执行。波前可认为是着色器程序的并行执行的实例,其中每个波前包括多个工作项,这些工作项根据SIMD范例在单个SIMD单元138上同时执行(例如,一个指令控制单元执行具有多个数据的相同的指令流)。调度器136被配置成执行与在不同的着色器引擎132和SIMD单元138上调度各种波前相关的操作,以及执行用于在APD 116上编排各种任务的其他操作。
由着色器引擎132提供的并行性适用于图形相关操作,诸如像素值计算、顶点变换、曲面细分、几何着色操作以及其他图形操作。接受来自处理器102的图形处理命令的图形处理流水线134因此向着色器引擎132提供计算任务以便并行地执行。
着色器引擎132还用于执行与图形不相关或者不作为图形处理流水线134的“正常”操作的一部分执行的计算任务(例如,执行以补充为图形处理流水线134的操作而执行的处理的自定义操作)。在处理器102上执行的应用程序126或其他软件将定义这种计算任务的程序(经常称为“计算着色器程序”,其可由驱动器122编译)传输到APD 116以供执行。
图3A是示出图2所示的图形处理流水线134的另外细节的框图。图形处理流水线134包括各自执行特定功能的级。这些级表示图形处理流水线134的功能的细分。每个级被部分地或完全地实现为在可编程处理单元202中执行的着色器程序,或者部分或完全地实现为可编程处理单元202外部的固定功能、非可编程硬件。
输入汇编器级302从用户填充的缓冲区(例如,由处理器102执行的软件(诸如应用程序126)请求填充的缓冲区)读取图元数据,并且将所述数据汇编成图元以供流水线的其余部分使用。如本文所使用的,术语“用户”是指应用程序126或者提供着色器代码和三维物体以便渲染给图形处理流水线400的其他实体。术语“用户”用于区分由APD 116执行的活动。输入汇编器级302可基于用户填充的缓冲区中包括的图元数据来生成不同类型的图元。输入汇编器级302将汇编的图元格式化以供流水线的其余部分使用。
顶点着色器级304处理由输入汇编器级302汇编的图元的顶点。顶点着色器级304执行各种逐顶点操作,诸如变换、蒙皮、变形以及逐顶点照明。变换操作包括变换顶点坐标的各种操作。这些操作包括建模变换、视点变换、投影变换、透视分割以及视口变换中的一个或多个。在本文,这种变换被认为是修改在其上执行变换的顶点的坐标或“位置”。顶点着色器级304的修改除坐标之外的属性的其他操作被认为是修改非位置属性。非位置属性在本文也称为“参数”。
顶点着色器级304被部分地或完全地实现为将要在一个或多个着色器引擎132上执行的顶点着色器程序。顶点着色器程序由处理器102提供为由计算机程序员预先编写的程序。驱动器122编译这种计算机程序以生成具有适用于在着色器引擎132内执行的格式的顶点着色器程序。
外壳着色器级306、曲面细分级308以及域着色器级310一起工作以实现曲面细分,所述曲面细分通过细分图元来将简单图元转换成更复杂的图元。外壳着色器级306基于由一组顶点和其他信息定义的输入图元来生成用于曲面细分的碎片。曲面细分器级308为碎片生成一组样本(其包括由重心坐标指定的顶点)。域着色器级310(例如,通过将重心坐标转换为世界空间坐标)计算与碎片的样本相对应的顶点的顶点位置。外壳着色器级306和域着色器级310可实现为将要在可编程处理单元202上执行的着色器程序。
几何着色器级312能够被选择性地启用或禁用,并且在逐个图元的基础上执行操作。几何着色器程序通常接受整个图元(例如,顶点的集合)作为输入,并且对如由几何着色器程序的指令指定的那些整个图元来执行操作。可由几何着色器级312执行各种不同类型的操作,包括诸如点精灵扩展、动态粒子系统操作、毛发-鳍片生成、阴影体生成、单程渲染到立方体贴图、逐图元的材料交换以及逐图元的材料构建的操作。几何着色器级312的操作由在可编程处理单元202上执行的着色器程序执行。
光栅器级314接受在上游生成的简单图元(在世界空间流水线330的末端也称为“三角形”)并使其光栅化。光栅化包括确定由特定图元覆盖哪些屏幕像素(或子像素样本)。光栅化由固定功能硬件执行,或者可由在可编程处理单元202中执行的着色器程序执行。
像素着色器级316基于在上游生成的图元和光栅化的结果来计算屏幕像素的输出值(例如,颜色值)。像素着色器级316可应用来自纹理存储器的纹理。像素着色器级316的操作由在可编程处理单元202上执行的着色器程序执行。
输出合并级318接受来自像素着色器级316的输出并且将那些输出合并,执行诸如z测试和α混合的操作以确定屏幕像素的最终颜色,所述最终颜色被写入帧缓冲区以便输出到显示装置118。
顶点着色器级304、外壳着色器级306、曲面细分器级308、域着色器级310以及几何着色器级312是世界空间流水线330的一部分,其生成三角形以及三角形的各种属性,以供屏幕空间流水线350处理。包括光栅器级314和像素着色器级316的屏幕空间流水线350确定哪些屏幕像素由从世界空间流水线330接收的三角形覆盖,确定应当将哪些颜色写入那些屏幕像素,并且(经由输出合并级318和未示出的其他部件)将颜色输出到屏幕以供显示。
如上所述,APD 116是大规模并行计算装置。许多技术用于并行化与渲染三维物体相关联的处理。一种此类技术涉及包括多个世界空间流水线330和多个屏幕空间流水线350,每个流水线并行地处理独立工作。参考图3B和图3C描述了这种技术。
图3B展示了屏幕空间320(其表示由像素着色器级316生成的像素颜色将要被写入以便输出到显示器的区域(诸如存储用于输出到监测器的像素颜色的帧缓冲区),或者用于生成可用于其他目的(例如,作为纹理)的表面),并且将所述屏幕空间320划分成屏幕空间320的多个屏幕细分324(1)。图3C展示了多个世界空间流水线330、多个屏幕空间流水线350以及涉及以并行方式促进世界空间流水线330和屏幕空间流水线350的操作的各种其他部件。
暂时参考图3C,展示了多个世界空间流水线330。输入汇编器级302在不同的世界空间流水线330之间分配三维元素(诸如顶点、曲面细分数据、图元等)。在一个实例中,输入汇编器级302将第一组顶点提供给第一世界空间流水线330,将第二组顶点提供给第二世界空间流水线330,等等。世界空间流水线330处理顶点并且将经处理的顶点传递给与所述世界空间流水线330相关联的图元汇编器340。每个图元汇编器340被分配给特定的世界空间流水线330。世界空间流水线330还将经处理的顶点位置传递到位置缓冲区346,并且将非位置参数(例如,照明数据、纹理坐标等)传递到参数缓冲区348。位置缓冲区346和参数缓冲区348是专门供世界空间流水线330使用的存储器空间,其分别用于存储顶点位置和非位置顶点参数。这些缓冲区存储相应的数据以供屏幕空间流水线350使用。
以固定功能硬件实现而不是作为在可编程处理单元202上执行的着色器程序实现的图元汇编器340将来自相关联的世界空间流水线330的顶点收集到图元中,执行剔除操作(例如,背面剔除、视截体剔除、视锥剔除),识别特定图元所属的屏幕空间细分324(图3B),并且将图元和图元属于哪个屏幕空间细分324的确定传递给交叉开关342,以便分配给屏幕空间流水线350。
交叉开关342从图元汇编器340接收图元,并且将图元传递到与由图元汇编器340针对图元识别的屏幕细分324相关联的一个或多个屏幕空间流水线350。与在可编程处理单元202上执行的着色器程序相反,交叉开关342也实现为固定功能的硬件。交叉开关342的硬件是复杂的并且消耗大量的管芯面积,因为由图元汇编器340输出的图元描述通常较大,并且还因为交叉开关342能够将图元从任何世界空间流水线330传递到一个或多个任何屏幕空间流水线350,这导致大量的物理电连接。屏幕空间流水线350处理从交叉开关342接收的图元,以基本上如以上参考图3A所述地输出像素的颜色。
重新参见图3B,每个屏幕空间流水线350被分配给屏幕空间320中的一组特定的屏幕细分324。在图3B中,每个屏幕细分324被指示为与特定屏幕空间流水线350的特定光栅器级314相关联(并且因此与特定屏幕空间流水线350相关联,因为每个光栅器级314在特定的屏幕空间流水线350内)。例如,屏幕细分324(1)、屏幕细分324(3)、屏幕细分324(5)、屏幕细分324(13)、屏幕细分324(15)以及屏幕细分324(17)都与光栅器1相关联,并且因此交叉开关342将覆盖那些屏幕细分324的三角形传输到与光栅器1相关联的屏幕空间流水线350。其他屏幕细分324与不同的光栅器(2、3和4)相关联,并且覆盖那些屏幕细分324的图元被传输到相关联的光栅器。
图3B中展示了若干示例性三角形322,以示出基于三角形322覆盖哪个屏幕细分324来将那些三角形322分配到不同的屏幕空间流水线350的方式。示例性三角形322(1)覆盖屏幕细分324(1)、屏幕细分324(2)、屏幕细分324(7)以及屏幕细分324(8)。因此,三角形322(1)将被传输到所有四个光栅器(并且因此传输到所有四个屏幕空间流水线350)。三角形322(2)覆盖屏幕细分324(3)和屏幕细分324(9),并且因此将被传输到光栅器1和光栅器3。三角形322(3)仅覆盖屏幕细分324(14),并且因此将被传输到光栅器2。三角形322(4)覆盖用于所有四个光栅器的屏幕细分324,并且因此将被传输到所有光栅器。三角形322(5)覆盖屏幕细分324(15)、屏幕细分324(16)和屏幕细分324(22),并且因此将被传输到光栅器1、2和4,但是不传输到光栅器3。
重新参见图3C,存在与固定功能图元汇编器340和交叉开关342实现方式以及与专用位置缓冲区346和专用参数缓冲区348相关联的若干性能问题。在一个实例中,所述配置可能由于缓冲区345中的有限空间而导致瓶颈,所述缓冲区对来自交叉开关342的传入图元进行缓冲。更具体地,图元被以所谓的“API”顺序(“应用程序编程接口顺序”)来渲染。API顺序要求以由请求渲染那些对象的应用程序126所请求的顺序来渲染对象。这种顺序约束意味着每个屏幕空间流水线350以API顺序执行它们相应的操作(一些操作可能不按顺序发生,但是对于请求渲染对象的应用程序126它必须表现为它们被以指定的顺序进行渲染)。然而,可能导致瓶颈,其中存在许多三角形被(经由关于图3B描述的屏幕细分324覆盖技术)发送到多个屏幕空间流水线350,并且其中一个(或多个)屏幕空间流水线350比其他流水线更“受欢迎”。更具体地,在交叉开关342将图元传输到屏幕空间流水线350之后,缓冲区345存储图元以供所述屏幕空间流水线的光栅器级314处理。如果缓冲区345已满,则交叉开关342无法将更多图元传输到包括所述缓冲区345的屏幕空间流水线350。
可能出现一种情况,其中用于一个屏幕空间流水线的缓冲区345已满并且其他缓冲区345未满,但是其他屏幕空间流水线350无论如何都无法继续进行。更具体地,如果缓冲区345已满,则交叉开关342无法将更多图元传输到具有所述缓冲区345的屏幕空间流水线350。然而,交叉开关342随后无法处理将分配给具有满的缓冲区345的屏幕空间流水线350的另一个图元。因此,如果所述图元与除了与满的缓冲区345相关联的屏幕细分324之外的屏幕细分324重叠,则即使用于那些屏幕空间流水线350的缓冲区345未满,除了具有满的缓冲区345的屏幕空间流水线350之外的屏幕空间流水线350也被有效地停止。这种停止通常由于专用于将三角形从世界空间流水线330传输到屏幕空间流水线350的目的的存储器元件的有限容量而发生。
图3C的架构的另一个问题在于交叉开关342本身较大且复杂,并且消耗大量的管芯面积。此外,交叉开关342比4x4交叉开关342(四输入和四输出)更大是技术上非常困难或不可行的,这意味着世界空间流水线330和屏幕空间流水线350的数量是有限的。另一个问题在于因为剔除操作发生在图元汇编器340中,所以在顶点着色器中发生的诸如确定顶点非位置参数的一些操作是不必要的。更具体地,可确定由于剔除而最终丢弃的着色顶点的属性。
至少出于上述原因,以下描述用于将数据从世界空间流水线330传输到屏幕空间流水线350的不同技术。图4A展示了修改的图形处理流水线400,其允许在世界空间流水线中进行更灵活的处理以及从世界空间流水线430到屏幕空间流水线432的更灵活的传输。
除了世界空间流水线430被修改之外,图形处理流水线400类似于图3A所示的图形处理流水线134,并且在图2的APD 116中使用。图形处理流水线400的屏幕空间流水线432执行与图3A的图形处理流水线134的屏幕空间流水线350大致相同的功能。世界空间流水线430包括表面着色器402和图元着色器404。当启用曲面细分时启用表面着色器402。当启用曲面细分时,表面着色器402实现顶点着色器级304和外壳着色器级306的功能。曲面细分器级308仍然在固定功能硬件中实现。当禁用曲面细分时,禁用表面着色器402。表面着色器402被部分地或完全地实现为在并行处理单元202上执行的着色器程序。
当启用曲面细分时,如果几何着色器级312是激活的,则图元着色器404实现域着色器级310和几何着色器级312的功能。当禁用曲面细分时,图元着色器级404实现顶点着色器级304的功能。图元着色器404和表面着色器402被部分地或完全地实现为在可编程处理单元202上执行的着色器程序。图元着色器404和表面着色器402的未实现为着色器程序的部分在固定功能硬件中实现。
图元着色器404执行图3C的图元汇编器340的某些功能。具体地,图元着色器404汇编图元、执行剔除、并且确定图元与哪个屏幕细分324重叠。这些操作在单个着色器级中执行,而不是在着色器级和固定功能硬件的组合中执行。图元着色器404被处理为单个着色器程序类型,由驱动器122根据用户提供的代码和驱动器122或APD 116可用的其他指令来进行编译。
图4B和图4C展示了当禁用曲面细分(图4B)和启用曲面细分时(图4C),将要为图元着色器404执行的着色器程序的实例。曲面细分禁用的图元着色器450和曲面细分启用的图元着色器470表示由驱动器122根据用户提供的着色器代码和驱动器122可用的其他着色器代码(例如,在系统存储器104中或者在装置100中(诸如在APD 116中)的一些其他存储器单元中)生成的着色器程序。更具体地,驱动器122从应用程序126或其他实体获得某些用户提供的着色器代码,编译所述用户提供的着色器代码,并且将编译的用户提供的着色器代码与其他编译代码合并以形成曲面细分禁用的图元着色器450或者曲面细分启用的图元着色器470。
现在参考图4B,当禁用曲面细分时,如果启用几何体着色器,则图元着色器404执行顶点着色器级304和几何着色器级312的功能。曲面细分禁用的图元着色器450还包括用于执行图元汇编器340的操作的各种其他段。曲面细分禁用的图元着色器450包括用于顶点段452、顶点提取段454、位置计算段456、非延迟参数计算段458(其是可选的,如虚线所示)的执行掩码,用于图元段460、几何着色器操作段462、视截体剔除、背面剔除和小三角摒弃段464、压缩和获得顺序段465、确定屏幕空间分区段466以及延迟参数计算段468的执行掩码。曲面细分禁用的图元着色器450导出位置和参数以供屏幕空间流水线432使用。
用于顶点段452的执行掩码设置执行掩码,所述执行掩码指示波前中的哪些工作项将执行着色器程序(并且经由例如预测来指示哪些将被关闭),直到执行掩码中的下一个改变为止。使用执行掩码,使得可产生单个波前以执行不同类型的工作。更具体地,产生在APD 116中产生的每个波前以执行特定的着色器程序。因为曲面细分禁用的图元着色器450是单个着色器程序,所以APD 116产生波前以执行所述着色器程序。然而,这种着色器程序执行的工作需要波前的不同数量的工作项。对于顶点相关的工作(例如,顶点提取段454和位置计算段456),每个工作项在单个顶点上工作。对于图元相关工作(例如,几何着色器操作段462、视截体剔除、背面剔除和小三角摒弃段464以及确定屏幕空间分区段466),每个工作项在图元上工作。通常,用于图元相关操作的工作项少于用于顶点相关操作的工作项。因此,当波前执行曲面细分禁用的图元着色器450的工作的类型改变时,执行掩码用于禁用或启用波前的工作项。
用于顶点段452的执行掩码将激活工作项的数量设置为适用于执行顶点相关操作的数量。顶点提取段454基于所接收的索引来提取顶点数据。更具体地,在曲面细分禁用的图元着色器450之前(例如,在输入汇编器级302中),顶点数据被处理为指向顶点数据的指针—“索引”,而不是作为顶点数据本身。索引是顶点数据的轻量级“指针”,其允许进行某些操作,诸如重复顶点检测、基于所选择的图元拓扑从顶点识别图元以及其他操作,而无需处理与顶点数据相关联的大量数据。然而,在某些时候,实际的顶点数据诸如在执行顶点位置变换时会被处理。此时,基于索引获得顶点数据。顶点提取段454执行这些操作、基于索引从存储器提取顶点数据并且将顶点数据加载到寄存器中以供执行曲面细分禁用的图元着色器450的着色器引擎132进行处理。
位置计算段456从用于顶点着色器级304的用户提供的代码导出并且执行由用于由顶点提取段454提取的顶点的用户提供的顶点着色器代码指定的位置变换(例如,将顶点位置从模型空间转换到视图空间,这包括模型视图变换或者与顶点着色器级304相关联的其他变换)。为了生成位置计算段456,驱动器122从用户提供的顶点着色器代码中提取与执行位置变换相关联的指令。在一个实例中,驱动器122基于由应用程序126提供的顶点着色器代码指定的输出来识别与执行位置变换相关联的指令。更具体地,顶点着色器代码识别哪些输出与变换的顶点位置相关联。驱动器122将这些输出所依赖的指令识别为将要包括在位置计算段456中的指令。位置计算段456将计算的位置导出到本地数据存储库445,以供曲面细分禁用的图元着色器450和屏幕空间流水线350的其他部分使用。
非延迟参数计算458包括用于顶点非位置属性的计算,所述顶点非位置属性直到(通过视截体剔除、背面剔除和小三角摒弃段464)剔除和小三角摒弃之后才被延迟。这些计算也基于用于顶点着色器级304的用户提供的代码。一些参数计算无法被延迟,因为驱动器122无法将它们与顶点着色器程序隔离,并且因此在剔除之前无法及时地将它们转移。如同用于位置计算段456的顶点位置变换,驱动器122通过检查由与计算将不会延迟的属性相关联的所述代码指定的输出并且识别这些输出所依赖的指令来从用户提供的顶点着色器代码中提取用于非位置属性计算的指令。
用于图元段460的执行掩码基于将要执行逐图元操作的工作项的数量来设置用于波前的工作项的执行掩码。用于图元段460的执行掩码可减少或者增加激活的工作项的数量,但是通常,激活的工作项的数量减少,因为每个图元存在多个顶点,并且工作项被分配成每个顶点一个以用于顶点处理,并且每个图元一个以用于图元处理。用于依赖于由工作项执行的顶点操作的结果的图元处理的数据可用于经由SIMD单元138可用的寄存器、经由本地数据存储库445或者通过一些其他机制执行图元操作的波前中的工作项。本地数据存储库445是在着色器引擎132中的SIMD单元138之间共享的存储器单元,并且还可由着色器引擎132外部的单元访问。与图3C的位置缓冲区346和参数缓冲区348不同,本地数据存储库445不分别专用于顶点位置和顶点属性。
如果几何着色是激活的,则曲面细分禁用的图元着色器450包括几何着色器操作段462。这些逐图元操作是由用于几何着色器级312的用户提供的代码指定的操作。驱动器122检索所述用户提供的代码、编译所述代码、并且将其插入到曲面细分禁用的图元着色器450中。
视截体剔除、背面剔除和小三角摒弃段464为图元执行视截体剔除、背面剔除和小三角摒弃。视截体剔除包括摒弃“视锥体”之外的图元或者相机可见的三维空间的区域。背面剔除包括摒弃其背面面向相机的图元。小三角摒弃包括摒弃太小而不可见的三角形(例如,因为小三角将不会覆盖任何屏幕像素,或者出于某些其他原因)。在图3C中,固定功能图元汇编器340执行这些操作,但是利用图4A的图元着色器404,在可编程处理单元202上执行这些操作。
压缩和获得顺序段465将剔除的数据压缩成适用于由屏幕空间流水线432进行有效处理的格式。更具体地,压缩和获得顺序段465移除用于剔除的图元的顶点(并且其也不由非剔除图元使用)并且将剩余的数据压缩成打包形式。压缩和获得顺序段465还从调度器136获得顺序号。顺序号有助于维护API顺序并且帮助关于处理从世界空间流水线430接收的图元的顺序来指示屏幕空间流水线432。调度器136维护通过图形处理流水线400处理的工作的整体顺序,并且在工作通过图形处理流水线400时分配顺序号来进行工作。
对于每个图元,确定屏幕空间分区段466确定与图元重叠的一个或多个屏幕细分324。所述段的目的是基于分配给不同的屏幕空间流水线432的屏幕的部分来识别哪个屏幕空间流水线432将接收哪个图元。在图3C的实例中,所述功能在固定功能图元汇编器340中实现,但是在将要在图4A-图4D中的并行处理单元202上执行的指令中实现。在一些实现方式中,确定屏幕空间分区段466包括操作码,其功能是基于给定的坐标集来识别坐标属于哪个屏幕细分324,从而为确定屏幕空间分区段466提供硬件加速。
延迟参数计算段468在视截体剔除、背面剔除和小三角摒弃段464中剔除图元之后执行属性计算。此时执行这些操作的优点在于已摒弃不可见的图元,并且因此不针对对于最终场景没有贡献的图元来确定属性。驱动器122从用于顶点着色器级304的用户提供的代码获得用于延迟参数计算段468的指令。驱动器122通过识别指示为与这些参数相关联的输出并且识别用于输出所依赖的顶点着色器级304的代码中的指令来提取用于确定这些参数的指令。直到在与视截体剔除、背面剔除和小三角摒弃段464相关联的操作之后的延迟属性处理防止对将被剔除并且因此不对最终场景做出贡献的图元进行属性处理。
除了不是对顶点着色器级304执行操作之外,曲面细分启用的图元着色器470包括与曲面细分禁用的图元着色器450类似的段,曲面细分启用的图元着色器470执行域着色器级310的操作。因此,代替包括从用于顶点着色器级304的应用程序提供的代码导出以用于位置计算段456中的位置计算的指令,曲面细分启用的图元着色器470包括域评估段476,所述域评估段包括用于执行域着色器级310的功能的指令,所述指令是从与所述级相关联的应用程序提供的代码导出的。
利用图元着色器404,在图3C的示例性图形处理流水线中的固定功能硬件(例如,图元汇编器340)中执行的许多功能替代地由可编程处理单元202来执行。现在结合图4D描述,从固定功能到可编程硬件的这种转变提供某些益处。
图4D展示了根据一个实例的图形处理流水线400的另外细节。图形处理流水线400包括多个世界空间流水线430和多个屏幕空间流水线432。在图4D中,世界空间流水线432基本上如以上参考图4A-图4C所述地处理顶点和图元。除了其他方面,图元着色器404(具体地,确定屏幕空间分区段466)识别哪个屏幕空间流水线432将接收图元。图元汇编器435从本地数据存储库445提取为相关联的屏幕空间流水线432指定的数据(即,其中找到图元汇编器435的屏幕空间流水线432)、将数据汇编成用于光栅器级314的三角形、并且将所述三角形传递给光栅器级314。图元汇编器435可执行其他图元操作,诸如未由图元着色器404执行的剔除,等等。
代替使用交叉开关342,数据经由本地数据存储库445从世界空间流水线传递到屏幕空间流水线432。更具体地,图元着色器404将由屏幕空间流水线432处理的图元的数据(例如,顶点、哪些顶点构成图元的指示、顶点属性等)导出到本地数据存储库445和屏幕空间流水线432,从本地数据存储库445提取适当的数据。利用图3C的固定功能图元汇编器340和交叉开关342,有限的专用缓冲存储器(例如,光栅器级314中的缓冲区345)在某些情况下导致瓶颈。然而,图元着色器404能够使用更加灵活的本地数据存储库445来将数据从世界空间流水线430传输到屏幕空间流水线432,并且因此不受专用存储器的限制(例如,位置缓冲区346和参数缓冲区348)的约束。
此外,灵活的图元着色器404允许世界空间流水线与屏幕空间流水线“脱离”。更具体地,图3C的交叉开关342在世界空间流水线330与屏幕空间流水线350之间硬连线,并且以固定方式实现其功能。数据路径因此从世界空间流水线330的输出、通过交叉开关342并且到屏幕空间流水线350固定。通过不使用交叉开关342并且使用本地数据存储库445,数据路径更加灵活。世界空间流水线导出数据(例如,经处理的顶点和图元)可由除世界空间流水线430之外的单元(诸如处理器102)产生,并且仅仅馈送到本地数据存储库445,或者世界空间流水线430可产生经处理的顶点和图元,并且将所述数据导出到本地数据存储库445,以便由除屏幕空间流水线432之外的单元(诸如处理器102)检索和处理。
此外,不使用交叉开关342意味着由于交叉开关342的复杂性而允许比目前允许的更多的世界空间流水线和屏幕空间流水线。移除交叉开关342还允许灵活数量的世界空间流水线330连接到灵活数量的屏幕空间流水线350,因为不存在具有固定数量的输入和输出的交叉开关。
此外,本地数据存储库445是通用存储器,并且可供在并行处理单元202中执行的计算着色器(即,不一定与图形处理相关的通用程序)使用。位置缓冲区346和参数缓冲区348的专用存储器不可用于计算着色器。因此,本地数据存储库445而不是交叉开关342的使用允许移除将不可用于来自APD 116的计算着色器的专用存储器,从而减少芯片面积消耗或者出于其他目的使用将用于专用存储器的芯片面积。
图5是根据一个实例的用于执行图元着色器的功能的方法500的流程图。尽管关于图1-图4D所示和所述的系统进行了描述,但是应当理解,被配置成以任何技术上可行的顺序执行所述方法的任何系统都落入本公开的范围内。
如图所示,方法500开始于步骤502处,其中用于在并行处理单元202上执行的图元着色器404的着色器程序执行逐顶点操作(例如,用于位置计算段456或者用于域评估段476的操作)。这些逐顶点操作包括在用于顶点着色器级304的应用程序提供的代码中指定并从其提取的顶点位置变换,其中曲面细分被禁用,或者包括在用于域着色器级310的应用程序提供的代码中指定并从其提取的顶点位置变换。在步骤504处,着色器程序执行逐图元操作(例如,几何着色操作(462))。这些逐图元操作在用于几何着色器级312的应用程序提供的代码中指定并从其提取。步骤504基于是否启用几何着色是可选的。
在步骤506处,着色器程序执行剔除操作(464)。剔除操作包括视截体剔除、背面剔除和小三角摒弃中的一种或多种。在步骤508处,着色器程序识别与在步骤502-506中执行的工作相关联的图元所重叠的屏幕细分(466)。在步骤510处,着色器程序将顶点数据和图元数据传输到本地数据存储库445以供屏幕空间流水线350使用。在步骤512处,屏幕空间流水线350从本地数据存储库445提取顶点数据以便进行处理。
步骤502到508由同一着色器程序执行。因此,因为产生每个产生的波前以执行单个着色器程序,所以各个波前执行步骤502-508。
提供了一种用于执行三维图形渲染的方法。所述方法包括利用在并行处理单元中执行的图元着色器程序来对一组顶点执行逐顶点操作。所述方法还包括对与所述一组顶点相关联的一组图元执行剔除操作以生成一组剔除图元,所述剔除操作是用图元着色器来执行的。所述方法还包括利用图元着色器来识别对于所述一组剔除图元的一个或多个屏幕细分。所述方法还包括基于所述一组剔除图元的识别的屏幕细分来将所述一组剔除图元传输到一组屏幕空间流水线。
提供加速处理装置(APD)。APD包括图形处理流水线和多个并行处理单元。图形处理流水线包括图元着色器级,其被配置成在多个并行处理单元上执行图元着色器程序。图元着色器程序被配置成对一组顶点执行逐顶点操作、对与所述一组顶点相关联的一组图元执行剔除操作以生成一组剔除图元、利用图元着色器识别对于所述一组剔除图元的一个或多个屏幕细分、并且基于所述一组剔除图元的识别的屏幕细分来将所述一组剔除图元传输到图形处理流水线的一组屏幕空间流水线。
还提供了一种计算装置。所述计算装置包括中央处理单元和加速处理装置(APD)。APD包括图形处理流水线和多个并行处理单元。图形处理流水线包括图元着色器级,其被配置成在多个并行处理单元上执行图元着色器程序。图元着色器程序被配置成对从中央处理单元接收的一组顶点执行逐顶点操作、对与所述一组顶点相关联的一组图元执行剔除操作以生成一组剔除图元、利用图元着色器识别对于所述一组剔除图元的一个或多个屏幕细分、并且基于所述一组剔除图元的识别的屏幕细分来将所述一组剔除图元传输到图形处理流水线的一组屏幕空间流水线。
应当理解,基于本文的公开内容,许多变化是可能的。尽管以上以特定组合描述了特征和元件,但是每个特征或元件可在没有其他特征和元件的情况下单独使用,或者在具有或不具有其他特征和元件的各种组合中使用。
所提供的方法可在通用计算机、处理器或处理器内核中实现。通过实例,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP内核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)和/或状态机。可通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据的结果来配置制造过程来制造这种处理器(这种指令能够存储在计算机可读介质上)。这种处理的结果可为掩膜件,所述掩膜件被随后用于半导体制造工艺中以制造实现本实施例的各方面的处理器。
本文提供的方法或流程图可在结合在非暂时性计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器来执行。非暂时性计算机可读存储介质的实例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓冲存储器、半导体存储器装置、诸如内部硬盘和可移除磁盘的磁介质、磁光介质以及诸如CD-ROM盘和数字多功能磁盘(DVD)的光学介质。

Claims (18)

1.一种用于执行三维图形渲染的方法,所述方法包括:
利用在并行处理单元中执行的图元着色器程序来在图形处理流水线的图元着色器级对一组顶点执行逐顶点操作;
对与所述一组顶点相关联的一组图元执行剔除操作以生成一组剔除图元,所述剔除操作是用所述图元着色器在所述图元着色器级来执行的;
利用所述图元着色器来在所述图元着色器级识别对于所述一组剔除图元的一个或多个屏幕细分;以及
基于所述一组剔除图元的所述识别的屏幕细分来将所述一组剔除图元传输到一组屏幕空间流水线,所述传输由所述图元着色器执行并且经由通用本地数据存储库存储器,其中经由所述通用本地数据存储库存储器而非经由固定功能交叉开关或经由专用位置缓冲区和参数缓冲区来执行将所述一组剔除图元传输到所述一组屏幕空间流水线,
其中所述图元着色器级包括在所述图形处理流水线的屏幕空间流水线之前的所述图形处理流水线的可编程级。
2.如权利要求1所述的方法,其中:
启用曲面细分并且所述逐顶点操作包括用于评估由图形处理流水线的曲面细分器级产生的重心坐标的域着色器操作。
3.如权利要求1所述的方法,其中:
禁用曲面细分并且所述逐顶点操作包括用于图形处理流水线的顶点着色器级的用于变换顶点位置的顶点着色器操作。
4.如权利要求1所述的方法,其还包括:
执行用于确定与所述一组剔除图元相关联的顶点的非位置属性的操作,用于确定所述非位置属性的所述操作是从用于图形处理流水线的顶点着色器级的顶点着色器代码导出的。
5.如权利要求1所述的方法,其中:
启用几何着色,并且所述方法还包括对与所述一组顶点相关联的所述一组图元执行几何着色操作,所述几何着色操作是从用于图形处理流水线的几何着色器级的几何着色器代码导出的。
6.如权利要求1所述的方法,其中将所述一组剔除图元传输到所述一组屏幕空间流水线包括:
将所述一组剔除图元传输到所述本地数据存储库存储器;以及
将所述一组剔除图元从所述本地数据存储库存储器传输到所述一组屏幕空间流水线。
7.如权利要求1所述的方法,其中识别一个或多个屏幕细分包括:
对于所述一组剔除图元中的每个图元,识别由所述每个图元覆盖的一个或多个屏幕细分。
8.如权利要求7所述的方法,其中基于所述一组剔除图元的所述识别的屏幕细分来将所述一组剔除图元传输到所述一组屏幕空间流水线包括:
对于所述一组剔除图元中的每个图元,识别与由所述每个图元覆盖的所述屏幕细分相关联的一个或多个屏幕空间流水线;以及
将所述每个图元传输到所述识别的一个或多个屏幕空间流水线。
9.一种加速处理装置(APD),其包括:
图形处理流水线;
通用本地数据存储库存储器,以及
多个并行处理单元,
其中所述图形处理流水线包括可编程图元着色器级,所述图元着色器级被配置成在所述多个并行处理单元上执行图元着色器程序,所述图元着色器级在所述图形处理流水线的屏幕空间流水线之前,所述图元着色器程序被配置成:
对一组顶点执行逐顶点操作;
对与所述一组顶点相关联的一组图元执行剔除操作以生成一组剔除图元;
利用所述图元着色器来识别对于所述一组剔除图元的一个或多个屏幕细分;以及
基于所述一组剔除图元的所述识别的屏幕细分来将所述一组剔除图元经由所述通用本地数据存储库存储器传输到所述图形处理流水线的一组屏幕空间流水线,其中经由所述通用本地数据存储库而非经由固定功能交叉开关或经由专用位置缓冲区和参数缓冲区来将所述一组剔除图元传输到所述一组屏幕空间流水线。
10.如权利要求9所述的APD,其中所述图形处理流水线处于其中启用曲面细分的状态,并且所述逐顶点操作包括:
用于评估由图形处理流水线的曲面细分器级产生的重心坐标的域着色器操作。
11.如权利要求9所述的APD,其中所述图形处理流水线处于其中禁用曲面细分的状态,并且所述逐顶点操作包括:
用于图形处理流水线的顶点着色器级的用于变换顶点位置的顶点着色器操作。
12.如权利要求9所述的APD,其中所述图元着色器程序被进一步配置成:
执行用于确定与所述一组剔除图元相关联的顶点的非位置属性的操作,用于确定所述非位置属性的所述操作是从用于所述图形处理流水线的顶点着色器级的顶点着色器代码导出的。
13.如权利要求9所述的APD,其中所述图形处理流水线处于其中启用几何着色的状态,并且所述图元着色器程序被进一步配置成对与所述一组顶点相关联的所述一组图元执行几何着色操作,所述几何着色操作是从用于所述图形处理流水线的几何着色器级的几何着色器代码导出的。
14.如权利要求9所述的APD,其中所述图元着色器程序被配置成通过以下步骤识别一个或多个屏幕细分:
对于所述一组剔除图元中的每个图元,识别由所述每个图元覆盖的一个或多个屏幕细分。
15.如权利要求14所述的APD,其中所述图元着色器程序被配置成通过以下步骤基于所述一组剔除图元的所述识别的屏幕细分来将所述一组剔除图元传输到所述一组屏幕空间流水线:
对于所述一组剔除图元中的每个图元,识别与由所述每个图元覆盖的所述屏幕细分相关联的一个或多个屏幕空间流水线;以及
将所述每个图元传输到所述识别的一个或多个屏幕空间流水线。
16.一种计算装置,其包括:
中央处理单元,以及
加速处理装置(APD),所述APD包括:
图形处理流水线;
通用本地数据存储库存储器,以及
多个并行处理单元,
其中所述图形处理流水线包括可编程图元着色器级,所述图元着色器级被配置成在所述多个并行处理单元上执行图元着色器程序,所述图元着色器级在所述图形处理流水线的屏幕空间流水线之前,所述图元着色器程序被配置成:
对从所述中央处理单元接收的一组顶点执行逐顶点操作;
对与所述一组顶点相关联的一组图元执行剔除操作以生成一组剔除图元;
利用所述图元着色器来识别对于所述一组剔除图元的一个或多个屏幕细分;以及
基于所述一组剔除图元的所述识别的屏幕细分来将所述一组剔除图元经由所述通用本地数据存储库存储器传输到所述图形处理流水线的一组屏幕空间流水线,其中经由所述通用本地数据存储库而非经由固定功能交叉开关或经由专用位置缓冲区和参数缓冲区来将所述一组剔除图元传输到所述一组屏幕空间流水线。
17.如权利要求16所述的计算装置,其中所述图形处理流水线处于其中启用曲面细分的状态,并且所述逐顶点操作包括:
用于评估由图形处理流水线的曲面细分器级产生的重心坐标的域着色器操作,所述域着色器操作是从由所述中央处理单元提供的域着色器程序导出的。
18.如权利要求16所述的计算装置,其中所述图形处理流水线处于其中禁用曲面细分的状态,并且所述逐顶点操作包括:
用于图形处理流水线的顶点着色器级的用于变换顶点位置的顶点着色器操作,所述顶点着色器操作是从由所述中央处理单元提供的顶点着色器程序导出的。
CN201780054424.8A 2016-09-22 2017-09-06 图元着色器 Active CN109690629B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201662398211P 2016-09-22 2016-09-22
US62/398,211 2016-09-22
US15/415,823 2017-01-25
US15/415,823 US11379941B2 (en) 2016-09-22 2017-01-25 Primitive shader
EP17155075.9 2017-02-07
EP17155075.9A EP3300028B1 (en) 2016-09-22 2017-02-07 Primitive shader
PCT/US2017/050349 WO2018057295A1 (en) 2016-09-22 2017-09-06 Primitive shader

Publications (2)

Publication Number Publication Date
CN109690629A CN109690629A (zh) 2019-04-26
CN109690629B true CN109690629B (zh) 2023-08-08

Family

ID=57995077

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780054424.8A Active CN109690629B (zh) 2016-09-22 2017-09-06 图元着色器

Country Status (6)

Country Link
US (1) US11379941B2 (zh)
EP (1) EP3300028B1 (zh)
JP (1) JP7025415B2 (zh)
KR (1) KR102486347B1 (zh)
CN (1) CN109690629B (zh)
WO (1) WO2018057295A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US10417734B2 (en) 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10417731B2 (en) 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US11227430B2 (en) 2019-06-19 2022-01-18 Samsung Electronics Co., Ltd. Optimized pixel shader attribute management
GB2592604B (en) * 2020-03-03 2023-10-18 Sony Interactive Entertainment Inc Image generation system and method
US11481967B2 (en) * 2020-08-31 2022-10-25 Advanced Micro Devices, Inc. Shader core instruction to invoke depth culling
EP4050479A1 (en) * 2021-02-25 2022-08-31 Imagination Technologies Limited Task repacking in a graphic pipeline
GB2610242A (en) * 2021-08-27 2023-03-01 Advanced Risc Mach Ltd Graphics processing
US20230094115A1 (en) * 2021-09-29 2023-03-30 Advanced Micro Devices, Inc. Load multiple primitives per thread in a graphics pipeline
US20230377086A1 (en) * 2022-05-18 2023-11-23 Advanced Micro Devices, Inc. Pipeline delay elimination with parallel two level primitive batch binning
CN115908102A (zh) * 2022-08-23 2023-04-04 芯动微电子科技(珠海)有限公司 图形处理方法及系统
CN116843540B (zh) * 2023-08-31 2024-01-23 南京砺算科技有限公司 图形处理器及图形处理设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7468726B1 (en) * 2005-12-01 2008-12-23 Nvidia Corporation Culling in a vertex processing unit
CN102081804A (zh) * 2004-08-26 2011-06-01 英特尔公司 在图形硬件中细分几何图像
US8542247B1 (en) * 2009-07-17 2013-09-24 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8704836B1 (en) * 2009-10-19 2014-04-22 Nvidia Corporation Distributing primitives to multiple rasterizers
CN105830125A (zh) * 2013-12-20 2016-08-03 高通股份有限公司 Gpu加速的路径再现

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7728841B1 (en) * 2005-12-19 2010-06-01 Nvidia Corporation Coherent shader output for multiple targets
US8436854B2 (en) * 2009-05-29 2013-05-07 Qualcomm Incorporated Graphics processing unit with deferred vertex shading
US8692829B2 (en) * 2009-10-05 2014-04-08 Nvidia Corporation Calculation of plane equations after determination of Z-buffer visibility
US9536341B1 (en) * 2009-10-19 2017-01-03 Nvidia Corporation Distributing primitives to multiple rasterizers
US10535185B2 (en) * 2012-04-04 2020-01-14 Qualcomm Incorporated Patched shading in graphics processing
US9177351B2 (en) * 2012-10-09 2015-11-03 Qualcomm Incorporated Multi-primitive graphics rendering pipeline
KR102066533B1 (ko) * 2013-11-19 2020-01-16 삼성전자 주식회사 도메인 쉐이딩 방법과 이를 수행하는 장치들
GB2525636B (en) * 2014-04-30 2020-08-19 Geomerics Ltd Graphics processing systems
GB2527822B (en) * 2014-07-03 2020-10-07 Advanced Risc Mach Ltd Graphics processing
US9978171B2 (en) * 2014-07-29 2018-05-22 Nvidia Corporation Control of a sample mask from a fragment shader program
US9754407B2 (en) * 2014-08-12 2017-09-05 Nvidia Corporation System, method, and computer program product for shading using a dynamic object-space grid
US9824412B2 (en) * 2014-09-24 2017-11-21 Intel Corporation Position-only shading pipeline
KR102327144B1 (ko) * 2014-11-26 2021-11-16 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102081804A (zh) * 2004-08-26 2011-06-01 英特尔公司 在图形硬件中细分几何图像
US7468726B1 (en) * 2005-12-01 2008-12-23 Nvidia Corporation Culling in a vertex processing unit
US8542247B1 (en) * 2009-07-17 2013-09-24 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8704836B1 (en) * 2009-10-19 2014-04-22 Nvidia Corporation Distributing primitives to multiple rasterizers
CN105830125A (zh) * 2013-12-20 2016-08-03 高通股份有限公司 Gpu加速的路径再现

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PowerVR Hardware Architecture Overview for Developers;Imagination technologies limited,;《http://powervr-graphics.github.io/WebGL_SDK》;20151215;第1-15页 *

Also Published As

Publication number Publication date
KR102486347B1 (ko) 2023-01-09
WO2018057295A1 (en) 2018-03-29
JP7025415B2 (ja) 2022-02-24
EP3300028B1 (en) 2018-11-07
KR20190051961A (ko) 2019-05-15
CN109690629A (zh) 2019-04-26
EP3300028A1 (en) 2018-03-28
US20180082399A1 (en) 2018-03-22
US11379941B2 (en) 2022-07-05
JP2019533240A (ja) 2019-11-14

Similar Documents

Publication Publication Date Title
CN109690629B (zh) 图元着色器
US11657560B2 (en) VRS rate feedback
US9665943B2 (en) Histogram-based image segmentation
CN109690630B (zh) 一种执行着色器程序的方法和装置
US10102662B2 (en) Primitive culling using automatically compiled compute shaders
US10796483B2 (en) Identifying primitives in input index stream
CN112189215B (zh) 用于在图形流水线中实现存储器使用减少的编译器辅助技术
GB2533700A (en) Method and apparatus for a high throughput rasterizer
WO2018140223A1 (en) Stereo rendering
US20180211434A1 (en) Stereo rendering
CN110192225B (zh) 无序像素着色器导出
US20200098169A1 (en) Method and system for depth pre-processing and geometry sorting using binning hardware
US11972518B2 (en) Hybrid binning
US20230298261A1 (en) Distributed visibility stream generation for coarse grain binning
US20220319091A1 (en) Post-depth visibility collection with two level binning
US20230377086A1 (en) Pipeline delay elimination with parallel two level primitive batch binning

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