CN109690630B - 一种执行着色器程序的方法和装置 - Google Patents

一种执行着色器程序的方法和装置 Download PDF

Info

Publication number
CN109690630B
CN109690630B CN201780054477.XA CN201780054477A CN109690630B CN 109690630 B CN109690630 B CN 109690630B CN 201780054477 A CN201780054477 A CN 201780054477A CN 109690630 B CN109690630 B CN 109690630B
Authority
CN
China
Prior art keywords
shader
combined
vertex
stage
program
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
CN201780054477.XA
Other languages
English (en)
Other versions
CN109690630A (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.)
Advanced Micro Devices Inc
Original Assignee
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN109690630A publication Critical patent/CN109690630A/zh
Application granted granted Critical
Publication of CN109690630B publication Critical patent/CN109690630B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

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 (15)

1.一种执行用于图形处理流水线的组合的着色器级的着色器程序的方法,所述方法包括:
检索用于所述组合的着色器级的组合的着色器程序,其中所述组合的着色器级包括组合的顶点着色器和外壳着色器级以及组合的顶点着色器和几何着色器级中的一个,所述组合的着色器程序包括来自顶点着色器程序以及外壳着色器程序或几何着色器程序的指令;
对于禁用了曲面细分并且启用了几何着色的第一图元,在顶点着色器/几何着色器配置中配置所述图形处理流水线,其中绕过顶点着色器级和曲面细分级,所述曲面细分级包括所述组合的顶点着色器和外壳着色器级;
对于启用了曲面细分的第二图元,在顶点/外壳着色器配置中配置图形流水线,其中绕过所述顶点着色器级,并且其中所述组合的顶点着色器和几何着色器级不处理所述第二图元;以及
产生多个波前以执行所述组合的着色器程序。
2.如权利要求1所述的方法,其中所述组合的着色器程序包括单个着色器程序,所述单个着色器程序包括来自顶点着色器程序以及外壳着色器程序或几何着色器程序两者的指令。
3.如权利要求2所述的方法,其中:
所述顶点着色器程序指定顶点着色器输出,所述顶点着色器输出指示顶点着色器输出值的图形处理硬件位置,以传输到所述图形处理流水线中的后续级;并且
所述组合的着色器程序不包括所述顶点着色器输出。
4.如权利要求2所述的方法,还包括:
为所述多个波前保留资源以执行所述组合的着色器程序,其中保留所述资源包括:
选择用于执行所述顶点着色器程序的第一数量的寄存器以及用于执行所述外壳着色器程序或所述几何着色器程序的第二数量的寄存器中的更多数量的寄存器;以及
保留所述更多数量的寄存器。
5.如权利要求2所述的方法,其还包括:
接收多个顶点将要由所述组合的着色器级的顶点着色器部分处理以及多个碎片将要由所述外壳着色器级处理或者多个图元将要由所述几何着色器级处理的指示;以及
确定用于由所述组合的着色器级的所述顶点着色器部分处理所述多个顶点的多个波前,
其中产生所述多个波前以执行所述组合的着色器程序包括产生所述确定数量的波前以执行所述组合的着色器程序。
6.如权利要求5所述的方法,其还包括:
基于用于执行所述顶点着色器程序的第一数量的工作项与用于执行所述外壳着色器程序或所述几何着色器程序的第二数量的工作项的比率来禁用所述波前中的一个或多个,
其中禁用包括使所述波前中的所述一个或多个睡眠或者终止所述一个或多个波前中的一者。
7.如权利要求1所述的方法,其中:
所述组合的着色器程序包括顶点着色器部分与外壳着色器部分或几何着色器部分之间的障碍指令,并且
所述障碍指令使所述顶点着色器部分中的处理等到所述外壳着色器部分或所述几何着色器部分中的处理完成才开始。
8.一种用于执行用于图形处理流水线的组合的着色器级的着色器程序的加速处理装置(APD),所述APD包括:
多个着色器引擎,所述着色器引擎包括寄存器和本地数据存储库存储器;以及
调度器,所述调度器被配置成:
检索用于所述组合的着色器级的组合的着色器程序,其中所述组合的着色器级包括组合的顶点着色器和外壳着色器级以及组合的顶点着色器和几何着色器级中的一个,所述组合的着色器程序包括来自顶点着色器程序以及外壳着色器程序或几何着色器程序的指令;
对于禁用了曲面细分并且启用了几何着色的第一图元,在顶点着色器/几何着色器配置中配置所述图形处理流水线,其中绕过顶点着色器级和曲面细分级,所述曲面细分级包括所述组合的顶点着色器和外壳着色器级;
对于启用了曲面细分的第二图元,在顶点/外壳着色器配置中配置图形流水线,其中绕过所述顶点着色器级,并且其中所述组合的顶点着色器和几何着色器级不处理所述第二图元;以及
产生多个波前以在所述多个着色器引擎中执行所述组合的着色器程序。
9.如权利要求8所述的APD,其中所述组合的着色器程序包括单个着色器程序,所述单个着色器程序包括来自顶点着色器程序以及外壳着色器程序或几何着色器程序两者的指令。
10.如权利要求9所述的APD,其中:
所述顶点着色器程序指定顶点着色器输出,所述顶点着色器输出指示顶点着色器输出值的图形处理硬件位置,以传输到所述图形处理流水线中的后续级;并且
所述组合的着色器程序不包括所述顶点着色器输出。
11.如权利要求9所述的APD,其中所述调度器被配置成为所述多个波前保留资源以在所述多个着色器引擎中执行所述组合的着色器程序,其中所述调度器被配置成通过以下步骤保留所述资源:
选择用于执行所述顶点着色器程序的第一数量的寄存器以及用于执行所述外壳着色器程序或所述几何着色器程序的第二数量的寄存器中的更多数量的寄存器;以及
保留所述更多数量的寄存器。
12.如权利要求9所述的APD,其中所述调度器被进一步配置成:
接收多个顶点将要由所述组合的着色器级的顶点着色器部分处理以及多个碎片将要由所述外壳着色器级处理或者多个图元将要由所述几何着色器级处理的指示;以及
确定用于由所述组合的着色器级的所述顶点着色器部分处理所述多个顶点的多个波前,
其中产生所述多个波前以执行所述组合的着色器程序包括产生所述确定数量的波前以执行所述组合的着色器程序。
13.如权利要求12所述的APD,其中所述调度器被进一步配置成:
基于用于执行所述顶点着色器程序的第一数量的工作项与用于执行所述外壳着色器程序或所述几何着色器程序的第二数量的工作项的比率来禁用所述波前中的一个或多个,
其中禁用包括使所述波前中的所述一个或多个睡眠或者终止所述一个或多个波前中的一者。
14.如权利要求8所述的APD,其中:
所述组合的着色器程序包括顶点着色器部分与外壳着色器部分或几何着色器部分之间的障碍指令,并且
所述障碍指令使所述顶点着色器部分中的处理等到所述外壳着色器部分或所述几何着色器部分中的处理完成才开始。
15.一种用于执行用于图形处理流水线的组合的着色器级的着色器程序的计算机系统,所述计算机系统包括:
处理器,所述处理器执行用于控制加速处理装置(APD)的装置驱动器;以及
所述APD,所述APD包括:
多个着色器引擎,所述着色器引擎包括寄存器和本地数据存储库存储器;以及
调度器,所述调度器被配置成:
从所述装置驱动器接收用于所述组合的着色器级的组合的着色器程序,其中所述组合的着色器级包括组合的顶点着色器和外壳着色器级以及组合的顶点着色器和几何着色器级中的一个,所述组合的着色器程序包括来自顶点着色器程序以及外壳着色器程序或几何着色器程序的指令;
对于禁用了曲面细分并且启用了几何着色的第一图元,在顶点着色器/几何着色器配置中配置所述图形处理流水线,其中绕过顶点着色器级和曲面细分级,所述曲面细分级包括所述组合的顶点着色器和外壳着色器级;
对于启用了曲面细分的第二图元,在顶点/外壳着色器配置中配置图形流水线,其中绕过所述顶点着色器级,并且其中所述组合的顶点着色器和几何着色器级不处理所述第二图元;以及
为多个波前保留资源以在所述多个着色器引擎中执行所述组合的着色器程序,所述波前的数量是执行来自所述顶点着色器程序的指令的波前的数量和来自所述外壳着色器程序或几何着色器程序的指令的波前的数量中的较大者;以及产生所述多个波前以在所述多个着色器引擎中执行所述组合的着色器程序。
CN201780054477.XA 2016-09-22 2017-09-06 一种执行着色器程序的方法和装置 Active CN109690630B (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/389,481 US10460513B2 (en) 2016-09-22 2016-12-23 Combined world-space pipeline shader stages
US15/389,481 2016-12-23
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 CN109690630A (zh) 2019-04-26
CN109690630B true 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 (9)

* Cited by examiner, † Cited by third party
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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104205174A (zh) * 2012-04-04 2014-12-10 高通股份有限公司 图形处理中的拼补着色
GB201513425D0 (en) * 2015-07-30 2015-09-16 Advanced Risc Mach Ltd Graphics processing systems

Family Cites Families (243)

* Cited by examiner, † Cited by third party
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
US7243338B2 (en) * 2002-05-29 2007-07-10 Oracle International Corporation Representation of core files in a generic format
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
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7978205B1 (en) * 2004-05-03 2011-07-12 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
US20090051687A1 (en) * 2005-10-25 2009-02-26 Mitsubishi Electric Corporation Image processing device
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
US7626521B2 (en) * 2006-06-08 2009-12-01 Via Technologies, Inc. Decoding control of computational core of programmable graphics processing unit
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
US8111260B2 (en) * 2006-06-28 2012-02-07 Microsoft Corporation Fast reconfiguration of graphics pipeline state
US8134566B1 (en) * 2006-07-28 2012-03-13 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
US9460552B2 (en) * 2007-01-24 2016-10-04 Intel Corporation Method, display adapter and computer program product for improved graphics performance by using a replaceable culling program
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
US8325184B2 (en) * 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
US8384728B2 (en) * 2007-09-14 2013-02-26 Qualcomm Incorporated Supplemental cache 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
JP5616333B2 (ja) * 2008-05-29 2014-10-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated ジオメトリシェーダを用いる平面充填エンジンのためのシステム、方法及びコンピュータプログラム
US7971041B2 (en) * 2008-05-29 2011-06-28 Advanced Micro Devices, Inc. Method and system for register management
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
US8369564B2 (en) * 2009-06-30 2013-02-05 Apple Inc. Automatic generation and use of region of interest and domain of definition functions
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
WO2011078858A1 (en) * 2009-12-23 2011-06-30 Intel Corporation Image processing techniques
US8514235B2 (en) * 2010-04-21 2013-08-20 Via Technologies, Inc. System and method for managing the computation of graphics shading operations
US20110285736A1 (en) * 2010-05-21 2011-11-24 Kilgard Mark J Decomposing cubic bèzier segments for tessellation-free stencil filling
US20110310102A1 (en) * 2010-06-17 2011-12-22 Via Technologies, Inc. Systems and methods for subdividing and storing vertex data
US8754900B2 (en) * 2010-06-17 2014-06-17 Thinci, Inc. Processing of graphics data of a server system for transmission
US8681162B2 (en) * 2010-10-15 2014-03-25 Via Technologies, Inc. Systems and methods for video processing
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)
US20120229481A1 (en) * 2010-12-13 2012-09-13 Ati Technologies Ulc Accessibility of graphics processing compute resources
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 삼성전자주식회사 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법
WO2013185062A1 (en) * 2012-06-08 2013-12-12 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
CN107833268B (zh) * 2012-11-02 2021-05-14 想象技术有限公司 用于图形渲染的几何图形处理方法和图形渲染系统
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
US10134102B2 (en) * 2013-06-10 2018-11-20 Sony Interactive Entertainment Inc. Graphics processing hardware for 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 삼성전자 주식회사 도메인 쉐이딩 방법과 이를 수행하는 장치들
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
US9483862B2 (en) * 2013-12-20 2016-11-01 Qualcomm Incorporated GPU-accelerated path rendering
CN106464894B (zh) * 2014-02-12 2019-10-18 明达半导体股份有限公司 视频处理方法及装置
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
EP3167361A1 (en) * 2014-07-10 2017-05-17 INTEL Corporation Method and apparatus for updating a shader program based on current state
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
WO2016207686A1 (en) * 2015-06-26 2016-12-29 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
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US10275239B2 (en) * 2016-03-30 2019-04-30 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
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
US10360177B2 (en) * 2016-06-22 2019-07-23 Ati Technologies Ulc Method and processing apparatus for gating redundant threads
US10032308B2 (en) * 2016-06-22 2018-07-24 Advanced Micro Devices, Inc. Culling objects from a 3-D graphics pipeline using hierarchical Z buffers
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
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US11379941B2 (en) * 2016-09-22 2022-07-05 Advanced Micro Devices, Inc. Primitive shader
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
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
US10242494B2 (en) * 2017-04-01 2019-03-26 Intel Corporation Conditional shader for graphics
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
US10706616B2 (en) * 2017-04-21 2020-07-07 Intel Corporation Fragment compression for coarse pixel shading
US10325341B2 (en) * 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units
US10409614B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10108850B1 (en) * 2017-04-24 2018-10-23 Intel Corporation Recognition, reidentification and security enhancements using autonomous machines
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
US10909739B2 (en) * 2018-01-26 2021-02-02 Nvidia Corporation Techniques for representing and processing geometry within an expanded graphics processing pipeline
US10600229B2 (en) * 2018-01-26 2020-03-24 Nvidia Corporation Techniques for representing and processing geometry within a 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
US11069129B2 (en) * 2018-04-05 2021-07-20 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
US11798218B2 (en) * 2020-08-03 2023-10-24 Samsung Electronics Co., Ltd. Methods and apparatus for pixel packing
US11748933B2 (en) * 2020-08-03 2023-09-05 Samsung Electronics Co., Ltd. Method for performing shader occupancy for small primitives
CN114596193A (zh) * 2020-12-04 2022-06-07 英特尔公司 用于确定比赛状态的方法和装置
US20220309606A1 (en) * 2021-03-26 2022-09-29 Advanced Micro Devices, Inc. Dynamically reconfigurable register file
US11508111B1 (en) * 2021-04-19 2022-11-22 Meta Platforms Technologies, Llc Augmented reality shader programs

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104205174A (zh) * 2012-04-04 2014-12-10 高通股份有限公司 图形处理中的拼补着色
GB201513425D0 (en) * 2015-07-30 2015-09-16 Advanced Risc Mach Ltd Graphics processing systems

