CN106067186A - 图形处理单元及其方法 - Google Patents

图形处理单元及其方法 Download PDF

Info

Publication number
CN106067186A
CN106067186A CN201510849814.7A CN201510849814A CN106067186A CN 106067186 A CN106067186 A CN 106067186A CN 201510849814 A CN201510849814 A CN 201510849814A CN 106067186 A CN106067186 A CN 106067186A
Authority
CN
China
Prior art keywords
group
pixel
pel
processing unit
graphics processing
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.)
Withdrawn
Application number
CN201510849814.7A
Other languages
English (en)
Inventor
廖群峰
柯澄瑛
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.)
MediaTek Singapore Pte Ltd
Original Assignee
MediaTek Singapore Pte Ltd
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 MediaTek Singapore Pte Ltd filed Critical MediaTek Singapore Pte Ltd
Publication of CN106067186A publication Critical patent/CN106067186A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • G06T15/83Phong shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)

Abstract

本发明提供一种图形处理单元及其方法。该图形处理单元包括可编程着色器硬件和分群硬件。分群硬件接收从一组图元收集的像素,其中,每一图元的像素位置已经通过光栅化该图元的一组顶点而获得。分群硬件还将像素分为具有贯序的一组群。在显示器上,每一群中的像素均不相互重叠,而重叠的像素属于不同的群。可编程着色器硬件根据指令集的第一子集对群执行对顺序不敏感的着色器操作,其中,指令集为可编程着色器定义,且两群或更多群并行处理。可编程着色器还根据指令集的第二子集对每一群执行对顺序敏感的着色器操作,其中,指令集为可编程着色器定义。本发明所提供的图形处理单元及其方法,可优化处理混合有对顺序敏感的和不敏感的着色器操作。

Description

