CN119816864A - 用于图形处理的快速msaa技术 - Google Patents
用于图形处理的快速msaa技术 Download PDFInfo
- Publication number
- CN119816864A CN119816864A CN202280099730.4A CN202280099730A CN119816864A CN 119816864 A CN119816864 A CN 119816864A CN 202280099730 A CN202280099730 A CN 202280099730A CN 119816864 A CN119816864 A CN 119816864A
- Authority
- CN
- China
- Prior art keywords
- pixels
- current
- depth
- color value
- value
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/62—Semi-transparency
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本文所呈现的各方面涉及用于图形处理的方法和设备,包括装置,例如GPU或CPU。该装置可获得包括与至少一个当前帧相关联的像素的图元集合。该装置还可配置与每个像素相关联的覆盖掩码,其中每个像素对应于样本。此外,该装置可计算与每个像素相关联的颜色数据或深度数据,其中该颜色数据包括当前颜色值并且该深度数据包括当前深度值。该装置还可基于该至少一个覆盖掩码来更新每个像素的该当前颜色值或该当前深度值。该装置还可将该已更新当前颜色值与每个像素的先前颜色值进行混合。
Description
技术领域
本公开总体上涉及处理系统,并且更具体地,涉及用于图形处理的一种或多种技术。
背景技术
计算设备通常执行图形和/或显示处理(例如,利用图形处理单元(GPU)、中央处理单元(CPU)、显示处理器等)以渲染和显示视觉内容。此类计算设备可包括例如计算机工作站、移动电话(诸如智能电话)、嵌入式系统、个人计算机、平板计算机和视频游戏控制台。GPU被配置为执行图形处理流水线,该图形处理流水线包括一个或多个处理级,这些处理级一起操作以执行图形处理命令并输出帧。中央处理单元(CPU)可通过向GPU发出一个或多个图形处理命令来控制该GPU的操作。现代CPU通常能够并发地执行多个应用,每个应用在执行期间可能需要利用GPU。显示处理器被配置为将从CPU接收的数字信息转换成模拟值,并且可向显示面板发出命令以显示视觉内容。提供用于在显示器上进行视觉呈现的内容的设备可利用GPU和/或显示处理器。
设备的GPU可被配置为执行在图形处理流水线中的过程。此外,显示处理器或显示处理单元(DPU)可被配置为执行显示处理的过程。然而,随着无线通信和更小的手持设备的出现,对改善的图形或显示处理的需求不断增加。
发明内容
下文呈现了一个或多个方面的简化综述,以便提供对这些方面的基本理解。该发明内容不是对所有预期方面的广泛概述,并且既不旨在标识所有方面的关键或重要元素,也不旨在描述任何或所有方面的范围。其唯一目的是以简化形式呈现一个或多个方面的一些概念,作为稍后呈现的更详细的描述的前序。
在本公开的一个方面,提供了一种方法、计算机可读介质和装置。该装置可以是图形处理单元(GPU)、中央处理单元(CPU)或可以执行图形处理的任何装置。该装置可获得与场景中的至少一个当前帧相关联的图元集合,其中该图元集合中的每一者与该至少一个当前帧中的多个像素中的至少一个像素相关联。该装置还可配置与该多个像素中的每个像素相关联的至少一个覆盖掩码,其中该多个像素中的每一者对应于至少一个样本,其中该至少一个覆盖掩码基于针对该多个像素中的每一者的该至少一个样本。此外,该装置可计算与该多个像素中的每一者相关联的颜色数据或深度数据中的至少一者,其中该颜色数据包括该多个像素中的每一者的当前颜色值,其中该深度数据包括该多个像素中的每一者的当前深度值。该装置还可发送对与该多个像素中的每一者相关联的该颜色数据或该深度数据中的至少一者的指示,其中在计算与该多个像素中的每一者相关联的该颜色数据或该深度数据中的至少一者之后发送该指示。此外,该装置可基于该至少一个覆盖掩码来更新该多个像素中的每一者的该当前颜色值或该当前深度值中的至少一者。该装置还可在该已更新当前颜色值与该多个像素中的每一者的该先前颜色值混合之前针对该多个像素中的每一者执行深度测试。另外,该装置可基于该至少一个覆盖掩码将该多个像素中的每一者的该已更新当前颜色值与该多个像素中的每一者的先前颜色值进行混合,其中该已更新当前颜色值与该场景的至少一个当前绘制相关联,并且其中该先前颜色值与该场景的至少一个先前绘制相关联。该装置还可在该已更新当前颜色值与该多个像素中的每一者的该先前颜色值混合之后,存储该多个像素中的每一者的该已更新当前颜色值或该已更新当前深度值中的至少一者。
在附图和以下描述中阐述了本公开的一个或多个示例的细节。本公开的其他特征、目的和优势将根据说明书和附图以及权利要求而变得显而易见。
附图说明
图1是例示示例内容生成系统的框图。
图2例示了示例图形处理单元(GPU)。
图3例示了根据本公开的一种或多种技术的示例图像或表面。
图4是例示用于图形处理的示例帧的图表。
图5是例示用于图形处理的示例多样本抗锯齿(MSAA)工作流程的示图。
图6是例示用于图形处理的示例MSAA工作流程的示图。
图7是例示用于图形处理的示例图的示图。
图8是例示GPU组件之间的示例通信的通信流程图。
图9是图形处理的示例方法的流程图。
图10是图形处理的示例方法的流程图。
具体实施方式
一些类型的GPU可通过对离散像素位置处的对象进行采样来渲染多边形,这可能在对象的边缘上引起锯齿效应。例如,当在屏幕上渲染对象时,可能存在沿着模型边缘的锯齿状的锯状图案,其被称为锯齿。存在被称为抗锯齿技术的相当多的技术,其通过产生更平滑的边缘来对抗这种锯齿行为。也就是说,抗锯齿是用于通过使所显示的像素边缘平滑来处置像素显示问题(诸如粗糙或锯齿状边缘)的方法。多样本抗锯齿(MSAA)是用于使像素边缘平滑的多种抗锯齿技术中的一种。这种抗锯齿技术可依赖于在多个位置处对相同像素进行采样(例如,每像素2、4、8或16个样本)并且然后确定像素在对象内部或外部的百分比。该信息稍后可用于对像素颜色进行混合以使粗糙像素边缘平滑。为了使用上述抗锯齿技术,每个像素可能需要多达四倍的较多存储(例如,在4×MSAA的情况下)以及较多计算开销(例如,大约10%的较多开销)。这可导致总体基准性能的下降(例如,25%-30%的下降)。此外,该技术可能限制用户应用可以用于渲染具有多个光源的场景的延迟照明算法,因为在解析最终帧缓冲器时,采样水平信息可能丢失。此外,一些游戏开发人员可提供基于到边缘距离的算法作为MSAA的替代方案,但是它们可能是基于对像素进行后处理以检测边缘的软件具体实施,或者可能不能处置子像素图元。在一些实例中,基于图块的GPU可以能够通过将多样本数据存储在内部高速存储器中并且在渲染已完成之后写出到外部存储器时对数据进行下采样来执行多样本渲染。该方法可节省带宽和/或存储空间,因为可不将每样本数据写出到外部存储器。此外,该类型的方法可广泛用于某些类型的渲染中,诸如移动游戏渲染。在一些方面,由于多样本数据可存储在GPU存储器(GMEM)中,因此GMEM可用于渲染整个帧的较小部分。与MSAA相关联的帧的箱计数可大于没有MSAA的箱计数,这可导致增加的分箱开销。例如,对于相同渲染目标(例如,2192×954红色(R)绿色(G)蓝色(B)α(A)(RGBA)8888渲染目标),非MSAA可利用12个箱,而4×MSAA可利用48个箱。在渲染已完成之后将GMEM数据写出到外部存储器时,可能需要下采样。如果存在格式限制,则另一块可用于下采样,这可能比三维(3D)解析引擎花费更多的时间。对于一些格式,与1×MSAA相比,4×MSAA可导致开销增加(例如,28%或70%的开销增加)。实际上,利用某些类型的MSAA可导致浪费GPU内部资源(即,对应于被多采样的GPU中的所有数据),但也仅导致小边缘质量改进。本公开的各方面可利用具有改进的边缘质量的MSAA。例如,本公开的各方面可利用具有增加的性能益处的MSAA。另外,在一些实例中,本公开的各方面可利用具有增加的处理速度的MSAA。通过这样做,本文所呈现的各方面可优化MSAA解决方案的性能益处。此外,本文所呈现的各方面可减小与利用MSAA相关联的存储器带宽和开销的量。
系统、装置、计算机程序产品和方法的各个方面将在下文中参考附图进行更全面的描述。然而,本公开内容可以以许多不同的形式来体现,并且不应当被解释为限于贯穿本公开内容所呈现的任何特定的结构或功能。相反,提供这些方面使得本公开将是周密且完整的,并且将向本领域技术人员充分传达本公开的范围。基于本文的教导内容,本领域技术人员应当理解,本公开的范围旨在覆盖本文公开的系统、装置、计算机程序产品和方法的任何方面,无论其是独立于本公开的其他方面实现的还是与本公开的其他方面组合实现的。例如,可使用本文所陈述的任何数量的方面来实现装置或实践方法。此外,本公开的范围旨在覆盖使用除了本文所陈述的公开内容的各个方面之外或不同于本文所陈述的公开内容的各个方面的其他结构、功能性、或者结构和功能性来实践的这种装置或方法。本文中所公开的任何方面可通过权利要求的一个或多个元素来体现。
尽管本文中描述了各个方面,但是这些方面的许多变型和置换落在本公开的范围内。尽管提及了本公开的各方面的一些潜在益处和优势,但是本公开的范围并不旨在限于特定的益处、用途或目标。相反,本公开的各方面旨在广泛地适用于不同的无线技术、系统配置、网络和发送协议,其中的一些是通过示例的方式在附图和下文的描述中例示的。具体实施方式和附图仅仅例示本公开而非限制本公开,本公开的范围由所附权利要求及其等效技术方案来定义。
参考各种装置和方法呈现了若干个方面。这些装置和方法是通过各种框、组件、电路、过程、算法等(被统称为“元素”)在以下具体实施方式中描述并且在附图中例示的。可以使用电子硬件、计算机软件或者它们的任何组合来实现这些元素。此类元素是作为硬件还是软件来实现取决于特定的应用和加诸整体系统的设计约束。
例如,元素或元素的任何部分或元素的任何组合可被实现为包括一个或多个处理器(其还可被称为处理单元)的“处理系统”。处理器的示例包括微处理器、微控制器、图形处理单元(GPU)、通用GPU(GPGPU)、中央处理单元(CPU)、应用处理器、数字信号处理器(DSP)、精简指令集计算(RISC)处理器、片上系统(SOC)、基带处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门控逻辑器件、分立硬件电路和被配置为执行本公开中描述的各种功能的其他合适硬件。处理系统中的一个或多个处理器可执行软件。软件可被宽泛地解释成意为指令、指令集、代码、代码段、程序代码、程序、子程序、软件组件、应用、软件应用、软件包、例程、子例程、对象、可执行文件、执行的线程、规程、函数等,无论其是用软件、固件、中间件、微代码、硬件描述语言还是其他术语来表述皆是如此。术语“应用”可以是指软件。如本文中所描述的,一种或多种技术可以是指被配置为执行一个或多个功能的应用,即软件。在此类示例中,应用可被存储在存储器(例如,处理器的片上存储器、系统存储器或任何其他存储器)上。本文中所描述的硬件(诸如处理器)可被配置为执行应用。例如,应用可被描述为包括代码,该代码在由硬件执行时使该硬件执行本文中所描述的一种或多种技术。作为示例,硬件可从存储器访问代码并执行从存储器访问的代码,以执行本文中所描述的一种或多种技术。在一些示例中,在本公开中标识组件。在此类示例中,组件可以是硬件、软件或它们的组合。各组件可以是单独的组件或单个组件的子组件。
因此,在本文中所描述的一个或多个示例中,所描述的功能可在硬件、软件或它们的任何组合中来实现。如果在软件中实现,则功能可作为一个或多个指令或代码来在计算机可读介质上进行存储或编码。计算机可读介质包括计算机存储介质。存储介质可以是可由计算机访问的任何可用介质。作为示例而非限制,此类计算机可读介质可包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、光盘存储装置、磁盘存储装置、其他磁存储设备、上述类型的计算机可读介质的组合、或能够被用于存储可以被计算机访问的指令或数据结构形式的计算机可执行代码的任何其他介质。
概括而言,本公开描述了如下技术:在单个设备或多个设备中具有图形处理流水线,从而改善对图形内容的渲染以及/或者减少处理单元(即,被配置为执行本文中所描述的一种或多种技术的任何处理单元,诸如GPU)的负载。例如,本公开描述了用于在利用图形处理的任何设备中进行图形处理的技术。贯穿本公开描述了其他示例益处。
如本文所用,术语“内容”的实例可以指“图形内容”、“图像”,反之亦然。不管这些术语是用作形容词、名词还是其他词类,都是如此。在一些示例中,如本文所用,术语“图形内容”可以指由图形处理流水线的一个或多个过程产生的内容。在一些示例中,如本文所用,术语“图形内容”可以指由被配置为执行图形处理的处理单元产生的内容。在一些示例中,如本文所用,术语“图形内容”可以指由图形处理单元产生的内容。
在一些示例中,如本文所用,术语“显示内容”可以指由被配置为执行显示处理的处理单元生成的内容。在一些示例中,如本文所用,术语“显示内容”可以指由显示处理单元生成的内容。可对图形内容进行处理以变成显示内容。例如,图形处理单元可将图形内容(诸如帧)输出到缓冲器(其可以被称为帧缓冲器)。显示处理单元可从缓冲器读取图形内容(诸如一个或多个帧),并在其上执行一个或多个显示处理技术以生成显示内容。例如,显示处理单元可被配置为在一个或多个渲染层上执行合成以生成帧。又如,显示处理单元可被配置为将两个或更多个层合成、共混或以其他方式组合在一起成为单个帧。显示处理单元可被配置为对帧执行缩放,例如放大或缩小。在一些示例中,帧可以指层。在其他示例中,帧可以指已经被共混在一起以形成该帧的两个或更多个层,即,该帧包括两个或更多个层,并且包括两个或更多个层的该帧可以随后被共混。
图1是例示被配置为实现本公开的一种或多种技术的示例内容生成系统100的框图。内容生成系统100包括设备104。设备104可包括用于执行本文所描述的各种功能的一个或多个组件或电路。在一些示例中,设备104的一个或多个组件可以是SOC的组件。设备104可包括被配置为执行本公开的一种或多种技术的一个或多个组件。在所示示例中,设备104可包括处理单元120、内容编码器/解码器122和系统存储器124。在一些方面,设备104可包括数个组件,例如,通信接口126、收发器132、接收器128、发送器130、显示处理器127和一个或多个显示器131。对显示器131的引用可以是指一个或多个显示器131。例如,显示器131可包括单个显示器或多个显示器。显示器131可包括第一显示器和第二显示器。第一显示器可以是左眼显示器,第二显示器可以是右眼显示器。在一些示例中,第一显示器和第二显示器可接收用于在其上呈现的不同帧。在其他示例中,第一显示器和第二显示器可接收用于在其上呈现的相同帧。在进一步的示例中,图形处理的结果可以不在设备上显示,例如,第一显示器和第二显示器可以不接收用于在其上呈现的任何帧。相反,帧或图形处理结果可被传递到另一设备。在一些方面,这种情况被称为分割渲染。
处理单元120可包括内部存储器121。处理单元120可被配置为执行图形处理,诸如在图形处理流水线107中。内容编码器/解码器122可包括内部存储器123。在一些示例中,设备104可包括显示处理器(诸如显示处理器127),以对在由一个或多个显示器131呈现之前由处理单元120生成的一个或多个帧执行一个或多个显示处理技术。显示处理器127可被配置为执行显示处理。例如,显示处理器127可被配置为对由处理单元120生成的一个或多个帧执行一个或多个显示处理技术。一个或多个显示器131可被配置为显示或以其他方式呈现由显示处理器127处理的帧。在一些示例中,一个或多个显示器131可包括以下中的一者或多者:液晶显示器(LCD)、等离子体显示器、有机发光二极管(OLED)显示器、投影显示设备、增强现实显示设备、虚拟现实显示设备、头戴式显示器或任何其他类型的显示设备。
在处理单元120和内容编码器/解码器122外部的存储器(诸如系统存储器124)可以是对于处理单元120和内容编码器/解码器122可访问的。例如,处理单元120和内容编码器/解码器122可被配置为从外部存储器(诸如系统存储器124)读取和/或向外部存储器写入。处理单元120和内容编码器/解码器122可通过总线通信地耦合到系统存储器124。在一些示例中,处理单元120和内容编码器/解码器122可经由该总线或不同连接彼此通信地耦合。
内容编码器/解码器122可被配置为从任何源(诸如系统存储器124和/或通信接口126)接收图形内容。系统存储器124可被配置为存储接收到的已编码或解码的图形内容。内容编码器/解码器122可被配置为以编码像素数据的形式例如从系统存储器124和/或通信接口126接收已编码或解码的图形内容。内容编码器/解码器122可被配置为对任何图形内容进行编码或解码。
内部存储器121或系统存储器124可包括一个或多个易失性或非易失性存储器或存储设备。在一些示例中,内部存储器121或系统存储器124可包括RAM、SRAM、DRAM、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁性数据介质或光学存储介质或任何其他类型的存储器。
根据一些示例,内部存储器121或系统存储器124可以是非暂态存储介质。术语“非暂态”可以指示存储介质不体现在载波或传播信号中。然而,术语“非暂态”不应被解释为意指内部存储器121或系统存储器124是不可移动的或者其内容是静态的。例如,系统存储器124可从设备104移除并移动到另一设备。又如,系统存储器124可能不可从设备104移除。
处理单元120可以是中央处理单元(CPU)、图形处理单元(GPU)、通用GPU(GPGPU)、或可以被配置为执行图形处理的任何其他处理单元。在一些示例中,处理单元120可被集成到设备104的主板中。在一些示例中,处理单元120可存在于安装在设备104的主板中的端口中的显卡上,或者可以其他方式结合到被配置为与设备104互操作的外围设备中。处理单元120可包括一个或多个处理器,诸如一个或多个微处理器、GPU、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、离散逻辑、软件、硬件、固件、其他等效的集成或离散逻辑电路或它们的任何组合。如果技术部分地在软件中实现,则处理单元120可将用于软件的指令存储在合适的非暂态计算机可读存储介质(例如,内部存储器121)中,并且可使用一个或多个处理器执行在硬件中的指令,以执行本公开的技术。上述任一项(包括硬件、软件、硬件和软件的组合等)可被认为是一个或多个处理器。
内容编码器/解码器122可以是被配置为执行内容解码的任何处理单元。在一些示例中,内容编码器/解码器122可被集成到设备104的主板中。内容编码器/解码器122可包括一个或多个处理器,诸如一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、视频处理器、离散逻辑、软件、硬件、固件、其他等效的集成或离散逻辑电路或它们的任何组合。如果技术部分地在软件中实现,则内容编码器/解码器122可以将用于软件的指令存储在合适的非暂态计算机可读存储介质(例如,内部存储器123)中,并且可使用一个或多个处理器执行在硬件中的指令,以执行本公开的技术。上述任一项(包括硬件、软件、硬件和软件的组合等)可被认为是一个或多个处理器。
在一些方面,内容生成系统100可包括通信接口126。通信接口126可包括接收器128和发送器130。接收器128可被配置为执行本文中关于设备104描述的任何接收功能。附加地,接收器128可被配置为从另一设备接收信息,例如眼睛或头部位置信息、渲染命令或定位信息。发送器130可被配置为执行本文中关于设备104描述的任何发送功能。例如,发送器130可被配置为向另一设备发送信息,该信息可包括对内容的请求。接收器128和发送器130可组合成收发器132。在此类示例中,收发器132可被配置为执行本文中关于设备104描述的任何接收功能和/或发送功能。
再次参照图1,在某些方面,处理单元120可包括混合组件198,其被配置为获得与场景中的至少一个当前帧相关联的图元集合,其中该图元集合中的每一者与该至少一个当前帧中的多个像素中的至少一个像素相关联。混合组件198还可被配置为配置与该多个像素中的每个像素相关联的至少一个覆盖掩码,其中该多个像素中的每一者对应于至少一个样本,其中该至少一个覆盖掩码基于针对该多个像素中的每一者的该至少一个样本。混合组件198还可被配置为计算与该多个像素中的每一者相关联的颜色数据或深度数据中的至少一者,其中该颜色数据包括该多个像素中的每一者的当前颜色值,其中该深度数据包括该多个像素中的每一者的当前深度值。混合组件198还可被配置为发送对与该多个像素中的每一者相关联的该颜色数据或该深度数据中的至少一者的指示,其中在计算与该多个像素中的每一者相关联的该颜色数据或该深度数据中的至少一者之后发送该指示。混合组件198还可被配置为基于该至少一个覆盖掩码来更新该多个像素中的每一者的该当前颜色值或该当前深度值中的至少一者。混合组件198还可被配置为在该已更新当前颜色值与该多个像素中的每一者的该先前颜色值混合之前针对该多个像素中的每一者执行深度测试。混合组件198还可被配置为基于该至少一个覆盖掩码将该多个像素中的每一者的该已更新当前颜色值与该多个像素中的每一者的先前颜色值进行混合,其中该已更新当前颜色值与该场景的至少一个当前绘制相关联,并且其中该先前颜色值与该场景的至少一个先前绘制相关联。混合组件198还可被配置为在该已更新当前颜色值与该多个像素中的每一者的该先前颜色值混合之后,存储该多个像素中的每一者的该已更新当前颜色值或该已更新当前深度值中的至少一者。尽管以下描述可能侧重于图形处理,但是本文所述的概念可适用于其他类似的处理技术。
如本文中所描述的,诸如设备104之类的设备可以是指被配置为执行本文中所描述的一种或多种技术的任何设备、装置或系统。例如,设备可以是服务器、基站、用户装备、客户端设备、站、接入点、计算机(例如,个人计算机、台式计算机、膝上型计算机、平板计算机、计算机工作站或大型计算机)、最终产品、装置、电话、智能电话、服务器、视频游戏平台或控制台、手持式设备(例如,便携式视频游戏设备或个人数字助理(PDA))、可穿戴计算设备(例如,智能手表、增强现实设备或虚拟现实设备)、非可穿戴设备、显示器或显示设备、电视、电视机顶盒、中间网络设备、数字媒体播放器、视频流设备、内容流设备、车载计算机、任何移动设备、被配置为生成图形内容的任何设备、或被配置为执行本文所述的一种或多种技术的任何设备。本文的过程可被描述为由特定组件(例如,GPU)执行,但是在进一步的实施方案中,可使用与所公开的实施方案一致的其他组件(例如,CPU)来执行。
GPU可在GPU流水线中处理多种类型的数据或数据分组。例如,在一些方面,GPU可处理两种类型的数据或数据分组,例如,上下文寄存器分组和绘制调用数据。上下文寄存器分组可以是全局状态信息集合,例如,关于全局寄存器、着色程序或常数数据的信息,其可调节将如何处理图形上下文。例如,上下文寄存器分组可包括关于颜色格式的信息。在上下文寄存器分组的一些方面,可能存在指示哪个工作负载属于上下文寄存器的比特。此外,可能存在同时和/或并行运行的多个功能或程序。例如,功能或程序可描述某个操作,例如,颜色模式或颜色格式。因此,上下文寄存器可定义GPU的多个状态。
上下文状态可用于确定单个处理单元(例如,顶点提取器(VFD)、顶点着色器(VS)、着色器处理器或几何处理器)如何运行以及/或者处理单元以哪种模式运行。为此,GPU可使用上下文寄存器和编程数据。在一些方面,GPU可基于模式或状态的上下文寄存器定义在流水线中生成工作负载(例如,顶点或像素工作负载)。某些处理单元(例如,VFD)可使用这些状态来确定某些功能,例如,如何组装顶点。由于这些模式或状态可能改变,因此GPU可能需要改变对应的上下文。另外,与模式或状态相对应的工作负载可遵循改变的模式或状态。
图2例示根据本公开的一种或多种技术的示例GPU 200。如图2所示,GPU 200包括命令处理器(CP)210、绘制调用分组212、VFD 220、VS222、顶点高速缓存(VPC)224、三角形设置引擎(TSE)226、光栅化器(RAS)228、Z过程引擎(ZPE)230、像素插值器(PI)232、片段着色器(FS)234、渲染后端(RB)236、二级(L2)高速缓存(UCHE)238和系统存储器240。虽然图2显示了GPU 200包括处理单元220至238,但GPU 200可包括多个附加处理单元。附加地,处理单元220至238仅仅是示例,并且根据本公开的GPU可使用处理单元的任何组合或顺序。GPU200还包括命令缓冲器250、上下文寄存器分组260和上下文状态261。
如图2所示,GPU可利用CP(例如,CP 210)或硬件加速器将命令缓冲器解析为上下文寄存器分组(例如,上下文寄存器分组260)和/或绘制调用数据分组(例如,绘制调用分组212)。随后,CP 210可通过单独的路径将上下文寄存器分组260或绘制调用分组212传送到GPU中的处理单元或块。此外,命令缓冲器250可交替上下文寄存器和绘制调用的不同状态。例如,命令缓冲器可按以下方式构造:上下文N的上下文寄存器、上下文N的绘制调用、上下文N+1的上下文寄存器和上下文N+1的绘制调用。
GPU可按多种不同的方式渲染图像。在一些实例中,GPU可使用渲染和/或分图块渲染来渲染图像。在分图块渲染GPU中,图像可被划分或分割成不同的部分或图块。在划分图像之后,可单独渲染每个部分或图块。分图块渲染GPU可将计算机图形图像划分成网格格式,以使得网格的每个部分(即图块)被单独渲染。在一些方面,在分箱过程期间,图像可被划分成不同的箱或图块。在一些方面,在分箱过程期间,可构建可见性流,其中可标识可见图元或绘制调用。与分图块渲染相反,直接渲染不会将帧划分成更小的箱或图块。相反,在直接渲染中,整个帧是一次渲染的。附加地,一些类型的GPU可允许分图块渲染和直接渲染两者。
在一些方面,GPU可将绘制或渲染过程应用于不同的箱或图块。例如,GPU可针对一个箱进行渲染,并针对箱中的图元或像素执行所有绘制。在针对箱进行渲染的过程期间,渲染目标可位于GMEM中。在一些实例中,在针对一个箱进行渲染之后,可将渲染目标的内容移动到系统存储器,并且释放GMEM以渲染下一个箱。附加地,GPU可针对另一个箱进行渲染,并且针对该箱中的图元或像素执行绘制。因此,在一些方面,可能存在覆盖一个表面中的所有绘制的少量箱(例如,四个箱)。此外,GPU可循环通过一个箱中的所有绘制,但执行可见绘制调用的绘制,即包括可见几何图形的绘制调用。在一些方面,可生成可见性流(例如,在分箱过程中),以确定图像或场景中每个图元的可见性信息。例如,该可见性流可标识某个图元是否可见。在一些方面,该信息可用于移除不可见的图元,例如在渲染过程中。另外,图元中被标识为可见的至少一些图元可在渲染过程中进行渲染。
在分图块渲染的一些方面,可存在多个处理阶段或过程。例如,可在两个过程中执行渲染,例如可见性或箱可见性过程以及渲染或箱渲染过程。在可见性过程期间,GPU可输入渲染工作负载,记录图元或三角形的定位,并且然后确定哪些图元或三角形落入哪个箱或区域中。在可见性过程的一些方面,GPU还可标识或标记可见性流中每个图元或三角形的可见性。在渲染过程期间,GPU可输入可见性流并且一次处理一个箱或区域。在一些方面,可分析可见性流以确定哪些图元或图元顶点可见或不可见。因此,可处理可见的图元或图元顶点。如此,GPU可减少处理或渲染不可见的图元或三角形的不必要的工作负载。
在一些方面,在可见性过程期间,可处理某些类型的图元几何体,例如,仅定位的几何体。附加地,根据图元或三角形的位置或定位,可将图元分类到不同的箱或区域中。在一些实例中,将图元或三角形分类到不同的箱中可以是通过确定用于这些图元或三角形的可见性信息来执行的。例如,GPU可确定每个箱或区域中的每个图元的可见性信息或将其写入例如系统存储器中。该可见性信息可用于确定或生成可见性流。在渲染过程中,每个箱中的图元可单独渲染。在这些实例中,可见性流可以是从用于丢弃对于该箱不可见的图元的存储器中提取的。
GPU或GPU架构的一些方面可提供用于渲染(例如,软件渲染和硬件渲染)的多个不同的选项。在软件渲染中,驱动器或CPU可通过处理每个视图一次来复制整个帧几何图形。附加地,一些不同的状态可根据视图而改变。因此,在软件渲染中,软件可通过改变可被用于针对图像中的每个视点进行渲染的一些状态来复制整个工作负载。在某些方面,由于GPU可能针对图像中的每个视点多次提交相同的工作负载,因此可能存在增加的开销量。在硬件渲染中,硬件或GPU可能负责复制或处理图像中每个视点的几何图形。因此,硬件可管理针对图像中每个视点的图元或三角形的复制或处理。
图3例示图像或表面300,其包括被划分为多个箱的多个图元。如图3所示,图像或表面300包括区域302,该区域包括图元321、322、323和324。图元321、322、323和324被划分或放置到不同的箱中,例如,箱310、311、312、313、314和315。图3例示针对图元321-324使用多个视点进行分图块渲染的示例。例如,图元321-324在第一视点350和第二视点351中。因此,GPU处理或渲染包括区域302的图像或表面300可以利用多视点或多视图渲染。
如本文中所指示的,GPU或图形处理器单元可以使用分图块渲染架构来降低功耗或节省存储器带宽。如上文进一步所述,这种渲染方法可以将场景划分为多个箱,并且包括标识每个箱中的可见的三角形的可见性过程。因此,在分图块渲染中,完整屏幕可以被划分为多个箱或图块。然后,可以多次渲染场景,例如,针对每个箱渲染一次或多次。
在图形渲染的各方面中,一些图形应用可能一次或多次地针对单个目标(即,渲染目标)进行渲染。例如,在图形渲染中,系统存储器上的帧缓冲器可以被更新多次。帧缓冲器可以是存储器或随机存取存储器(RAM)的一部分(例如,包含位图或存储装置),以有助于存储用于GPU的显示数据。帧缓冲器还可以是包含完整的数据帧的存储器缓冲器。附加地,帧缓冲器可以是逻辑缓冲器。在一些方面,更新帧缓冲器可以在箱或图块渲染中执行,其中,如上所述,表面被划分成多个箱或图块,然后每个箱或图块可以被单独渲染。此外,在分图块渲染中,可以将帧缓冲器划分为多个箱或图块。
一些类型的GPU可通过对离散像素位置处的对象进行采样来渲染多边形,这可能在对象的边缘上引起锯齿效应。例如,当在屏幕上渲染对象时,可能存在沿着模型边缘的锯齿状的锯状图案,其被称为锯齿。存在被称为抗锯齿技术的相当多的技术,其通过产生更平滑的边缘来对抗这种锯齿行为。也就是说,抗锯齿是用于通过使所显示的像素边缘平滑来处置像素显示问题(诸如粗糙或锯齿状边缘)的方法。多样本抗锯齿(MSAA)是用于使像素边缘平滑的多种抗锯齿技术中的一种。这种抗锯齿技术可依赖于在多个位置处对相同像素进行采样(例如,每像素2、4、8或16个样本)并且然后确定像素在对象内部或外部的百分比。该信息稍后可用于对像素颜色进行混合以使粗糙像素边缘平滑。
为了使用上述抗锯齿技术,每个像素可能需要多达四倍的较多存储(例如,在4×MSAA的情况下)以及较多计算开销(例如,大约10%的较多开销)。这可导致总体基准性能的下降(例如,25%-30%的下降)。此外,该技术可能限制用户应用可以用于渲染具有多个光源的场景的延迟照明算法,因为在解析最终帧缓冲器时,采样水平信息可能丢失。此外,一些游戏开发人员可提供基于到边缘距离的算法作为MSAA的替代方案,但是它们可能是基于对像素进行后处理以检测边缘的软件具体实施,或者可能不能处置子像素图元。在一些实例中,基于图块的GPU可以能够通过将多样本数据存储在内部高速存储器中并且在渲染已完成之后写出到外部存储器时对数据进行下采样来执行多样本渲染。该方法可节省带宽和/或存储空间,因为可不将每样本数据写出到外部存储器。此外,该类型的方法可广泛用于某些类型的渲染中,诸如移动游戏渲染。
图4是例示用于图形处理的示例帧的示图400。更具体地,示图400描绘了不利用MSAA的帧410和利用MSAA的帧420。如图4所示,示图400包括:包括箱411的帧410和包括箱421的帧420。示图400例示了在帧410中的箱411中包括12个箱并且在帧420中的箱421中包括48个箱。也就是说,帧420利用特定类型的MSAA(例如,4×MSAA),因此帧420利用四倍于帧410的箱量。
在一些方面,由于多样本数据可存储在GPU存储器(GMEM)中,因此GMEM可用于渲染整个帧的较小部分。如图4所描绘,与MSAA相关联的帧的箱计数可大于没有MSAA的箱计数,这可导致增加的分箱开销。例如,如图4所示,对于相同渲染目标(例如,2192×954RGBA8888渲染目标),非MSAA可利用12个箱,而4×MSAA可利用48个箱。在渲染已完成之后将GMEM数据写出到外部存储器时,可能需要下采样。如果存在格式限制,则另一块可用于下采样,这可能比三维(3D)解析引擎花费更多的时间。对于一些格式,与1×MSAA相比,4×MSAA可导致开销增加(例如,28%或70%的开销增加)。实际上,利用某些类型的MSAA可导致浪费GPU内部资源(即,对应于被多采样的GPU中的所有数据),但也仅导致小边缘质量改进。基于上述内容,可能有益的是利用具有改进的边缘质量的MSAA。也就是说,可能有益的是利用具有增加的性能益处以及增加的处理速度的MSAA。此外,可能有益的是减小与利用MSAA相关联的存储器带宽和开销的量。
本公开的各方面可利用具有改进的边缘质量的MSAA。例如,本公开的各方面可利用具有增加的性能益处的MSAA。另外,在一些实例中,本公开的各方面可利用具有增加的处理速度的MSAA。通过这样做,本文所呈现的各方面可优化MSAA解决方案的性能益处。此外,本文所呈现的各方面可减小与利用MSAA相关联的存储器带宽和开销的量。
GPU可利用数个工作流程以用于MSAA。例如,GPU可获得图元或三角形的集合。光栅化器可基于MSAA级别针对每个像素生成样本覆盖掩码。GMEM或GPU存储器可然后存储每样本数据,包括颜色值和深度值。着色器处理器可针对每个像素计算颜色值一次。渲染后端(RB)可基于样本覆盖掩码对于每个样本更新该颜色值。对于图元或三角形的边缘,GPU可在样本被覆盖时对于每个样本更新颜色值。如果样本在图元或三角形的内部,则GPU可更新颜色值。如果样本在图元或三角形的外部,则样本的颜色值可保持先前颜色值。如果深度测试被启用,则RB可执行基于每样本的深度测试,其可将当前深度值与存储在GMEM中的先前深度值进行比较。如果样本通过深度测试或深度测试被禁用,则RB可执行每样本混合(即,如果混合被启用)并且所得的颜色可被写回到GMEM中。GMEM数据也可以是每样本的,而系统存储器可以是每像素的,因此GPU可能需要进行下采样(即,对N个样本的颜色值求平均并且选择样本作为深度值)。
图5是例示用于图形处理的示例MSAA工作流程的示图500。更具体地,示图500描绘了包括来自高级别的渲染流程510和来自箱级别的流程520的MSAA工作流程。如图5所示,在来自高级别的渲染流程510中,在步骤511处,可清除渲染目标颜色(例如,清除为黑色)。在步骤512处,GPU可绘制不透明图元或三角形。在步骤513处,GPU可在启用混合的情况下绘制透明图元。例如,这可基于以下公式:Colorresult=Colorsrc*Alphasrc+Colordst*(1-Alphasrc)。在步骤514处,GPU可将颜色从GPU存储器(例如,4个样本)解析到系统存储器(例如,1个样本)。如图5中进一步示出,在来自箱级别的流程520中,在步骤521处,GPU可在光栅化期间计算图元的覆盖掩码。这在图5中示出,其中图元540包括像素531和像素532,其中计算覆盖掩码542和覆盖掩码543。在步骤522处,GPU可在片段着色器中计算图元的颜色值。这在图5中示出,其中针对GMEM 550中的图元540计算颜色值552和颜色值551。在步骤523处,GPU可计算第二图元(例如,图元541)的颜色值,并且然后执行混合过程。例如,可基于覆盖掩码562针对图元541计算颜色值571,其可在580处与颜色值552混合。在步骤524处,GPU可计算四个样本的颜色平均值,并且然后将其存储到系统存储器。已混合颜色值582可用于计算颜色平均值,其在590处可存储在系统存储器中。
根据本公开的GPU可针对MSAA利用数个不同工作流程。例如,根据本公开的各方面,GPU可获得图元或三角形的集合。光栅化器可基于MSAA级别针对每个像素生成样本覆盖掩码。GMEM或GPU存储器可然后存储每像素数据,包括颜色值和深度值。着色器处理器可针对每个像素计算颜色值(例如,针对每个像素计算一次)。渲染后端(RB)可基于每样本覆盖掩码来计算当前颜色值和先前颜色值。如果深度测试被启用,则RB可执行基于每像素的深度测试,其将当前深度值与存储在GMEM中的先前深度值进行比较。如果像素通过深度测试或深度测试被禁用,则RB可执行每像素混合(即,如果混合被启用)并且所得的颜色可被写回到GMEM中。可将每像素数据从GMEM存储到系统存储器。
图6是例示用于图形处理的示例快速MSAA工作流程的示图600。更具体地,示图600描绘了包括来自高级别的渲染流程610和来自箱级别的流程620的快速MSAA工作流程。如图6所示,在来自高级别的渲染流程610中,在步骤611处,可清除渲染目标颜色(例如,清除为黑色)。在步骤612处,GPU可绘制不透明图元或三角形。在步骤613处,GPU可在启用混合的情况下绘制透明图元。例如,这可基于以下公式:Colorresult=Colorsrc*Alphasrc+Colordst*(1-Alphasrc)。在步骤614处,GPU可将颜色从GPU存储器(例如,1个样本)解析到系统存储器(例如,1个样本)。
如图6中进一步示出,在来自箱级别的流程620中,在步骤621处,GPU可在光栅化期间计算图元的覆盖掩码。这在图6中示出,其中图元640包括像素631和像素632,其中计算覆盖掩码642和覆盖掩码643。在步骤622处,GPU可在片段着色器(FS)中计算图元的颜色值。这在图6中示出,其中针对图元640计算来自FS 644的颜色和先前颜色值646,并且然后将其在650处混合。例如,混合值可以是FS 644的3/4和先前颜色值646的1/4。在一些实例中,如果存在全覆盖掩码,则可能不需要执行混合。在步骤623处,GPU可计算第二图元的颜色值,并且然后执行混合过程。例如,可针对图元641计算覆盖掩码661和覆盖掩码662。可组合覆盖掩码661与来自FS 664的颜色以获得颜色值665。颜色值665然后可在步骤670与颜色值652混合,这可产生颜色值674(例如,颜色值665的3/4和颜色值652的1/4)。在步骤624处,GPU可基于混合函数进行混合,并且然后将其存储到系统存储器。例如,可在步骤680处混合颜色值674和颜色值652,这可产生已混合颜色值682。已混合颜色值682可基于特定公式(例如,颜色值674*α+(1-α)*颜色值652),其可在步骤690处存储在系统存储器(例如,系统存储器中的缓冲器)中。
在一些方面,GPU处的过度绘制可影响最终像素值。也就是说,本文中呈现的各方面可实现边缘的抗锯齿效应,但如果相同像素具有若干部分覆盖的过度绘制,则最终颜色可包含先前绘制的颜色值。这可基于以下公式:这里,其中pn,j∈{0,1},j∈{0,1,2,3},并且另外,pn可表示特定绘制(例如,第n个绘制)的像素的覆盖掩码。此外,dn可以是第n个绘制所渲染的像素值,cn可以是在特定量的过度绘制(例如,n倍过度绘制)之后的像素值,并且c0可以是原始像素值。如果则这可能意味着第n个绘制覆盖整个像素。此外,如果其可意味着第n个绘制不接触该像素。
图7是例示用于图形处理的示例图的示图700。更具体地,示图700描绘了利用快速MSAA以及没有快速MSAA的多个绘制和对应覆盖掩码以及最终颜色值(即,比较利用本文所呈现的各方面以及不利用本文所呈现的各方面的最终颜色值)。如图7所示,示图700包括多个过度绘制(例如,三个过度绘制),其中绘制710和绘制720可具有用于像素的相同覆盖掩码。对于第三绘制,列出了四种情况以比较差异(例如,绘制730、绘制740、绘制750和绘制760)。绘制710包括覆盖掩码712,以及颜色值714(没有快速MSAA)和颜色值716(具有本公开的快速MSAA技术)。覆盖掩码712包括值(1,0,1,1),颜色值714对应于(D1,C0,D1,D1),并且颜色值716对应于:C0/4+3D1/4。绘制720包括覆盖掩码722,以及颜色值724(没有快速MSAA)和颜色值726(具有快速MSAA)。覆盖掩码722包括值(1,0,1,1),颜色值714对应于(D2,C0,D2,D2),并且颜色值726对应于:(C0/4+3D1/4)/4+3D2/4。绘制730包括覆盖掩码732,以及颜色值734(没有MSAA)和颜色值736(具有MSAA)。覆盖掩码732包括值(1,0,1,1),颜色值734对应于(D3,C0,D3,D3)和C0/4+3D3/4,并且颜色值736对应于:((C0/4+3D1/4)/4+3D2/4)/4+3D3/4。绘制740包括覆盖掩码742,以及颜色值744(没有快速MSAA)和颜色值746(具有快速MSAA)。覆盖掩码742包括值(1,1,0,0),颜色值744对应于(D3,D3,D2,D2)和D2/2+D3/2,并且颜色值746对应于:((C0/4+3D1/4)/4+3D2/4)/2+D3/2。绘制750包括覆盖掩码752,以及颜色值754(没有快速MSAA)和颜色值756(具有快速MSAA)。覆盖掩码752包括值(0,1,0,0),颜色值754对应于(D2,D3,D2,D2)和3D2/4+D3/4,并且颜色值756对应于:3((C0/4+3D1/4)/4+3D2/4)/4+D3/4。绘制760包括覆盖掩码762,以及颜色值764(没有快速MSAA)和颜色值766(具有快速MSAA)。覆盖掩码762包括值(1,1,1,1),颜色值764对应于(D3,D3,D3,D3)和D3,并且颜色值766对应于:D3。
如本文中所指示,过度绘制可影响本公开的各方面的最终颜色值。例如,在相同图元或三角形上的3个绘制的一个模拟结果可导致低质量情况。然而,在实际移动应用或游戏中,可能不太可能发生相同图元的过度绘制。这可能是因为应用或游戏可能不通过不同颜色数次绘制相同网格。另外,在一些实例中,在具有和没有快速MSAA的情况下可能几乎没有可辨别的差异。例如,交点可具有小颜色差异。通过这样做,这可改进本文所呈现的各方面的渲染输出,并且在大多数情况下导致可接受的渲染输出。
本文所呈现的各方面可允许GPU减小所利用的GMEM空间的量,因为可在每像素基础上存储数据。在一些情况下(例如,4×MSAA),该方法可节省特定量的存储器(例如,6/8存储器)。此外,本文所呈现的各方面可允许GPU实现边缘的抗锯齿效应,并且可产生与传统MSAA解决方案相比更快的结果。在一些情况下(例如,在未启用深度测试的情况下),利用以及不利用快速MSAA的渲染可为类似的,除了一些交点之外。如果下一绘制覆盖特定像素,则可重置该交点差异。在其他情况下(例如,在启用深度测试的情况下),可执行每像素深度测试,其可导致与传统MSAA解决方案相比增加的渲染差异。当利用本文所呈现的各方面时,图像质量可介于非MSAA解决方案与传统MSAA解决方案之间(例如,4×MSAA)。
另外,根据本公开的GPU可针对MSAA利用数个不同工作流程。例如,根据本公开,GPU可获得图元或三角形的集合。光栅化器可基于MSAA级别针对每个像素生成样本覆盖掩码。GMEM或GPU存储器可然后存储颜色值的每像素数据和深度值的每样本数据。着色器处理器可然后针对每个像素计算颜色值。渲染后端(RB)可创建合并样本掩码(mergeMask),其中合并样本掩码可等于每样本覆盖掩码和每样本深度测试掩码。RB可基于合并样本掩码来混合当前颜色和先前颜色。如果禁用混合,则RB可将所得颜色写回到GMEM。如果启用深度测试,则可执行每样本深度测试。如果启用混合,则RB可执行每像素混合并且可将所得颜色写回到GMEM。然后可将像素级别颜色数据从GMEM存储到系统存储器。在一些实例中,可丢弃深度,使得可不利用向下采样深度。该类型的前述过程可利用增加量的GMEM空间,但是可导致改进的图像质量。
本公开的各方面可包括多个益处或优势。本文所呈现的各方面可利用具有改进的边缘质量的快速MSAA。例如,本公开的各方面可利用具有增加的性能益处的快速MSAA。另外,在一些实例中,本公开的各方面可利用具有增加的处理速度的快速MSAA。通过这样做,本文所呈现的各方面可优化MSAA解决方案的性能益处。此外,本文所呈现的各方面可减小与利用快速MSAA相关联的存储器带宽和开销的量。在一些实例中,前述过程可利用GPU硬件改变,因此可能难以提供实际情况性能数据。然而,利用上述过程可产生预期的性能益处。例如,可减小所利用的GPU存储器的量,因为每像素地存储颜色数据。另外,可节省最终下采样阶段。从图像质量角度来看,对于图元或三角形的内部(或边缘)上的像素,最终颜色值可为精确的。本文所呈现的各方面还可帮助实现抗锯齿效应。此外,本文所呈现的各方面可提供可用于数个不同情况(例如,2D情况和3D情况)的MSAA的快速解决方案。另外,本文所呈现的各方面可针对数个不同MSAA相关解决方案(例如,非MSAA和4×MSAA)提供改进的图像质量(例如,改进的边缘质量)。
图8是根据本公开的一种或多种技术的图形处理的通信流程图800。如图8中所示出,图800包括根据本公开的一或多种技术的GPU组件802(例如,GPU或GPU流水线中的组件、用于控制GPU的软件或用于控制GPU的处理器)、GPU组件804(例如,GPU或GPU流水线中的组件或其他图形处理器)与存储器806(例如,图形存储器或GMEM或系统存储器)之间的示例通信。
在810处,GPU组件802可获得与场景中的至少一个当前帧相关联的图元集合(例如,从GPU组件804接收图元812),其中图元集合中的每一者与至少一个当前帧中的多个像素中的至少一个像素相关联。
在820处,GPU组件802可配置与多个像素中的每个像素相关联的至少一个覆盖掩码,其中多个像素中的每一者对应于至少一个样本,其中至少一个覆盖掩码基于针对多个像素中的每一者的至少一个样本。另外,在820处,GPU组件802可配置与多个像素中的每一者的深度数据相关联的至少一个深度测试掩码,其中至少一个深度测试掩码基于针对多个像素中的每一者的至少一个样本。可基于至少一个深度测试掩码来进一步更新多个像素中的每一者的当前颜色值或当前深度值中的至少一者。此外,在820处,GPU组件802可基于至少一个覆盖掩码和至少一个深度测试掩码的组合来配置至少一个合并样本掩码。可基于至少一个合并样本掩码来进一步更新多个像素中的每一者的当前颜色值或当前深度值中的至少一者。至少一个覆盖掩码可以是至少一个样本覆盖掩码。另外,至少一个覆盖掩码可基于多样本抗锯齿(MSAA)过程来进行配置。
在830处,GPU组件802可计算与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者,其中颜色数据包括多个像素中的每一者的当前颜色值,其中深度数据包括多个像素中的每一者的当前深度值。颜色数据可包括与多个像素中的每一者相关联的颜色值集合,并且深度数据可包括与多个像素中的每一者相关联的深度值集合。
在840处,GPU组件802可发送对与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者的指示,其中在计算与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者之后发送指示。
在850处,GPU组件802可基于至少一个覆盖掩码或至少一个合并样本掩码来更新多个像素中的每一者的当前颜色值或当前深度值中的至少一者。另外,在830处,当前颜色值或当前深度值中的至少一者可由图形处理单元(GPU)中的着色器处理器计算。
在860处,GPU组件802可在已更新当前颜色值与多个像素中的每一者的先前颜色值混合之前针对多个像素中的每一者执行深度测试。在一些方面,针对多个像素中的每一者执行深度测试可包括:将多个像素中的每一者的当前深度值与多个像素中的每一者的先前深度值进行比较。也就是说,GPU可将多个像素中的每一者的当前深度值与多个像素中的每一者的先前深度值进行比较。深度测试可由图形处理单元(GPU)中的渲染后端(RB)执行。
在870处,GPU组件802可将多个像素中的每一者的已更新当前颜色值与多个像素中的每一者的先前颜色值进行混合,其中已更新当前颜色值与场景的至少一个当前绘制相关联,并且其中先前颜色值与场景的至少一个先前绘制相关联。
在880处,GPU组件802可在已更新当前颜色值与多个像素中的每一者的先前颜色值混合之后,存储多个像素中的每一者的已更新当前颜色值或已更新当前深度值中的至少一者(例如,将值882存储在存储器806中)。多个像素中的每一者的已更新当前颜色值或已更新当前深度值中的至少一者可存储在图形处理单元(GPU)存储器(GMEM)或系统存储器中。另外,在880处,GPU组件802可在存储已更新当前颜色值或已更新当前深度值中的至少一者之前生成多个像素中的每一者的已更新当前颜色值或已更新当前深度值中的至少一者。
图9是根据本公开的一种或多种技术的图形处理的示例方法的流程图900。该方法可以由GPU、GPU组件(例如GPU或GPU流水线中的组件、用于控制GPU的软件或者用于控制GPU的处理器)、图形处理器、CPU(或其他中央处理器)、用于图形处理的装置、无线通信设备以及/或者如结合图1至图8的示例所使用的可执行图形处理的任何装置来执行。
在902处,GPU可获得与场景中的至少一个当前帧相关联的图元集合,其中图元集合中的每一者与至少一个当前帧中的多个像素中的至少一个像素相关联,如结合图1至图8中的示例所描述的。例如,如图8的810中描述的,GPU组件802可获得与场景中的至少一个当前帧相关联的图元集合,其中图元集合中的每一者与至少一个当前帧中的多个像素中的至少一个像素相关联。此外,步骤902可由图1中的处理单元120来执行。
在904处,GPU可配置与多个像素中的每个像素相关联的至少一个覆盖掩码,其中多个像素中的每一者对应于至少一个样本,其中至少一个覆盖掩码基于针对多个像素中的每一者的至少一个样本,如结合图1至图8中的示例所描述的。例如,如图8的820中描述的,GPU组件802可配置与多个像素中的每个像素相关联的至少一个覆盖掩码,其中多个像素中的每一者对应于至少一个样本,其中至少一个覆盖掩码基于针对多个像素中的每一者的至少一个样本。此外,步骤904可由图1中的处理单元120来执行。另外,在904处,GPU可配置与多个像素中的每一者的深度数据相关联的至少一个深度测试掩码,其中至少一个深度测试掩码基于针对多个像素中的每一者的至少一个样本。可基于至少一个深度测试掩码来进一步更新多个像素中的每一者的当前颜色值或当前深度值中的至少一者。此外,在904处,GPU可基于至少一个覆盖掩码和至少一个深度测试掩码的组合来配置至少一个合并样本掩码。可基于至少一个合并样本掩码来进一步更新多个像素中的每一者的当前颜色值或当前深度值中的至少一者。至少一个覆盖掩码可以是至少一个样本覆盖掩码。另外,至少一个覆盖掩码可基于多样本抗锯齿(MSAA)过程来进行配置。
在906处,GPU可计算与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者,其中颜色数据包括多个像素中的每一者的当前颜色值,其中深度数据包括多个像素中的每一者的当前深度值,如结合图1至图8中的示例所描述的。例如,如图8的830中描述的,GPU组件802可计算与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者,其中颜色数据包括多个像素中的每一者的当前颜色值,其中深度数据包括多个像素中的每一者的当前深度值。此外,步骤906可由图1中的处理单元120来执行。颜色数据可包括与多个像素中的每一者相关联的颜色值集合,并且深度数据可包括与多个像素中的每一者相关联的深度值集合。
在910处,GPU可基于至少一个覆盖掩码或至少一个合并样本掩码来更新多个像素中的每一者的当前颜色值或当前深度值中的至少一者,如结合图1至图8中的示例所描述的。例如,如图8的850中描述的,GPU组件802可基于至少一个覆盖掩码或至少一个合并样本掩码来更新多个像素中的每一者的当前颜色值或当前深度值中的至少一者。此外,步骤910可由图1中的处理单元120来执行。另外,在906处,当前颜色值或当前深度值中的至少一者可由GPU中的着色器处理器计算。
在914处,GPU可将多个像素中的每一者的已更新当前颜色值与多个像素中的每一者的先前颜色值进行混合,其中已更新当前颜色值与场景的至少一个当前绘制相关联,并且其中先前颜色值与场景的至少一个先前绘制相关联,如结合图1至图8中的示例所描述的。例如,如图8的870中描述的,GPU组件802可将多个像素中的每一者的已更新当前颜色值与多个像素中的每一者的先前颜色值进行混合,其中已更新当前颜色值与场景的至少一个当前绘制相关联,并且其中先前颜色值与场景的至少一个先前绘制相关联。此外,步骤914可由图1中的处理单元120来执行。
图10是根据本公开的一种或多种技术的图形处理的示例方法的流程图1000。该方法可以由GPU、GPU组件(例如GPU或GPU流水线中的组件、用于控制GPU的软件或者用于控制GPU的处理器)、图形处理器、CPU(或其他中央处理器)、用于图形处理的装置、无线通信设备以及/或者如结合图1至图8的示例所使用的可执行图形处理的任何装置来执行。
在1002处,GPU可获得与场景中的至少一个当前帧相关联的图元集合,其中图元集合中的每一者与至少一个当前帧中的多个像素中的至少一个像素相关联,如结合图1至图8中的示例所描述的。例如,如图8的810中描述的,GPU组件802可获得与场景中的至少一个当前帧相关联的图元集合,其中图元集合中的每一者与至少一个当前帧中的多个像素中的至少一个像素相关联。此外,步骤1002可由图1中的处理单元120来执行。
在1004处,GPU可配置与多个像素中的每个像素相关联的至少一个覆盖掩码,其中多个像素中的每一者对应于至少一个样本,其中至少一个覆盖掩码基于针对多个像素中的每一者的至少一个样本,如结合图1至图8中的示例所描述的。例如,如图8的820中描述的,GPU组件802可配置与多个像素中的每个像素相关联的至少一个覆盖掩码,其中多个像素中的每一者对应于至少一个样本,其中至少一个覆盖掩码基于针对多个像素中的每一者的至少一个样本。此外,步骤1004可由图1中的处理单元120来执行。另外,在1004处,GPU可配置与多个像素中的每一者的深度数据相关联的至少一个深度测试掩码,其中至少一个深度测试掩码基于针对多个像素中的每一者的至少一个样本。可基于至少一个深度测试掩码来进一步更新多个像素中的每一者的当前颜色值或当前深度值中的至少一者。此外,在1004处,GPU可基于至少一个覆盖掩码和至少一个深度测试掩码的组合来配置至少一个合并样本掩码。可基于至少一个合并样本掩码来进一步更新多个像素中的每一者的当前颜色值或当前深度值中的至少一者。至少一个覆盖掩码可以是至少一个样本覆盖掩码。另外,至少一个覆盖掩码可基于多样本抗锯齿(MSAA)过程来进行配置。
在1006处,GPU可计算与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者,其中颜色数据包括多个像素中的每一者的当前颜色值,其中深度数据包括多个像素中的每一者的当前深度值,如结合图1至图8中的示例所描述的。例如,如图8的830中描述的,GPU组件802可计算与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者,其中颜色数据包括多个像素中的每一者的当前颜色值,其中深度数据包括多个像素中的每一者的当前深度值。此外,步骤1006可由图1中的处理单元120来执行。颜色数据可包括与多个像素中的每一者相关联的颜色值集合,并且深度数据可包括与多个像素中的每一者相关联的深度值集合。
在1008处,GPU可发送对与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者的指示,其中在计算与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者之后发送指示,如结合图1至图8中的示例所描述的。例如,如图8的840中描述的,GPU组件802可发送对与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者的指示,其中在计算与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者之后发送指示。此外,步骤1008可由图1中的处理单元120来执行。
在1010处,GPU可基于至少一个覆盖掩码来更新多个像素中的每一者的当前颜色值或当前深度值中的至少一者,如结合图1至图8中的示例所描述的。例如,如图8的850中描述的,GPU组件802可基于至少一个覆盖掩码来更新多个像素中的每一者的当前颜色值或当前深度值中的至少一者。此外,步骤1010可由图1中的处理单元120来执行。另外,当前颜色值或当前深度值中的至少一者可由GPU中的着色器处理器计算。
在1012处,GPU可在已更新当前颜色值与多个像素中的每一者的先前颜色值混合之前针对多个像素中的每一者执行深度测试,如结合图1至图8中的示例所描述的。例如,如图8的860中描述的,GPU组件802可在已更新当前颜色值与多个像素中的每一者的先前颜色值混合之前针对多个像素中的每一者执行深度测试。此外,步骤1012可由图1中的处理单元120来执行。在一些方面,针对多个像素中的每一者执行深度测试可包括:将多个像素中的每一者的当前深度值与多个像素中的每一者的先前深度值进行比较。也就是说,GPU可将多个像素中的每一者的当前深度值与多个像素中的每一者的先前深度值进行比较。深度测试可由图形处理单元(GPU)中的渲染后端(RB)执行。
在1014处,GPU可将多个像素中的每一者的已更新当前颜色值与多个像素中的每一者的先前颜色值进行混合,其中已更新当前颜色值与场景的至少一个当前绘制相关联,并且其中先前颜色值与场景的至少一个先前绘制相关联,如结合图1至图8中的示例所描述的。例如,如图8的870中描述的,GPU组件802可将多个像素中的每一者的已更新当前颜色值与多个像素中的每一者的先前颜色值进行混合,其中已更新当前颜色值与场景的至少一个当前绘制相关联,并且其中先前颜色值与场景的至少一个先前绘制相关联。此外,步骤1014可由图1中的处理单元120来执行。
在1016处,GPU可在已更新当前颜色值与多个像素中的每一者的先前颜色值混合之后,存储多个像素中的每一者的已更新当前颜色值或已更新当前深度值中的至少一者,如结合图1至图8中的示例所描述的。例如,如图8的880中描述的,GPU组件802可在已更新当前颜色值与多个像素中的每一者的先前颜色值混合之后,存储多个像素中的每一者的已更新当前颜色值或已更新当前深度值中的至少一者。此外,步骤1016可由图1中的处理单元120来执行。多个像素中的每一者的已更新当前颜色值或已更新当前深度值中的至少一者可存储在图形处理单元(GPU)存储器(GMEM)或系统存储器中。另外,在1016处,GPU可在存储已更新当前颜色值或已更新当前深度值中的至少一者之前生成多个像素中的每一者的已更新当前颜色值或已更新当前深度值中的至少一者。
在配置中,提供了用于图形处理的方法或装置。该装置可以是GPU、GPU组件(例如GPU或GPU流水线中的组件、用于控制GPU的软件或者用于控制GPU的处理器)、图形处理器、CPU(或其他中央处理器)、用于图形处理的装置、无线通信设备以及/或者可执行图形处理的某个其他处理器。在各方面,该装置可以是设备104内的处理单元120,或者可以是设备104或另一设备内的某个其他硬件。装置(例如,处理单元120)可包括用于获得与场景中的至少一个当前帧相关联的图元集合的部件,其中图元集合中的每一者与至少一个当前帧中的多个像素中的至少一个像素相关联。装置(例如,处理单元120)还可包括用于配置与多个像素中的每个像素相关联的至少一个覆盖掩码的部件,其中多个像素中的每一者对应于至少一个样本,其中至少一个覆盖掩码基于针对多个像素中的每一者的至少一个样本。装置(例如,处理单元120)还可包括用于计算与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者的部件,其中颜色数据包括多个像素中的每一者的当前颜色值,其中深度数据包括多个像素中的每一者的当前深度值。装置(例如,处理单元120)还可包括用于基于至少一个覆盖掩码来更新多个像素中的每一者的当前颜色值或当前深度值中的至少一者的部件。装置(例如,处理单元120)还可包括用于基于至少一个覆盖掩码将多个像素中的每一者的已更新当前颜色值与多个像素中的每一者的先前颜色值进行混合的部件,其中已更新当前颜色值与场景的至少一个当前绘制相关联,并且其中先前颜色值与场景的至少一个先前绘制相关联。装置(例如,处理单元120)还可包括用于在已更新当前颜色值与多个像素中的每一者的先前颜色值混合之前针对多个像素中的每一者执行深度测试的部件。装置(例如,处理单元120)还可包括用于配置与多个像素中的每一者的深度数据相关联的至少一个深度测试掩码的部件,其中至少一个深度测试掩码基于针对多个像素中的每一者的至少一个样本。装置(例如,处理单元120)还可包括用于基于至少一个覆盖掩码和至少一个深度测试掩码的组合来配置至少一个合并样本掩码的部件。装置(例如,处理单元120)还可包括用于发送对与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者的指示的部件,其中在计算与多个像素中的每一者相关联的颜色数据或深度数据中的至少一者之后发送指示。装置(例如,处理单元120)还可包括用于在已更新当前颜色值与多个像素中的每一者的先前颜色值混合之后,存储多个像素中的每一者的已更新当前颜色值或已更新当前深度值中的至少一者的部件。装置(例如,处理单元120)还可包括用于在存储已更新当前颜色值或已更新当前深度值中的至少一者的部件之前生成多个像素中的每一者的已更新当前颜色值或已更新当前深度值中的至少一者的部件。
本文中所描述的主题可被实现以达成一个或多个益处或优势。例如,所描述的图形处理技术可由GPU、GPU组件、CPU、图形处理器、用于图形处理的装置或者可执行图形处理以实现本文中描述的MSAA技术的某个其他处理器来使用。相比于其他图形处理技术,这也可以低成本实现。此外,本文中的图形处理技术可改进或加速数据处理或执行。此外,本文中的图形处理技术可改进资源或数据利用和/或资源效率。另外,本公开的各方面可利用MSAA技术以改进存储器带宽效率和/或提高GPU或CPU处的处理速度。
应当理解的是,所公开的进程/流程图中框的特定次序或层次只是对示例方法的例示。应当理解的是,基于设计偏好,可重新排列进程/流程图中框的特定次序或层次。进一步地,一些框可组合或省略。所附方法权利要求以样本次序给出了各个框的元素,但并不意味着受限于所给出的特定次序或层次。
提供前面的描述是为了使本领域的任何技术人员能够实践本文所描述的各个方面。对这些方面的各种修改对于本领域技术人员而言将是显而易见的,以及本文中所定义的通用原理可以应用于其他方面。因此,权利要求并不旨在限于本文中所示出的各方面,而是应被赋予与权利要求的语言相一致的全部范围,其中除非特别说明,否则以单数形式对元素的引用并不旨在表示“一个且仅一个”,而是表示“一个或多个”。词语“示例性”在本文中用于意指“用作示例、实例、或例示”。本文中被描述为“示例性”的任何方面不一定被解释为比其他方面优选或具有优势。
除非另外特别说明,否则术语“一些”指代一个或多个,并且在上下文没有另外规定的情况下,术语“或”可被解释为“和/或”。诸如“A、B或C中的至少一者”、“A、B或C中的一者或多者”、“A、B和C中的至少一者”、“A、B和C中的一者或多者”以及“A、B、C或它们的任何组合”之类的组合,包括A、B和/或C的任何组合,其可包括多个A、多个B或多个C。具体而言,诸如“A、B或C中的至少一者”、“A、B或C中的一者或多者”、“A、B和C中的至少一者”、“A、B和C中的一者或多者”以及“A、B、C或它们的任何组合”之类的组合可以是仅A、仅B、仅C、A和B、A和C、B和C或A和B和C,其中任何此类组合可包含A、B或C的一个或多个成员。贯穿本公开描述的各种方面的元素的对于本领域普通技术人员来说是已知的或稍后将是已知的所有结构和功能等同方案以引用的方式明确地并入本文,并且旨在被权利要求所涵盖。此外,本文所公开的任何内容都不是旨在奉献给公众的,无论这种公开是否在权利要求中显式地记载。“模块”、“机制”、“元素”、“设备”等词不能替代“部件”一词。因此,没有权利要求元素将被理解为部件加功能,除非该元素明确地使用短语“用于……的部件”来记载。
在一个或多个示例中,本文中所描述的功能可在硬件、软件、固件或它们的任何组合中实现。例如,尽管贯穿本公开使用了术语“处理单元”,但是此类处理单元可在硬件、软件、固件或它们的任何组合中实现。如果在本文中描述的任何功能、处理单元、技术或其他模块以软件实现,则在本文中所描述的功能、处理单元、技术或其他模块可作为一个或多个指令或代码存储在计算机可读介质上或在计算机可读介质上发送。
根据本公开,在上下文没有另外规定的情况下,术语“或”可被理解为“和/或”。附加地,虽然诸如“一个或多个”或“至少一个”等短语可能已经用于本文所公开的一些特征而不是其他特征,但是在上下文没有另外规定的情况下,没有使用这种语言的特征可被理解为具有此类隐含含义。
在一个或多个示例中,本文中所描述的功能可在硬件、软件、固件或它们的任何组合中实现。例如,尽管贯穿本公开使用了术语“处理单元”,但是此类处理单元可在硬件、软件、固件或它们的任何组合中实现。如果在本文中描述的任何功能、处理单元、技术或其他模块以软件实现,则在本文中所描述的功能、处理单元、技术或其他模块可作为一个或多个指令或代码存储在计算机可读介质上或在计算机可读介质上发送。计算机可读介质可包括计算机数据存储介质和通信介质,这些介质包括促进计算机程序从一处向另一处传递的任何介质。以此方式,计算机可读介质一般可对应于(1)非暂态的有形计算机可读存储介质或(2)诸如信号或载波之类的通信介质。数据存储介质可以是可以由一台或多台计算机或一个或多个处理器访问以检索用于实现本公开所述技术的指令、代码和/或数据结构的任何可用介质。作为示例而非限制,此类计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置或其他磁存储设备。如本文所用的磁盘和光盘包括:压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘以光学方式利用激光来再现数据。上述的组合应也被包括在计算机可读介质的范围内。计算机程序产品可包括计算机可读介质。
代码可由一个或多个处理器来执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、算术逻辑单元(ALU)、现场可编程逻辑阵列(FPGA)、或其他等效的集成或离散逻辑电路。因此,如本文所用的术语“处理器”可以是指任何上述结构或适于实现本文中所描述的技术的任何其他结构。另外,这些技术可以在一个或多个电路或逻辑元件中被完全实现。
本公开的技术可在各种各样的设备或装置中实现,包括无线手机、集成电路(IC)或IC组(例如,芯片组)。本公开中描述了各种组件、模块或单元,以强调被配置为执行所公开技术的设备的功能方面,但不一定需要由不同的硬件单元来实现。相反,如上所述,各种单元可被组合在任何硬件单元中,或者由可互操作的硬件单元的集合(包括如上所述的一个或多个处理器)结合合适的软件和/或固件来提供。因此,如本文所用的术语“处理器”可以是指任何上述结构或适于实现本文中所描述的技术的任何其他结构。同样,这些技术可在一个或多个电路或逻辑元件中被完全实现。
以下方面仅是例示性的并且可以与本文描述的其它方面或教导内容相结合,而不受限制。
方面1是一种用于图形处理的装置,所述装置包括:存储器;和至少一个处理器,所述至少一个处理器耦合到所述存储器,并且至少部分地基于存储在所述存储器中的信息,所述至少一个处理器被配置为:获得与场景中的至少一个当前帧相关联的图元集合,其中所述图元集合中的每一者与所述至少一个当前帧中的多个像素中的至少一个像素相关联;配置与所述多个像素中的每个像素相关联的至少一个覆盖掩码,其中所述多个像素中的每一者对应于至少一个样本,其中所述至少一个覆盖掩码基于针对所述多个像素中的每一者的所述至少一个样本;计算与所述多个像素中的每一者相关联的颜色数据或深度数据中的至少一者,其中所述颜色数据包括所述多个像素中的每一者的当前颜色值,其中所述深度数据包括所述多个像素中的每一者的当前深度值;基于所述至少一个覆盖掩码来更新所述多个像素中的每一者的所述当前颜色值或所述当前深度值中的至少一者;以及将所述多个像素中的每一者的所述已更新当前颜色值与所述多个像素中的每一者的先前颜色值进行混合,其中所述已更新当前颜色值与所述场景的至少一个当前绘制相关联,并且其中所述先前颜色值与所述场景的至少一个先前绘制相关联。
方面2是根据方面1所述的装置,其中所述至少一个处理器还被配置为:在所述已更新当前颜色值与所述多个像素中的每一者的所述先前颜色值混合之前针对所述多个像素中的每一者执行深度测试。
方面3是根据方面1和方面2中任一项所述的装置,其中为了针对所述多个像素中的每一者执行所述深度测试,所述至少一个处理器被配置为:将所述多个像素中的每一者的所述当前深度值与所述多个像素中的每一者的所述先前深度值进行比较。
方面4是根据方面1至3中任一项所述的装置,其中所述深度测试由图形处理单元(GPU)中的渲染后端(RB)执行。
方面5是根据方面1至4中任一项所述的装置,其中所述至少一个处理器还被配置为:配置与所述多个像素中的每一者的所述深度数据相关联的至少一个深度测试掩码,其中所述至少一个深度测试掩码基于针对所述多个像素中的每一者的所述至少一个样本。
方面6是根据方面1至5中任一项所述的装置,其中基于所述至少一个深度测试掩码来进一步更新所述多个像素中的每一者的所述当前颜色值或所述当前深度值中的至少一者。
方面7是根据方面1至6中任一项所述的装置,其中所述至少一个处理器还被配置为:基于所述至少一个覆盖掩码和所述至少一个深度测试掩码的组合来配置至少一个合并样本掩码。
方面8是根据方面1至7中任一项所述的装置,其中基于所述至少一个合并样本掩码来进一步更新所述多个像素中的每一者的所述当前颜色值或所述当前深度值中的至少一者。
方面9是根据方面1至8中任一项所述的装置,其中所述颜色数据包括与所述多个像素中的每一者相关联的颜色值集合,并且其中所述深度数据包括与所述多个像素中的每一者相关联的深度值集合。
方面10是根据方面1至9中任一项所述的装置,其中发送对与所述多个像素中的每一者相关联的所述颜色数据或所述深度数据中的至少一者的指示,其中在计算与所述多个像素中的每一者相关联的所述颜色数据或所述深度数据中的至少一者之后发送所述指示。
方面11是根据方面1至10中任一项所述的装置,其中所述至少一个处理器还被配置为:在所述已更新当前颜色值与所述多个像素中的每一者的所述先前颜色值混合之后,存储所述多个像素中的每一者的所述已更新当前颜色值或所述已更新当前深度值中的至少一者。
方面12是根据方面1至11中任一项所述的装置,其中所述多个像素中的每一者的所述已更新当前颜色值或所述已更新当前深度值中的至少一者存储在图形处理单元(GPU)存储器(GMEM)或系统存储器中。
方面13是根据方面1至12中任一项所述的装置,其中所述至少一个处理器还被配置为:在存储所述已更新当前颜色值或所述已更新当前深度值中的至少一者之前生成所述多个像素中的每一者的所述已更新当前颜色值或所述已更新当前深度值中的至少一者。
方面14是根据方面1至13中任一项所述的装置,其中所述至少一个覆盖掩码是至少一个样本覆盖掩码。
方面15是根据方面1至14中任一项所述的装置,其中所述至少一个覆盖掩码基于多样本抗锯齿(MSAA)过程来进行配置。
方面16是根据方面1至15中任一项所述的装置,其中所述当前颜色值或所述当前深度值中的至少一者由图形处理单元(GPU)中的着色器处理器计算。
方面17是根据方面1至16中任一项所述的装置,其中所述装置是无线通信设备,所述装置还包括耦合到所述至少一个处理器的天线或收发器中的至少一者。
方面18是一种用于实现方面1至16中的任一项的图形处理方法。
方面19是一种用于进行图形处理的装置,所述装置包括用于实现方面1至16中的任一项的部件。
方面20是一种存储计算机可执行代码的计算机可读介质(例如,非暂态计算机可读介质),所述代码在由至少一个处理器执行时致使所述至少一个处理器实现方面1至16中的任一项。
Claims (30)
1.一种用于图形处理的装置,所述装置包括:
存储器;以及
至少一个处理器,所述至少一个处理器耦合到所述存储器,并且至少部分地基于存储在所述存储器中的信息,所述至少一个处理器被配置为:
获得与场景中的至少一个当前帧相关联的图元集合,其中所述图元集合中的每一者与所述至少一个当前帧中的多个像素中的至少一个像素相关联;
配置与所述多个像素中的每个像素相关联的至少一个覆盖掩码,其中所述多个像素中的每一者对应于至少一个样本,其中所述至少一个覆盖掩码基于针对所述多个像素中的每一者的所述至少一个样本;
计算与所述多个像素中的每一者相关联的颜色数据或深度数据中的至少一者,其中所述颜色数据包括所述多个像素中的每一者的当前颜色值,其中所述深度数据包括所述多个像素中的每一者的当前深度值;
基于所述至少一个覆盖掩码来更新所述多个像素中的每一者的所述当前颜色值或所述当前深度值中的至少一者;以及
将所述多个像素中的每一者的所述已更新当前颜色值与所述多个像素中的每一者的先前颜色值进行混合,其中所述已更新当前颜色值与所述场景的至少一个当前绘制相关联,并且其中所述先前颜色值与所述场景的至少一个先前绘制相关联。
2.根据权利要求1所述的装置,其中所述至少一个处理器还被配置为:
在所述已更新当前颜色值与所述多个像素中的每一者的所述先前颜色值混合之前针对所述多个像素中的每一者执行深度测试。
3.根据权利要求2所述的装置,其中为了针对所述多个像素中的每一者执行所述深度测试,所述至少一个处理器被配置为:将所述多个像素中的每一者的所述当前深度值与所述多个像素中的每一者的所述先前深度值进行比较。
4.根据权利要求2所述的装置,其中所述深度测试由图形处理单元(GPU)中的渲染后端(RB)执行。
5.根据权利要求1所述的装置,其中所述至少一个处理器还被配置为:
配置与所述多个像素中的每一者的所述深度数据相关联的至少一个深度测试掩码,其中所述至少一个深度测试掩码基于针对所述多个像素中的每一者的所述至少一个样本。
6.根据权利要求5所述的装置,其中基于所述至少一个深度测试掩码来进一步更新所述多个像素中的每一者的所述当前颜色值或所述当前深度值中的至少一者。
7.根据权利要求5所述的装置,其中所述至少一个处理器还被配置为:
基于所述至少一个覆盖掩码和所述至少一个深度测试掩码的组合来配置至少一个合并样本掩码。
8.根据权利要求7所述的装置,其中基于所述至少一个合并样本掩码来进一步更新所述多个像素中的每一者的所述当前颜色值或所述当前深度值中的至少一者。
9.根据权利要求1所述的装置,其中所述颜色数据包括与所述多个像素中的每一者相关联的颜色值集合,并且其中所述深度数据包括与所述多个像素中的每一者相关联的深度值集合。
10.根据权利要求1所述的装置,其中所述至少一个处理器还被配置为:
发送对与所述多个像素中的每一者相关联的所述颜色数据或所述深度数据中的至少一者的指示,其中在计算与所述多个像素中的每一者相关联的所述颜色数据或所述深度数据中的至少一者之后发送所述指示。
11.根据权利要求1所述的装置,其中所述至少一个处理器还被配置为:
在所述已更新当前颜色值与所述多个像素中的每一者的所述先前颜色值混合之后,存储所述多个像素中的每一者的所述已更新当前颜色值或所述已更新当前深度值中的至少一者。
12.根据权利要求11所述的装置,其中所述多个像素中的每一者的所述已更新当前颜色值或所述已更新当前深度值中的至少一者存储在图形处理单元(GPU)存储器(GMEM)或系统存储器中。
13.根据权利要求11所述的装置,其中所述至少一个处理器还被配置为:
在存储所述已更新当前颜色值或所述已更新当前深度值中的至少一者之前生成所述多个像素中的每一者的所述已更新当前颜色值或所述已更新当前深度值中的至少一者。
14.根据权利要求1所述的装置,其中所述至少一个覆盖掩码是至少一个样本覆盖掩码。
15.根据权利要求1所述的装置,其中所述至少一个覆盖掩码基于多样本抗锯齿(MSAA)过程来进行配置。
16.根据权利要求1所述的装置,所述装置还包括耦合到所述至少一个处理器的天线或收发器中的至少一者,其中所述当前颜色值或所述当前深度值中的至少一者由图形处理单元(GPU)中的着色器处理器计算。
17.一种图形处理方法,包括:
获得与场景中的至少一个当前帧相关联的图元集合,其中所述图元集合中的每一者与所述至少一个当前帧中的多个像素中的至少一个像素相关联;
配置与所述多个像素中的每个像素相关联的至少一个覆盖掩码,其中所述多个像素中的每一者对应于至少一个样本,其中所述至少一个覆盖掩码基于针对所述多个像素中的每一者的所述至少一个样本;
计算与所述多个像素中的每一者相关联的颜色数据或深度数据中的至少一者,其中所述颜色数据包括所述多个像素中的每一者的当前颜色值,其中所述深度数据包括所述多个像素中的每一者的当前深度值;
基于所述至少一个覆盖掩码来更新所述多个像素中的每一者的所述当前颜色值或所述当前深度值中的至少一者;以及
将所述多个像素中的每一者的所述已更新当前颜色值与所述多个像素中的每一者的先前颜色值进行混合,其中所述已更新当前颜色值与所述场景的至少一个当前绘制相关联,并且其中所述先前颜色值与所述场景的至少一个先前绘制相关联。
18.根据权利要求17所述的方法,所述方法还包括:
在所述已更新当前颜色值与所述多个像素中的每一者的所述先前颜色值混合之前针对所述多个像素中的每一者执行深度测试。
19.根据权利要求18所述的方法,其中针对所述多个像素中的每一者执行所述深度测试包括:将所述多个像素中的每一者的所述当前深度值与所述多个像素中的每一者的所述先前深度值进行比较。
20.根据权利要求18所述的方法,其中所述深度测试由图形处理单元(GPU)中的渲染后端(RB)执行。
21.根据权利要求17所述的方法,所述方法还包括:
配置与所述多个像素中的每一者的所述深度数据相关联的至少一个深度测试掩码,其中所述至少一个深度测试掩码基于针对所述多个像素中的每一者的所述至少一个样本,其中基于所述至少一个深度测试掩码来进一步更新所述多个像素中的每一者的所述当前颜色值或所述当前深度值中的至少一者。
22.根据权利要求21所述的方法,所述方法还包括:
基于所述至少一个覆盖掩码和所述至少一个深度测试掩码的组合来配置至少一个合并样本掩码,其中基于所述至少一个合并样本掩码来进一步更新所述多个像素中的每一者的所述当前颜色值或所述当前深度值中的至少一者。
23.根据权利要求17所述的方法,其中所述颜色数据包括与所述多个像素中的每一者相关联的颜色值集合,并且其中所述深度数据包括与所述多个像素中的每一者相关联的深度值集合。
24.根据权利要求17所述的方法,所述方法还包括:
发送对与所述多个像素中的每一者相关联的所述颜色数据或所述深度数据中的至少一者的指示,其中在计算与所述多个像素中的每一者相关联的所述颜色数据或所述深度数据中的至少一者之后发送所述指示。
25.根据权利要求17所述的方法,所述方法还包括:
在所述已更新当前颜色值与所述多个像素中的每一者的所述先前颜色值混合之后,存储所述多个像素中的每一者的所述已更新当前颜色值或所述已更新当前深度值中的至少一者。
26.根据权利要求25所述的方法,其中所述多个像素中的每一者的所述已更新当前颜色值或所述已更新当前深度值中的至少一者存储在图形处理单元(GPU)存储器(GMEM)或系统存储器中。
27.根据权利要求25所述的方法,所述方法还包括:
在存储所述已更新当前颜色值或所述已更新当前深度值中的至少一者之前生成所述多个像素中的每一者的所述已更新当前颜色值或所述已更新当前深度值中的至少一者。
28.根据权利要求17所述的方法,其中所述至少一个覆盖掩码是至少一个样本覆盖掩码,其中所述至少一个覆盖掩码基于多样本抗锯齿(MSAA)过程来进行配置,并且其中所述当前颜色值或所述当前深度值中的至少一者由图形处理单元(GPU)中的着色器处理器计算。
29.一种用于图形处理的装置,所述装置包括:
用于获得与场景中的至少一个当前帧相关联的图元集合的部件,其中所述图元集合中的每一者与所述至少一个当前帧中的多个像素中的至少一个像素相关联;
用于配置与所述多个像素中的每个像素相关联的至少一个覆盖掩码的部件,其中所述多个像素中的每一者对应于至少一个样本,其中所述至少一个覆盖掩码基于针对所述多个像素中的每一者的所述至少一个样本;
用于计算与所述多个像素中的每一者相关联的颜色数据或深度数据中的至少一者的部件,其中所述颜色数据包括所述多个像素中的每一者的当前颜色值,其中所述深度数据包括所述多个像素中的每一者的当前深度值;
用于基于所述至少一个覆盖掩码来更新所述多个像素中的每一者的所述当前颜色值或所述当前深度值中的至少一者的部件;以及
用于将所述多个像素中的每一者的所述已更新当前颜色值与所述多个像素中的每一者的先前颜色值进行混合的部件,其中所述已更新当前颜色值与所述场景的至少一个当前绘制相关联,并且其中所述先前颜色值与所述场景的至少一个先前绘制相关联。
30.一种计算机可读介质,所述计算机可读介质存储用于图形处理的计算机可执行代码,所述代码在由处理器执行时使所述处理器:
获得与场景中的至少一个当前帧相关联的图元集合,其中所述图元集合中的每一者与所述至少一个当前帧中的多个像素中的至少一个像素相关联;
配置与所述多个像素中的每个像素相关联的至少一个覆盖掩码,其中所述多个像素中的每一者对应于至少一个样本,其中所述至少一个覆盖掩码基于针对所述多个像素中的每一者的所述至少一个样本;
计算与所述多个像素中的每一者相关联的颜色数据或深度数据中的至少一者,其中所述颜色数据包括所述多个像素中的每一者的当前颜色值,其中所述深度数据包括所述多个像素中的每一者的当前深度值;
基于所述至少一个覆盖掩码来更新所述多个像素中的每一者的所述当前颜色值或所述当前深度值中的至少一者;以及
将所述多个像素中的每一者的所述已更新当前颜色值与所述多个像素中的每一者的先前颜色值进行混合,其中所述已更新当前颜色值与所述场景的至少一个当前绘制相关联,并且其中所述先前颜色值与所述场景的至少一个先前绘制相关联。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2022/118898 WO2024055221A1 (en) | 2022-09-15 | 2022-09-15 | Fast msaa techniques for graphics processing |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN119816864A true CN119816864A (zh) | 2025-04-11 |
Family
ID=90274088
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202280099730.4A Pending CN119816864A (zh) | 2022-09-15 | 2022-09-15 | 用于图形处理的快速msaa技术 |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN119816864A (zh) |
| WO (1) | WO2024055221A1 (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN120852608B (zh) * | 2024-04-11 | 2026-01-27 | 摩尔线程智能科技(北京)股份有限公司 | 掩码传输方法、装置、电子设备、存储介质、程序产品 |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5841447A (en) * | 1995-08-02 | 1998-11-24 | Evans & Sutherland Computer Corporation | System and method for improving pixel update performance |
| US5886701A (en) * | 1995-08-04 | 1999-03-23 | Microsoft Corporation | Graphics rendering device and method for operating same |
| US9396515B2 (en) * | 2013-08-16 | 2016-07-19 | Nvidia Corporation | Rendering using multiple render target sample masks |
| US20210350606A9 (en) * | 2014-04-05 | 2021-11-11 | Sony Interactive Entertainment LLC | Method for efficient construction of high resolution display buffers |
| US10402937B2 (en) * | 2017-12-28 | 2019-09-03 | Nvidia Corporation | Multi-GPU frame rendering |
-
2022
- 2022-09-15 CN CN202280099730.4A patent/CN119816864A/zh active Pending
- 2022-09-15 WO PCT/CN2022/118898 patent/WO2024055221A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| WO2024055221A1 (en) | 2024-03-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11373268B2 (en) | Apparatus and method for graphics processing unit hybrid rendering | |
| CN119998842A (zh) | 改进基于图块的gpu架构中的可见性生成 | |
| KR102777524B1 (ko) | 샘플 공간들과 연관된 포비티드 비닝된 렌더링 | |
| CN118043850A (zh) | Meshlet着色图集 | |
| CN114600149B (zh) | 用于减少绘制命令信息的方法和装置 | |
| WO2024055221A1 (en) | Fast msaa techniques for graphics processing | |
| TW202137141A (zh) | 用於邊緣壓縮抗混疊的方法和裝置 | |
| US20240412450A1 (en) | Checkerboard mask optimization in occlusion culling | |
| US11893654B2 (en) | Optimization of depth and shadow pass rendering in tile based architectures | |
| US20260038183A1 (en) | Fast msaa techniques for graphics processing | |
| KR20240026992A (ko) | Gpu 스코핑에서의 성능 오버헤드 최적화 | |
| CN116348904A (zh) | 用simo方法优化gpu内核以用于利用gpu高速缓存进行缩小 | |
| US20240265486A1 (en) | Backface culling for guard band clipping primitives | |
| US11373267B2 (en) | Methods and apparatus for reducing the transfer of rendering information | |
| US20250252648A1 (en) | Optimization of graphics workloads through future frames | |
| US20230086288A1 (en) | Dynamic variable rate shading | |
| CN119604894A (zh) | 密度驱动的可变速率着色 |
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 |