Also Published As

Publication number Publication date
US11869140B2 (en) 2024-01-09
KR20190051998A (ko) 2019-05-15
CN109690630A (zh) 2019-04-26
US20210272354A1 (en) 2021-09-02
US10460513B2 (en) 2019-10-29
US11004258B2 (en) 2021-05-11
US20200035017A1 (en) 2020-01-30
EP3300027A1 (en) 2018-03-28
KR102510524B1 (ko) 2023-03-15
JP7253488B2 (ja) 2023-04-06
WO2018057294A1 (en) 2018-03-29
EP3300027B1 (en) 2018-11-14
US20180082470A1 (en) 2018-03-22
JP2019535071A (ja) 2019-12-05

Similar Documents

Publication Publication Date Title
CN109690630B (zh) 一种执行着色器程序的方法和装置
JP6918919B2 (ja) 自動的にコンパイルされたコンピュートシェーダを用いるプリミティブカリング
US20210026686A1 (en) Chiplet-integrated machine learning accelerators
US20240045718A1 (en) Fine-grained conditional dispatching
US20230205608A1 (en) Hardware supported split barrier
US11741653B2 (en) Overlapping visibility and render passes for same frame
US11276135B2 (en) Parallel data transfer to increase bandwidth for accelerated processing devices
US10832465B2 (en) Use of workgroups in pixel shader
US11900499B2 (en) Iterative indirect command buffers
US11656877B2 (en) Wavefront selection and execution
US20210407182A1 (en) Load instruction for multi sample anti-aliasing

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