CN109690630A - 组合的世界空间流水线着色器级 - Google Patents
组合的世界空间流水线着色器级 Download PDFInfo
- Publication number
- CN109690630A CN109690630A CN201780054477.XA CN201780054477A CN109690630A CN 109690630 A CN109690630 A CN 109690630A CN 201780054477 A CN201780054477 A CN 201780054477A CN 109690630 A CN109690630 A CN 109690630A
- Authority
- CN
- China
- Prior art keywords
- shader
- combined
- vertex
- program
- coloration
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
公开了对图形处理流水线的改进。更具体地,对执行顶点变换的顶点着色器级以及外壳着色器级或几何着色器级进行组合。如果禁用曲面细分并且启用几何着色,则所述图形处理流水线包括组合的顶点和图形着色器级。如果启用曲面细分,则所述图形处理流水线包括组合的顶点和外壳着色器级。如果曲面细分和几何着色两者都被禁用,则所述图形处理流水线不使用组合的着色器级。所述组合的着色器级通过减少着色器程序的执行实例和保留的相关联资源的数量来提高效率。
Description
相关申请的交叉参考
本申请要求于2016年9月22日提交的美国临时申请号62/398,211、2016年12月23日提交的美国专利申请号15/389,481以及2017年1月5日提交的欧洲申请号EP17150441.8的权益,所述申请通过引用的方式并入本文,如同在此完整阐述一样。
技术领域
所公开的实施例总体涉及图形处理流水线,并且具体地涉及一种组合的世界空间流水线着色器级。
背景技术
三维图形处理流水线接受来自主机(诸如计算系统的中央处理单元)的命令并且处理这些命令以生成用于在显示装置上显示的像素。图形处理流水线包括执行单独任务的多个级,诸如变换顶点位置和属性、计算像素颜色等等。图形处理流水线正在不断开发和改进。
附图说明
从以下结合附图通过实例给出的描述中可得到更详细的理解,在附图中:
图1是可实现一个或多个公开的实施例的示例性装置的框图;
图2是图1的装置的展示了另外的细节的框图;
图3是示出图2所示的图形处理流水线的另外细节的框图;
图4A和图4B展示了用于根据实例的图形处理流水线的配置;
图5A和图5B展示了根据实例的涉及图2所示的驱动器和调度器的组合的着色器级的各方面;
图6展示了根据实例的用于启用或禁用用于组合的顶点和外壳或几何着色器级的波前以便适应着色器级之间的边界处的工作负载的变化的操作;并且
图7是根据实例的用于针对组合的顶点和外壳或几何着色器级执行组合的顶点和外壳或几何着色器程序的方法的流程图。
具体实施方式
本公开涉及图形处理流水线的改进。更具体地,对执行顶点变换的顶点着色器级以及外壳着色器级或几何着色器级进行组合。如果禁用曲面细分并且启用几何着色,则图形处理流水线包括组合的顶点和图形着色器级。如果启用曲面细分,则图形处理流水线包括组合的顶点和外壳着色器级。如果曲面细分和几何着色两者都被禁用,则图形处理流水线不使用组合的着色器级。组合的着色器级通过减少着色器程序的执行实例和保留的相关联资源的数量来提高效率。
图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上同时执行(例如,一个指令控制单元执行具有多个数据的相同的指令流)。
SIMD单元138将工作数据存储在矢量寄存器206中,所述矢量寄存器被配置成存储用于在SIMD单元138或标量寄存器208中执行相同指令的不同工作项的不同值,所述标量寄存器被配置成例如当着色器程序中的指令对每个工作项使用相同的操作数值时存储单个值以供使用。每个着色器引擎132中的本地数据存储库存储器212还存储值以供着色器程序使用。本地数据存储库存储器212可用于无法纳入矢量寄存器206或标量寄存器208中但是由着色器程序使用的数据。与诸如不包括在着色器引擎132内的APD 116中的存储器210或者不在APD 116内的存储器104的其他存储器相比,本地数据存储存储器212的物理接近度提供改进的等待时间。
调度器136被配置成执行与在不同着色器引擎132和SIMD单元138上调度各种波前相关的操作。调度器136内部的波前簿记204存储用于未决波前的数据,这些波前是已启动并且正在执行或“睡眠”(例如,出于某些其他原因等待执行或者当前未执行)的波前。除了识别未决波前的标识符之外,波前簿记204还存储由每个波前使用的包括诸如矢量寄存器206和/或标量寄存器208的寄存器的资源、分配给波前的本地数据存储库存储器212的部分、不是任何特定着色器引擎132本地的存储器210的部分或者分配给波前的其他资源的指示。
由着色器引擎132提供的并行性适用于图形相关操作,诸如像素值计算、顶点变换、曲面细分、几何着色操作以及其他图形操作。接受来自处理器102的图形处理命令的图形处理流水线134因此向着色器引擎132提供计算任务以便并行地执行。
着色器引擎132还用于执行与图形不相关或者不作为图形处理流水线134的“正常”操作的一部分执行的计算任务(例如,执行以补充为图形处理流水线134的操作而执行的处理的自定义操作)。在处理器102上执行的应用程序126或其他软件将定义这种计算任务的程序(经常称为“计算着色器程序”,其可由驱动器122编译)传输到APD 116以供执行。
图3是示出图2所示的图形处理流水线134的另外细节的框图。图形处理流水线134包括各自执行特定功能的级。这些级表示图形处理流水线134的功能的细分。每个级被部分地或完全地实现为在可编程处理单元202中执行的着色器程序,或者部分或完全地实现为可编程处理单元202外部的固定功能、非可编程硬件。
输入汇编器级302从用户填充的缓冲区(例如,由处理器102执行的软件(诸如应用程序126)请求填充的缓冲区)读取图元数据,并且将所述数据汇编成图元以供流水线的其余部分使用。输入汇编器级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接受上游生成的简单图元并对其进行光栅化。光栅化包括确定由特定图元覆盖哪些屏幕像素(或子像素样本)。光栅化由固定功能硬件执行,或者可由在可编程处理单元202中执行的着色器程序执行。
像素着色器级316基于在上游生成的图元和光栅化的结果来计算屏幕像素的输出值(例如,颜色值)。像素着色器级316可应用来自纹理存储器的纹理。像素着色器级316的操作由在可编程处理单元202上执行的着色器程序执行。
输出合并级318接受来自像素着色器级316的输出并且将那些输出合并,执行诸如z测试和α混合的操作以确定屏幕像素的最终颜色,所述最终颜色被写入帧缓冲区以便输出到显示装置118。
如上所述,在图3中展示并且描述为包括在图形处理流水线134内的许多级可实现为在图2中示出的着色器引擎132内执行的着色器程序。在驱动器122和APD 116内发生各种操作,以有助于执行着色器引擎132中的着色器程序。
一种此类操作涉及促进着色器输入和输出数据传输。更具体地,图形处理流水线134的这些级通常获得输入数据、对所述输入数据执行一些处理、并且作为响应提供通常用于图形处理流水线134的下一级的输出数据。作为图形处理流水线134的一部分执行的着色器程序包括对APD 116的指令或“提示”,其指定用于着色器程序的输入和输出。这些提示关于在何处(例如,哪些寄存器)放置用于特定着色器程序输入以及在何处(例如,哪些寄存器)从特定着色器程序检索输出来通知APD 116。所述输入和输出信息至少部分地用于关于在何处放置用于特定着色器程序的输入来指示APD 116,并且还指示在何处从特定着色器程序提取输出以便将输出数据转发到图形处理流水线134的其他部分,诸如固定功能硬件或其他着色器程序。在一个实例中,顶点着色器程序指定期望输入的位置(例如,寄存器)。APD 116提取输入并将输入放置在那些位置处。顶点着色器程序对输入顶点执行顶点着色操作,并且提供修改的顶点作为输出。APD 116提取这些修改的顶点并且将这些顶点放置在由图形处理流水线134的下一级指定为输入的位置(例如,寄存器)处。
用于促进着色器程序的执行的另一操作涉及在启动波前来执行着色器程序之前,为将要执行着色器程序的波前保留资源(例如,波前簿记204中的条目、将要由波前使用的寄存器,本地数据存储库存储器212的部分、存储器210和其他存储器以及将要由波前使用的其他资源)。将要为用于特定着色器程序的波前保留的资源的量至少部分地基于着色器程序的指令。更具体地,着色器程序通常包括指令,每个指令可指定特定寄存器以用作操作数。APD 116基于波前将要执行的着色器程序的指令中指定的寄存器来确定为波前保留的多个寄存器。在一个实例中,十个不同的矢量寄存器由将要用64个工作项执行的特定波前指定。因此,APD 116确定需要保留10x 64=640个寄存器来执行所述波前。类似地,指令可将存储器中的位置指定为操作数。APD 116基于由着色器程序的指令指定的存储器位置来确定为波前保留的存储器的总量。波前所需的其他资源也是基于波前要执行的着色器程序的特征而保留的。
发生以使波前准备来执行的另一个操作包括接收来自先前着色器级的波前已完成执行的指示。更具体地,一些着色器级依赖于其他着色器级。例如,如果启用曲面细分(其涉及外壳着色器级306、曲面细分器级308和域着色器级310),则外壳着色器级306依赖于来自顶点着色器级304的执行结果。因此,在特定一组顶点上执行外壳着色器程序的波前等待在这些相同顶点上执行顶点着色器程序的波前完成。这种“切换”通常由调度器136促进,所述调度器接收特定波前完成的通知并且作为响应启动用于后续级的波前。
上述操作展示了至少部分地经由着色器程序实现的图形处理流水线134的每个级与一定数量的开销相关联。例如,针对不同着色器程序类型启动不同的波前(例如,启动一种类型的波前以执行顶点着色器程序,并且启动另一种类型的波前以执行外壳着色器程序)。因此,更多数量的着色器级通常与由调度器136跟踪的更多数量的波前相关联。其他开销涉及与在着色器级之间传输数据相关的开销,以及与为每个不同的着色器程序类型保留的资源的量相关的开销。因此,将某些着色器级进行组合可有助于减少这种开销并且提高性能。可组合的两个着色器级是顶点着色器级和外壳着色器级以及顶点着色器级和几何着色器级。
图4A和图4B展示了用于根据实例的图形处理流水线的配置。这些替代性配置包括图4A的配置,其中顶点着色器级和几何着色器级420被组合成单个着色器级,即组合的顶点着色器和几何着色器级420;以及图4B的配置,其中顶点着色器级和外壳着色器级306被组合成单个着色器级,即组合的顶点着色器和外壳着色器级410。在本文,图4A所示的图形处理流水线134的配置被称为“顶点/几何着色器配置402”,并且图4B所示的图形处理流水线134的配置被称为“顶点/外壳着色器配置404”。
可启用或禁用图形处理流水线134的各个级。具体地,可启用或禁用由几何着色器级312实现的几何着色,并且可一起启用或禁用实现曲面细分的级(外壳着色器级306、曲面细分器级308和域着色器级310)。如果曲面细分和几何着色两者都被禁用,则不使用图4A和图4B所示的配置。在图4A和图4B两者中,用箭头指示禁用的级,所述箭头围绕禁用的级流动到图形处理流水线134中的后续级。如果启用几何着色并且禁用曲面细分,则使用图4A的顶点/几何着色器配置402。如果启用曲面细分(并且无论是否启用几何着色),则使用图4B的顶点/外壳着色器配置404(几何着色器级312用虚线示出,从而指示所述级的使用是可选的)。
“组合”两个着色器级意味着用于两个着色器级的着色器程序被(例如,通过驱动器122)组合到单个着色器程序中,并且启动波前以执行组合的着色器程序。更具体地,代替启动第一类型的波前以执行顶点着色器程序并且启动第二类型的波前以执行外壳着色器程序或几何着色器程序,APD 116启动单一类型的波前,即组合的顶点和外壳或几何着色器类型,以执行用于组合的流水线级的组合的着色器程序。这种组合涉及对APD 116和图形处理流水线134的若干操作和/或修改,包括修改着色器程序声明的输入和输出、修改波前在APD116中执行的方式、修改资源被分配用于不同的着色器程序的方式以及本文描述的其他操作。
图5A和图5B展示了根据实例的涉及图2所示的驱动器122和调度器136的组合的着色器级的各方面。出于比较说明的目的,图5A展示了未组合的着色器级,并且图5B展示了组合的着色器级。
在图5A中,驱动器122从请求将要在APD 116上作为顶点着色器级304和外壳着色器级306或几何着色器级312的一部分执行的这种着色器代码的硬件或软件接收顶点着色器代码502以及外壳或几何着色器代码504。外壳或几何着色器代码504表示几何着色器代码或外壳着色器代码。
响应于接收到顶点着色器代码502以及外壳或几何着色器代码504,驱动器122对顶点着色器代码502进行编译以生成顶点着色器程序506,并且对外壳或几何着色器代码504进行编译以生成外壳或几何着色器程序508。用于(例如,通过应用程序126)对提供给驱动器122的着色器程序进行编译的技术通常包括将以高级语言(诸如AMD中间语言)指定的程序转换为更低级别的指令,这些指令更多地与硬件相关联并且由APD 116所理解。
在APD 116中,调度器136获得编译的顶点着色器程序506,并且外壳或几何着色器程序508执行那些着色器程序。这种执行的一部分涉及识别和保留着色器程序所需的资源。这种执行的另一部分涉及启动波前以执行着色器程序。这种执行的另一部分涉及协调流水线的不同级之间的波前执行(换句话说,确保在完成之前用于后续级的波前等待执行先前级的波前的执行,其中在后续级中的执行取决于先前级的结果)。
执行的这些方面在图5A中示出。调度器136保留资源并且启动执行顶点着色器程序的顶点着色器波前。调度器136随后等待用于未完成的顶点着色器波前510的“完成”信号。在接收到“完成”信号时,调度器136为外壳或几何着色器波前512保留资源并且启动所述外壳或几何着色器波前,以执行外壳或几何着色器程序508。如上所述,资源包括寄存器、存储器、用于跟踪波前的执行的跟踪资源以及其他资源。
图5B展示了组合的着色器级。对于这些组合的着色器级,驱动器122(例如从应用程序126)接收顶点着色器代码502以及外壳或几何着色器代码504,并且将代码的这些不同部分编译成单个组合的顶点和外壳或几何着色器程序530。外壳或几何着色器代码504表示用于其中曲面细分被禁用但是几何着色被启用(图4A)的图形处理流水线134的配置的几何着色器代码,或者用于其中细分被禁用(图4B)的图形处理流水线134的配置的外壳着色器代码。
为了组合着色器级,驱动器122对顶点着色器代码502以及外壳或几何着色器代码504进行编译,以生成编译的着色器程序并且将编译的着色器程序“缝合”在一起。将两个着色器程序缝合在一起意味着两个着色器程序被串联,并且随后根据需要来修改组合。
修改串联的着色器程序的一种方法涉及为着色器程序定义的输入和输出。更具体地,每个着色器程序定义了着色器程序的输入和输出。这些定义的输入和输出充当对APD116的提示。当波前开始执行着色器程序时,APD 116确保将指示为输入的值放置在由着色器程序指定的位置(例如,寄存器)中。当波前完成执行时,APD 116从指示为存储输出的位置(例如,寄存器)检索数据。APD 116可将所述数据复制到用于使用输出数据的后续着色器级中的着色器程序的其他位置(例如,寄存器)。例如,对于图3所示的图形处理流水线134,APD 116将着色顶点从在顶点着色器级304中执行的顶点着色器程序中指定为输出的位置复制到被指定为用于在外壳着色器级306中执行的外壳着色器程序的输入的位置。
顶点着色器代码502定义了输出,并且外壳或几何着色器代码504定义了输入。然而,因为组合的顶点和外壳或几何着色器程序530是单个着色器程序,而不是两个单独的着色器程序,所以顶点着色器代码502的定义的输出以及外壳或几何着色器代码504的定义的输入不需要由APD 116明确地“处理”。更具体地,因为这些定义的输入和输出是关于在图形处理流水线134的不同级处执行的着色器程序之间传输数据的方式的对APD 116的提示,所以这些定义的输入和输出不需要在组合的顶点和外壳或几何着色器程序530中。因此,驱动器122在创建组合的顶点和外壳或几何着色器程序530时移除顶点着色器代码502的定义的输出以及外壳或几何着色器代码504的定义的输入。驱动器122还修改从输入读取而不是从其中放置顶点着色器代码502的输出的位置读取的外壳或几何着色器代码504的指令。例如,如果某些寄存器将被指示为存储用于顶点着色器代码的输出并且某些寄存器将被指示为存储用于外壳或几何着色器代码的输入,则驱动器122修改外壳或几何着色器代码的指令,以从被指示为存储用于顶点着色器代码的输出的寄存器读取而不是从被指示为存储用于外壳或几何着色器代码的输入的寄存器读取。
为了启动波前来执行着色器程序,调度器136为这些波前保留资源。所述资源包括各种存储器单元、寄存器(诸如矢量寄存器206和标量寄存器208)、波前簿记204中用于跟踪波前的条目以及其他资源的部分。为组合的顶点和外壳或几何着色器程序530保留的资源不同于将以若干方式为独立顶点着色器程序以及外壳或几何着色器程序保留的资源。实际启动的波前的数量不同。将要为独立的顶点着色器启动的波前的数量取决于将要着色的顶点610的数量。将要为独立的外壳或几何着色器启动的波前的数量取决于将要着色的碎片(外壳)或图元(几何)的数量。然而,为组合的顶点和外壳或几何着色器程序530启动的波前的数量小于为独立的顶点着色器程序以及外壳或几何着色器程序启动的波前的总数。这是因为组合的着色器程序具有用于两个着色器程序的指令。因此,执行用于顶点着色器级的指令的组合的着色器程序中的至少一些也将执行用于外壳或几何着色器级的指令。
在一个实例中,要启动的组合的着色器级波前的数量基于将要在顶点着色器级中处理的顶点的数量。更具体地,要启动的工作项的数量与要在顶点着色器级处处理的顶点610的数量相等(或近似相等)。波前的数量基于要启动的工作项的数量,因为每个波前都执行用于固定数量的工作项的指令。此外,因为外壳或几何着色器程序对顶点614的集合执行工作,所以用于处理顶点着色器级中的顶点610的工作项的数量大于用于执行外壳或几何着色器操作的工作项的数量。此外,组合的着色器程序包括用于顶点着色器级以及外壳或几何着色器级两者的指令。因此,至少一些启动的组合的着色器程序将执行用于顶点着色器级以及外壳或几何着色器级两者的指令。出于这个原因,要启动的组合的着色器波前的数量基于在顶点着色器级中要处理的顶点610的数量,并且不基于在外壳或几何着色器级中要处理的碎片或图元的数量。
此外,用于顶点着色器指令的一些寄存器或存储器位置被重新用于外壳或几何着色器指令。因此,虽然独立执行用于顶点着色器程序以及外壳或几何着色器程序的波前将必须为相应的着色器程序保留寄存器和存储器,但是组合的着色器程序可保留较少的存储器和寄存器。在一些实例中,对于每个特定资源,要为组合的顶点和外壳或几何着色器程序530保留的资源的量是顶点着色器代码502或者外壳或几何着色器代码504所需的资源的数量的最大值。例如,如果顶点着色器代码需要4个寄存器并且外壳或几何着色器代码504需要8个寄存器,则调度器136保留8个寄存器。如果顶点着色器代码在本地数据存储库存储器212中需要100个字节并且外壳或几何着色器代码在本地数据存储库存储器212中需要200个字节,则调度器136保留200个字节。此外,使用组合的着色器级允许较少量的等待时间,因为级到级的数据被保持在执行单元的本地。因此,减少了与将用于级的数据传输到用于第一级的外部存储器单元并且随后读回用于第二级的数据相关联的等待时间。
图6展示了根据实例的用于启用或禁用用于组合的顶点和外壳或几何着色器级的波前以便适应着色器级之间的边界处的工作负载的变化的操作。更具体地,图6展示了多个组合的顶点和外壳或几何着色器波前532,其执行用于图4A的配置的组合的顶点和几何着色器程序或者用于图4B的配置的组合的顶点和外壳着色器程序(其中,这种组合的着色器程序被展示为V+H/G 530)。组合的着色器程序530包括顶点着色器部分606以及外壳或几何着色器部分608。顶点着色器部分606接受顶点510作为输入并且将着色顶点612输出到外壳/几何着色器部分608。外壳/几何着色器部分608接受着色顶点作为输入控制点614,并且作为响应将输出控制点616输出。需注意,因为着色输出顶点612被收集在一起以便进行处理来生成输出碎片,所以用于外壳/几何着色器部分608的波前的数量小于用于通过顶点着色器部分606对顶点进行着色的顶点614的数量。
为了适应这种变化,启动了许多组合的顶点和外壳或几何着色器波前532,以便处理由顶点着色器级识别用于着色的顶点。组合的着色器波前532被配置成在执行时具有改变的执行覆盖区。“改变的执行覆盖区”意味着与外壳或几何着色器部分608相比,将为顶点着色器部分506执行不同数量的波前532。更具体地,顶点着色器程序对各个顶点执行顶点着色操作。尽管在可编程处理单元202上并行执行对应于不同工作项的顶点着色器程序的多个实例,但是每个单独的工作项仅在单个数据顶点上独立操作,从而执行为所述数据顶点指定的任何变换和其他操作。
然而,外壳着色器程序或几何着色器程序在多个数据顶点(例如,用于外壳着色器的输入控制点的集合或者用于几何着色器的顶点集合)上操作。更具体地,每个工作项接受多个顶点作为输入控制点,并且输出碎片作为多个输出控制点。由于外壳着色器程序和几何着色器程序在多个顶点上操作,因此用于执行外壳着色器和几何着色器操作的工作项的总数通常低于用于执行顶点着色器操作的工作项的数量。
由于顶点着色器工作项与外壳着色器或几何着色器工作项之间的比率的差异,启动来执行组合的着色器程序的许多波前532对于外壳着色器或几何着色器部分实际上是不需要的。在执行顶点着色器部分606之后,不需要的波前因此被置于睡眠或终止。将波前532置于睡眠意味着继续跟踪波前532、将波前532的状态存储在存储器中等等,但是不调度睡眠的波前532来在任何SIMD单元138上执行。终止波前532意味着结束波前532的执行并且摒弃用于可存储在例如波前簿记204中的终止波前532的跟踪数据。
在图6中,所述图的左侧展示了执行顶点着色器部分606的组合的波前532,并且所述图的右侧展示了执行外壳或几何着色器部分608的组合的波前532(非激活部分用虚线展示)。所述图的右侧展示了执行外壳或几何着色器程序508的组合的波前532,其中非激活波前532和着色器程序的部分用虚线指示。一旦顶点着色器部分506已由波前532执行,APD116就禁用不执行外壳或几何着色器部分608的许多波前532。在图6的实例中,波前532(1)执行外壳或几何着色器部分608,并且禁用波前532(2)-532(N)。然而,在其他实例中,可启用和禁用不同数量的波前以便执行外壳或几何着色器部分608。
未禁用的每个波前532收集由执行顶点着色器部分606的多个波前532产生的着色顶点(作为输入控制点614)。这种“收集”可通过由驱动器122插入到组合的着色器程序530中的特定指令来完成。更具体地,驱动器122可插入从顶点着色器部分606中为多个波前532指定的修改顶点的位置读取的指令。
为了确保组合的着色器程序中的外壳或几何着色器部分608具有来自顶点着色器部分606的所有输入控制点614,当生成组合的顶点和外壳或几何着色器程序530时,驱动器122在顶点着色器部分606与外壳或几何着色器部分608之间插入障碍指令。障碍指令使得外壳或几何着色器部分608中的处理等待执行,直到产生用于外壳或几何着色器部分608的数据的波前已完成执行顶点着色器部分606为止。
图6示出了从组合的着色器程序530的顶点到外壳或几何部分的转换以及对应的波前禁用。然而,应当理解,组合的顶点和外壳或几何着色器程序530可包括导致各种波前睡眠和唤醒的许多转换。
在另一实例中,通过启用或禁用波前的工作项来适应组合的顶点和外壳或几何着色器程序530内的工作负载的变化。更具体地,每个波前对一组顶点执行工作,并且随后同一波前对一组图元执行工作。因为每个工作项在用于顶点操作的单个顶点上工作,并且在用于图元操作的单个图元上工作,一般来说,用于图元处理的工作项的数量少于用于顶点处理的工作项的数量。为了适应这种差异,波前禁用不需要的工作项,而其余的工作项执行图元操作。
图7是根据实例的用于针对组合的顶点和外壳或几何着色器级执行组合的顶点和外壳或几何着色器程序的方法700的流程图。尽管关于图1-图6所示和所述的系统进行了描述,但是应当理解,被配置成以任何技术上可行的顺序执行所述方法的任何系统都落入本公开的范围内。
如图所示,方法700开始于步骤702处,其中APD 116获得用于组合的顶点和外壳或几何着色器级的组合的着色器程序。组合的着色器程序可由驱动器122基于从例如应用程序126接收的顶点着色器代码和外壳着色器代码或几何着色器代码生成。更具体地,驱动器122对顶点着色器代码和外壳着色器代码或几何着色器代码进行编译,以生成顶点和外壳或几何着色器编译指令,并且将顶点和外壳或几何着色器指令组合成单个组合的着色器程序。驱动器122可修改各个着色器程序的各方面,诸如用于顶点着色器代码的指定输出以及用于外壳着色器代码或几何着色器代码的指定输入。
在步骤704处,APD 116保留用于执行组合的着色器程序的资源。保留的资源包括存储器(诸如本地数据存储库存储器212中的寄存器和存储器)、波前簿记204中用于跟踪执行波前的条目以及其他资源。为组合的着色器程序保留的资源的数量可小于为各个顶点和外壳或几何着色器程序保留的资源的数量,因为一些此类资源(例如,寄存器、存储器)可从组合的着色器程序的顶点着色器部分重新使用到组合的着色器程序的外壳或几何着色器部分。
在步骤706处,APD 116产生并启动波前以执行组合的着色器程序。每个波前执行组合的着色器程序,其包括基于顶点着色器代码以及外壳或几何着色器代码两者的指令。启动的波前的数量基于执行顶点着色器代码的波前的数量以及执行外壳或几何着色器代码的波前的数量中的较大者。通常,更多的波前用于执行顶点着色器代码,因此产生的波前的数量取决于要在组合的着色器程序的顶点着色器部分中处理的顶点的数量。
提供一种执行用于图形处理流水线的组合的着色器级的着色器程序的方法。所述方法包括检索用于所述组合的着色器级的组合的着色器程序、为多个波前保留资源以执行所述组合的着色器程序以及产生所述多个波前以执行所述组合的着色器程序。所述组合的着色器级包括组合的顶点着色器级和外壳着色器级以及组合的顶点着色器级和几何着色器级中的一个。
提供一种用于执行用于图形处理流水线的组合的着色器级的着色器程序的加速处理装置(APD)。所述APD包括多个着色器引擎,所述着色器引擎包括寄存器和本地数据存储库存储器以及调度器。所述调度器被配置成检索用于所述组合的着色器级的组合的着色器程序、为多个波前保留资源以在所述多个着色器引擎中执行所述组合的着色器程序以及产生所述多个波前以在所述多个着色器引擎中执行所述组合的着色器程序。所述组合的着色器级包括组合的顶点着色器级和外壳着色器级以及组合的顶点着色器级和几何着色器级中的一个。
提供一种用于执行用于图形处理流水线的组合的着色器级的着色器程序的计算机系统。所述计算机系统包括:处理器,所述处理器执行用于控制加速处理装置(APD)的装置驱动器;以及所述APD。所述APD包括多个着色器引擎,所述着色器引擎包括寄存器和本地数据存储库存储器;以及调度器。所述调度器被配置成从所述装置驱动器接收用于所述组合的着色器级的组合的着色器程序、为多个波前保留资源以在所述多个着色器引擎中执行所述组合的着色器程序以及产生所述多个波前以在所述多个着色器引擎中执行所述组合的着色器程序。所述组合的着色器级包括组合的顶点着色器级和外壳着色器级以及组合的顶点着色器级和几何着色器级中的一个。
应当理解,基于本文的公开内容,许多变化是可能的。尽管以上以特定组合描述了特征和元件,但是每个特征或元件可在没有其他特征和元件的情况下单独使用,或者在具有或不具有其他特征和元件的各种组合中使用。
所提供的方法可在通用计算机、处理器或处理器内核中实现。通过实例,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP内核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)和/或状态机。可通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据的结果来配置制造过程来制造这种处理器(这种指令能够存储在计算机可读介质上)。这种处理的结果可为掩膜件,所述掩膜件被随后用于半导体制造工艺中以制造实现本实施例的各方面的处理器。
本文提供的方法或流程图可在结合在非暂时性计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器来执行。非暂时性计算机可读存储介质的实例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓冲存储器、半导体存储器装置、诸如内部硬盘和可移除磁盘的磁介质、磁光介质以及诸如CD-ROM盘和数字多功能磁盘(DVD)的光学介质。
Claims (20)
1.一种执行用于图形处理流水线的组合的着色器级的着色器程序的方法,所述方法包括:
检索用于所述组合的着色器级的组合的着色器程序;
为多个波前保留资源以执行所述组合的着色器程序;以及
产生所述多个波前以执行所述组合的着色器程序,
其中所述组合的着色器级包括组合的顶点着色器级和外壳着色器级以及组合的顶点着色器级和几何着色器级中的一个。
2.如权利要求1所述的方法,其中:
所述组合的着色器级是其中禁用曲面细分的图形处理流水线的一部分;并且
所述组合的着色器级包括所述组合的顶点着色器级和几何着色器级。
3.如权利要求1所述的方法,其中:
所述组合的着色器级是其中启用曲面细分的图形处理流水线的一部分;并且
所述组合的着色器级包括所述组合的顶点着色器级和外壳着色器级。
4.如权利要求1所述的方法,其中所述组合的着色器程序包括单个着色器程序,所述单个着色器程序包括来自顶点着色器程序以及外壳着色器程序或几何着色器程序两者的指令。
5.如权利要求4所述的方法,其中:
所述顶点着色器程序指定顶点着色器输出,所述顶点着色器输出指示顶点着色器输出值的图形处理硬件位置,以传输到所述图形处理流水线中的后续级;并且
所述组合的着色器程序不包括所述顶点着色器输出。
6.如权利要求4所述的方法,其中保留所述资源包括:
选择用于执行所述顶点着色器程序的第一数量的寄存器以及用于执行所述外壳着色器程序或所述几何着色器程序的第二数量的寄存器中的更多数量的寄存器;以及
保留所述更多数量的寄存器。
7.如权利要求4所述的方法,其还包括:
接收多个顶点将要由所述组合的着色器级的顶点着色器部分处理以及多个碎片将要由所述外壳着色器级处理或者多个图元将要由所述几何着色器级处理的指示;以及
确定用于由所述组合的着色器级的所述顶点着色器部分处理所述多个顶点的多个波前,
其中产生所述多个波前以执行所述组合的着色器程序包括产生所述确定数量的波前以执行所述组合的着色器程序。
8.如权利要求7所述的方法,其还包括:
基于用于执行所述顶点着色器程序的第一数量的工作项与用于执行所述外壳着色器程序或所述几何着色器程序的第二数量的工作项的比率来禁用所述波前中的一个或多个,
其中禁用包括使所述波前中的所述一个或多个睡眠或者终止所述一个或多个波前中的一者。
9.如权利要求1所述的方法,其中:
所述组合的着色器程序包括顶点着色器部分与外壳着色器部分或几何着色器部分之间的障碍指令,并且
所述障碍指令使所述顶点着色器部分中的处理等到所述外壳着色器部分或所述几何着色器部分中的处理完成才开始。
10.一种用于执行用于图形处理流水线的组合的着色器级的着色器程序的加速处理装置(APD),所述APD包括:
多个着色器引擎,所述着色器引擎包括寄存器和本地数据存储库存储器;以及
调度器,所述调度器被配置成:
检索用于所述组合的着色器级的组合的着色器程序;
为多个波前保留资源以在所述多个着色器引擎中执行所述组合的着色器程序;以及
产生所述多个波前以在所述多个着色器引擎中执行所述组合的着色器程序,
其中所述组合的着色器级包括组合的顶点着色器级和外壳着色器级以及组合的顶点着色器级和几何着色器级中的一个。
11.如权利要求10所述的APD,其中:
所述组合的着色器级是其中禁用曲面细分的图形处理流水线的一部分;并且
所述组合的着色器级包括所述组合的顶点着色器级和几何着色器级。
12.如权利要求10所述的APD,其中:
所述组合的着色器级是其中启用曲面细分的图形处理流水线的一部分;并且
所述组合的着色器级包括所述组合的顶点着色器级和外壳着色器级。
13.如权利要求10所述的APD,其中所述组合的着色器程序包括单个着色器程序,所述单个着色器程序包括来自顶点着色器程序以及外壳着色器程序或几何着色器程序两者的指令。
14.如权利要求13所述的APD,其中:
所述顶点着色器程序指定顶点着色器输出,所述顶点着色器输出指示顶点着色器输出值的图形处理硬件位置,以传输到所述图形处理流水线中的后续级;并且
所述组合的着色器程序不包括所述顶点着色器输出。
15.如权利要求13所述的APD,其中所述调度器被配置成通过以下步骤保留所述资源:
选择用于执行所述顶点着色器程序的第一数量的寄存器以及用于执行所述外壳着色器程序或所述几何着色器程序的第二数量的寄存器中的更多数量的寄存器;以及
保留所述更多数量的寄存器。
16.如权利要求13所述的APD,其中所述调度器被进一步配置成:
接收多个顶点将要由所述组合的着色器级的顶点着色器部分处理以及多个碎片将要由所述外壳着色器级处理或者多个图元将要由所述几何着色器级处理的指示;以及
确定用于由所述组合的着色器级的所述顶点着色器部分处理所述多个顶点的多个波前,
其中产生所述多个波前以执行所述组合的着色器程序包括产生所述确定数量的波前以执行所述组合的着色器程序。
17.如权利要求16所述的APD,其中所述调度器被进一步配置成:
基于用于执行所述顶点着色器程序的第一数量的工作项与用于执行所述外壳着色器程序或所述几何着色器程序的第二数量的工作项的比率来禁用所述波前中的一个或多个,
其中禁用包括使所述波前中的所述一个或多个睡眠或者终止所述一个或多个波前中的一者。
18.如权利要求10所述的APD,其中:
所述组合的着色器程序包括顶点着色器部分与外壳着色器部分或几何着色器部分之间的障碍指令,并且
所述障碍指令使所述顶点着色器部分中的处理等到所述外壳着色器部分或所述几何着色器部分中的处理完成才开始。
19.一种用于执行用于图形处理流水线的组合的着色器级的着色器程序的计算机系统,所述计算机系统包括:
处理器,所述处理器执行用于控制加速处理装置(APD)的装置驱动器;以及
所述APD,所述APD包括:
多个着色器引擎,所述着色器引擎包括寄存器和本地数据存储库存储器;以及
调度器,所述调度器被配置成:
从所述装置驱动器接收用于所述组合的着色器级的组合的着色器程序;
为多个波前保留资源以在所述多个着色器引擎中执行所述组合的着色器程序;以及
产生所述多个波前以在所述多个着色器引擎中执行所述组合的着色器程序,
其中所述组合的着色器级包括组合的顶点着色器级和外壳着色器级以及组合的顶点着色器级和几何着色器级中的一个。
20.如权利要求19所述的计算装置,其中:
所述组合的着色器级是其中禁用曲面细分的图形处理流水线的一部分;并且
所述组合的着色器级包括所述组合的顶点着色器级和几何着色器级。
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/389,481 | 2016-12-23 | ||
US15/389,481 US10460513B2 (en) | 2016-09-22 | 2016-12-23 | Combined world-space pipeline shader stages |
EP17150441.8A EP3300027B1 (en) | 2016-09-22 | 2017-01-05 | Combined world-space pipeline shader stages |
EP17150441.8 | 2017-01-05 | ||
PCT/US2017/050345 WO2018057294A1 (en) | 2016-09-22 | 2017-09-06 | Combined world-space pipeline shader stages |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109690630A true CN109690630A (zh) | 2019-04-26 |
CN109690630B CN109690630B (zh) | 2023-06-23 |
Family
ID=57737680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780054477.XA Active CN109690630B (zh) | 2016-09-22 | 2017-09-06 | 一种执行着色器程序的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (3) | US10460513B2 (zh) |
EP (1) | EP3300027B1 (zh) |
JP (1) | JP7253488B2 (zh) |
KR (1) | KR102510524B1 (zh) |
CN (1) | CN109690630B (zh) |
WO (1) | WO2018057294A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US10460513B2 (en) | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
EP3300362A1 (en) * | 2016-09-27 | 2018-03-28 | Thomson Licensing | Method for improved intra prediction when reference samples are missing |
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
GB2560892B (en) * | 2017-03-23 | 2021-06-02 | Advanced Risc Mach Ltd | Graphics Processing |
GB2570304B (en) * | 2018-01-18 | 2022-06-01 | Imagination Tech Ltd | Topology preservation in a graphics pipeline |
US10643369B2 (en) * | 2018-05-30 | 2020-05-05 | Advanced Micro Devices, Inc. | Compiler-assisted techniques for memory use reduction in graphics pipeline |
US11055895B2 (en) * | 2019-08-29 | 2021-07-06 | Advanced Micro Devices, Inc. | Shader merge for reduced divergence |
US11656877B2 (en) * | 2021-03-31 | 2023-05-23 | Advanced Micro Devices, Inc. | Wavefront selection and execution |
US20240193844A1 (en) * | 2022-12-08 | 2024-06-13 | Advanced Micro Devices, Inc. | Configurable multiple-die graphics processing unit |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104205174A (zh) * | 2012-04-04 | 2014-12-10 | 高通股份有限公司 | 图形处理中的拼补着色 |
US20140362102A1 (en) * | 2013-06-10 | 2014-12-11 | Sony Computer Entertainment Inc. | Graphics processing hardware for using compute shaders as front end for vertex shaders |
GB201513425D0 (en) * | 2015-07-30 | 2015-09-16 | Advanced Risc Mach Ltd | Graphics processing systems |
Family Cites Families (242)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5784075A (en) * | 1995-08-08 | 1998-07-21 | Hewlett-Packard Company | Memory mapping techniques for enhancing performance of computer graphics system |
WO2000004494A1 (en) * | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Graphics processing system with multiple strip breakers |
US6559852B1 (en) * | 1999-07-31 | 2003-05-06 | Hewlett Packard Development Company, L.P. | Z test and conditional merger of colliding pixels during batch building |
US6778174B1 (en) * | 2000-05-04 | 2004-08-17 | International Business Machines Corporation | Method and apparatus for attribute processing with an active pipeline stage in a data processing system |
US20030226135A1 (en) * | 2002-05-29 | 2003-12-04 | Oracle International Corporation | Optimized program analysis |
US6809732B2 (en) * | 2002-07-18 | 2004-10-26 | Nvidia Corporation | Method and apparatus for generation of programmable shader configuration information from state-based control information and program instructions |
US7176917B1 (en) * | 2002-08-09 | 2007-02-13 | Avid Technology, Inc. | Visual programming interface for a three-dimensional animation system for defining real time shaders using a real-time rendering engine application programming interface |
US7633506B1 (en) * | 2002-11-27 | 2009-12-15 | Ati Technologies Ulc | Parallel pipeline graphics system |
US7463259B1 (en) * | 2003-12-18 | 2008-12-09 | Nvidia Corporation | Subshader mechanism for programming language |
US6975325B2 (en) * | 2004-01-23 | 2005-12-13 | Ati Technologies Inc. | Method and apparatus for graphics processing using state and shader management |
US7385607B2 (en) * | 2004-04-12 | 2008-06-10 | Nvidia Corporation | Scalable shader architecture |
US7671862B1 (en) * | 2004-05-03 | 2010-03-02 | Microsoft Corporation | Systems and methods for providing an enhanced graphics pipeline |
US7570267B2 (en) * | 2004-05-03 | 2009-08-04 | Microsoft Corporation | Systems and methods for providing an enhanced graphics pipeline |
US7324106B1 (en) * | 2004-07-27 | 2008-01-29 | Nvidia Corporation | Translation of register-combiner state into shader microcode |
US20060071933A1 (en) * | 2004-10-06 | 2006-04-06 | Sony Computer Entertainment Inc. | Application binary interface for multi-pass shaders |
US7439979B1 (en) * | 2004-11-10 | 2008-10-21 | Nvidia Corporation | Shader with cache memory |
US7821520B1 (en) * | 2004-12-10 | 2010-10-26 | Nvidia Corporation | Fragment processor having dual mode register file |
US7623132B1 (en) * | 2004-12-20 | 2009-11-24 | Nvidia Corporation | Programmable shader having register forwarding for reduced register-file bandwidth consumption |
US7624255B1 (en) * | 2005-03-09 | 2009-11-24 | Nvidia Corporation | Scheduling program instruction execution by using fence instructions |
US7830390B2 (en) * | 2005-07-19 | 2010-11-09 | Graphics Properties Holdings, Inc. | Color computation of pixels using a plurality of vertex or fragment shader programs |
US20070091088A1 (en) * | 2005-10-14 | 2007-04-26 | Via Technologies, Inc. | System and method for managing the computation of graphics shading operations |
JPWO2007049610A1 (ja) * | 2005-10-25 | 2009-04-30 | 三菱電機株式会社 | 画像処理装置 |
US7468726B1 (en) * | 2005-12-01 | 2008-12-23 | Nvidia Corporation | Culling in a vertex processing unit |
US8077174B2 (en) * | 2005-12-16 | 2011-12-13 | Nvidia Corporation | Hierarchical processor array |
US7728841B1 (en) * | 2005-12-19 | 2010-06-01 | Nvidia Corporation | Coherent shader output for multiple targets |
US8074224B1 (en) * | 2005-12-19 | 2011-12-06 | Nvidia Corporation | Managing state information for a multi-threaded processor |
US7623049B2 (en) * | 2006-06-08 | 2009-11-24 | Via Technologies, Inc. | Decoding of context adaptive variable length codes in computational core of programmable graphics processing unit |
US7626521B2 (en) * | 2006-06-08 | 2009-12-01 | Via Technologies, Inc. | Decoding control of computational core of programmable graphics processing unit |
US8111260B2 (en) * | 2006-06-28 | 2012-02-07 | Microsoft Corporation | Fast reconfiguration of graphics pipeline state |
US8154554B1 (en) * | 2006-07-28 | 2012-04-10 | Nvidia Corporation | Unified assembly instruction set for graphics processing |
US8963932B1 (en) * | 2006-08-01 | 2015-02-24 | Nvidia Corporation | Method and apparatus for visualizing component workloads in a unified shader GPU architecture |
US7551176B2 (en) * | 2006-08-24 | 2009-06-23 | Via Technologies, Inc. | Systems and methods for providing shared attribute evaluation circuits in a graphics processing unit |
US7928990B2 (en) * | 2006-09-27 | 2011-04-19 | Qualcomm Incorporated | Graphics processing unit with unified vertex cache and shader register file |
US20080094408A1 (en) * | 2006-10-24 | 2008-04-24 | Xiaoqin Yin | System and Method for Geometry Graphics Processing |
US7750913B1 (en) * | 2006-10-24 | 2010-07-06 | Adobe Systems Incorporated | System and method for implementing graphics processing unit shader programs using snippets |
US8429656B1 (en) * | 2006-11-02 | 2013-04-23 | Nvidia Corporation | Thread count throttling for efficient resource utilization |
US8223158B1 (en) * | 2006-12-19 | 2012-07-17 | Nvidia Corporation | Method and system for connecting multiple shaders |
CN103310480B (zh) * | 2007-01-24 | 2016-12-28 | 英特尔公司 | 通过使用可置换的剔除程序提高图形性能的方法和装置 |
US8421794B2 (en) * | 2007-03-23 | 2013-04-16 | Qualcomm Incorporated | Processor with adaptive multi-shader |
US20080266286A1 (en) * | 2007-04-25 | 2008-10-30 | Nvidia Corporation | Generation of a particle system using a geometry shader |
FR2917199B1 (fr) * | 2007-06-05 | 2011-08-19 | Thales Sa | Generateur de code source pour une carte graphique |
US8355028B2 (en) * | 2007-07-30 | 2013-01-15 | Qualcomm Incorporated | Scheme for varying packing and linking in graphics systems |
US20090033659A1 (en) * | 2007-07-31 | 2009-02-05 | Lake Adam T | Real-time luminosity dependent subdivision |
US8384728B2 (en) * | 2007-09-14 | 2013-02-26 | Qualcomm Incorporated | Supplemental cache in a graphics processing unit, and apparatus and method thereof |
US8325184B2 (en) * | 2007-09-14 | 2012-12-04 | Qualcomm Incorporated | Fragment shader bypass in a graphics processing unit, and apparatus and method thereof |
US8200917B2 (en) * | 2007-09-26 | 2012-06-12 | Qualcomm Incorporated | Multi-media processor cache with cache line locking and unlocking |
US8237725B1 (en) * | 2007-11-05 | 2012-08-07 | Nvida Corporation | Vertex cache map mode for per-vertex state changes |
US8031194B2 (en) * | 2007-11-09 | 2011-10-04 | Vivante Corporation | Intelligent configurable graphics bandwidth modulator |
US8963930B2 (en) * | 2007-12-12 | 2015-02-24 | Via Technologies, Inc. | Triangle setup and attribute setup integration with programmable execution unit |
US20090189896A1 (en) * | 2008-01-25 | 2009-07-30 | Via Technologies, Inc. | Graphics Processor having Unified Shader Unit |
US8633936B2 (en) * | 2008-04-21 | 2014-01-21 | Qualcomm Incorporated | Programmable streaming processor with mixed precision instruction execution |
US8190826B2 (en) * | 2008-05-28 | 2012-05-29 | Advanced Micro Devices, Inc. | Write combining cache with pipelined synchronization |
US7971041B2 (en) * | 2008-05-29 | 2011-06-28 | Advanced Micro Devices, Inc. | Method and system for register management |
US8741798B2 (en) * | 2008-05-29 | 2014-06-03 | Emmett M. Cunningham | Catalysts for hydrocarbon oxidation |
US20100123717A1 (en) * | 2008-11-20 | 2010-05-20 | Via Technologies, Inc. | Dynamic Scheduling in a Graphics Processor |
GB2466078B (en) * | 2008-12-15 | 2013-11-13 | Advanced Risc Mach Ltd | Apparatus and method for tracing activities of a shader program executed on shader circuitry of a data processing apparatus |
US8436854B2 (en) * | 2009-05-29 | 2013-05-07 | Qualcomm Incorporated | Graphics processing unit with deferred vertex shading |
US8203566B2 (en) * | 2009-05-29 | 2012-06-19 | Microsoft Corporation | Fixed function pipeline application remoting through a shader pipeline conversion layer |
TW201044185A (en) * | 2009-06-09 | 2010-12-16 | Zillians Inc | Virtual world simulation systems and methods utilizing parallel coprocessors, and computer program products thereof |
US8553040B2 (en) * | 2009-06-30 | 2013-10-08 | Apple Inc. | Fingerprinting of fragment shaders and use of same to perform shader concatenation |
US20110043518A1 (en) * | 2009-08-21 | 2011-02-24 | Nicolas Galoppo Von Borries | Techniques to store and retrieve image data |
US9142057B2 (en) * | 2009-09-03 | 2015-09-22 | Advanced Micro Devices, Inc. | Processing unit with a plurality of shader engines |
US9324175B2 (en) | 2009-09-11 | 2016-04-26 | Nvidia Corporation | Memory coherency in graphics command streams and shaders |
US8619087B2 (en) * | 2009-10-06 | 2013-12-31 | Nvidia Corporation | Inter-shader attribute buffer optimization |
US8810592B2 (en) * | 2009-10-09 | 2014-08-19 | Nvidia Corporation | Vertex attribute buffer for inline immediate attributes and constants |
US9183608B2 (en) * | 2009-12-23 | 2015-11-10 | Intel Corporation | Image processing techniques for tile-based rasterization |
US8514235B2 (en) * | 2010-04-21 | 2013-08-20 | Via Technologies, Inc. | System and method for managing the computation of graphics shading operations |
US20110285718A1 (en) * | 2010-05-21 | 2011-11-24 | Kilgard Mark J | Point containment for quadratic bèzier strokes |
US8754900B2 (en) * | 2010-06-17 | 2014-06-17 | Thinci, Inc. | Processing of graphics data of a server system for transmission |
US20110310102A1 (en) * | 2010-06-17 | 2011-12-22 | Via Technologies, Inc. | Systems and methods for subdividing and storing vertex data |
US8681162B2 (en) * | 2010-10-15 | 2014-03-25 | Via Technologies, Inc. | Systems and methods for video processing |
US20120229481A1 (en) * | 2010-12-13 | 2012-09-13 | Ati Technologies Ulc | Accessibility of graphics processing compute resources |
US8803891B2 (en) * | 2010-12-13 | 2014-08-12 | Advanced Micro Devices, Inc. | Method for preempting graphics tasks to accommodate compute tasks in an accelerated processing device (APD) |
US9507632B2 (en) * | 2010-12-15 | 2016-11-29 | Advanced Micro Devices, Inc. | Preemptive context switching of processes on ac accelerated processing device (APD) based on time quanta |
KR101738641B1 (ko) * | 2010-12-17 | 2017-05-23 | 삼성전자주식회사 | 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법 |
US8930752B2 (en) * | 2011-02-15 | 2015-01-06 | International Business Machines Corporation | Scheduler for multiprocessor system switch with selective pairing |
GB201103699D0 (en) * | 2011-03-03 | 2011-04-20 | Advanced Risc Mach Ltd | Graphic processing |
US9578299B2 (en) * | 2011-03-14 | 2017-02-21 | Qualcomm Incorporated | Stereoscopic conversion for shader based graphics content |
US8683468B2 (en) * | 2011-05-16 | 2014-03-25 | Advanced Micro Devices, Inc. | Automatic kernel migration for heterogeneous cores |
US9349209B2 (en) * | 2011-05-27 | 2016-05-24 | Arm Limited | Graphics processing systems |
US9442780B2 (en) * | 2011-07-19 | 2016-09-13 | Qualcomm Incorporated | Synchronization of shader operation |
US9019280B2 (en) * | 2011-07-22 | 2015-04-28 | Qualcomm Incorporated | Area-based rasterization techniques for a graphics processing system |
US10089774B2 (en) * | 2011-11-16 | 2018-10-02 | Qualcomm Incorporated | Tessellation in tile-based rendering |
US8842122B2 (en) * | 2011-12-15 | 2014-09-23 | Qualcomm Incorporated | Graphics processing unit with command processor |
US9202308B2 (en) * | 2011-12-28 | 2015-12-01 | Think Silicon Sa | Methods of and apparatus for assigning vertex and fragment shading operations to a multi-threaded multi-format blending device |
US9390554B2 (en) * | 2011-12-29 | 2016-07-12 | Advanced Micro Devices, Inc. | Off chip memory for distributed tessellation |
US9710306B2 (en) * | 2012-04-09 | 2017-07-18 | Nvidia Corporation | Methods and apparatus for auto-throttling encapsulated compute tasks |
KR20130123645A (ko) * | 2012-05-03 | 2013-11-13 | 삼성전자주식회사 | 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법 |
US10019829B2 (en) * | 2012-06-08 | 2018-07-10 | Advanced Micro Devices, Inc. | Graphics library extensions |
US9922442B2 (en) * | 2012-07-18 | 2018-03-20 | Arm Limited | Graphics processing unit and method for performing tessellation operations |
US9330495B2 (en) * | 2012-08-09 | 2016-05-03 | Qualcomm Incorporated | Extending DX11 GPU for programmable vector graphics |
US8982124B2 (en) * | 2012-09-29 | 2015-03-17 | Intel Corporation | Load balancing and merging of tessellation thread workloads |
US9123167B2 (en) * | 2012-09-29 | 2015-09-01 | Intel Corporation | Shader serialization and instance unrolling |
US9177351B2 (en) * | 2012-10-09 | 2015-11-03 | Qualcomm Incorporated | Multi-primitive graphics rendering pipeline |
WO2014068400A2 (en) * | 2012-11-02 | 2014-05-08 | Imagination Technologies, Ltd. | On demand geometry and acceleration structure creation |
US9280956B2 (en) * | 2012-11-29 | 2016-03-08 | Qualcomm Incorporated | Graphics memory load mask for graphics processing |
US9105125B2 (en) * | 2012-12-05 | 2015-08-11 | Advanced Micro Devices, Inc. | Load balancing for optimal tessellation performance |
US9495721B2 (en) * | 2012-12-21 | 2016-11-15 | Nvidia Corporation | Efficient super-sampling with per-pixel shader threads |
US9940170B2 (en) * | 2012-12-24 | 2018-04-10 | Empire Technology Development Llc | Dynamically managing distribution of data and computation across cores for sequential programs |
US9710874B2 (en) * | 2012-12-27 | 2017-07-18 | Nvidia Corporation | Mid-primitive graphics execution preemption |
US9538164B2 (en) * | 2013-01-10 | 2017-01-03 | Qualcomm Incorporated | Stereoscopic conversion with viewing orientation for shader based graphics content |
US9214008B2 (en) * | 2013-01-18 | 2015-12-15 | Nvidia Corporation | Shader program attribute storage |
US11663767B2 (en) * | 2013-02-20 | 2023-05-30 | Nvidia Corporation | Power efficient attribute handling for tessellation and geometry shaders |
US9483861B2 (en) * | 2013-03-15 | 2016-11-01 | Qualcomm Incorporated | Tile-based rendering |
US9401034B2 (en) * | 2013-04-30 | 2016-07-26 | Microsoft Technology Licensing, Llc | Tessellation of two-dimensional curves using a graphics pipeline |
KR102048885B1 (ko) * | 2013-05-09 | 2019-11-26 | 삼성전자 주식회사 | 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 렌더링 방법 |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US10096079B2 (en) * | 2013-06-10 | 2018-10-09 | Sony Interactive Entertainment Inc. | Fragment shaders perform vertex shader computations |
US10176621B2 (en) * | 2013-06-10 | 2019-01-08 | Sony Interactive Entertainment Inc. | Using compute shaders as front end for vertex shaders |
US9715389B2 (en) * | 2013-06-25 | 2017-07-25 | Advanced Micro Devices, Inc. | Dependent instruction suppression |
US9177413B2 (en) * | 2013-06-26 | 2015-11-03 | Nvidia Corporation | Unique primitive identifier generation |
US9256976B2 (en) * | 2013-07-09 | 2016-02-09 | Intel Corporation | Techniques for extracting and displaying partially processed graphics information |
KR102109130B1 (ko) * | 2013-08-12 | 2020-05-08 | 삼성전자주식회사 | 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들 |
US9659399B2 (en) * | 2013-08-23 | 2017-05-23 | Nvidia Corporation | System, method, and computer program product for passing attribute structures between shader stages in a graphics pipeline |
KR102066533B1 (ko) * | 2013-11-19 | 2020-01-16 | 삼성전자 주식회사 | 도메인 쉐이딩 방법과 이를 수행하는 장치들 |
US9483862B2 (en) * | 2013-12-20 | 2016-11-01 | Qualcomm Incorporated | GPU-accelerated path rendering |
US20150179142A1 (en) * | 2013-12-20 | 2015-06-25 | Nvidia Corporation | System, method, and computer program product for reduced-rate calculation of low-frequency pixel shader intermediate values |
WO2015122549A1 (ko) * | 2014-02-12 | 2015-08-20 | 주식회사 칩스앤미디어 | 동영상 처리 방법 및 장치 |
US9679347B2 (en) * | 2014-02-18 | 2017-06-13 | Qualcomm Incorporated | Shader pipeline with shared data channels |
US9766954B2 (en) * | 2014-09-08 | 2017-09-19 | Microsoft Technology Licensing, Llc | Configuring resources used by a graphics processing unit |
US9710957B2 (en) * | 2014-04-05 | 2017-07-18 | Sony Interactive Entertainment America Llc | Graphics processing enhancement by tracking object and/or primitive identifiers |
US9626762B2 (en) * | 2014-04-15 | 2017-04-18 | Qualcomm Incorporated | Stochastic rasterization using enhanced stencil operations on a graphics processing unit (GPU) |
US20150348224A1 (en) * | 2014-05-30 | 2015-12-03 | Apple Inc. | Graphics Pipeline State Object And Model |
US11049269B2 (en) * | 2014-06-27 | 2021-06-29 | Samsung Electronics Co., Ltd. | Motion based adaptive rendering |
GB2527822B (en) * | 2014-07-03 | 2020-10-07 | Advanced Risc Mach Ltd | Graphics processing |
CN106687924A (zh) * | 2014-07-10 | 2017-05-17 | 英特尔公司 | 用于基于当前状态来更新着色器程序的方法和装置 |
US9665975B2 (en) | 2014-08-22 | 2017-05-30 | Qualcomm Incorporated | Shader program execution techniques for use in graphics processing |
KR102263326B1 (ko) * | 2014-09-18 | 2021-06-09 | 삼성전자주식회사 | 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법 |
US9824412B2 (en) * | 2014-09-24 | 2017-11-21 | Intel Corporation | Position-only shading pipeline |
KR102251444B1 (ko) * | 2014-10-21 | 2021-05-13 | 삼성전자주식회사 | 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 안티 에일리어싱 방법 |
US10217272B2 (en) * | 2014-11-06 | 2019-02-26 | Intel Corporation | Zero-coverage rasterization culling |
KR102327144B1 (ko) * | 2014-11-26 | 2021-11-16 | 삼성전자주식회사 | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법 |
KR102313020B1 (ko) * | 2014-11-27 | 2021-10-15 | 삼성전자주식회사 | 그래픽스 프로세싱 유닛과 이를 포함하는 장치 |
US10210591B2 (en) * | 2015-02-02 | 2019-02-19 | Microsoft Technology Licensing, Llc | Optimizing compilation of shaders |
US9489710B2 (en) * | 2015-02-10 | 2016-11-08 | Qualcomm Incorporated | Hybrid rendering in graphics processing |
US9704217B2 (en) * | 2015-04-20 | 2017-07-11 | Intel Corporation | Apparatus and method for non-uniform frame buffer rasterization |
US9804666B2 (en) * | 2015-05-26 | 2017-10-31 | Samsung Electronics Co., Ltd. | Warp clustering |
US10186008B2 (en) * | 2015-05-28 | 2019-01-22 | Qualcomm Incorporated | Stereoscopic view processing |
US9916634B2 (en) * | 2015-06-12 | 2018-03-13 | Intel Corporation | Facilitating efficient graphics command generation and execution for improved graphics performance at computing devices |
US20160379331A1 (en) * | 2015-06-23 | 2016-12-29 | Freescale Semiconductor, Inc. | Apparatus and method for verifying the integrity of transformed vertex data in graphics pipeline processing |
US10410590B2 (en) * | 2015-06-26 | 2019-09-10 | Intel Corporation | Facilitating chromatic adaptation of display contents at computing devices based on chromatic monitoring of environmental light |
GB2540382B (en) * | 2015-07-15 | 2020-03-04 | Advanced Risc Mach Ltd | Data processing systems |
US9959665B2 (en) * | 2015-07-21 | 2018-05-01 | Qualcomm Incorporated | Zero pixel culling for graphics processing |
US20170039093A1 (en) * | 2015-08-04 | 2017-02-09 | Futurewei Technologies, Inc. | Core load knowledge for elastic load balancing of threads |
US9779469B2 (en) * | 2015-08-17 | 2017-10-03 | Qualcomm Incorporated | Register spill management for general purpose registers (GPRs) |
KR20170025099A (ko) * | 2015-08-27 | 2017-03-08 | 삼성전자주식회사 | 렌더링 방법 및 장치 |
US10210655B2 (en) * | 2015-09-25 | 2019-02-19 | Intel Corporation | Position only shader context submission through a render command streamer |
US9842376B2 (en) * | 2015-09-29 | 2017-12-12 | Qualcomm Incorporated | Graphics processing unit preemption with pixel tile level granularity |
KR102512521B1 (ko) * | 2015-10-12 | 2023-03-21 | 삼성전자주식회사 | 텍스쳐 처리 방법 및 장치 |
US10002401B2 (en) * | 2015-11-11 | 2018-06-19 | Samsung Electronics Co., Ltd. | Method and apparatus for efficient processing of graphics commands |
US10140678B2 (en) * | 2015-12-18 | 2018-11-27 | Intel Corporation | Specialized code paths in GPU processing |
US10580108B2 (en) * | 2015-12-22 | 2020-03-03 | Intel Corporation | Method and apparatus for best effort quality of service (QoS) scheduling in a graphics processing architecture |
US10121221B2 (en) * | 2016-01-18 | 2018-11-06 | Advanced Micro Devices, Inc. | Method and apparatus to accelerate rendering of graphics images |
US10706608B2 (en) * | 2016-01-19 | 2020-07-07 | Nvidia Corporation | Tree traversal with backtracking in constant time |
US10275239B2 (en) * | 2016-03-30 | 2019-04-30 | Sony Interactive Entertainment Inc. | Deriving application-specific operating parameters for backwards compatiblity |
US10303488B2 (en) * | 2016-03-30 | 2019-05-28 | Sony Interactive Entertainment Inc. | Real-time adjustment of application-specific operating parameters for backwards compatibility |
US10818054B2 (en) * | 2016-04-01 | 2020-10-27 | Intel Corporation | Apparatus and method for asynchronous texel shading |
US10025605B2 (en) * | 2016-04-08 | 2018-07-17 | Advanced Micro Devices, Inc. | Message handler compiling and scheduling in heterogeneous system architectures |
US10192280B2 (en) * | 2016-04-08 | 2019-01-29 | Qualcomm Incorporated | Per-vertex variable rate shading |
US10019836B2 (en) * | 2016-05-27 | 2018-07-10 | Intel Corporation | Planar depth representations for block compression |
US10223809B2 (en) * | 2016-05-27 | 2019-03-05 | Intel Corporation | Bandwidth-efficient lossy fragment color compression of multi-sample pixels |
US10032308B2 (en) * | 2016-06-22 | 2018-07-24 | Advanced Micro Devices, Inc. | Culling objects from a 3-D graphics pipeline using hierarchical Z buffers |
US10360177B2 (en) * | 2016-06-22 | 2019-07-23 | Ati Technologies Ulc | Method and processing apparatus for gating redundant threads |
US10636110B2 (en) * | 2016-06-28 | 2020-04-28 | Intel Corporation | Architecture for interleaved rasterization and pixel shading for virtual reality and multi-view systems |
US20180033114A1 (en) * | 2016-07-26 | 2018-02-01 | Mediatek Inc. | Graphics Pipeline That Supports Multiple Concurrent Processes |
US10102662B2 (en) * | 2016-07-27 | 2018-10-16 | Advanced Micro Devices, Inc. | Primitive culling using automatically compiled compute shaders |
US10535186B2 (en) * | 2016-08-30 | 2020-01-14 | Intel Corporation | Multi-resolution deferred shading using texel shaders in computing environments |
US20180082464A1 (en) * | 2016-09-16 | 2018-03-22 | Tomas G. Akenine-Moller | Apparatus and method for an efficient 3d graphics pipeline |
US11379941B2 (en) * | 2016-09-22 | 2022-07-05 | Advanced Micro Devices, Inc. | Primitive shader |
US10460513B2 (en) * | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
US10318348B2 (en) * | 2016-09-23 | 2019-06-11 | Imagination Technologies Limited | Task scheduling in a GPU |
US10969999B2 (en) * | 2016-09-26 | 2021-04-06 | Intel Corporation | Surface property tracking mechanism |
US10109099B2 (en) * | 2016-09-29 | 2018-10-23 | Intel Corporation | Method and apparatus for efficient use of graphics processing resources in a virtualized execution enviornment |
US10388059B2 (en) * | 2016-10-03 | 2019-08-20 | Nvidia Corporation | Stable ray tracing |
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
US10664942B2 (en) * | 2016-10-21 | 2020-05-26 | Advanced Micro Devices, Inc. | Reconfigurable virtual graphics and compute processor pipeline |
US10943389B2 (en) * | 2016-12-09 | 2021-03-09 | Advanced Micro Devices, Inc. | Removing or identifying overlapping fragments after z-culling |
US10026145B2 (en) * | 2016-12-13 | 2018-07-17 | Qualcomm Incorporated | Resource sharing on shader processor of GPU |
US10235811B2 (en) * | 2016-12-29 | 2019-03-19 | Intel Corporation | Replicating primitives across multiple viewports |
US20180211434A1 (en) * | 2017-01-25 | 2018-07-26 | Advanced Micro Devices, Inc. | Stereo rendering |
US10388056B2 (en) * | 2017-01-26 | 2019-08-20 | Advanced Micro Devices, Inc. | Split frame rendering |
US10417815B2 (en) * | 2017-01-27 | 2019-09-17 | Advanced Micro Devices, Inc. | Out of order pixel shader exports |
US10650566B2 (en) * | 2017-02-15 | 2020-05-12 | Microsoft Technology Licensing, Llc | Multiple shader processes in graphics processing |
US10353591B2 (en) * | 2017-02-24 | 2019-07-16 | Advanced Micro Devices, Inc. | Fused shader programs |
GB2560709B (en) * | 2017-03-14 | 2021-02-24 | Imagination Tech Ltd | Graphics processing method and system for processing sub-primitives |
US10242494B2 (en) * | 2017-04-01 | 2019-03-26 | Intel Corporation | Conditional shader for graphics |
US9912957B1 (en) * | 2017-04-01 | 2018-03-06 | Intel Corporation | Lossless compression for multisample render targets alongside fragment compression |
US10152822B2 (en) * | 2017-04-01 | 2018-12-11 | Intel Corporation | Motion biased foveated renderer |
US10649524B2 (en) * | 2017-04-07 | 2020-05-12 | Intel Corporation | Apparatus and method for foveated rendering, bin comparison and TBIMR memory-backed storage for virtual reality implementations |
US10043232B1 (en) * | 2017-04-09 | 2018-08-07 | Intel Corporation | Compute cluster preemption within a general-purpose graphics processing unit |
US10325341B2 (en) * | 2017-04-21 | 2019-06-18 | Intel Corporation | Handling pipeline submissions across many compute units |
US10706616B2 (en) * | 2017-04-21 | 2020-07-07 | Intel Corporation | Fragment compression for coarse pixel shading |
US10108850B1 (en) * | 2017-04-24 | 2018-10-23 | Intel Corporation | Recognition, reidentification and security enhancements using autonomous machines |
US10409614B2 (en) * | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
US10186011B2 (en) * | 2017-04-28 | 2019-01-22 | Intel Corporation | Programmable coarse grained and sparse matrix compute hardware with advanced scheduling |
US10372522B2 (en) * | 2017-04-28 | 2019-08-06 | Advanced Micro Devices, Inc. | Memory protection in highly parallel computing hardware |
US10685473B2 (en) * | 2017-05-31 | 2020-06-16 | Vmware, Inc. | Emulation of geometry shaders and stream output using compute shaders |
US10664943B2 (en) * | 2017-06-02 | 2020-05-26 | Apple Inc. | Compound shader object and use thereof |
US10552321B2 (en) * | 2017-08-04 | 2020-02-04 | Microsoft Technology Licensing, Llc | Flexible buffer sizing in graphics processors |
US10510185B2 (en) * | 2017-08-25 | 2019-12-17 | Advanced Micro Devices, Inc. | Variable rate shading |
US10573055B2 (en) * | 2017-08-31 | 2020-02-25 | Intel Corporation | Apparatus and method for a programmable depth stencil graphics pipeline stage |
US10726605B2 (en) * | 2017-09-15 | 2020-07-28 | Intel Corporation | Method and apparatus for efficient processing of derived uniform values in a graphics processor |
US10430990B2 (en) * | 2017-09-20 | 2019-10-01 | Intel Corporation | Pixel compression mechanism |
US20190102673A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Online activation compression with k-means |
US10475150B2 (en) * | 2017-09-29 | 2019-11-12 | Intel Corporation | GPU minimum latency dispatch for short-duration tasks |
US11080927B2 (en) * | 2017-11-30 | 2021-08-03 | Advanced Micro Devices, Inc. | Method and apparatus of cross shader compilation |
US10672095B2 (en) * | 2017-12-15 | 2020-06-02 | Ati Technologies Ulc | Parallel data transfer to increase bandwidth for accelerated processing devices |
US10360717B1 (en) * | 2017-12-29 | 2019-07-23 | Intel Corporation | Method and apparatus for subdividing shader workloads in a graphics processor for efficient machine configuration |
US10600229B2 (en) * | 2018-01-26 | 2020-03-24 | Nvidia Corporation | Techniques for representing and processing geometry within a graphics processing pipeline |
US10909739B2 (en) * | 2018-01-26 | 2021-02-02 | Nvidia Corporation | Techniques for representing and processing geometry within an expanded graphics processing pipeline |
US10878611B2 (en) * | 2018-01-26 | 2020-12-29 | Nvidia Corporation | Techniques for pre-processing index buffers for a graphics processing pipeline |
US10636112B2 (en) * | 2018-03-28 | 2020-04-28 | Intel Corporation | Graphics processor register data re-use mechanism |
WO2019195774A1 (en) * | 2018-04-05 | 2019-10-10 | Nvidia Corporation | Shader binding management in ray tracing |
US10740966B2 (en) * | 2018-05-14 | 2020-08-11 | Microsoft Technology Licensing, Llc | Fake thickness on a two-dimensional object |
US10643369B2 (en) * | 2018-05-30 | 2020-05-05 | Advanced Micro Devices, Inc. | Compiler-assisted techniques for memory use reduction in graphics pipeline |
US10529118B1 (en) * | 2018-06-29 | 2020-01-07 | Advanced Micro Devices, Inc. | Pixelation optimized delta color compression |
US10733786B2 (en) * | 2018-07-20 | 2020-08-04 | Facebook, Inc. | Rendering 360 depth content |
US10725822B2 (en) * | 2018-07-31 | 2020-07-28 | Advanced Micro Devices, Inc. | VMID as a GPU task container for virtualization |
US11367160B2 (en) * | 2018-08-02 | 2022-06-21 | Nvidia Corporation | Simultaneous compute and graphics scheduling |
US11151769B2 (en) * | 2018-08-10 | 2021-10-19 | Intel Corporation | Graphics architecture including a neural network pipeline |
CN109242756B (zh) * | 2018-09-07 | 2023-04-04 | 格兰菲智能科技有限公司 | 计算机系统、图形处理单元及其图形处理方法 |
US10628910B2 (en) * | 2018-09-24 | 2020-04-21 | Intel Corporation | Vertex shader with primitive replication |
US10740074B2 (en) * | 2018-11-30 | 2020-08-11 | Advanced Micro Devices, Inc. | Conditional construct splitting for latency hiding |
US10909740B2 (en) * | 2018-12-07 | 2021-02-02 | Intel Corporation | Apparatus and method for processing telemetry data in a virtualized graphics processor |
US10832465B2 (en) * | 2018-12-13 | 2020-11-10 | Advanced Micro Devices, Inc. | Use of workgroups in pixel shader |
US10825207B2 (en) * | 2018-12-14 | 2020-11-03 | Arm Limited | Graphics texture mapping |
US11030791B2 (en) * | 2018-12-19 | 2021-06-08 | Advanced Micro Devices, Inc. | Centroid selection for variable rate shading |
US11276211B2 (en) * | 2018-12-20 | 2022-03-15 | Advanced Micro Devices, Inc. | Integration of variable rate shading and super-sample shading |
US11107264B2 (en) * | 2019-01-18 | 2021-08-31 | Arm Limited | Graphics processing systems for determining blending operations |
US10803651B2 (en) * | 2019-03-14 | 2020-10-13 | Texas Instruments Incorporated | Methods and apparatus to perform graphics processing on combinations of graphic processing units and digital signal processors |
US11232533B2 (en) * | 2019-03-15 | 2022-01-25 | Intel Corporation | Memory prefetching in multiple GPU environment |
US11243752B2 (en) * | 2019-07-11 | 2022-02-08 | Advanced Micro Devices, Inc. | Multi-version shaders |
US11216278B2 (en) * | 2019-08-12 | 2022-01-04 | Advanced New Technologies Co., Ltd. | Multi-thread processing |
US11055895B2 (en) * | 2019-08-29 | 2021-07-06 | Advanced Micro Devices, Inc. | Shader merge for reduced divergence |
US11010862B1 (en) * | 2019-11-14 | 2021-05-18 | Advanced Micro Devices, Inc. | Reduced bandwidth tessellation factors |
US11158106B2 (en) * | 2019-12-20 | 2021-10-26 | Advanced Micro Devices, Inc. | VRS rate feedback |
US11055896B1 (en) * | 2020-02-25 | 2021-07-06 | Parallels International Gmbh | Hardware-assisted emulation of graphics pipeline |
US11748933B2 (en) * | 2020-08-03 | 2023-09-05 | Samsung Electronics Co., Ltd. | Method for performing shader occupancy for small primitives |
US11798218B2 (en) * | 2020-08-03 | 2023-10-24 | Samsung Electronics Co., Ltd. | Methods and apparatus for pixel packing |
CN114596193A (zh) * | 2020-12-04 | 2022-06-07 | 英特尔公司 | 用于确定比赛状态的方法和装置 |
US12067640B2 (en) * | 2021-03-26 | 2024-08-20 | Advanced Micro Devices, Inc. | Dynamically reconfigurable register file |
US11508111B1 (en) * | 2021-04-19 | 2022-11-22 | Meta Platforms Technologies, Llc | Augmented reality shader programs |
-
2016
- 2016-12-23 US US15/389,481 patent/US10460513B2/en active Active
-
2017
- 2017-01-05 EP EP17150441.8A patent/EP3300027B1/en active Active
- 2017-09-06 WO PCT/US2017/050345 patent/WO2018057294A1/en active Application Filing
- 2017-09-06 JP JP2019515836A patent/JP7253488B2/ja active Active
- 2017-09-06 KR KR1020197008079A patent/KR102510524B1/ko active IP Right Grant
- 2017-09-06 CN CN201780054477.XA patent/CN109690630B/zh active Active
-
2019
- 2019-10-02 US US16/591,287 patent/US11004258B2/en active Active
-
2021
- 2021-04-19 US US17/234,692 patent/US11869140B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104205174A (zh) * | 2012-04-04 | 2014-12-10 | 高通股份有限公司 | 图形处理中的拼补着色 |
US20140362102A1 (en) * | 2013-06-10 | 2014-12-11 | Sony Computer Entertainment Inc. | Graphics processing hardware for using compute shaders as front end for vertex shaders |
GB201513425D0 (en) * | 2015-07-30 | 2015-09-16 | Advanced Risc Mach Ltd | Graphics processing systems |
Also Published As
Publication number | Publication date |
---|---|
CN109690630B (zh) | 2023-06-23 |
KR20190051998A (ko) | 2019-05-15 |
KR102510524B1 (ko) | 2023-03-15 |
JP7253488B2 (ja) | 2023-04-06 |
WO2018057294A1 (en) | 2018-03-29 |
JP2019535071A (ja) | 2019-12-05 |
US11869140B2 (en) | 2024-01-09 |
EP3300027B1 (en) | 2018-11-14 |
US11004258B2 (en) | 2021-05-11 |
US20200035017A1 (en) | 2020-01-30 |
US10460513B2 (en) | 2019-10-29 |
EP3300027A1 (en) | 2018-03-28 |
US20180082470A1 (en) | 2018-03-22 |
US20210272354A1 (en) | 2021-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109690630A (zh) | 组合的世界空间流水线着色器级 | |
CN108541321B (zh) | 将程序代码映射到高性能、高功效的可编程图像处理硬件平台的编译技术 | |
CN107533751B (zh) | 用于图像处理器的线缓冲器单元 | |
CN108876698A (zh) | 对自主机器处的机器学习进行屏障和同步 | |
CN104050706B (zh) | 用于低功率图形渲染的像素着色器旁路 | |
CN109478310A (zh) | 在计算环境中使用纹素着色器的多分辨率延迟着色 | |
KR102459322B1 (ko) | 자동으로 컴파일되는 컴퓨트 셰이더를 사용하는 프리미티브 컬링 | |
CN109690629A (zh) | 图元着色器 | |
US10796483B2 (en) | Identifying primitives in input index stream | |
KR102480787B1 (ko) | 순서에 관계 없는 캐시 리턴 | |
CN110036414A (zh) | 在z-剔除之后去除或识别重叠片段 | |
CN109254826A (zh) | 虚拟化加速处理装置的挂起检测 | |
CN110192225B (zh) | 无序像素着色器导出 | |
US11481256B2 (en) | Task graph scheduling for workload processing | |
CN115702414A (zh) | 用于机器学习加速器的堆叠管芯 | |
JP6750022B2 (ja) | 画像プロセッサのためのマクロi/oユニット | |
JP2023525725A (ja) | データ圧縮の方法及び装置 | |
US20210373892A1 (en) | Task graph generation for workload processing | |
KR20230162023A (ko) | 서브패스 인터리빙을 통한 동기화 프리 크로스 패스 비닝 |
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 |