图形处理单元及其方法
技术领域
本发明涉及一种图形处理系统,更具体地,涉及一种用于图形处理的可编程着色器。
背景技术
在计算机图形学中,渲染即为从若干图形对象或模型的描述中,在显示装置上产生图像的过程。图形处理单元(graphics processing unit,以下简称为GPU)对3D图形对象进行渲染,其通常表述为将若干图元(如点、线、多边形及高阶表面)的组合渲染至图像元素(即像素)。
图形处理单元通常包括用于执行上述渲染操作的渲染管线。渲染管线包括以下主要级段:(1)顶点处理,即对顶点进行处理并将其变换至投射空间,其中,图元通过顶点进行描述,(2)光栅化,即将每一图元转换为一组3D像素,3D像素同显示装置的像素栅格对齐,并具有若干属性,如:3D位置、颜色、法线(normal)及纹理,(3)片段处理,即对每一组的3D像素进行处理,和(4)输出处理,即将所有图元的3D像素组合至2D空间进行显示。
当图形对象不是完全非透明时,其背景可透过该图形对象显示并混合进入该图形对象。在混合操作中,对每一像素位置的像素值,如:红、绿、蓝(RGB)颜色值进行组合,以产生用于显示的最终像素值。传统技术中,混合是在片段处理之后,在输出处理级段中通过固定功能硬件来执行的。通常,固定功能硬件相比于可编程硬件更加昂贵,且没有可编程硬件灵活。
发明内容
有鉴于此,本发明提出一种图形处理单元及其方法。
在一实施例中,提供了一种图形处理单元的方法。所述方法包括的步骤为,接收从一组图元收集的像素,其中,每一图元的像素位置已经通过光栅化该图元的一组顶点而获得;将像素分为一组具有贯序的群,其中,在显示器上,每一群中的像素均不相互重叠,而重叠的像素属于不同的群;根据指令集的第一子集对群执行对顺序不敏感的着色器操作,其中,指令集为可编程着色器定义,且两群或更多群并行处理;及根据指令集的第二子集对每一群执行对顺序敏感的着色器操作,其中,指令集为可编程着色器定义。
在另一实施例中,提供了一种图形处理单元。图形处理单元包括分群硬件,其可用于接收从一组图元收集的像素,其中,每一图元的像素位置已经通过光栅化该图元的一组顶点而获得。分群硬件还可用于将像素分为具有贯序的一组群。在显示器上,每一群中的像素均不相互重叠,而重叠的像素属于不同的群。图形处理单元还包括可编程着色器硬件,该可编程着色器硬件耦接至分群硬件,并包括一列计算单元。该可编程着色器用于根据指令集的第一子集对群执行对顺序不敏感的着色器操作,其中,指令集为可编程着色器定义,且两群或更多群并行处理。该可编程着色器硬件同样可用于根据指令集的第二子集按贯序对每一群执行对顺序敏感的着色器操作,其中,指令集为可编程着色器定义。
本发明所提出的图形处理单元及其方法,可优化处理混合有对顺序敏感的和不敏感的着色器操作。
附图说明
本发明通过举例的方式而不是限制的方式来进行阐释。在附图中,相近的编号代表类似的元件。应该注意的是,本发明中,不同处所引用的“一”实施例,并不一定指同一实施例,这种引用意味着至少一个实施例。而且,当结合某实施例描述某特定的特征、结构或特性时,结合其他实施例产生这样的特征、结构或特性被认为是在本领域熟练技术人员的知识范畴之内的,而无论是否明确说明。
图1为本发明的一实施例的一种系统。
图2为本发明的一实施例的一种图形处理单元核心的功能模块。
图3A和图3B为本发明的一实施例的像素分群的实例。
图4为本发明的一实施例的由可编程着色器所执行的操作。
图5为本发明的一实施例的一种可编程着色器的方法的流程图。
图6为本发明的一实施例的一种图形处理单元执行的方法的流程图。
具体实施方式
在下面的描述中,阐述了许多具体细节。但可以理解的是,本发明的实施例可以在没有这些具体细节的情况下实施。另一方面,公知的电路、结构和技术不会详细描述,以使本说明书容易理解。但是,本领域的技术人员可以理解的是,本发明可以在没有这些具体细节的情况下实施。本领域的普通技术人员参照本说明书,无需过多的实验即能实现适当的功能。
本发明的实施例使用可编程着色器硬件,也可称为可编程着色器,来优化处理混合有对顺序敏感的和不敏感的着色器操作。对顺序敏感的着色器操作的一个实例为阿尔法混合,也可称为“混合”或“混合操作”,而对顺序不敏感的着色器操作的一个实例为片段着色,也可称为“片段着色器操作”。所述“顺序”(某操作对其敏感或不敏感)通常在图形应用程序接口(application program interface,以下简称为API)中定义;例如,绘图设计者使用OpenGL应用程序接口来指明对图形场景的图元进行渲染的顺序。
如前面提到的,混合通常是在片段处理之后,由固定功能硬件来执行的。为节约成本,优选使用同一块硬件用来进行混合和片段着色。然而,将对顺序不敏感的片段着色同对顺序敏感的混合操作混合在一起可能导致性能恶化。本发明的实施例对这种混合操作进行优化。
可编程着色器硬件的一个实例为统一着色器(unified shader),其包括一列计算单元和一分配着色任务至计算单元的动态调度单元。统一着色器通常具有大量的功能强大的计算单元,因而能够实现很高的吞吐量。
现有的可编程着色器可经编程以执行顶点处理和片段处理。程序员可编写顶点着色器程序(也称为“顶点着色器”)以用于顶点处理,和编写片段着色器程序(也称为“片段着色器”)以用于片段处理。这些着色器程序可使用高级语言编写,例如OpenGL着色语言(OpenGL shading language,GLSL),Directe 3D中的高级着色语言(high-level shading language,HLSL)或者绘图C语言等等。可编程着色器中的计算单元可根据需要分配到不同类型的着色任务。例如,在顶点工作量较少而像素工作量繁重的情况下,更多的计算单元或者周期可分配至片段着色器用于处理像素。相反的,在顶点工作量繁重而像素工作量较少的情况下,更多的计算单元或周期可分配至顶点着色器用于处理顶点。
相比较于可编程着色器,固定功能的硬件不够灵活,因为其将混合操作限制在若干通用的混合公式之内。若支持额外的混合公式,将会增加固定功能硬件的成本。
根据本发明的实施例,可编程着色器硬件除开执行片段着色以外,还可用来执行混合操作。可编程着色器可经编程,以计算任意的混合公式,且其计算资源可根据需要在混合操作和其他着色任务之间进行分享。
本文所描述的实施例可支持延迟渲染和即时渲染。在延迟渲染中,显示空间被分为多个仓(bins)。从显示空间的多个图形对象所累积的图元是逐仓的进行渲染的,而不是逐个图元进行渲染。当一仓正在渲染时,其数据可临时存储在片上缓冲器中,也可从片上缓冲器中获取,以减少对系统存储器的访问量。另一方面,在即时渲染中,一次只处理和渲染一个图元。当渲染过程从一个图元移动至下一个图元时,即时渲染通常会引起对系统存储器重复的读取和写入。
图1为揭示本发明一实施例的系统100,其包括CPU 110和GPU 120。虽然只示出一个CPU和一个GPU,但可以理解的是,系统100可包括任意数量的CPU和GPU,还可包括任意数量的其他处理器。在一实施例中,系统100可通过片上系统(system on chip,SOC)实现,片上系统用在计算和/或通信系统中。每一CPU 110可包括多个CPU核心111,而每一GPU120可包括多个GPU核心121。在一实施例中,CPU 110和GPU 120通过一系统互联器150和一存储控制器140同一系统存储器130通信,其中,该系统存储器130可为动态随机存取存储器(dynamic random-accessmemory,DRAM)或其他的易失的或非易失的随机存取存储器。系统100进一步包括一显示器160,用于显示包含GPU 120的渲染输出的图像。可以理解的是,本文出于描述的简洁性,省略了许多其他的系统元件。
在一实施例中,GPU 120(更具体地,每一GPU核心121)包括一可编程着色器硬件125作为其渲染管线的一部分,其用于执行着色操作,该着色操作包括至少一片段着色器操作和混合操作。可编程着色器硬件125的一个实例为统一着色器,其执行混合操作,还执行顶点着色和片段着色。可编程着色器硬件125包括一列计算单元180,如算数逻辑单元(arithmetic logic unit,ALU),其执行在指令集中预定的指令。指令集为可编程着色器硬件125定义,并可用来根据多个标准的或定制的数学公式,执行多种不同类型的着色,包括至少一片段着色器操作和混合操作。计算单元180阵列执行整数和浮点运算,并可经调度以顺序地和/或并行地执行运算。
图2为揭示本发明的一实施例的一种GPU核心121的功能模块。所述功能模块可通过硬件或软件实现。可以理解的是,在替代实施例中,GPU核心121和可编程着色器硬件125可包括相比于图2所示的更少的、额外的、和/或不同的功能模块。
在图2的实施例中,可编程着色器硬件125执行顶点着色器210的功能。在一替代实施例中,顶点着色器210可通过不同的硬件装置来实现。顶点着色器210接收描述所要渲染的图形对象的图形数据,并生成代表图形对象的图元。图元为系统100可以绘制和存储的一组最简单的几何对象,例如,线段、曲线、三角形、多边形等等。每一图元由一个或多个顶点描述,顶点即为包括一组属性的数据结构,例如位置、颜色、法线、纹理等等属性。
由顶点着色器210所生成的顶点不一定与显示器160的像素栅格对齐,其中,图形对象渲染至显示器160上。一光栅器220对每一组顶点进行处理并进行插值,以生成3D像素(如像素225),这些3D像素被顶点定义的图元(如图元215)所包围。这些3D像素,为简单起见,也可称为“像素”,与显示器160的像素栅格对齐。这些像素同顶点具有同样的属性,例如位置、颜色、法线、纹理等等属性。
光栅器220的输出被发送至一分群单元(grouping unit),分群单元生成像素群(groups of pixels)245。在一实施例中,分群单元通过硬件实现,以下称为分群硬件240。像素群245形成群的顺序集,其中,群是根据图形API的要求依次排序的。图形API的要求指定了图形应用程序发送图元至GPU 120的顺序(即“API顺序”)。API顺序用来对图元进行排序以供渲染,具体地,以供混合操作。API顺序还用于渲染状态的管理或缓冲器资源的管理,其对由硬件所见的渲染状态的变化进行管理。
在一实施例中,根据至少两条规则对像素进行分群:(规则1)同一群中的像素均不相互重叠(即同一群中没有像素映射至显示器上的同一像素位置),和(规则2)重叠的像素(即映射至显示器上的同一像素位置的像素)被置入不同的群中,以此遵循API顺序。因此,API顺序中的在先图元的第一像素(同第二像素重叠)被置入一在先群中;API顺序中的后继图元的第二像素被置入一后继群中。
图3A和图3B为揭示本发明的一实施例的由分群硬件240执行的分群操作的两个实例。在图3A和图3B中,每一图元均为三角形,并按照API要求所指定的顺序标上了序号(实例中示为图元P1-图元P9)。可以理解的是,图元可具有不同于三角形的其他形状。为简单起见,将不显示顶点或者像素,而是使用实线、虚线或点线来代表每一图元的边界。
在分群硬件240所接收到的图元P1-图元P9中:图元P1-图元P5相互均不重叠,图元P6和图元P7相互均不重叠,图元P8和图元P9相互均不重叠。当一个图元有至少一个像素同另一个图元的像素重叠时,这两个图元重叠。在图3A的实例中,图元P6和图元P7同图元P3和图元P4重叠。因此,分群硬件240将图元P1-图元P5以及图元P8和图元P9分至第一群G1(用虚线标示),将图元P6和图元P7分至第二群G2(用实线标示)。该分群配置遵循规则1,因为每一群内均没有像素相互重叠。该分群配置同样遵循规则2,因为重叠的像素根据API顺序被置入两个不同的群。由于在API顺序中,图元P3和图元P4先于图元P6和图元P7,因此图元P3和图元P4被置入的群G1同样先于图元P6和图元P7被置入的群G2。图元P8和图元P9可被置入群G1,因为该配置并不违反规则1或规则2。将图元P8和图元P9置入群G1可概括如下:根据API顺序排在第二群(例如,群G2)之后的图元(例如P8或P9),如果不和第一群和第二群中的任何图元重叠,则可被置入第一群(例如位于第二群之前的群G1)。
在图3B所示的另一实例中,图元P6和图元P7不仅同图元P3和图元P4重叠,而且同图元P8和图元P9重叠。图元P1-图元P5以及图元P8和图元P9均不相互重叠。在该实例中,分群硬件240将图元P1-图元P5分至第一群G1(用虚线标示),将图元P6和图元P7分至第二群G2(用实线标示),并将图元P8和图元P9分至第三群G3(用点线标示)。在该实例中,图元P8和图元P9不能置入群G1,因为这种配置将会违反规则2。也就是说,因为图元P8和图元P9同图元P6和图元P7重叠,所以图元P8和图元P9不能被置入先于图元P6和图元P7所在群G2的群中。
可一次对一个工作区域的像素执行分群操作。图3A显示了工作区域310的一个实例,而图3B显示了工作区域320的一个实例。如果执行延迟渲染,每一仓可被分为多个工作区域。例如,如果仓的尺寸为32×32像素,而工作区域的尺寸为16×16像素,那么每一仓将被分为四个工作区域。如果不执行延迟渲染,仍然可以一次对一个工作区域执行分群操作。但是,该工作区域可位于显示空间的任何地方,而不限制于一仓中。
在通过硬件执行分群操作的实施例中,工作区域的尺寸可影响硬件的成本。在一实施例中,具有工作区域大小的像素掩码(pixel mask)被分配至存在于工作区域中的每一图元。当一像素位置的像素是有效的或可见的,那么该像素位置的像素掩码值设置为1;否则像素掩码值设置为0。之后便对两图元的两像素掩码应用逻辑“与”运算,以判断两图元是否重叠。
请再参照图2,分群硬件240的输出为群的顺序集,而且混合操作中遵循群的所述贯序(sequential order)。然后,群进入一片段着色器230,其功能通过可编程着色器硬件125执行。在一实施例中,可编程着色器硬件125执行指令集架构中定义的指令,以执行片段着色器操作。片段着色器230对群中的各个图元执行纹理和灯光操作。片段着色器操作对顺序不敏感;也就是说,可以按照任意的顺序对群执行这些操作,而不一定要遵循群的贯序。换言之,片段着色器230可按照贯序、不按顺序、串行地或并行地对群进行操作。同一群中的图元也可按照任意的顺序进行操作。在一实施例中,片段着色器230不按顺序或者并行地对多个群进行操作,以保持可编程着色器硬件125中的计算单元180阵列充分被利用,并避免片段着色过程中对群的延迟。
在一实施例中,一组间屏障(intergroup barrier)270设置于可编程着色器硬件125中的片段着色器230和混合着色器250之间。具体地说,组间屏障270的功能在片段着色器230之后,混合着色器250之前被执行。组间屏障270对进入混合着色器250以进行混合操作的群强制实施所述贯序。同样参照图3A和图3B的例子,如果群G2在群G1之前完成片段着色器操作,那么群G2将被组间屏障270延迟,直到群G1完成混合操作。
组间屏障270的输出按照贯序进入混合着色器250,例如群G1、群G2、群G3...等等。如前面提到的,混合操作对顺序敏感;也就是说,这些操作遵循群的贯序。虽然群的贯序被强制实施以进行混合操作,但是同一群中的图元仍然可以按照任意的顺序进行混合操作。在一实施例中,可编程着色器硬件125执行指令集架构中定义的指令,以执行混合操作,通常这些混合操作通过数学公式来描述。对于不是完全非透明的像素,在一实施例中,混合着色器250执行阿尔法混合,以将像素的颜色组分混合至显示器的背景中。为执行阿尔法混合,群中的每一像素均有指明其透明度的阿尔法值。阿尔法通常标准化为值域[0,1],其中0表示完全透明,而1表示完全不透明。用于阿尔法混合的公式的实例可具有如下形式:αsrc*csrc*(1-αdst)+αdst*cdst*(1-αsrc)+αsrc*csrcdst*cdst,其中,αsrc为被混合的像素的阿尔法值,αdst为背景的阿尔法值,csrc为被混合的像素的颜色值,而cdst为背景的颜色值。颜色值的一个实例为三元组向量(R,G,B),其指明红、绿和蓝的值。在一实施例中,颜色值和阿尔法值存储在一高速缓存280中,以减小读写延迟。在一实施例中,高速缓存280可为静态随机存取存储器(static random access memory,SRAM)或与GPU核心121位于同一块芯片上的不同类型的随机存取存储器。
在一实施例中,由混合着色器250执行的数学公式可从许多预编程的公式中选取。不同的混合公式也被称为混合模式。混合着色器250可执行指令来指定一混合模式寄存器290,以选择预定义混合模式的着色器代码段。每一混合模式寄存器290存储一混合模式值和函数作为混合模式选择器。根据所执行的指令,混合着色器250可从混合模式寄存器290中加载不同的混合模式值,以执行不同的混合操作。在替代实施例中,混合公式可通过指令进行定制,以满足图形应用程序的需要。
混合着色器250可处理非透明像素、透明像素或非透明和透明像素的组合。在一实施例中,对于完全非透明的像素,混合着色器250可执行深度测试,也可称为“Z测试”,以分析横跨不同群之间的像素的可见性。深度测试判定哪一不透明表面最接近观察者,因而,该不透明表面对于观察者来说是可见的。在另一实施例中,深度测试可通过光栅器220执行。
混合着色器250的输出被发送至输出处理260,其生成最终像素值,最终像素值被写入用于显示器160的帧缓冲器。
图4为本发明的一实施例的由可编程着色器硬件125执行的操作的一个实例。结合图2如前面所描述的,光栅器220输出一串像素至分群硬件240,以进行分群操作。通过分群硬件240形成的群首先进入一任务调度程序410。任务调度程序410将群调配给可编程着色器硬件125的计算单元180,以执行片段着色器230的指令。片段着色器230按照任务调度程序410指定的顺序对群进行处理,其中,所述顺序可为任意顺序,包括串行的和并行的顺序,以此最大化计算单元180的利用率。片段着色器230的输出可为任意的顺序,因为,不同的群可能需要不同的时间量来完成片段着色。在图4的实例中,群G2在群G1之前完成片段着色。由于群G2不能越过群G1来进行混合操作,因此群G2以及按照贯序的后继的群(例如群G3)在组间屏障270处等待群G1完成片段着色操作和混合操作。
图5为本发明的另一实施例的由可编程着色器硬件125执行的操作的一个实例。在该实例中,对顺序不敏感的操作显示为片段着色器操作,而对顺序敏感的操作显示为混合操作。图5显示了一时间线上的片段着色器操作、组间屏障和混合操作。图3所示的时间T、时间T1、时间T2和时间T3可为任意正数。在时间T,可编程着色器硬件125对所有三个群G1、群G2和群G3执行片段着色器操作。在时间T+T1,群G1完成片段着色器操作并遇到组间屏障,而群G2和群G3继续进行片段着色器操作。由于群G1是被处理的群的贯序中的第一群,组间屏障并不对群G1进行延迟,并允许群G1开始混合操作。在时间T+T1+T2,群G2也完成了片段着色器操作,并遇到组间屏障。由于群G1仍然处于混合操作的过程中,因此,组间屏障对群G2延迟开始混合操作。此时,群G3处于片段着色器操作的过程中。在时间T+T1+T2+T3,群G2在群G1已经完成混合操作之后开始进行混合操作。群G3在组间屏障等待,直到群G2完成混合操作。
可以理解的是,图5的实例中,所述三群可以任意的顺序完成片段着色器操作。然而,群G1、群G2和群G3的贯序凭借组间屏障进行强制实施,因此,混合操作根据所述贯序被执行。
图6为本发明的一实施例的揭示GPU(例如图2的GPU核心125)的方法600的流程图。在一实施例中,方法600从GPU(更具体地,GPU的分群硬件)接收从一组图元收集的像素开始,其中,每一图元的像素位置已经通过光栅化该图元的一组顶点而获得(方块610)。像素被分为一组具有贯序的群,其中,在显示器上,每一群中的像素均不相互重叠,而重叠的像素属于不同的群(方块620)。然后,GPU根据指令集的第一子集对群执行对顺序不敏感的着色器操作,其中,指令集为可编程着色器(例如图1、2和4中的可编程着色器硬件125)定义,两群或更多群并行处理(方块630)。该GPU同样可根据指令集的第二子集对每一群执行对顺序敏感的着色器操作,其中,指令集为可编程着色器定义(方块640)。
在一实施例中,群的贯序是通过图形API的要求进行定义的,其指定了对图元进行排序的API顺序,以供渲染。在一实施例中,对顺序不敏感的着色器操作包括片段着色器操作,而对顺序敏感的操作包括阿尔法混合。
方法600可通过硬件(例如电路、专用逻辑、可编程逻辑、微代码等等),软件(例如运行于处理装置上的指令)或者两者的组合来执行。在一实施例中,方法600由图1的GPU 120执行,或更具体地,由图1、2和4的可编程着色器硬件125执行。在一实施例中,GPU 120可为移动计算和/或通信装置(例如智能手机、平板电脑、手提电脑等等)的一部分。在一实施例中,GPU 120可为服务器系统或云计算系统的一部分。
图3、5和6中的操作已经参照图1、2和4的典型实施例进行描述。然而,应该理解的是,图3、5和6中的操作可通过本发明的其他实施例执行,这些实施例不同于参照图1、2和4所讨论的实施例,而且参照图1、2和4所讨论的实施例可执行其他操作,这些操作不同于参照所述流程图所讨论的操作。虽然图3、5和6显示了本发明的特定实施例所执行的操作的特定顺序,应该理解的是,这种顺序是代表性的(例如,替代实施例可按照不同的顺序执行这些操作、组合特定操作、覆盖特定操作等等)。
虽然本发明已经通过若干实施例进行描述,本领域的熟练技术人员将认识到,本发明不限于所描述的实施例,并可在不脱离所附权利要求的精神和范畴的情况下做出修改进而实施。因此,本说明书应该被理解为解释性的,而不是限制性的。

