CN117063202A - 通过子通道交错实现无同步交叉通道分格 - Google Patents
通过子通道交错实现无同步交叉通道分格 Download PDFInfo
- Publication number
- CN117063202A CN117063202A CN202280023067.XA CN202280023067A CN117063202A CN 117063202 A CN117063202 A CN 117063202A CN 202280023067 A CN202280023067 A CN 202280023067A CN 117063202 A CN117063202 A CN 117063202A
- Authority
- CN
- China
- Prior art keywords
- sub
- channels
- channel
- execution
- 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
- 238000009877 rendering Methods 0.000 claims abstract description 40
- 238000000034 method Methods 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims description 63
- 238000010586 diagram Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 12
- 230000009466 transformation Effects 0.000 description 9
- 238000005286 illumination Methods 0.000 description 8
- 238000000844 transformation Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 101100449929 Mus musculus Guca1a gene Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
提供了一种分块渲染的方法,该方法包括将待渲染的帧划分为多个图块,接收执行图块的多个子通道的命令,以及交错对帧的多个图块的相同子通道的执行。交错对多个图块的相同子通道的执行包括在对第一图块的先前排序的第一子通道的执行与对第一图块的后续排序的第二子通道的执行之间执行第二图块的先前排序的第一子通道。例如,通过以与执行多个子通道的命令被存储和发布的顺序不同的顺序执行多个子通道来进行交错。另选地,通过执行一个或多个子通道作为跳过操作使得以相同顺序执行多个子通道来进行交错。
Description
相关申请的交叉引用
本申请要求于2021年3月26日提交的美国临时申请63/166,956号和于2021年12月29日提交的美国非临时申请17/565,394号的权益,这些申请以引用方式并入,如同在本文完整阐述一样。
背景技术
图形处理包括将三维(3D)场景渲染到二维(2D)屏幕上。3D场景经由包括不同处理阶段的图形流水线被渲染在显示屏上。(例如,从应用程序)接收命令流的图形处理命令并且(例如,向加速处理设备,诸如GPU)提供计算任务以用于执行该任务。
使用图元(例如,三角形、四边形或其他几何形状)在显示屏上渲染图形。图形处理命令包括例如图元的数量、每个图元的位置以及待在显示屏上渲染的每个图元的属性。
附图说明
可以从以下描述中获得更详细的理解,通过示例结合附图给出,其中:
图1是可实现本公开的一个或多个特征的示例设备的框图;
图2是图1的设备的框图,示出了附加的细节;
图3是根据示例的图示图形处理流水线的框图;
图4是图示可实现本公开的一个或多个特征的加速处理设备的示例部件的框图;
图5是根据示例的图示不同渲染子通道的排序的图形处理流水线的一部分的图;
图6示出图示实现使连续格的子通道交错的示例的性能益处的时序图;
图7是图示图6中示出的针对3个格的示例的时序图;
图8是图示使连续格的子通道交错的第一示例模式的图;
图9是图示使连续格的子通道交错的第二示例模式的图;
图10是图示图9中所示的第二示例模式的时序图;并且
图11是图示根据本公开的特征的分块图像渲染的示例方法的流程图。
具体实施方式
术语“图块(tile)”、“格(bin)”、“经分块(tiled)”、“经分格(binned)”、“分块(tiling)”和分格(binning)在本文中可互换地使用。
可将图形流水线简化为包括前端几何部分和后端部分。例如,流水线的前端几何部分包括若干着色器阶段(例如,顶点着色器阶段、外壳着色器阶段、曲面细分器阶段、域着色器阶段和几何着色器阶段)。在着色器阶段期间,图元作为3D对象被接收并且被变换为2D对象以被渲染到2D屏幕上。后端部分包括光栅化器阶段和像素着色器阶段。在光栅化器阶段期间,确定待被投影到2D屏幕上的每个图元的屏幕上位置。例如,在光栅化期间,加速处理设备(例如,GPU)针对每个图元确定哪些像素(或子像素样本)对应于待渲染到2D屏幕上的每个图元。在像素着色器阶段期间,针对对应于图元的像素计算值(例如,亮度和色彩)。
渲染帧包括以特定顺序执行不同任务。例如,帧渲染包括阴影渲染、渲染通道(render pass)和后处理。渲染通道包括以特定顺序执行的各种子通道(例如,可见性子通道)。子通道(subpass)是向相同渲染目标渲染的绘制命令序列。
用于子通道的命令(即,指令)以特定顺序存储(例如,在命令缓存中),并且以特定顺序发布到缓存中的处理器(例如,GPU的调度器),因为在一些情况下,后续子通道在执行之前取决于来自先前子通道的输出。由执行每个子通道所产生的数据通常被存储在高速缓存(例如,渲染后端(RB)高速缓存)中。然而,后续任务的执行依赖于从存储器的另一部分(即,不是从RB高速缓存)读取数据。因此,来自RB高速缓存的数据被清除并存储在存储器的另一部分中,诸如低级高速缓存(例如,2级(L2)高速缓存或其他低级高速缓存)或主存储器,使得数据可被读取以执行后续任务。
命令缓存中后续排序的子通道取决于由先前排序的子通道所产生的数据。在命令缓存中后续排序的子通道可以开始执行之前(即,在后续排序的子通道可以开始任何工作之前),命令缓存中先前排序的子通道必须完成执行(即,从高速缓存中清除输出数据并且将该数据存储在存储器的另一部分中)。因此,在这种情况下,当后续排序的子通道必须等待先前排序的子通道完成时,在处理流水线中引入开销(例如,等待时间)。此外,在此等待周期期间,处理器闲置直到先前排序的子通道完成为止,从而导致流水线中的低效率和增加的帧等待时间。
分块(或分格)是将帧分割为区段(例如,图块或格)并且渲染帧的一个图块然后渲染帧的另一图块的技术。例如,如果将帧(或图像)分割为四个相等图块(即,左上象限、右上象限、左下象限和右下象限),则渲染第一图块(例如,左上象限),然后前进到渲染接下来的图块中的一个图块。然后,在前进到渲染最后两个图块中的一个图块之前渲染其他图块中的一个图块(例如,右上象限)等等,直到渲染帧的图块中的每个图块为止。
在传统的经分块(经分格)渲染中,格中的每个格被彼此独立地渲染。当渲染图块(或格)时,相同图块(或格)的不同子通道必须以命令缓存中指定的顺序执行,使得相同图块的后续排序的子通道可以读取由先前排序的子通道的执行产生的数据。因此,因为图块的后续排序的子通道必须等待相同图块的先前排序的子通道完成,所以在处理流水线中引入了等待时间。
本申请公开了利用经分块(经分格)渲染的这些属性并且通过使多个格的相同子通道(例如,格1的第一照明子通道和格2的相同第一照明子通道)交错(interleaving)来提供更高效的处理流水线的装置和方法。本申请的特征在相同图块的后续排序的子通道(不同于先前排序的子通道)正在等待相同图块的先前排序的子通道完成的时间段期间,交错对不同图块的相同子通道(即,相同子通道类型)的执行。因此,因为相同图块的后续排序的子通道正在等待的这些时间段用于执行不同图块的一个或多个子通道,所以总等待时间减少。此外,因为处理器在相同图块的后续排序的子通道正在等待的此时间段期间执行不同图块的一个或多个子通道,所以处理器在此时间段期间不闲置,从而导致对资源的更有效使用。此外,本申请的特征还能够经由加速处理设备(例如,GPU)通过(在时间上)重叠对不同格的相同子通道的执行来并行处理子通道,以进一步减少等待时间。
在一个示例模式中,通过以与子通道命令被存储(例如,在命令缓存中)并被发布到处理器(例如,GPU的调度器)的顺序不同的顺序执行子通道来交错连续格的子通道。在另一示例模式中,通过执行子通道作为跳过操作使得以子通道命令被存储并被发布到处理器的相同顺序执行子通道来交错连续格的子通道。在渲染帧之前以每帧为基础或以多帧为基础来确定待实现的交错模式和多个格的经交错的相同子通道的数量。
提供了一种分块图像渲染的方法,该方法包括将待渲染的帧划分为多个图块,接收执行图块的多个子通道的命令,以及交错对帧的多个图块的相同子通道的执行。
提供了一种用于分块图像渲染的处理设备,该处理设备包括存储器和处理器。该处理器被配置为:将待渲染的帧划分为多个图块,接收执行图块的多个子通道的命令;以及交错对帧的多个图块的相同子通道的执行。
提供了一种非暂态计算机可读介质,其包括用于使计算机执行分块图像渲染的方法的指令。该指令包括:将待渲染的帧划分为多个图块,接收执行图块的多个子通道的命令,以及交错对帧的多个图块的相同子通道的执行。
图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发送输出。应注意,输入驱动器112和输出驱动器114是任选的部件,并且如果输入驱动器112和输出驱动器114不存在,则设备100将以相同方式操作。输出驱动器116包括联接到显示设备118的加速处理设备(“APD”)116。APD从处理器102接受计算命令和图形渲染命令,处理这些计算命令和图形渲染命令,并将像素输出提供给显示设备118进行显示。如下文所详述,APD 116包括根据单指令多数据(“SIMD”)范式来执行计算的一个或多个并行处理单元。因此,尽管这里将各种功能描述为由APD 116执行或与其结合执行,但在各种另选方案中,被描述为由APD 116执行的功能另外地或另选地由具有类似能力的其他计算设备执行,该其他计算设备不由主机处理器(例如,处理器102)驱动并且向显示设备118提供图形输出。例如,可以设想根据SIMD范式执行处理任务的任何处理系统都可执行本文所述的功能。另选地,设想不根据SIMD范式执行处理任务的计算系统执行本文所述的功能。
图2是设备100的框图,示出了涉及在APD 116上执行处理任务的附加细节。处理器102在系统存储器104中保持一个或多个控制逻辑模块以供处理器102执行。控制逻辑模块包括操作系统120、内核模式驱动器122和应用程序126。这些控制逻辑模块控制处理器102和APD 116的操作的各种特征。例如,操作系统120直接与硬件通信并为在处理器102上执行的其他软件提供到硬件的接口。内核模式驱动器122通过例如向在处理器102上执行的软件(例如,应用程序126)提供应用编程接口(“API”)来控制APD 116的操作,以访问APD 116的各种功能。内核模式驱动器122还包括即时编译器,该即时编译器编译程序以供APD 116的处理部件(诸如下文所详述的SIMD单元138)执行。
APD 116执行用于所选功能的命令和程序,诸如可适于并行处理的图形操作和非图形操作。APD 116可用于执行图形流水线操作,诸如像素操作、几何计算和基于从处理器102接收的命令将图像呈现给显示设备118。APD 116还基于从处理器102接收的命令来执行与图形操作不直接相关的计算处理操作,诸如与视频、物理模拟、计算流体动力学或其他任务相关的操作。
APD 116包括计算单元132,该计算单元包括根据SIMD范式以并行方式在处理器102的请求下执行操作的一个或多个SIMD单元138。SIMD范式是这样一种范式,其中多个处理元件共用单个程序控制流单元和程序计数器并由此执行相同的程序,但能够执行具有不同数据的该程序。在一个示例中,每个SIMD单元138包括十六个通道,其中每个通道与SIMD单元138中的其他通道同时执行相同的指令,但可执行具有不同数据的该指令。如果不是所有通道都需要执行给定指令,则可通过预测来关闭通道。还可使用预测来执行具有发散控制流的程序。更具体地,对于具有条件分支或其中控制流基于由单个通道执行的计算的其他指令的程序,预测对应于当前未被执行的控制流路径的通道,并且不同控制流路径的串行执行可实现任意控制流。
计算单元132中的基本执行单元是工作项。每个工作项表示要在特定通道中并行执行的程序的单个实例化。可在单个SIMD处理单元138上作为“波前”同时执行工作项。一个或多个波前包括在一个“工作组”中,该“工作组”包括被指定执行相同程序的工作项的集合。可通过执行构成工作组的波前中的每一者来执行工作组。在另选方案中,波前在单个SIMD单元138上顺序地执行,或在不同SIMD单元138上部分地或完全地并行执行。波前可被视为可在单个SIMD单元138上同时执行的工作项的最大集合。因此,如果从处理器102接收的命令指示特定程序要被并行化到该程序不能在单个SIMD单元138上同时执行的程度,则该程序被划分成在两个或多个SIMD单元138上并行化或在同一SIMD单元138上串行化(或根据需要并行化和串行化)的波前。调度器136执行涉及调度不同计算单元132和SIMD单元138上的各种波前的操作。
由计算单元132提供的并行性适合图形相关操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些实例中,接受来自处理器102的图形处理命令的图形流水线134将计算任务提供给计算单元132以供并行执行。
计算单元132还用于执行不涉及图形或不作为图形流水线134的“正常”操作(例如,所执行的用以补充针对图形流水线134的操作执行的处理的自定义操作)的一部分而执行的计算任务。在处理器102上执行的应用程序126或其他软件将定义此类计算任务的程序发送到APD 116以供执行。
APD 116被配置为通过执行多个功能来实现本公开的特征。例如,APD 116被配置为经由用户模式驱动器200接收图像(即,帧)、将图像划分为多个图块、接收子通道命令,通过以与子通道命令被存储并被发布到处理器的顺序不同的顺序执行子通道来交错多个格的相同子通道,通过跳过对子通道的执行使得以子通道命令被存储并被发布到处理器的相同顺序执行子通道来交错多个格的相同子通道,在渲染帧之前以每帧为基础或以多帧为基础来确定交错模式和多个格的经交错的相同子通道的数量。
图3是示出图2所示的图形处理流水线134的附加细节的框图。图形处理流水线134包括各自执行特定功能的阶段。这些阶段表示图形处理流水线134的功能的细分。每一阶段部分或全部实现为在可编程处理单元202中执行的着色器程序,或部分或全部实现为处于可编程处理单元202外部且功能固定的不可编程硬件。
阶段302至313表示图形处理流水线134的前端几何处理部分。阶段314至318表示图形处理流水线134的后端像素处理部分。
输入汇编器阶段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执行各种不同类型的操作,包括诸如以下操作:点sprint扩展、动态粒子系统操作、毛皮-鳍生成、阴影体积生成、单通道渲染到立方图、逐图元材料交换和逐图元材料设置。在一些实例中,在可编程处理单元202上执行的着色器程序执行了几何着色器阶段312的操作。
分格器阶段313是前端处理的最后阶段。分格器阶段执行粗略光栅化以确定帧(或图像)的图块(或格)是否与图元重叠。例如,分格器阶段包括可见性检查(即,可见性通道)以及针对被确定为处于每个图块中的图元的图块行走。由固定功能硬件来执行分格器阶段313。
如上文所描述,阶段314至318表示图形处理流水线134的后端处理。光栅化器阶段314接受上游生成的简单图元并将其光栅化。光栅化包括确定哪些屏幕像素(或子像素样本)被特定图元覆盖。例如,光栅化器阶段314将图元(例如,三角形)转换成屏幕空间像素,从而测试哪个像素被图元覆盖。由固定功能硬件来执行光栅化。
基于上游生成的图元和光栅化的结果,像素着色器阶段316计算屏幕像素的输出值。像素着色器阶段316可应用来自纹理存储器中的纹理。由在可编程处理单元202上执行的着色器程序来执行像素着色器阶段316的操作。
输出合并器阶段318接受来自像素着色器阶段316的输出并且合并这些输出,从而执行诸如z测试和α混合等操作,以确定屏幕像素的最终颜色。
定义了纹理的纹理数据由纹理单元320进行存储和/或访问。纹理是在图形处理流水线134中的各个点处所用的位图图像。例如,在一些实例中,像素着色器阶段316将纹理应用于像素,以提高表观渲染复杂性(例如,以提供更“逼真”的外观)而不增加待渲染的顶点的数目。
在一些实例中,顶点着色器阶段304使用来自纹理单元320的纹理数据来修改图元,以通过(例如)创建或修改顶点来增加复杂性从而提高美观性。在一个实例中,顶点着色器阶段304使用存储在纹理单元320中的高度图来修改顶点的位移。此类型的技术可用于:例如,通过修改用于渲染水的顶点的位置和数目,生成与仅将纹理用于像素着色器阶段316相比,看起来更逼真的水。在一些实例中,几何着色器阶段312访问纹理单元320中的纹理数据。
图4是图示可实现本公开的一个或多个特征的图2所示的APD 116的示例部件的框图。如图4所示,APD 116包括计算单元132,每个计算单元具有L1高速缓存。每个计算单元与经由固定功能硬件实现的渲染后端(RB)通信。由子通道(例如,图5所示的子通道0、子通道1、子通道2)的执行产生的输出数据被存储在RB高速缓存中。来自先前排序的子通道的输出数据从RB高速缓存中被清除并被提供到存储器的另一部分,诸如图4所示的L2高速缓存406,并且该数据由后续排序的子通道读取以供执行。
图5是根据示例的图示不同渲染子通道的排序的图形处理流水线的一部分的图。帧渲染包括阴影渲染502、渲染通道504和后处理506。出于简化说明的目的,图5所示的示例中的渲染通道504包括三个子通道,即几何缓存(G缓存)渲染子通道(即,子通道0)、第一照明(灯1)子通道(即,子通道1)和第二照明子通道(即,子通道2)。图5所示的子通道的数量和子通道的类型只是示例。可使用不同于图5所示的子通道的数量和子通道的类型的不同数量的子通道和不同类型的子通道来实现本公开的特征。
如上所述,在命令缓存中后续排序的子通道(例如,图5中的子通道1)可以开始执行之前(即,在后续排序的子通道可以开始任何工作之前),命令缓存中先前排序的子通道(例如,图5中的子通道0)必须完成执行(即,从高速缓存中清除输出数据并且将该数据存储在存储器的另一部分中)。因此,当子通道1必须等待子通道0完成时,在处理流水线中引入开销(例如,等待时间)。此外,在此等待周期期间,处理器闲置直到子通道0完成为止,从而导致流水线中的低效率和增加的帧等待时间。图6示出图示实现使连续格的子通道交错的示例的性能益处的时序图。特别地,图6图示在不交错的情况下执行连续格的两个不同子通道与通过交错连续格的两个不同子通道而执行之间的性能益处(例如,减少的等待时间)。为了简化说明,在图6中图示两个子通道和两个格。可以使用多于两个子通道和多于两个格来实现本公开的特征。
图6顶部处的时序图图示两个连续格(即,格1和格2)的两个不同子通道(即,通道1和通道2)在不交错的情况下的执行。图6底部处的时序图图示根据本公开的特征使格1和2的两个不同子通道(即,通道1和通道2)交错。出于简化说明的目的,图6所示的示例子通道中的每一者包括处理流水线的3个阶段(即,顶点着色器(VS)阶段、像素着色器(PS)阶段和RB阶段)。然而,流水线可包括附加或其他阶段,诸如例如图3所示的流水线134中所示的阶段。
如图6的顶部处所示,针对格1执行第一子通道通道1(即,第一类型的子通道,诸如图5中的几何缓存渲染子通道0),接着执行格1的第二子通道通道2(即,不同的第二类型的子通道,诸如图5中的第一照明子通道1)。然后,针对格2执行第一子通道通道1,接着针对格2执行第二子通道通道2。
在图6中从通道1的RB阶段延伸到通道2的PS阶段的弯曲箭头指示对后续排序的子通道的PS阶段的执行取决于由先前排序的子通道中的RB阶段和正被清除(即,使其无效(INV))的高速缓存(例如,RB高速缓存)产生的数据。即,如图6的顶部所示,后续排序的子通道(通道2)必须等待先前排序的子通道(通道1)完成执行,从而在流水线中产生等待时间。此外,在此等待周期期间,处理器闲置,这是资源的浪费。
然而,如图6的底部所示,对格2的先前排序的子通道(即,通道1)的执行在对格1的相同先前排序的子通道(即,通道1)的执行与对格1的后续排序的子通道(通道2)的执行之间交错。因此,通过对格2的先前排序的子通道(即,通道1)的执行来利用在图6的顶部不执行子通道并且处理器闲置的时间段,从而减少等待时间并提高总体性能。此外,如图6的底部所示,通过使对格1的先前排序的子通道(即,通道1)的执行的一部分与对格2的先前排序的子通道(即,通道1)的执行的一部分(在时间上)重叠来进一步减少等待时间。
图7是图示在图6的底部所示,但使用针对3个格的3个通道来实现的相同程序的时序图。出于简化说明的目的,格和子通道(在图6和图7中示出为通道)的数量只是示例。可以针对任何数量的格和任何数量的子通道来实现本申请的特征。在图7所示的示例中,第一子通道(通道1)、第二子通道(通道2)和第三子通道(通道3)中的每一者彼此不同。例如,通道1对应于几何缓存渲染子通道,通道2对应于第一照明子通道,并且通道3对应于第二照明子通道。尽管为了简化说明而未示出,但可以理解,可以针对附加子通道(即,多于三个子通道)来实现本公开的特征(包括关于图7所描述的那些特征)。
如图6的底部处的时序图和图7的时序图两者中所示,对格2的先前排序的第一子通道(即,通道1)的执行在对格1的相同先前排序的第一子通道(即,通道1)的执行与对格1的后续排序的第二子通道(即,通道2)的执行之间交错。此外,如图7的时序图所示,对格2的后续排序的第二子通道(即,通道2)的执行在对格1的相同后续排序的第二子通道(即,通道2)的执行与对格1的下一后续排序的第三子通道(通道3)的执行之间交错。因此,利用如果不使用交错则处理器原本将闲置的时间段来执行格2的通道2,并且进一步减少等待时间并提高总体性能。此外,如图6的底部所示,通过使对格1的通道2的执行的一部分与对格2的通道2的执行的一部分(在时间上)重叠来进一步减少等待时间。如可以理解,针对帧的每个附加通道并且针对多个帧减少额外的等待时间,从而显著提高总体性能。
图8至图11图示可以根据本申请的特征实现的不同交错模式的示例。出于简化说明的目的,图8至图11中示出的格的数量、子通道(在图8至图10中示出为通道,并且在图11中示出为子通道)的数量和命令的数量只是示例。可以使用任何数量的命令针对任何数量的格和任何数量的子通道来实现本申请的特征。
图8是图示使连续格的子通道交错的第一示例模式的图。参考图8,经由用户模式驱动器200发布到APD 115(例如,GPU)的调度器136的命令(即,针对通道1的命令、针对通道2的命令和针对通道3的命令)以待执行的特定顺序存储在命令缓存802中。当渲染图块(或格)时,相同图块(或格)的不同子通道以命令缓存802中指定的顺序执行,使得相同图块的后续排序的子通道可以读取由先前排序的子通道的执行产生的数据。
如图8所示,在格1的子通道2正在等待格1的子通道1完成执行的时间段期间,对格2的子通道1的执行在对格1的子通道1的执行与对格1的子通道2的执行之间交错。此外,在格1的子通道3正在等待格1的子通道2完成执行的时间段期间,对格2的子通道2的执行在对格1的子通道2的执行与对格1的子通道3的执行之间交错。如可以理解,此过程可以继续用于附加的通道和格(图8中未示出)。
在图8所示的示例交错模式中,子通道的执行顺序与在命令缓存802中指定的顺序不同。即,在命令缓存802中指定的顺序是子通道1(通道1)、子通道2(通道2)并且然后是子通道3(通道3),但上述交错致使对子通道1至3的执行与在命令缓存802中指定的顺序不同(例如,针对格1的子通道1,接着是针对格2的子通道1并且然后是针对格1的子通道2)。
因为相同格的后续排序的子通道正在等待的这些时间段用于执行不同图块的一个或多个子通道,所以总等待时间减少。此外,因为处理器在相同图块的后续排序的子通道正在等待的此时间段期间执行不同图块的一个或多个子通道,所以处理器在此时间段期间不闲置,从而导致对资源的更有效使用。
图9和图10是图示使连续格的子通道交错的第二示例模式的图。在第二示例模式中,通过执行子通道作为跳过操作使得以在命令缓存802中指定的相同顺序执行子通道来交错连续格的子通道。
在图9中,每个子通道(即,子通道1、子通道2和子通道3)的执行顺序以矩阵形式示出(并且与图9顶部的命令缓存802中的命令竖直对准),以更好地图示以命令缓存802中指定的相同顺序执行子通道。执行子通道和跳过的顺序由对应数字1至12指示。例如,执行格1的子通道1,执行格1的子通道2和3作为跳过执行,并且然后执行格2的子通道1。
在图10中,随时间水平地示出了每个子通道(即,子通道1、子通道2和子通道3)的执行顺序,以更好地图示对子通道的交错。在图9至图11所示的第二示例模式中,存在由跳过所引起的一些等待时间。然而,如图9和图10所示,跳过(跳过操作)的数量随时间而减少到没有跳过。
图11是图示根据本公开的特征的分块图像渲染的示例方法1100的流程图。如图11中的框1102所示,方法1100包括将待渲染的帧划分为多个图块。待渲染的帧可以被分割为任何数量的图块。渲染帧的每个图块,然后渲染帧的另一图块。例如,如果将帧分割为四个相等图块(即,左上象限、右上象限、左下象限和右下象限),则渲染第一图块(例如,左上象限),然后前进到渲染接下来的图块中的一个图块。然后,在前进到渲染最后两个图块中的一个图块之前渲染其他图块中的一个图块(例如,右上象限)等等,直到渲染帧的图块中的每个图块为止。
如图11中的框1104所示,方法1100包括接收执行图块的多个子通道的命令。例如,执行多个子通道(即,图7和图8所示的通道1、通道2和通道3)的命令经由命令缓存802(图8和图9所示)而被接收,经由用户模式驱动器200发布到APD 115(例如,GPU)的调度器136并由该调度器接收。该命令以待执行的特定顺序存储在命令缓存802中。当渲染图块(或格)时,相同图块(或格)的不同子通道以命令缓存802中指定的顺序执行,使得相同图块的后续排序的子通道可以读取由先前排序的子通道的执行产生的数据。
如图11中的框1106所示,方法1100包括交错对帧的多个图块的相同子通道(例如,第一图块的子通道和第二图块的相同子通道)的执行。例如,在对第一图块的先前排序的第一子通道的执行与对第一图块的后续排序的第二子通道的执行之间执行第二图块的先前排序的(例如,命令缓存802中的顺序)第一子通道。
例如,通过以与执行多个子通道的命令被存储和发布的顺序不同的顺序执行多个子通道来交错对多个图块的相同子通道的执行。另选地,通过跳过对一个或多个子通道的执行使得以执行多个子通道的命令被存储和发布的相同顺序执行多个子通道,来交错对多个图块的相同子通道的执行。
应当理解,基于本文的公开内容,可能有许多变化。尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。
图中和/或本文所述的各种功能单元(包括但不限于处理器102、输入驱动器112、输入设备108、输出驱动器114、输出设备110、APD 116、调度器136、图形处理流水线134、计算单元132和SIMD单元138)可被实现为通用计算机、处理器或处理器核,或者实现为存储在非暂态计算机可读介质或另一介质中的可由通用计算机、处理器或处理器核执行的程序、软件或固件。所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路,任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程而制造此类处理器。这种处理的结果可以是掩码,然后在半导体制造过程中使用这些掩码来制造实现本公开的特征的处理器。
本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(例如内部硬盘和可移动磁盘)、磁光介质和光学介质(例如CD-ROM磁盘)以及数字多功能磁盘(DVD)。
Claims (20)
1.一种分块图像渲染的方法,包括:
将待渲染的帧划分为多个图块;
接收执行所述图块的多个子通道的命令;以及
交错对所述帧的多个图块的相同子通道的执行。
2.根据权利要求1所述的方法,其中交错对多个图块的相同子通道的执行包括在对第一图块的先前排序的第一子通道的执行与对所述第一图块的后续排序的第二子通道的执行之间执行第二图块的所述先前排序的第一子通道。
3.根据权利要求1所述的方法,其中所述方法还包括通过以与执行所述多个子通道的所述命令被存储和发布的顺序不同的顺序执行所述多个子通道,来交错对多个图块的相同子通道的所述执行。
4.根据权利要求1所述的方法,其中所述方法还包括通过执行一个或多个子通道作为跳过操作使得以执行所述多个子通道的所述命令被存储和发布的相同顺序执行所述多个子通道,来交错对多个图块的相同子通道的所述执行。
5.根据权利要求2所述的方法,其中在渲染帧之前以每帧为基础来确定交错。
6.根据权利要求1所述的方法,其中对第一图块的先前排序的第一子通道的一部分的执行与对第二图块的所述先前排序的子通道的一部分的执行在时间上重叠。
7.根据权利要求6所述的方法,其中所述先前排序的第一子通道的所述部分是所述先前排序的第一子通道的顶点着色器阶段、像素着色器阶段和渲染后端阶段中的一者,并且所述第二图块的所述先前排序的子通道的所述部分是所述顶点着色器阶段、所述像素着色器阶段和所述渲染后端阶段中的另一者。
8.一种用于分块图像渲染的处理设备,包括:
存储器;和
处理器,所述处理器被配置为:
将待渲染的帧划分为多个图块;
接收执行所述图块的多个子通道的命令;以及
交错对所述帧的多个图块的相同子通道的执行。
9.根据权利要求8所述的处理设备,还包括用于显示由所述处理器渲染的图像的显示设备。
10.根据权利要求8所述的处理设备,其中所述处理器被配置为:通过在对第一图块的先前排序的第一子通道的执行与对所述第一图块的后续排序的第二子通道的执行之间执行第二图块的所述先前排序的第一子通道,来交错对多个图块的相同子通道的执行。
11.根据权利要求8所述的处理设备,其中所述处理器被配置为:通过以与执行所述多个子通道的所述命令被存储和发布的顺序不同的顺序执行所述多个子通道,来交错对多个图块的相同子通道的执行。
12.根据权利要求8所述的处理设备,其中所述处理器被配置为:通过执行一个或多个子通道作为跳过操作使得以执行所述多个子通道的所述命令被存储和发布的相同顺序执行所述多个子通道,来交错对多个图块的相同子通道的执行。
13.根据权利要求8所述的处理设备,其中所述命令以所述命令将被执行的顺序存储在命令缓存中。
14.根据权利要求13所述的处理设备,还包括调度器,并且所述命令以所述命令存储在所述命令缓存中的顺序发布到所述调度器。
15.根据权利要求13所述的处理设备,其中所述命令经由用户模式驱动器发布到所述命令缓存。
16.根据权利要求8所述的处理设备,其中在渲染帧之前以每帧为基础来确定交错。
17.根据权利要求8所述的处理设备,其中对第一图块的先前排序的第一子通道的一部分的执行与对第二图块的所述先前排序的子通道的一部分的执行在时间上重叠。
18.根据权利要求14所述的处理设备,其中所述先前排序的第一子通道的所述部分是所述先前排序的第一子通道的顶点着色器阶段、像素着色器阶段和渲染后端阶段中的一者,并且所述第二图块的所述先前排序的子通道的所述部分是所述顶点着色器阶段、所述像素着色器阶段和所述渲染后端阶段中的另一者。
19.一种非暂态计算机可读介质,包括用于使计算机执行分块图像渲染的方法的指令,所述指令包括:
将待渲染的帧划分为多个图块;
接收执行所述图块的多个子通道的命令;以及
交错对所述帧的多个图块的相同子通道的执行。
20.根据权利要求19所述的计算机可读介质,其中交错对多个图块的相同子通道的执行包括在对第一图块的先前排序的第一子通道的执行与对所述第一图块的后续排序的第二子通道的执行之间执行第二图块的所述先前排序的第一子通道。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163166956P | 2021-03-26 | 2021-03-26 | |
US63/166,956 | 2021-03-26 | ||
US17/565,394 | 2021-12-29 | ||
US17/565,394 US11880924B2 (en) | 2021-03-26 | 2021-12-29 | Synchronization free cross pass binning through subpass interleaving |
PCT/US2022/018794 WO2022203833A1 (en) | 2021-03-26 | 2022-03-03 | Synchronization free cross pass binning through subpass interleaving |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117063202A true CN117063202A (zh) | 2023-11-14 |
Family
ID=83363585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280023067.XA Pending CN117063202A (zh) | 2021-03-26 | 2022-03-03 | 通过子通道交错实现无同步交叉通道分格 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11880924B2 (zh) |
EP (1) | EP4315257A1 (zh) |
JP (1) | JP2024510626A (zh) |
KR (1) | KR20230162023A (zh) |
CN (1) | CN117063202A (zh) |
WO (1) | WO2022203833A1 (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0922126D0 (en) * | 2009-12-17 | 2010-02-03 | Advanced Risc Mach Ltd | Graphics processing systems |
US8902228B2 (en) * | 2011-09-19 | 2014-12-02 | Qualcomm Incorporated | Optimizing resolve performance with tiling graphics architectures |
US9799088B2 (en) * | 2014-08-21 | 2017-10-24 | Qualcomm Incorporated | Render target command reordering in graphics processing |
US10607390B2 (en) * | 2016-12-14 | 2020-03-31 | Nvidia Corporation | Techniques for tiling compute work with graphics work |
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 |
US10504272B2 (en) | 2017-06-13 | 2019-12-10 | Intel Corporation | Apparatus and method for optimizing time/space warp for virtual reality using dynamic tiling and dirty tile marking |
GB201713052D0 (en) | 2017-08-15 | 2017-09-27 | Imagination Tech Ltd | Single pass rendering for head mounted displays |
US10699475B1 (en) | 2018-12-28 | 2020-06-30 | Intel Corporation | Multi-pass apparatus and method for early termination of graphics shading |
US20220036632A1 (en) * | 2020-08-03 | 2022-02-03 | Samsung Electronics Co., Ltd. | Post-processing in a memory-system efficient manner |
CN112381918A (zh) * | 2020-12-03 | 2021-02-19 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备和存储介质 |
-
2021
- 2021-12-29 US US17/565,394 patent/US11880924B2/en active Active
-
2022
- 2022-03-03 KR KR1020237036342A patent/KR20230162023A/ko unknown
- 2022-03-03 CN CN202280023067.XA patent/CN117063202A/zh active Pending
- 2022-03-03 EP EP22776301.8A patent/EP4315257A1/en active Pending
- 2022-03-03 WO PCT/US2022/018794 patent/WO2022203833A1/en active Application Filing
- 2022-03-03 JP JP2023556924A patent/JP2024510626A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220309729A1 (en) | 2022-09-29 |
KR20230162023A (ko) | 2023-11-28 |
EP4315257A1 (en) | 2024-02-07 |
JP2024510626A (ja) | 2024-03-08 |
US11880924B2 (en) | 2024-01-23 |
WO2022203833A1 (en) | 2022-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109690630B (zh) | 一种执行着色器程序的方法和装置 | |
CN112189215B (zh) | 用于在图形流水线中实现存储器使用减少的编译器辅助技术 | |
US20180211434A1 (en) | Stereo rendering | |
WO2018140223A1 (en) | Stereo rendering | |
CN115552470A (zh) | 数据压缩的方法和装置 | |
US11741653B2 (en) | Overlapping visibility and render passes for same frame | |
US11972518B2 (en) | Hybrid binning | |
CN117063202A (zh) | 通过子通道交错实现无同步交叉通道分格 | |
US10832465B2 (en) | Use of workgroups in pixel shader | |
US20240104685A1 (en) | Device and method of implementing subpass interleaving of tiled image rendering | |
US20220319091A1 (en) | Post-depth visibility collection with two level binning | |
US20210398349A1 (en) | Fine grained replay control in binning hardware | |
US11900499B2 (en) | Iterative indirect command buffers | |
US20240087078A1 (en) | Two-level primitive batch binning with hardware state compression | |
US20230186523A1 (en) | Method and system for integrating compression | |
KR20220157401A (ko) | 부분적으로 상주하는 텍스처에 대한 샘플링 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |