CN114092308A - 图形处理器和图形处理器中执行后处理的方法 - Google Patents
图形处理器和图形处理器中执行后处理的方法 Download PDFInfo
- Publication number
- CN114092308A CN114092308A CN202110766260.XA CN202110766260A CN114092308A CN 114092308 A CN114092308 A CN 114092308A CN 202110766260 A CN202110766260 A CN 202110766260A CN 114092308 A CN114092308 A CN 114092308A
- Authority
- CN
- China
- Prior art keywords
- post
- processing
- shader
- controllers
- tile
- 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.)
- Pending
Links
- 238000012805 post-processing Methods 0.000 title claims abstract description 186
- 238000000034 method Methods 0.000 title claims abstract description 29
- 239000000872 buffer Substances 0.000 claims abstract description 60
- 238000004891 communication Methods 0.000 claims abstract description 14
- 238000009877 rendering Methods 0.000 claims description 35
- 230000004044 response Effects 0.000 claims description 6
- 230000000717 retained effect Effects 0.000 claims description 5
- 239000012634 fragment Substances 0.000 description 33
- 230000000694 effects Effects 0.000 description 18
- 238000012545 processing Methods 0.000 description 15
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000002829 reductive effect Effects 0.000 description 6
- 238000003860 storage Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 4
- 238000005265 energy consumption Methods 0.000 description 4
- 238000005286 illumination Methods 0.000 description 4
- 238000002156 mixing Methods 0.000 description 4
- 239000002245 particle Substances 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 241000238370 Sepia Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000003708 edge detection Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012538 light obscuration Methods 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004297 night vision Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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
-
- 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
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
提供了一种图形处理器和图形处理器中执行后处理的方法。GPU包括一个或多个后处理控制器和3D图形管线,其中,所述3D图形管线包括在像素着色器级之后的后处理着色器级。所述一个或多个后处理控制器可使包括所述后处理着色器级的一个或多个后处理级的执行同步。所述3D图形管线可包括一个或多个像素着色器、一个或多个图块缓冲器以及直接通信链路,其中,所述直接通信链路在所述后处理着色器级与所述一个或多个图块缓冲器之间。所述一个或多个后处理控制器可使所述一个或多个后处理着色器与所述一个或多个图块缓冲器之间的通信同步。
Description
本申请要求于2020年8月3日提交的第63/060,657号美国临时申请和于2021年2月26日提交的第17/187,729号美国临时申请的权益,其通过引用合并于此。
技术领域
本公开涉及图形处理器(GPU),并且更具体地,涉及在GPU内以存储器系统高效的方式的后处理。
背景技术
在基于图块的延迟渲染(TBDR)GPU架构中,可通过在小的、固定尺寸的图块中渲染场景来实现大量的带宽和功率节省,这可完全适合片上高速缓存。在图块完成时,可将图块缓冲器的内容写入主存储器,以针对下一图块开始做准备。另外,一些TBDR架构可在图块缓冲器周围保持“保护带(guard-band)”,保护带可包括来自邻近图块的一些行和/或列的片段(fragment),并且有时可被称为“填充”。保护带可以是图块周围的一个或多个行和/或列的附加像素的集合,附加像素的集合可被冗余地计算,从而允许在图块的边界处执行邻域滤波操作(诸如,卷积)的同时仍在彼此独立地处理图块。如这里所使用的术语“保护带”可不同于裁剪。
即时模式渲染(IMR)GPU架构可按照几何形状被提交到管线的顺序渲染场景,并且无需依赖图块缓冲器来达到其吞吐量目标。IMR可具有标准分层高速缓存结构,这可得益于用于提高性能和降低能量消耗的时间存储器局部性。与IMR相比,TBDR架构可在带宽和功率上具有显著节省。然而,可能经常在TBDR架构上跳过或以降低的质量执行可在实时3D渲染中使用的后处理算法。因为图块可被硬件自动刷新(flush)到存储器,所以也许不能在仍使用常规3D渲染管线使用图块缓冲器的内容的同时执行后处理效果。任何尝试都可能导致期望的数据从片上图块缓冲器高速缓存至存储器然后返回到像素着色器(shader)可访问的单独的高速缓存的往返。这增加了输入/输出(I/O)操作的数量,其减少了包括GPU的移动装置的电池寿命。
因为硬件可能无法保持驻存在GPU的高速缓存内的数据,所以后处理效果可使用简单的片段着色器或计算着色器来以降低的效率执行后处理算法。一些图形API具有被称为子通道的构造。在子通道中,片段位置可读回仅针对来自前一通道的相同位置的数据,这可能使其不太适合于一些算法(诸如,利用片段的邻域的任何种类的图像处理算法)。
发明内容
本公开的各种实施例包括一种GPU,所述GPU包括一个或多个后处理控制器。所述GPU可包括3D图形管线,其中,所述3D图形管线包括在像素着色器级之后的后处理着色器级,其中,所述一个或多个后处理控制器被配置为使包括所述后处理着色器级的一个或多个后处理级的执行同步。所述GPU可包括:一个或多个后处理着色器、一个或多个图块缓冲器,以及直接通信链路,其中,所述直接通信链路在所述一个或多个后处理着色器与所述一个或多个图块缓冲器之间。在一些实施例中,在IMR实现中,所述GPU可具有零个图块缓冲器。所述一个或多个后处理控制器被配置为:使所述一个或多个后处理着色器与所述一个或多个图块缓冲器之间的通信同步。
这里所公开的一些实施例包括一种用于以存储器系统高效的方式在GPU中执行后处理的方法。所述方法可包括:由一个或多个后处理控制器使三维(3D)图形管线中的一个或多个后处理级的执行同步,其中,所述三维(3D)图形管线包括在像素着色器级之后的后处理着色器级。所述方法可包括:通过直接通信链路在一个或多个后处理着色器与一个或多个图块缓冲器之间进行通信。所述方法可包括:由所述一个或多个后处理控制器使所述一个或多个后处理着色器与所述一个或多个图块缓冲器之间的通信同步。
附图说明
通过参照附图进行的以下详细描述,本公开的前述和附加特征和优点将变得更加显而易见,其中:
图1A示出根据一些实施例的包括具有后处理着色器级的三维(3D)管线的GPU的框图。
图1B示出根据一些实施例的包括图1A的具有后处理着色器级的3D管线的GPU。
图1C示出根据一些实施例的包括GPU的移动个人计算机,其中,GPU包括图1A的具有后处理着色器级的3D管线。
图1D示出根据一些实施例的包括GPU的平板计算机,其中,GPU具有图1A的具有后处理着色器级的3D管线。
图1E示出根据一些实施例的GPU的智能电话,其中,GPU具有图1A的具有后处理着色器级的3D管线。
图2是示出根据一些实施例的与GPU内的后处理相关联的有向非循环图(DAG)的框图。
图3是示出根据一些实施例的包括一个或多个后处理控制器的GPU的各种组件的框图。
图4是示出根据一些实施例的用于以存储器系统高效的方式提供后处理的技术的流程图。
具体实施方式
现在将详细参考这里公开的实施例,在附图中示出实施例的示例。在以下详细描述中,阐述了许多具体细节以使得能够彻底理解本发明构思。然而,应当理解的是,本领域普通技术人员可在没有这些具体细节的情况下实践本发明构思。在其他情况下,没有详细描述公知的方法、过程、组件、电路和网络,以免不必要地模糊实施例的方面。
将理解的是,尽管这里可使用术语第一、第二等来描述各种元件,但是这些元件不应受这些术语的限制。这些术语仅被用于将一个元件与另一元件区分开。例如,在不脱离本发明构思的范围的情况下,第一装置可被称为第二装置,并且类似地,第二装置可被称为第一装置。
这里对本发明构思的描述中所使用的术语仅出于描述特定实施例的目的,并不旨在限制本发明构思。如在本发明构思的描述和所附权利要求中所使用的,除非上下文另有明确说明,否则单数形式“一”、“一个”和“该(所述)”旨在也包括复数形式。还将理解的是,如这里所使用的术语“和/或”是指并且涵盖相关联的所列项目中的一个或多个的任何和所有可能的组合。将进一步理解的是,术语“包括”和/或“包括有”在本说明书中被使用时,指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件以及/或者一个或多个其他特征、整数、步骤、操作、元件和组件的组的存在或添加。附图的组件和特征不必按比例绘制。
这里所公开的一些实施例可包括包含具有后处理着色器级的3D管线的GPU。此外,硬件调度逻辑可确保减少高速缓存未命中的有效数据访问。因此,可改善性能,并且可减少能量消耗,从而延长移动装置内的电池的寿命。
图1A示出根据一些实施例的包括具有后处理着色器级140的三维(3D)管线105的GPU 100的框图。GPU 100可包括存储器160。图1B示出根据一些实施例的包括图1A的具有后处理着色器级140的3D管线105的GPU 100。图1C示出根据一些实施例的包括GPU 100的移动个人计算机180a,其中,GPU 100包括图1A的具有后处理着色器级140的3D管线105。图1D示出根据一些实施例的包括图1A的具有后处理着色器级140的3D管线105的平板计算机180b。图1E示出根据一些实施例的包括图1A的具有后处理着色器级140的3D管线105的智能电话180c。现在参照图1A至图1E。
存储器160可包括易失性存储器(诸如,动态随机存取存储器(DRAM)等)。存储器160可包括非易失性存储器(诸如,闪存、固态驱动器(SSD)等)。3D管线105可包括输入装配器(input assembler)级110、顶点着色器控制器级115、图元装配(primitive assembly)阶段120、光栅化阶段125、早期Z(early-Z)阶段130、像素着色器控制器级135、后期Z(late-Z)级145和/或混合级(blend stage)150等。根据这里所公开的实施例,3D管线105可以是实时3D渲染管线,并且可包括在3D管线105的其他级之后的后处理着色器级140。
这里所公开的实施例可包括用于将实时3D渲染管线105扩大为包括后处理着色器级140的机制,其中,后处理着色器级140可在对图块155的渲染完成后而在图块155的内容被刷新到存储器160之前被自动调用,从而使得能够高效地并以最小的功率使用来执行一个或多个后处理效果。虽然这里所公开的实施例在具有专用片上图块缓冲器的TBDR架构中可能是最有用的,但其他架构(诸如,IMR)也可通过使用高速缓存层级结构而受益。后处理着色器级140可对帧的最终渲染和混合的片段值(例如,颜色、深度和模板)进行操作。后处理算法可以是延迟渲染游戏引擎中的关键组件,并且还可被用于执行视觉改善效果(诸如,景深、颜色校正、屏幕空间环境光遮蔽等)。
后处理着色器级140可减少存储器流量和/或消耗的能量。后处理着色器级140可依据一个或多个硬件调度器165来改善存储器局部性。一个或多个硬件调度器165可在调用时自动地直接向后处理着色器级140提供颜色、深度、模板和/或掩膜数据,如下面进一步描述的,后处理着色器级140可在工作组处理器178上被执行。当与一个或多个硬件调度器165组合时,可针对后处理算法实现显著的性能节省。后处理着色器级140可将以下数据暴露给应用开发者:i)片上图块缓冲器的存在、ii)片上图块缓冲器的不存在、以及/或者iii)图块缓冲器周围的任何保护带的尺寸。如下面进一步描述的,后处理着色器级140可在图块缓冲器170与后处理着色器175之间提供直接、高效的物理(例如,硬件)连接180。后处理着色器级140可得益于到图块缓冲器170的直接、高效的硬件接口180。对于IMR架构,后处理着色器级140可在用于渲染目标的高速缓存与后处理着色器175之间提供直接、高效的物理(例如,硬件)连接。后处理着色器175可以是由工作组处理器178执行的处理。例如,工作组处理器178可以是着色器核阵列。
后处理着色器175可将一个或多个附加输入提供给线程束调度(例如,仲裁)、给图形处理和/或后处理线程束。后处理着色器级140可提供针对与一个或多个硬件调度器165相关联和/或可由一个或多个硬件调度器165读取的后处理着色器级的依赖性的描述。后处理着色器级140可使一种或多种格式可直接硬件访问。
图2是示出根据一些实施例的与GPU(例如,图1的100)内的后处理相关联的有向非循环图(DAG)200的框图。DAG 200可包括各种后处理组件、方面和/或级。DAG 200可包括游戏渲染器205。DAG 200可包括3D渲染引擎和相关联的库295。DAG 200可包括用户界面(UI)235。DAG 200可包括各种组件、方面和/或级(诸如,世界渲染器210、地形220、粒子245、反射265、网格270、阴影285和/或基于物理的渲染(PBR)290)。DAG 200可包括后处理215、天空250、贴花255和/或遮蔽系统280。
由各种图形标准所描述的图形处理管线可以是简单的,并且可不捕获由现代游戏引擎所采用的处理的多通道性质的复杂性。现代游戏引擎可使用如图2所示出的若干后处理步骤。图形架构可针对由具有渲染通道的一些意识的标准所表达的简化管线进行优化。然而,可以不考虑复杂的依赖链,而替代地,可针对关于较旧的图形流的性能、功率或面积来优化管线。本公开可通过渲染通道的通道依赖性意识调度来解决这些和其他限制。
通常,图形渲染具有一些不同类型的处理。几何处理和像素着色通道可包括许多绘图调用和相当多的相关联的几何形状。这种通道的示例是G缓冲器通道,其中,在G缓冲器通道中,基本几何形状被渲染到中间缓冲器中。光照通道可具有非常少的三角形并且修改先前(诸如,在较早的G缓冲器通道期间)生成的像素值。像素处理通道可不具有与它们相关联的几何形状,并且可被用于修改先前生成的像素。像素处理通道的示例包括运动模糊、泛光等。
光照通道和像素处理通道两者都可被称为后处理级。这里所公开的实施例可被应用于这些种类的通道中的二者。提供给后处理级的各种I/O以及工作的整体调度可依赖游戏引擎和应用处理的行为。多个后处理效果可链接在一起,形成管线。这些各个级可形成(与上述3D管线105不同的)简单的管线,或者更通常地,形成如在图2中所示出的DAG 200。游戏引擎通常可将整个DAG 200处理为渲染图,以便构建特定帧。渲染图可记录所有通路及它们的资源。然后可针对整个通道优化调度、同步和资源转换,以使停顿最小化并共享中间计算结果。这里所公开的实施例包括渲染图执行的进一步优化。
DAG 200的各个级可涉及数据减少或变换(诸如,用于景深效果的滤波)。虽然一些图像处理效果(如高斯模糊)也许更可能使用较小的内核并因此使用较小的保护带,但是其他图像处理效果(如屏幕空间环境光遮蔽或屏幕空间反射)可使用当前像素周围的较宽邻域,并且每次像素的计算执行数十次读取。源片段和结果片段之间的依赖性可以是已知的。该信息可被用于执行i)软件优化以合并多个着色器,以及/或者ii)调度优化以使存储器流量最小化。
后处理像素依赖性在各个级之间可以是1:1。当依赖性为1:1并且相关像素之间的距离为零时,则可创建类似编译程序的软件,类似编译程序的软件可将这些后处理着色器级合并到单个内核中。然而,依赖性可能不具有这些属性,即,i)结果像素依赖多于一个其他像素,或者ii)这些像素中的至少一个像素的距离可以是非零的。结果像素(x,y)可依赖另一像素(p,q),其中,x≠p和/或y≠q。在一些实施例中,着色器级不需要合并,或者不能方便地合并,并且它们可按顺序被调度。
在后处理级中使用交织和高速缓存机制可有益于计算这些效果的效率。在基于图块的渲染上下文中,交织可在图块沿着渲染图DAG 200独立地移动的情况下可变得更可行,并且可受到共享保护频带使用的约束。不需要保护频带的效果(诸如,色调映射)可完全独立地处理图块。
对于一些图像处理效果,着色器可包括在每一个通道中减小图像尺寸的通道。为了适应这样的场景,作为输入,这里所公开的实施例可消耗针对关于一个或多个源图像中的所访问的片段的每一个通道的依赖性信息。因此,最小化算法或最大化算法可得益于这里所公开的实施例。然而,当级的一个或多个着色器输出与输入图像相比是不同尺寸的图像(例如,存在最小化或最大化)时,实施方式可选择中断管线中的着色器的图块交织并且运行着色器(例如,计算管线级)以完成或者在执行来自管线中的后续着色器的图块之前在管线级中运行多个图块以完成。当这种情况发生时,可保持功能正确性,但效率可从这里所公开的实施例本可以实现的效率降低。
以下是用于延迟渲染的渲染引擎中的给定帧渲染中的不同种类的通道。
渲染到粒子缓冲器(例如,将粒子参数渲染到缓冲器中以供稍后处理)。
渲染深度Z预通道(Z-pre-pass)(例如,将不透明几何形状渲染到深度缓冲器中以分层Z(HiZ)和阴影)。
计算光网格(例如,构建3D网格以分离光以实现最佳光照)。
开始闭塞测试。
构建分层Z。
渲染阴影深度(例如,从阴影投射光构建阴影图)。
计算体积雾(例如,3D雾纹理)。
渲染贴花(例如,构建贴花缓冲器)。
渲染GBuffer(例如,将几何属性和材料属性渲染到GBuffer中)。
屏幕空间环境光遮蔽。
光照。
屏幕空间反射(SSR)+时间反锯齿(TAA)(例如,计算屏幕空间反射并对它们进行反锯齿)。
环境反射+天空盒。
指数高度雾。
渲染粒子。
渲染半透明。
另外,可执行诸如以下效果的各种后处理效果:
渲染失真。
后处理(例如,全帧)。
a、景深。
b、运动模糊。
c、眼睛适应。
d、下采样。
e、泛光。
f、色调映射。
g、快速近似反锯齿(FXAA)(例如,后处理反锯齿)。
h、后处理反锯齿(例如,FXAA)。
在技术上,所有屏幕空间效果可以是后处理效果。附加的后处理效果可包括太阳光线(例如,Godrays)、颜色分级、热波、热签名、深褐色、夜视、锐化、边缘检测、分割和/或双边滤波等。
图3是示出根据一些实施例的包括一个或多个后处理控制器305的GPU(例如,图1的100)的各种组件的框图。一个或多个后处理控制器305可执行后处理着色器级(例如,图1的140)。现在参照图1和图3。
这里所公开的实施例包括以存储器系统高效的方式在GPU 100中执行后处理。这里所公开的实施例可包括由一个或多个后处理控制器305使3D图形管线105中的一个或多个后处理级140的执行同步,其中,3D图形管线105包括在像素着色器控制器级135之后的后处理着色器阶段140。
这里所公开的实施例可包括一个或多个后处理着色器175与一个或多个图块缓冲器170之间的接口180(例如,总线)。对于IMR架构,可使用存储器高速缓存或其他合适的存储器接口来促进一个或多个后处理着色器175与存储器160之间的通信。另外,可提供新的控制结构320以在一个或多个后处理着色器175与一个或多个图块缓冲器170之间执行仲裁和/或互锁。
这里公开的实施例可包括3D管线105中的一个或多个后处理控制器305。一个或多个后处理控制器305可接连地调度相关的后处理着色器175。(例如,图1的)后处理着色器阶段140可包括以下属性。一个或多个后处理控制器305可类似于具有等于图块(例如,图1的155)或图块+保护带规模的2D分发尺寸的“计算着色器”来执行。一个或多个后处理着色器175可从图块(例如,图1的155)内包含的任何片段提取数据。一个或多个后处理着色器175可使用一个或多个工作组处理器178与一个或多个图块缓冲器170之间的数据链路180(例如,总线)。一个或多个后处理控制器305可通过着色器导出365和/或一个或多个渲染后端370来使用数据链路325。因为数据链路180使得在工作组处理器178上运行的后处理着色器175能够直接访问它们在图块缓冲器170中可能需要的像素和/或片段数据,所以数据链接180是有益的。
在IMR中,作为图块缓冲器170的代替,存储器160的一部分可以是高性能高速缓存,高性能高速缓存紧密结合到后期Z 145和混合阶段150,并且还紧密结合到后处理着色器阶段140,并且因此在硬件方面,紧密结合到一个或多个后处理着色器175。
应用350可查询后处理着色器阶段140的一个或多个属性。一个或多个后处理控制器305可与应用350接口连接。应用350可查询图块尺寸(即,像素方面的尺寸),并从GPU 100接收图块尺寸。应用350可查询针对图块(例如,图1的155)的顶部、左侧、底部和右侧边缘的“保护带”的尺寸,并且从GPU 100接收“保护带”的尺寸。应用350可提供作为工作组处理器178中的后处理着色器175的着色器程序的执行。着色器程序可查询由图块的4个角中的任一个所表示的图块(例如,图1的155)的激发片段(provoking fragment)坐标,并且从GPU100接收激发片段坐标。在着色器操作期间,着色器程序可查询各种激发像素信息。驱动器可查询更多静态信息(诸如,保护带的量),并且可将这些查询响应用在确定在一个或多个后处理着色器175中使用的适当着色器程序代码中。
应用350可向后处理着色器阶段140提供活动片段掩码(AFM)360。应用350可提供一个或多个控制信号368以引导硬件生成一个或多个值(例如,颜色、深度、模板、法向量、AFM或任何其他内插属性),其中,所述一个或多个值可在启动时被提供给一个或多个后处理着色器175。应用350可提供关于将使用哪些侧(顶部、左侧、底部和/或右侧边缘)的保护带一个或多个提示370。
一个或多个后处理控制器305可具有一个或多个输入和输出。当后处理着色器阶段140被启动时,一个或多个后处理控制器305可在启动时自动地向一个或多个后处理着色器175提供片段的颜色。另外,片段的位置的坐标(例如,X、Y)、片段的深度值和片段的模板值也可被自动地提供给一个或多个后处理着色器175。为了确定当前工作图块155的边界并促进访问邻近片段,也可自动地将激发片段坐标提供给一个或多个后处理着色器175。
在后处理着色器阶段140期间,调用可获取图块155和保护带内的任何其他片段的颜色、深度和模板值,目的是对渲染图像执行后处理算法。为了保持一个或多个图块缓冲器170中的数据的一致性,实施方式可选择使用回写到一个或多个图块缓冲器170的硬件调度,并且/或者依赖一个或多个后处理着色器175通过传统互斥(例如,互斥保留构造)、信号量和/或屏障技术执行同步。
活动片段掩码360可向后处理着色器管线通知可从后处理着色器的调用访问哪些邻近片段。这可被设计为排除可已知不需要后处理的片段。另外,3D管线105的传统片段着色阶段可动态地计算后处理活动片段掩码。后处理着色器阶段140可在片段阶段完成之后而在后处理着色器阶段140执行之前自动反转活动片段掩码360。
关于提供来自一个或多个图块缓冲器170的像素获取数据和返回到一个或多个图块缓冲器170的像素获取数据的适当同步,活动片段掩码360可被扩展以针对一个或多个图块缓冲器170中的每一个像素提供多位“状态”,多位“状态”可被用于传达诸如“锁定”或“更新”的信息,并且多位“状态”的确切含义可由应用程序350的判定来决定。实施例可使这些状态位可用于一个或多个调度器165以避免调度一些像素可被锁定的线程束。替代方案可包括在一个或多个后处理着色器175内具有自旋循环,但是这可能是能量和性能两者都低效的。在启动第一后处理着色器阶段140时,可将这些状态位重置为已知值。
具有显式后处理着色器阶段140作为3D管线105的一部分的值可包括给予硬件调度器165在用于TBDR渲染架构的图块155上交织完成片段着色器和随后的后处理着色器阶段140的能力,以改善性能并降低能量消耗。类似地,在包括IMR架构的其他架构上,当与高速缓存大小平衡时,交织仍然可以是有益的。另外,当后处理着色器阶段140可请求保护带片段时,TBDR渲染器可重新排序渲染的图块的序列以自然地将必要片段保留在图块缓冲器中。例如,当请求右侧边缘和底部边缘保护带片段时,调度器165可选择以级联模式从左上方到右下方渲染图块155,以减少从存储器160获取尽可能多的保护带片段的需要,来代替从图块缓冲器170获得这些片段。由于可启用或停用后处理着色器阶段140,因此当管线不需要该阶段时可不存在性能损失。
这里所公开的实施例可包括对3D图形管线105的扩展,允许后处理着色器阶段140在像素着色器和混合操作完成之后立即运行。一个或多个后处理控制器305可访问像素阵列内的所有数据(例如,图块或图块+保护带价值信息),像素阵列包括用于将一个或多个后处理着色器175连接到一个或多个图块缓冲器170的新总线和/或接口(例如,180)。实施例包括用于调度一个或多个后处理着色器175中的后处理器线程束的执行的同步机制。可调整这里所公开的实施例以针对数据使高速缓存局部性最大化,其中,所述数据是由像素着色器响应于一个或多个像素着色器控制器135而写入并由可选的后期Z 145和可选的混合150处理的,并且稍后被一个或多个后处理着色器阶段140消耗。
由像素着色器响应于一个或多个像素着色器控制器135产生和/或写入的数据可在稍后被一个或多个后处理着色器175响应于后处理控制器305而消耗。因此,在响应于像素着色器控制器135的像素着色器的完成与设置由后处理着色器175消耗这些数据的后处理控制器305的开始之间,可在一个或多个图块缓冲器170内使尽可能多的数据保持在原位。
可使用同步机制,同步机制用于防止在一个或多个原始数据值可用并被一个或多个后处理控制器305中的其他像素消耗之前对一个像素进行后处理以更新数据。后处理控制器305中的操作可由掩码360控制。
这里所公开的实施例还可适用于也在工作组处理器178上执行的计算着色器375。计算着色器375可被构造为工作分区的层级。例如,将执行的整个N维工作网格的N维范围(例如,NDRange)可以是这种层级的一部分。工作组也可以是N维网格,但可以是较大的NDRange网格的子集。
通过将每一个片段分配给计算着色器375中的线程,可实现功率和性能的类似增益。活动线程掩码360可向后处理着色器管线通知可从后处理着色器的调用访问哪些邻近片段。如由掩码360所掩蔽的活动工作组可包括由工作组中的落在工作组的唯一全局ID中的任何线程之外的线程进行的数据访问。掩码360可包括工作组中的通过图块缓冲器170共享数据并且当通过存储器160跨不同工作组共享数据时的线程。该使用模式可允许来自不同NDRange的工作组以工作组粒度交织。当数据共享/交换在工作组内并且在图块缓冲器170范围内时,则可在图块缓冲器170内更局部地互换数据。然而,当将与超出当前工作组ID的线程互换和/或交换数据时,可使用存储器160(即,更远的并且因此更能量密集的机制)。
类似地,一些GPU编程模型可暴露子组。子组可包括在计算核上同时执行的一组线程。例如,子组可包含8、16、32或64个线程。活动子组掩码可包括数据访问,其中,工作组中的线程可执行这些数据访问,这些数据访问落在工作组的唯一全局ID中的任何线程之外。
这里所公开的实施例的一些优点包括性能的提高,以及3D渲染图形后处理效果的能量消耗的降低。可对景深、颜色校正、色调映射和/或延迟渲染进行改进。通过赋予一个或多个后处理着色器175对一个或多个图块缓冲器170的读取和写入访问两者,现在可使一个或多个图块缓冲器170的所有特征和/或功能可用于后处理。在将一个或多个图块缓冲器170刷新到存储器160时可应用一个或多个压缩技术。这里所公开的实施例可提供更高的带宽—一个或多个图块缓冲器170可以是多组的以允许大量I/O端口。与后处理相关联的数据可以以各种格式(诸如,块线性或行线性)被写入存储器160。一个或多个图块缓冲器170和存储器系统160可执行作为优化的块访问的读取和/或写入操作,并且相对于相当数量个字节值的计算着色器样式加载和存储提供较低能量路径。
图4是示出根据一些实施例的用于以存储器系统高效的方式提供后处理的技术的流程图400。在402处,像素着色器可在图块缓冲器中建立初始集合。在405处,可在图块缓冲器与一个或多个后处理着色器之间提供直接链路。可保留最近完成的像素着色器的内容,即,不将内容刷新到存储器。在410处,可将零个或更多个像素保留在保护带中以供后处理着色器阶段使用,和/或以支持例如卷积运算(诸如,模糊)。在420a处,一个或多个后处理控制器可使后处理阶段的执行同步。在415处,可允许一个或多个后处理着色器访问由前一渲染通道生成的图块缓冲器中的一个或多个像素,以生成用于下一渲染通道的样本。在420b,一个或多个后处理控制器可使后处理阶段的执行同步。流程可从420b返回至415,并且迭代步骤415和420b以执行多于一个的后处理步骤。应当理解的是,图4的步骤不需要以所示出的顺序被执行,并且可存在中间步骤。
结合这里所公开的实施例描述的方法或算法和功能的框或步骤可直接以硬件、以由处理器执行的软件模块、或以这两者的组合来实现。模块可包括硬件、软件、固件或硬件、软件和固件的任何组合。功能如果以软件来实现,则可作为一个或多个指令或代码存储在有形的非暂时性计算机可读介质上或通过有形的非暂时性计算机可读介质被传输。软件模块可驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动盘、CDROM、或本领域中已知的任何其他形式的存储介质中。
以下讨论旨在提供可实现本发明构思的特定方面的一个或多个合适的机器的简要的一般描述。通常,一个或多个机器包括与处理器、存储器(例如,RAM、ROM或其他状态保存介质)、存储装置、视频接口和输入/输出接口端口附接的系统总线。一个或多个机器可至少部分地通过来自常规输入装置(诸如,键盘、鼠标等)的输入以及通过从另一机器接收的指令、与虚拟现实(VR)环境的交互、生物特征反馈或其他输入信号来控制。如这里所使用的,术语“机器”旨在广泛地涵盖单个机器、虚拟机、或者通信地结合的机器、虚拟机或一起操作的装置的系统。示例性机器包括计算装置(诸如,个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板电脑等)以及运输装置(诸如,私人或公共运输(例如,汽车、火车、出租车等))。
一个或多个机器可包括嵌入式控制器(诸如,可编程逻辑器件或阵列或者不可编程逻辑器件或阵列、ASIC、嵌入式计算机、卡等)。一个或多个机器可利用诸如通过网络接口、调制解调器或其他通信结合的到一个或多个远程机器的一个或多个连接。本领域技术人员将理解的是,网络通信可利用各种有线和/或无线短程或远程载波和协议,各种有线和/或无线短程或远程载波和协议包括射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)545.11、蓝牙、光学、红外、电缆、激光等。
可通过参考或结合包括功能、过程、数据结构、应用程序等的相关联的数据来描述本公开的实施例,这些相关联的数据在由机器访问时导致机器执行任务或者定义抽象数据类型或低级硬件上下文。相关联的数据可存储在例如易失性存储器和/或非易失性存储器(例如,RAM、ROM等)中,或者存储在其他存储装置及其相关联的存储介质(包括硬盘驱动器、软盘、光存储器、磁带、闪存、记忆棒、数字视频盘、生物存储器等)中。相关联的数据可在传输环境(包括物理网络和/或逻辑网络)上以包、串行数据、并行数据、传播信号等的形式递送,并且可以以压缩或加密格式被使用。相关联的数据可在分布式环境中被使用,并且本地和/或远程存储以供机器访问。
已经参考所示出的实施例描述和示出了本公开的原理,应当认识到的是,所示出的实施例可在不脱离这些原理的情况下在布置和细节上进行修改,并且可以以任何期望的方式被组合。并且尽管前面的讨论集中于特定实施例,但是可设想其他配置。具体地,即使在这里使用了诸如“根据本发明构思的实施例”等的表达,这些短语也旨在总体上参考实施例可能性,并且不旨在将本发明构思限制于特定的实施例配置。如这里所使用的,这些术语可指代可组合到其他实施例中的相同或不同的实施例。
本公开的实施例可包括非瞬态机器可读介质,其中,非瞬态机器可读介质包括可由一个或多个处理器执行的指令,该指令包括用于执行如这里所描述的发明构思的元素的指令。
前述示例性实施例不应被解释为限制其发明构思。尽管已经描述了一些实施例,但是本领域技术人员将容易理解的是,在实质上不脱离本公开的新颖教导和优点的情况下,可对这些实施例进行许多修改。因此,所有这些修改旨在被包括在如权利要求中限定的本公开的范围内。
Claims (19)
1.一种图形处理器,包括:
一个或多个后处理控制器;以及
三维图形管线,包括在像素着色器级之后的后处理着色器级,其中,所述一个或多个后处理控制器被配置为使包括所述后处理着色器级的一个或多个后处理级的执行同步。
2.根据权利要求1所述的图形处理器,还包括:
一个或多个后处理着色器;
一个或多个图块缓冲器;以及
直接通信链路,在所述一个或多个后处理着色器与所述一个或多个图块缓冲器之间。
3.根据权利要求2所述的图形处理器,其中,所述一个或多个后处理控制器被配置为:使所述一个或多个后处理着色器与所述一个或多个图块缓冲器之间的通信同步。
4.根据权利要求2所述的图形处理器,其中,所述一个或多个后处理着色器能够访问来自所述一个或多个图块缓冲器的一个或多个像素。
5.根据权利要求4所述的图形处理器,其中,由所述一个或多个后处理着色器访问的所述一个或多个像素由前一渲染通道生成以生成用于下一渲染通道的样本。
6.根据权利要求4所述的图形处理器,其中,所述一个或多个像素被配置为:响应于所述一个或多个后处理控制器而保留在驻留于所述一个或多个图块缓冲器中的保护带中。
7.根据权利要求6所述的图形处理器,其中,保留的一个或多个像素被配置为支持一个或多个卷积运算。
8.根据权利要求4所述的图形处理器,其中,所述一个或多个后处理控制器被配置为:在保护带中保留零个或更多个像素。
9.一种在图形处理器中执行后处理的方法,包括:
由一个或多个后处理控制器使三维图形管线中的一个或多个后处理级的执行同步,其中,所述三维图形管线包括在像素着色器级之后的后处理着色器级。
10.根据权利要求9所述的方法,还包括:通过直接通信链路在所述一个或多个后处理着色器级与一个或多个图块缓冲器之间进行通信。
11.根据权利要求10所述的方法,还包括:由所述一个或多个后处理控制器使所述一个或多个后处理着色器级与所述一个或多个图块缓冲器之间的通信同步。
12.根据权利要求10所述的方法,还包括:向来自所述一个或多个图块缓冲器的一个或多个像素提供对所述一个或多个后处理着色器级的访问。
13.根据权利要求12所述的方法,其中,由前一渲染通道生成由所述一个或多个后处理着色器级访问的所述一个或多个像素以生成用于下一渲染通道的样本。
14.根据权利要求12所述的方法,还包括:由所述一个或多个后处理控制器将所述一个或多个像素保留在保护带中。
15.根据权利要求14所述的方法,还包括:使用保留的一个或多个像素支持一个或多个卷积运算。
16.根据权利要求12所述的方法,还包括:由所述一个或多个后处理控制器将零个或更多个像素保留在保护带中。
17.根据权利要求9至16中任一项所述的方法,还包括:由应用查询所述一个或多个后处理着色器级的一个或多个属性。
18.根据权利要求17所述的方法,还包括:
由所述应用查询图块尺寸;以及
由所述应用接收所述图块尺寸。
19.根据权利要求9至16中任一项所述的方法,还包括:由所述一个或多个后处理控制器与所述应用接口连接。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063060657P | 2020-08-03 | 2020-08-03 | |
US63/060,657 | 2020-08-03 | ||
US17/187,729 | 2021-02-26 | ||
US17/187,729 US20220036632A1 (en) | 2020-08-03 | 2021-02-26 | Post-processing in a memory-system efficient manner |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114092308A true CN114092308A (zh) | 2022-02-25 |
Family
ID=80004475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110766260.XA Pending CN114092308A (zh) | 2020-08-03 | 2021-07-07 | 图形处理器和图形处理器中执行后处理的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220036632A1 (zh) |
KR (1) | KR20220016776A (zh) |
CN (1) | CN114092308A (zh) |
TW (1) | TW202207029A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116263981A (zh) * | 2022-04-20 | 2023-06-16 | 象帝先计算技术(重庆)有限公司 | 图形处理器、系统、装置、设备及方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11880924B2 (en) * | 2021-03-26 | 2024-01-23 | Advanced Micro Devices, Inc. | Synchronization free cross pass binning through subpass interleaving |
US20240104685A1 (en) * | 2022-09-28 | 2024-03-28 | Advanced Micro Devices, Inc. | Device and method of implementing subpass interleaving of tiled image rendering |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6707458B1 (en) * | 2000-08-23 | 2004-03-16 | Nintendo Co., Ltd. | Method and apparatus for texture tiling in a graphics system |
US7969444B1 (en) * | 2006-12-12 | 2011-06-28 | Nvidia Corporation | Distributed rendering of texture data |
US8499305B2 (en) * | 2010-10-15 | 2013-07-30 | Via Technologies, Inc. | Systems and methods for performing multi-program general purpose shader kickoff |
KR101926570B1 (ko) * | 2011-09-14 | 2018-12-10 | 삼성전자주식회사 | 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치 |
US9298006B2 (en) * | 2013-01-18 | 2016-03-29 | Intel Corporation | Layered light field reconstruction for defocus blur |
US10089775B2 (en) * | 2015-06-04 | 2018-10-02 | Samsung Electronics Co., Ltd. | Automated graphics and compute tile interleave |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
US10440361B2 (en) * | 2016-11-22 | 2019-10-08 | Pixvana, Inc. | Variable image data reduction system and method |
US10235735B2 (en) * | 2017-04-10 | 2019-03-19 | Intel Corporation | Graphics processor with tiled compute kernels |
-
2021
- 2021-02-26 US US17/187,729 patent/US20220036632A1/en not_active Abandoned
- 2021-05-31 TW TW110119668A patent/TW202207029A/zh unknown
- 2021-07-07 CN CN202110766260.XA patent/CN114092308A/zh active Pending
- 2021-07-13 KR KR1020210091470A patent/KR20220016776A/ko unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116263981A (zh) * | 2022-04-20 | 2023-06-16 | 象帝先计算技术(重庆)有限公司 | 图形处理器、系统、装置、设备及方法 |
CN116263981B (zh) * | 2022-04-20 | 2023-11-17 | 象帝先计算技术(重庆)有限公司 | 图形处理器、系统、装置、设备及方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20220016776A (ko) | 2022-02-10 |
US20220036632A1 (en) | 2022-02-03 |
TW202207029A (zh) | 2022-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10475228B2 (en) | Allocation of tiles to processing engines in a graphics processing system | |
US10223122B2 (en) | Managing event count reports in a tile-based architecture | |
US9177413B2 (en) | Unique primitive identifier generation | |
CN114092308A (zh) | 图形处理器和图形处理器中执行后处理的方法 | |
US10032243B2 (en) | Distributed tiled caching | |
TWI645371B (zh) | 在上游著色器內設定下游著色狀態 | |
US10055883B2 (en) | Frustum tests for sub-pixel shadows | |
US9589388B1 (en) | Mechanism for minimal computation and power consumption for rendering synthetic 3D images, containing pixel overdraw and dynamically generated intermediate images | |
CN116050495A (zh) | 用稀疏数据训练神经网络的系统和方法 | |
WO2024040815A1 (zh) | 图形处理方法及系统 | |
CN108305313B (zh) | 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法 | |
TWI552113B (zh) | 舖磚延遲著色的系統、方法,及電腦程式產品 | |
US20150213638A1 (en) | Hierarchical tiled caching | |
CN110728616A (zh) | 图形处理单元内处理核心的图块分配 | |
US20140267276A1 (en) | System, method, and computer program product for generating primitive specific attributes | |
CN117501312A (zh) | 图形渲染的方法及装置 | |
US8654135B1 (en) | A-Buffer compression for different compression formats | |
US20180253890A1 (en) | Node topology employing recirculating ring command and data buffers for executing thread scheduling | |
CN112581575A (zh) | 一种外视频做纹理系统 | |
US20240037835A1 (en) | Complex rendering using tile buffers | |
US20240169465A1 (en) | Graphics processing systems | |
WO2018118364A1 (en) | Memory consistency in graphics memory hierarchy with relaxed ordering | |
US20240169647A1 (en) | Graphics processors | |
US20240169649A1 (en) | Graphics processors | |
US20240169639A1 (en) | Graphics processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20220225 |