Claims (20)

1.一种用于图形处理单元的方法,包括:
接收从一组图元收集的像素,其中,每一图元的像素位置已经通过光栅化的图元的一组顶点而获得;
将所述像素分为一组具有贯序的群,其中,在显示器上,每一群中的像素均不相互重叠,而重叠的像素属于不同的群;
根据指令集的第一子集对所述群执行对顺序不敏感的着色器操作,其中,所述指令集为可编程着色器定义,且两个群或更多群并行处理;及
根据所述指令集的第二子集按所述贯序对所述群中的每一个执行对顺序敏感的着色器操作。
2.如权利要求1所述的用于图形处理单元的方法,其中,所述不同的群中的所述重叠的像素遵循由图形应用程序接口的要求所定义的贯序,所述贯序指定了对所述图元进行排序的应用程序接口顺序,以供渲染。
3.如权利要求2所述的用于图形处理单元的方法,其中,如果第一图元根据所述应用程序接口顺序排在第二群之后,且所述第一图元不和第一群和所述第二群中的任何其他图元重叠,那么所述第一图元被置入所述第一群,且于所述第二群之前。
4.如权利要求1所述的用于图形处理单元的方法,其中,所述对顺序不敏感的操作包括片段着色器操作,而所述对顺序敏感的操作包括阿尔法混合。
5.如权利要求4所述的用于图形处理单元的方法,进一步包括:
在进行所述片段着色器操作之后对每一群执行组间屏障,以按照所述贯序对所述群进行排序,以供进行所述阿尔法混合。
6.如权利要求5所述的用于图形处理单元的方法,其中,所述群包括第一群和第二群,所述方法进一步包括:
对所述第一群和所述第二群执行所述片段着色器操作;及
当对所述第一群执行混合操作时,利用所述组间屏障对所述第二群进行延迟。
7.如权利要求4所述的用于图形处理单元的方法,进一步包括:
执行指令指定混合模式寄存器,以选择预定义混合模式的着色器代码段。
8.如权利要求1所述的用于图形处理单元的方法,其中,执行所述对顺序敏感的操作进一步包括:
按照任意的顺序对每一群中的像素执行所述对顺序敏感的操作。
9.如权利要求1所述的用于图形处理单元的方法,其中,所述对顺序敏感的操作包括深度测试,以分析横跨不同群之间的像素的可见性。
10.如权利要求1所述的用于图形处理单元的方法,其中,执行所述对顺序敏感的操作进一步包括:
对一组像素执行阿尔法混合,所述像素包括至少一种:透明像素、非透明像素及透明像素和非透明像素的组合。
11.一种图形处理单元,包括:
分群硬件,用于接收从一组图元收集的像素,其中,每一图元的像素位置已经通过光栅化的图元的一组顶点而获得,以及将所述像素分为一组具有贯序的群,其中,在显示器上,每一群中的像素均不相互重叠,而重叠的像素属于不同的群,
可编程着色器硬件,耦接至所述分群硬件,并包括一列计算单元,所述可编程着色器硬件用于:
根据指令集的第一子集对所述群执行对顺序不敏感的着色器操作,所述指令集为可编程着色器定义,且两个群或更多群并行处理;及
根据所述指令集的第二子集按所述贯序对所述群中的每一个执行对顺序敏感的着色器操作。
12.如权利要求11所述的图形处理单元,其中,所述不同群中的所述重叠的像素遵循由图形应用程序接口的要求所定义的贯序,所述贯序指定了对所述图元进行排序的应用程序接口顺序,以供渲染。
13.如权利要求12所述的图形处理单元,其中,如果第一图元根据所述应用程序接口顺序排在第二群之后,且所述第一图元不和第一群和所述第二群中的任何其他图元重叠,那么所述第一图元被置入所述第一群,且于所述第二群之前。
14.如权利要求11所述的图形处理单元,其中,所述对顺序不敏感的操作包括片段着色器操作,而所述对顺序敏感的操作包括阿尔法混合。
15.如权利要求14所述的图形处理单元,其中,所述可编程着色器硬件进一步用于在进行所述片段着色器操作之后对每一群执行组间屏障,以按照所述贯序对所述群进行排序,以供进行所述阿尔法混合。
16.如权利要求15所述的图形处理单元,其中,所述群包括第一群和第二群,且所述可编程着色器硬件进一步用于:
对所述第一群和所述第二群执行所述片段着色器操作;及
当对所述第一群执行混合操作时,利用所述组间屏障对所述第二群进行延迟。
17.如权利要求14所述的图形处理单元,其中,所述可编程着色器硬件进一步用于执行指令指定混合模式寄存器,以选择预定义混合模式的着色器代码段。
18.如权利要求11所述的图形处理单元,其中,所述可编程着色器硬件进一步用于按照任意的顺序对每一群中的像素执行所述对顺序敏感的操作。
19.如权利要求11所述的图形处理单元,其中,所述对顺序敏感的操作包括深度测试,以分析横跨不同群之间的所述像素的可见性。
20.如权利要求11所述的图形处理单元,其中,所述可编程着色器硬件进一步用于对一组像素执行阿尔法混合,所述像素包括至少一种:透明像素、非透明像素及透明像素和非透明像素的组合。
CN201510849814.7A 2015-04-15 2015-11-26 图形处理单元及其方法 Withdrawn CN106067186A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/687,832 2015-04-15
US14/687,832 US10002404B2 (en) 2015-04-15 2015-04-15 Optimizing shading process for mixed order-sensitive and order-insensitive shader operations

Publications (1)

Publication Number Publication Date
CN106067186A true CN106067186A (zh) 2016-11-02

Family

ID=57128909

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510849814.7A Withdrawn CN106067186A (zh) 2015-04-15 2015-11-26 图形处理单元及其方法

Country Status (2)

Country Link
US (1) US10002404B2 (zh)
CN (1) CN106067186A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110192225A (zh) * 2017-01-27 2019-08-30 超威半导体公司 无序像素着色器导出

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10019776B2 (en) * 2015-10-27 2018-07-10 Nvidia Corporation Techniques for maintaining atomicity and ordering for pixel shader operations
US10032245B2 (en) * 2015-10-27 2018-07-24 Nvidia Corporation Techniques for maintaining atomicity and ordering for pixel shader operations
US10055806B2 (en) * 2015-10-27 2018-08-21 Nvidia Corporation Techniques for maintaining atomicity and ordering for pixel shader operations
US10784121B2 (en) * 2016-08-15 2020-09-22 Xilinx, Inc. Standalone interface for stacked silicon interconnect (SSI) technology integration
GB2605471B (en) * 2021-09-30 2023-11-01 Imagination Tech Ltd Processor with hardware pipeline

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101067869A (zh) * 2005-12-05 2007-11-07 Arm挪威股份有限公司 处理图形的方法和设备
CN101101667A (zh) * 2006-05-08 2008-01-09 辉达公司 使用早期z模式优化可配置的图形渲染管线
CN101124613A (zh) * 2004-09-13 2008-02-13 辉达公司 片段着色管线中增加的按比例缩放性
US7576746B1 (en) * 2003-11-12 2009-08-18 Microsoft Corporation Methods and systems for rendering computer graphics
US20090310151A1 (en) * 2008-06-12 2009-12-17 Kurt Nathan Nordback Systems and Methods for Multi-Mode Color Blending
US20140267327A1 (en) * 2013-03-14 2014-09-18 Microsoft Corporation Graphics Processing using Multiple Primitives

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000011603A2 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. Graphics processor with pipeline state storage and retrieval
US7928997B2 (en) 2003-02-06 2011-04-19 Nvidia Corporation Digital image compositing using a programmable graphics processor
US7508448B1 (en) 2003-05-29 2009-03-24 Nvidia Corporation Method and apparatus for filtering video data using a programmable graphics processor
US7973797B2 (en) 2006-10-19 2011-07-05 Qualcomm Incorporated Programmable blending in a graphics processing unit
CN102496169A (zh) * 2011-11-30 2012-06-13 威盛电子股份有限公司 重迭对象的绘制方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7576746B1 (en) * 2003-11-12 2009-08-18 Microsoft Corporation Methods and systems for rendering computer graphics
CN101124613A (zh) * 2004-09-13 2008-02-13 辉达公司 片段着色管线中增加的按比例缩放性
CN101067869A (zh) * 2005-12-05 2007-11-07 Arm挪威股份有限公司 处理图形的方法和设备
CN101101667A (zh) * 2006-05-08 2008-01-09 辉达公司 使用早期z模式优化可配置的图形渲染管线
US20090310151A1 (en) * 2008-06-12 2009-12-17 Kurt Nathan Nordback Systems and Methods for Multi-Mode Color Blending
US20140267327A1 (en) * 2013-03-14 2014-09-18 Microsoft Corporation Graphics Processing using Multiple Primitives

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110192225A (zh) * 2017-01-27 2019-08-30 超威半导体公司 无序像素着色器导出
CN110192225B (zh) * 2017-01-27 2020-12-29 超威半导体公司 无序像素着色器导出

Also Published As

Publication number Publication date
US10002404B2 (en) 2018-06-19
US20160307365A1 (en) 2016-10-20

Similar Documents

Publication Publication Date Title
CN106067186A (zh) 图形处理单元及其方法
US11710268B2 (en) Graphics processing units and methods for controlling rendering complexity using cost indications for sets of tiles of a rendering space
US11481952B2 (en) Allocation of primitives to primitive blocks
US20240070966A1 (en) Methods and Graphics Processing Units for Determining Differential Data for Rays of a Ray Bundle
CN104050706B (zh) 用于低功率图形渲染的像素着色器旁路
CN103810669B (zh) 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块
CN109255829A (zh) 用于光线跟踪的混合层级
CN104025181B (zh) 用于去耦合采样的基于分类的块延迟着色体系结构
CN105321143A (zh) 来自片段着色程序的采样掩膜的控制
CN107038742A (zh) 屏幕空间管线中的多通道渲染
EP3588289B1 (en) Tile assignment to processing cores within a graphics processing unit
CN109478310A (zh) 在计算环境中使用纹素着色器的多分辨率延迟着色
CN101620725A (zh) 混合多重采样/超采样抗锯齿
CN107025681B (zh) 图形处理系统和图形处理方法
CN104134183A (zh) 图形处理系统
CN108305313A (zh) 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法
CN107392836A (zh) 使用图形处理管线实现的立体多投影
CN107038744A (zh) 截锥体渲染
CN108027956A (zh) 后期深度测试与保守深度测试之间的动态切换
CN109979000A (zh) 多视图图元块
KR20190142732A (ko) 데이터 처리 시스템
US20180190013A1 (en) Apparatus and method for rendering adaptive mesh refinement (amr) data
Auzinger et al. Analytic Visibility on the GPU
CN103403671A (zh) 用于光栅化的流压缩
US11816792B2 (en) Overlay trees for ray tracing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20161102