CN104050632A - 使用一个样本的多样本表面处理 - Google Patents
使用一个样本的多样本表面处理 Download PDFInfo
- Publication number
- CN104050632A CN104050632A CN201310745828.5A CN201310745828A CN104050632A CN 104050632 A CN104050632 A CN 104050632A CN 201310745828 A CN201310745828 A CN 201310745828A CN 104050632 A CN104050632 A CN 104050632A
- Authority
- CN
- China
- Prior art keywords
- data
- multisample
- pixel
- sample
- multisample pixel
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 69
- 238000003860 storage Methods 0.000 claims description 60
- 238000004148 unit process Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 2
- 238000004590 computer program Methods 0.000 abstract description 4
- 210000004027 cell Anatomy 0.000 description 85
- 230000008569 process Effects 0.000 description 38
- 238000010586 diagram Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 14
- 238000004458 analytical method Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 6
- 238000009826 distribution Methods 0.000 description 5
- 239000012634 fragment Substances 0.000 description 5
- 241001269238 Data Species 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004040 coloring Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004381 surface treatment Methods 0.000 description 2
- 244000287680 Garcinia dulcis Species 0.000 description 1
- 101000863856 Homo sapiens Shiftless antiviral inhibitor of ribosomal frameshifting protein Proteins 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- 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
- 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
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
使用一个样本的多样本表面处理。提供用于多样本处理的系统、方法和计算机程序产品。接收多样本像素数据并确定与多样本像素数据相关联的编码状态。用于多样本像素的一个样本的数据和编码状态被提供到处理单元。多样本像素的一个样本由处理单元所处理以生成用于一个样本的经处理的数据,所述经处理的数据代表用于多样本像素的所有样本的或多样本像素的两个或更多个样本的经处理的多样本像素数据。
Description
技术领域
本发明涉及图形处理,并且,更具体地,涉及多样本处理。
背景技术
当多重采样技术用来产生抗锯齿图像时,用于每个像素的处理的量可随着每像素样本数的增加而增加。除了处理增加以外,在图形处理器内的不同处理单元之间转移数据所消耗的带宽的量也增加。处理需求的增加和增加的带宽消耗可导致图形处理性能降低和/或系统成本增加。
因此,存在对于解决增加的处理和增加的带宽消耗的问题和/或与现有技术相关联的其他问题的需求。
发明内容
提供用于多样本处理的系统、方法和计算机程序产品。接收多样本像素数据并确定与多样本像素数据相关联的编码状态。用于多样本像素的一个样本的数据和编码状态被提供到处理单元。多样本像素的一个样本由处理单元所处理以生成用于一个样本的经处理的数据,所述经处理的数据代表用于多样本像素的所有样本的或多样本像素的两个或更多个样本的经处理的多样本像素数据。
附图说明
图1示出根据一个实施例的、用于处理多样本数据的方法的流程图;
图2A示出根据一个实施例的、像素内的样本位置的示意图;
图2B示出根据一个实施例的、在多样本处理期间所使用的各处理单元和互连的示图;
图2C示出根据一个实施例的、图2B中示出的处理单元的示图;
图2D示出根据一个实施例的、图2B中示出的加载/存储单元的另一示图;
图3示出根据一个实施例的、用于处理多样本数据的方法的另一流程图;
图4A示出根据一个实施例的、用于合并处理多样本数据的方法的流程图;
图4B示出根据一个实施例的、用于实施图3中示出的方法步骤的方法的流程图;
图5A示出根据一个实施例的、图2B中示出的处理单元的另一示图;
图5B示出根据一个实施例的、图2B中示出的加载/存储单元的另一示图;
图5C示出根据一个实施例的、在图2B中示出的多样本处理期间所使用的各处理单元和互连的另一示图;
图6A示出根据一个实施例的、用于处理多样本数据的方法的另一流程图;
图6B示出根据一个实施例的、用于合并处理多样本数据的方法的另一流程图;
图7示出根据一个实施例的并行处理单元(PPU);
图8示出根据一个实施例的、图5的流多处理器;以及
图9示出例示性系统,其中可实现各先前实施例的各种架构和/或功能性。
具体实施方式
当常规图形处理器配置为生成多样本表面时,存储器的被分配以存储多样本像素数据的量基于被包括在每个像素中的样本数而增加。随着每像素样本数的增加,读取、写入和传送多样本像素数据所消耗的带宽也增加。
当针对像素的每个样本来说数据相同时,可存储单个样本,所述单个样本代表多样本像素的所有样本或多样本像素的一部分的所有样本,其中所述部分包括两个或更多个样本。编码状态可与多样本像素相关联,其指示单个样本代表所有样本即1SPP(每像素部分一个样本)。在一个实施例中,像素被分组成块,并且当块内的所有多样本像素每个可被各自的单个样本所代表时,1SPP的编码状态可与整个块相关联。当编码状态是1SPP时,用于存储多样本像素数据的存储器占用空间减少,以及读取、写入和传送多样本像素数据所消耗的带宽也减少。此外,在一些情况下,处理单元可配置为处理单个样本以生成用于单个样本的经处理的像素数据,其代表用于两个或更多个样本或甚至像素全部样本的经处理的多样本像素数据。这样,当编码状态是1SPP时,处理多样本像素所需的处理能力也可减少。
图1示出根据一个实施例的、用于多样本处理的方法100的流程图。在步骤105,接收多样本像素数据。在步骤110,确定与多样本像素数据相关联的编码状态。在一个实施例中,分析多样本像素数据以确定编码状态。在另一实施例中,随着多样本像素数据来接收编码状态。在步骤115,用于多样本像素的一个样本的数据和编码状态被提供到处理单元。在步骤120,由处理单元处理像素的一个样本以生成用于一个样本的经处理的数据。用于一个样本的经处理的数据代表用于多样本像素的所有的样本或至少一部分(即整个多样本像素的所有样本或多样本像素的一部分的所有样本)的经处理的多样本像素数据。
现在将关于各种可选架构和特征阐述更多示例性的信息,前述框架根据用户意愿可以采用或可以不采用所述各种可选架构和特征来实现。应强烈注意的是,下面的信息出于示例性目的而被阐述,并且不应视为以任何方式加以限制。任何下面的特征可被可选地包含,排斥或不排斥所描述的其他特征。
图2A示出根据一个实施例的、像素210、211、212和213内的样本位置的示意图200。当数据读取自具有每像素4个样本、具有不是1SPP的编码状态的多样本表面时,针对每个像素在多样本表面中存储与位置A、B、C和D相对应的4个单独的值。多样本表面可以是多样本z缓冲区或多样本颜色缓冲区。相反,当多样本表面的编码状态是1SPP时,仅存储代表所有样本(例如样本A、B、C和D)的值的一个值。
除了像素级别之外,1SPP编码状态还可应用到像素的块或甚至整个表面。像素块可包括在屏幕空间中或存储器中邻近的一个或多个像素。可以以存储单位指定块大小,例如256字节,而非像素的数量。因此,块中的像素的数目可基于多样本模式而变化(即每像素较多样本导致较小的块大小)。相同块中的像素不一定需要在屏幕空间中邻近。在一个实施例中,像素块被定制大小以与可在多线程图形核心内并行处理的像素数相对应。
如图2A所示,样本位置可在每个像素内抖动(即分布)以改进图像质量。在一个实施例中,样本位置可位于每个像素的中心。其他多样本像素模式可包括对于每个像素来说多于4个样本或少于4个样本。用于每个样本的多样本数据可包括z(深度)、颜色、纹理坐标、或与图形基元相关联的其他属性。
图2B示出根据一个实施例的、在多样本处理期间所使用的各处理单元和互连的示图220。L2高速缓存265配置为对与多样本表面的一部分相对应的数据进行高速缓存,这按需要对帧缓冲区存储器270进行读取和写入以满足访问多样本表面的加载和存储请求。L2高速缓存265可直接耦连到帧缓冲区存储器270,或者L2高速缓存265可通过诸如存储器控制器(未示出)的一个或多个中间单元间接地耦连到帧缓冲区存储器270。
在一个实施例中,L2高速缓存265存储或另行获得与多样本表面相关联的编码状态。在一个实施例中,编码状态可针对帧缓冲区存储器270的存储器的每页而存储在存储器控制器内。L2高速缓存265经由交叉开关260耦连到加载/存储单元290。在一个实施例中,帧缓冲区存储器270通过多个存储器接口与L2高速缓存265相接,并且交叉开关260配置为按需要在加载/存储单元290和耦连到不同存储器接口的多个L2高速缓存265之间对数据进行路由以到达帧缓冲区存储器270中的相应存储器位置。图5示出关于存储器接口的较多细节。多个加载/存储单元290可耦连在交叉开关260和配置为处理像素数据的多个处理单元250之间。
不同于当编码状态是1SPP时配置为复制用于多样本像素中的所有样本的样本数据以将多样本像素数据提供到加载/存储单元290,L2高速缓存265可配置为经由交叉开关260将具有仅一个样本多样本像素数和1SPP的编码状态据提供到加载/存储单元290。通过交叉开关260每像素传送较少的数据消耗较少带宽。因为跨交叉开关260转移较少数据,所以消耗的功率也较少。因此,使用1SPP的编码状态来传送多样本像素数据是可取的。在一个实施例中,L2高速缓存265可配置为经由交叉开关260将块大小增加的多样本像素数据(1SPP格式或不是1SPP格式)传送到加载/存储单元290。因此,加载/存储单元290可配置为存储块大小增加的多样本像素数据。在另一个实施例中,L2高速缓存265配置为基于从加载/存储单元290所接收的请求而传送用于多样本像素的样本子集。
加载/存储单元290配置为当从处理单元250接收加载请求时将多样本像素数据提供到处理单元250。加载/存储单元290还配置为从处理单元250接收经处理的多样本像素数据并存储多样本像素数据。加载/存储单元290可包括缓冲区用于在经由交叉开关260和L2高速缓存265将经处理的多样本数据输出到帧缓冲区存储器270之前临时地存储经处理的多样本数据。在一个实施例中,加载/存储单元290至少部分地起高速缓存的作用,所述高速缓存配置为在单个缓冲区中缓冲接收自L2高速缓存265的多样本像素数据和接收自处理单元250的经处理的多样本像素数据。当缓冲区中的条目不可用来存储多样本像素数据或经处理的多样本像素数据时,一个或多个条目经由交叉开关260和L2高速缓存265回写到帧缓冲区存储器270(即被转储)。当尚未采用接收自处理单元250的经处理的多样本像素数据对条目进行写入时,条目可被替换并且不转储到L2高速缓存265。加载/存储单元290的细节结合图2C来进行描述。
加载/存储单元290接收多样本像素数据并确定与多样本像素数据相关联的编码状态。当编码状态是1SPP时,用于多样本像素的一个样本的数据和编码状态被提供到处理单元250。当编码状态不是1SPP时,加载/存储单元290可配置为将用于多样本像素的所有样本或至少一部分的数据与编码状态一起提供到处理单元250。
在一个实施例中,处理单元250可配置为加载多样本像素的单个样本而非多样本像素的所有样本,并且,如果返回单个样本并且用于单个样本的编码状态是1SPP,那么处理单元250处理单个样本。如果返回单个样本并且用于单个样本的编码状态不是1SPP,那么处理单元250随后加载多样本像素的其余样本并处理多样本像素的所有样本。通过推迟其余样本的加载,当编码状态是1SPP并且不加载其余样本时,转移多样本像素数据所消耗的带宽减少。在另一实施例中,如果返回单个样本并且用于单个样本的编码状态不是1SPP,那么处理单元250发出针对一个或多个附加样本的加载请求。
包括与多样本像素的样本相对应的掩码的多样本加载指令可用来加载多样本像素的单个样本或加载多样本像素的一个或多个附加样本。在一个实施例中,多样本加载指令指定与样本相对应的索引以请求样本或样本的序列。当被执行时,多样本加载指令可配置为返回与样本相对应的多样本像素数据和掩码,所述掩码指示多样本像素中的具有多样本像素的相同多样本像素数据和/或编码状态的其他样本。
当编码状态是1SPP时,多样本像素的一个样本由处理单元250所处理以生成用于一个样本的经处理的数据,其代表用于多样本像素的所有样本或至少一部分的经处理的多样本像素数据。当编码状态不是1SPP时,多样本像素部分的所有样本被处理以生成用于所有样本的经处理的数据。因此,当每像素样本数是8时,与当编码状态是1SPP时相比较,当编码状态不是1SPP时每像素处理的量是8倍。当编码状态是1SPP时,处理针对其他数目的每像素样本而成比例地减少。减少多样本像素处理可改进性能并且还可以减少功耗。在其他实施例中,如结合图5A、5B、5C、6A和6B所描述的,处理单元250可配置为处理样本的子集,并且处理单元250提供信息(例如每像素样本掩码或每像素部分样本掩码),所述信息指示哪些样本由输出到加载/存储单元290的经处理的多样本数据所代表。
当处理单元250配置为实施混合操作或片段着色操作时,多样本像素视为与源像素数据组合的目标像素以产生用于多样本像素的经处理的数据。源像素数据针对多样本像素的所有样本具有相同值是常见的,使得混合或着色操作生成用于单个样本的经处理的数据,所述单个样本代表经处理的多样本像素的所有样本的。在该情况中,处理单元250在存储请求中将用于单个样本的经处理的数据与1SPP的编码状态一起提供到加载/存储单元290。否则,当针对所有样本生成经处理的数据时,处理单元250在存储请求中将用于所有样本的经处理的数据与不是1SPP的编码状态一起提供到加载/存储单元290。包括与多样本像素的样本相对应的掩码的多样本存储指令可用来将值存储到多样本像素的一个或多个样本。
可通过随着用于多样本像素的数据提供编码状态来在传送用于每个多样本像素的较少数据中和在数据的处理中实现高效率。针对加载操作和/或存储操作,跨交叉开关260传送数据所消耗的带宽的量可减少。与分配多个线程以生成用于具有不是1SPP的编码状态的多样本像素的数据相比,可由处理单元250分配单个处理线程以生成用于具有1SPP的编码状态的多样本像素的数据。在一个实施例中,加载/存储单元290可配置为在通过交叉开关260将数据传送到L2高速缓存265之前将用于接收自处理单元250的多样本像素的数据合并成块。当数据的整个块被传送到L2高速缓存265时,加载/存储单元290可提供用于整个块的而非用于各自的多样本像素的编码状态。
图2C示出根据一个实施例的、图2B中示出的加载/存储单元290的示图。如图2C所示,在一个实施例中,加载/存储单元290包括高速缓存280、加载请求单元285、合并单元255和覆盖跟踪单元275。高速缓存280接收用于一个或多个多样本像素的数据并将数据存储在高速缓存条目中。数据可与包括两个或更多个多样本像素的块相对应。高速缓存280还可存储与(用于每个块或每个多样本像素的)数据相关联的编码状态。在一个实施例中,高速缓存280还可存储与数据相关联的其他信息,诸如每像素样本数(多样本模式)和/或每像素样本掩码。加载请求单元285配置为确定用于响应于加载请求被返回到处理单元250的数据的编码状态。
在一个实施例中,编码状态随着数据被接收自L2高速缓存265,并且加载请求单元285将编码状态与数据一起提供到处理单元250。在另一实施例中,加载请求单元285不从L2高速缓存265接收编码状态,并且加载请求单元285配置为将用于多样本像素或多样本像素的一部分的不同样本的数据的值加以比较并在当多样本像素的所有样本具有相同值时确定编码状态是1SPP。否则加载请求单元285确定编码状态不是1SPP。在一个实施例中,L2高速缓存265配置为将用于多样本像素或多样本像素的一部分的不同样本的数据的值加以比较并确定用于每个像素的或用于像素的块的编码状态,以将编码状态提供到加载/存储单元290。在其他实施例中,如结合图5A、5B、5C、6A和6B所描述的,L2高速缓存265和/或加载/存储单元290可配置为将用于多样本像素或多样本像素的一部分的不同样本的数据的值加以比较并提供信息(例如每像素样本掩码或每像素部分样本掩码),所述信息指示哪些样本由分别输出到加载/存储单元290或处理单元250的经处理的多样本数据所代表。
取决于多样本模式(即针对多样本像素所使用的样本数),加载请求单元285可配置为生成用于部分多样本像素(即多样本像素的部分)的编码状态。例如,当高速缓存280的高速缓存行是32字节并且多样本表面针对每个多样本像素分别存储4字节的16个样本时,加载请求单元285可配置为将多样本像素的8个不同样本加以比较并确定用于8个样本的编码状态。因此,每个16样本的多样本像素可具有两个编码状态,每部分样本一个编码状态。另一方面,当多样本表面针对每个多样本像素分别存储4字节的4个样本时,加载请求单元285可配置为将用于2个不同多样本像素的4个不同样本加以比较并确定用于两个不同多样本像素的一个编码状态。因此,编码状态的粒度可根据由加载请求单元285所作出的比较的数目和/或高速缓存行的大小而变化。
合并单元255从处理单元250接收用于多样本像素的经处理的数据和与多样本像素相对应的编码状态。合并单元255可包括合并缓冲区258,经处理的数据存储到所述合并缓冲区258中。合并缓冲区258可配置为存储用于一个或多个块的经处理的数据,或甚至当合并缓冲区258中所需的存储的量不足够大以存储用于整个块的经处理的数据时存储用于部分块的经处理的数据。当合并缓冲区258存储多于一个块时,覆盖跟踪单元275配置为跟踪用于每个块的覆盖。此外,当多样本模式针对每个块可能不同时,合并单元255存储指示用于每个块的多样本模式的信息。当合并缓冲区258中的条目被写入时,可能使高速缓存280中的相应高速缓存行或高速缓存行的部分无效。
在一个实施例中,省略了合并缓冲区258,经处理的数据存储在高速缓存280中。换句话说,合并缓冲区258具体化成高速缓存280内的存储用于经处理的像素的数据的条目。当接收自处理单元250的编码状态是1SPP时,多样本像素或多样本像素的一部分的所有样本具有相同值。当样本数高时1SPP编码状态可用于多样本像素的一部分。例如,当存储用于多样本像素中的所有样本的数据所需的字节数大于256字节或高速缓存行的大小时。
在一个实施例中,覆盖跟踪单元275针对每个多样本像素存储单个位,并且当针对多样本像素由加载/存储单元290接收存储请求时位被设置。当用于块的多样本像素的所有位被设置时,已针对块中的所有多样本像素接收存储请求,并且块是“满”的。在另一实施例中,覆盖跟踪单元275使用计数器以跟踪用于块的存储操作的数目以确定是否已针对块中的所有多样本像素接收存储请求。当块是“满”的时,可将用于块的数据从合并缓冲区258或高速缓存280转储到L2高速缓存265。当转储块时,高速缓存280中的存储用于块的数据的条目可标记为空并且可清除覆盖跟踪单元275中的与块相对应的位。
当合并缓冲区258配置为存储部分块时,当覆盖跟踪单元275指示已针对部分块中的所有多样本像素接收存储操作时,可转储用于部分块的经处理的数据。当转储部分块时,高速缓存280中的存储用于部分块的数据的条目可标记为空并且可清除覆盖跟踪单元275中的与部分块相对应的位。存储用于多样本像素组的经处理的数据的优点是可针对整个组例如块将单个编码状态输出到L2高速缓存265,而非针对每个多样本像素输出编码状态。
在某些条件下,可在从处理单元250接收用于块中的所有多样本像素的经处理的数据之前或者当块不是“满”的时,由合并单元255转储块。第一条件是针对“新”块接收经处理的数据并且在合并缓冲区258中的存储不可用来合并新块。第二条件是经处理的数据是用于已针对正被合并的块所接收的多样本像素的(即在覆盖跟踪单元275中与多样本像素相关联的位被设置)。合并单元255可转储已针对块所存储的经处理的数据以采用新经处理的数据再次开始合并块。可替代地,合并单元255可将新经处理的数据与存储在合并缓冲区258中的经处理的数据相比较,并且如果新经处理的数据等于所存储的经处理的数据,那么合并单元255可丢弃新经处理的数据(或采用新经处理的数据覆写所存储的经处理的数据)并避免转储块。当新经处理的数据与所存储的经处理的数据不匹配时,合并单元255转储块以采用新经处理的数据再次开始合并块。可替代地,合并单元255可转储合并缓冲区258中的被所存储的经处理的数据所占用的一个或多个条目并将新经处理的数据存储在该一个或多个条目中。
当不完整的块(即块不是“满”的)被转储时,加载/存储单元290输出用于已从处理单元250所接收的多样本像素的经处理的数据。可由合并单元255使用维持在跟踪单元275中的块覆盖信息以确定哪些多样本像素被转储。当经处理的数据存储在高速缓存280中(即省略了合并缓冲区258)时,高速缓存未命中发生时可转储经处理的像素数据。在一个实施例中,处理单元250配置为并行地处理用于一个块内的样本的数据以使加载/存储单元290能够将样本合并到可作为“满”块被转储到L2高速缓存265的块中。
被转储的用于多样本像素的经处理的数据可全部具有相同的编码状态或可针对每个多样本像素将编码状态存储在合并缓冲区258中。用于不完整块的经处理的数据可随着单个编码状态或随着用于每个多样本像素的编码状态(每像素编码状态)或多样本像素的部分的编码状态被输出。当所有的多样本像素具有相同的编码状态时,经处理的数据可随着指示多样本像素中的哪些被包括在转储中的块掩码被输出。当针对每个多样本像素维持编码状态时,合并单元255可配置为检查用于像素块的每像素编码状态。当所有的每像素编码状态相同时,经处理的数据可随着指示多样本像素中的哪些被包括在转储中的块掩码被输出。
当每像素编码状态针对至少一个多样本像素不同时,可针对各自的多样本像素中的每个样本复制与1SPP编码状态相关联的经处理的数据,并且所有的经处理的数据可随着块掩码和不是1SPP的编码状态被输出。可替代地,可在两个子转储中输出经处理的数据。第一子转储可包括与1SPP的编码状态相关联的经处理的数据和相应的第一块掩码。第二子转储可包括与不是1SPP的编码状态相关联的经处理的数据和相应的第二块掩码。最后,经处理的数据可随着每像素编码状态和块掩码被输出。
图2D示出根据一个实施例的、图2B中示出的加载/存储单元290的另一示图。在一个实施例中,如图2D所示,加载/存储单元290包括高速缓存281、加载请求单元286、合并单元256和覆盖跟踪单元276。加载请求单元286和覆盖跟踪单元276实施与先前所描述的加载请求单元285和覆盖跟踪单元275大致相同的功能。高速缓存281实施与先前所描述的高速缓存280大致相同的功能。然而,高速缓存281配置为从处理单元250接收经处理的多样本像素数据。在一个实施例中,当接收自处理单元250的经处理的多样本像素数据具有1SPP的编码状态时,针对多样本像素或多样本像素的一部分中的所有样本来复制经处理的多样本像素数据并将其存储在高速缓存281中。当配置为以该方式进行操作时,编码状态不需要存储在高速缓存281中。
在一个实施例中,合并单元256配置为侦听(snoop)接收自处理单元250的、对高速缓存281的写入并对由覆盖跟踪单元276所维持的块覆盖掩码进行更新。当块是“满”的时,合并单元256从高速缓存281读取块数据。当转储块时,高速缓存281的存储用于块的数据的条目可标记为空并且可清除覆盖跟踪单元276中的与块相对应的位。
在一个实施例中,当用于被转储的经处理的数据的编码状态不是1SPP时,合并单元256配置为分析经处理的数据。合并单元256配置为将用于每个多样本像素或每个多样本像素的一部分的不同样本的经处理的数据的值加以比较,并确定用于每个像素或用于像素的块的编码状态以将编码状态提供到L2高速缓存265。合并缓冲区259可配置为在实施分析的同时存储用于不同样本的经处理的数据。合并缓冲区259还可配置为随着分析经处理的数据而存储用于每个多样本像素或每个多样本像素的部分的编码状态。
当合并缓冲区259配置为输出部分块时,覆盖跟踪单元276指示已针对部分块中的所有多样本像素接收存储操作时可转储用于部分块的经处理的数据。当转储部分块时,高速缓存281中的存储用于部分块的数据的条目可标记为空并可清除覆盖跟踪单元276中的与部分块相对应的位。
在某些条件下,可在从处理单元250接收用于块中的所有多样本像素的经处理的数据之前或者当块不是“满”的时,由合并单元255转储块。第一条件是针对“新”块接收经处理的数据并且在高速缓存281中的存储不可用来合并新块。第二条件是经处理的数据是用于已针对正被合并的块所接收的多样本像素的(即在覆盖跟踪单元275中与多样本像素相关联的位被设置)。合并单元256可转储已针对块所存储的经处理的数据以采用新经处理的数据再次开始合并块。可替代地,合并单元256可转储高速缓存281中的由所存储的经处理的数据所占用的一个或多个条目并将新经处理的数据存储在该一个或多个条目中。
当不完整的块(即块不是“满”的)被转储时,加载/存储单元290输出已从处理单元250所接收的用于多样本像素的经处理的数据。可由合并单元256使用维持在跟踪单元276中的块覆盖信息以确定哪些多样本像素被转储。当针对高速缓存281发生高速缓存未命中时可转储经处理的像素数据。在一个实施例中,处理单元250配置为并行地处理用于一个块内的样本的数据以使加载/存储单元290能够将样本合并成可作为“满”块被转储到L2高速缓存265的块。
被转储的用于多样本像素的经处理的数据可全部具有相同的编码状态或可针对每个多样本像素将编码状态存储在合并缓冲区259或高速缓存281中。用于不完整块的经处理的数据可随着单个编码状态或随着用于每个多样本像素的编码状态(每像素编码状态)或多样本像素的部分的编码状态被输出。当所有的多样本像素具有相同的编码状态时,经处理的数据可随着指示多样本像素中的哪些被包括在转储中的块掩码被输出。当针对每个多样本像素维持编码状态时,合并单元256可配置为检查用于块的每像素编码状态。当所有的每像素编码状态相同时,经处理的数据可随着指示多样本像素中的哪些被包括在转储中的块掩码被输出。
当每像素编码状态针对至少一个多样本像素不同时,可针对各自的多样本像素中的每个样本来复制与1SPP编码状态相关联的经处理的数据,并且所有的经处理的数据可随着块掩码和不是1SPP的编码状态被输出。可替代地,可在两个子转储中输出经处理的数据。第一子转储可包括与1SPP的编码状态相关联的经处理的数据和相应的第一块掩码。第二子转储可包括与不是1SPP的编码状态相关联的经处理的数据和相应的第二块掩码。最后,经处理的数据可随着每像素编码状态和块掩码被输出。
图3示出根据一个实施例的、用于处理多样本数据的方法300的另一流程图。可通过由图形处理器所执行的着色器程序来实施方法300中示出的步骤。在步骤301,加载/存储单元290接收多样本像素数据。在步骤305,加载/存储单元290确定与多样本像素数据相关联的编码状态是否是1SPP,并且如果是,那么在步骤310,加载/存储单元290将用于每个多样本像素的或多样本像素的部分的一个样本的数据和1SPP的编码状态提供到处理单元250。
在一个实施例中,加载/存储单元290随着多样本像素数据接收用于多样本像素的编码状态。在另一实施例中,如结合图4B以进一步细节所描述的,加载/存储单元290配置为实施多样本像素数据的分析以确定是否可以以1SPP格式对多样本像素数据进行编码。在步骤305,当加载/存储单元290通过分析多样本像素数据而确定可以以1SPP格式对多样本像素数据进行编码时,编码状态被设置为1SPP。在步骤330,像素的一个样本由处理单元250所处理以生成用于像素的所有样本的经处理的数据。
在步骤305,如果加载/存储单元290确定与多样本像素数据相关联的编码状态不是1SPP,那么在步骤315,加载/存储单元290可将用于每个多样本像素的或每个多样本像素部分的所有样本的数据和编码状态提供到处理单元250。在步骤315,编码状态被设置为不是1SPP并与用于每个多样本像素的或每个多样本像素部分的所有样本的数据一起输出到处理单元250。在步骤335,处理单元250处理用于每个多样本像素或每个多样本像素部分的所有样本的数据。
在步骤340,处理单元250基于经处理的数据的表现来将编码状态设置为1SPP或不是1SPP。在步骤345,处理单元250将用于每个多样本像素或每个多样本像素部分的经处理的数据与编码状态一起输出到加载/存储单元290。经处理的数据可包括用于一个样本或用于多样本像素的所有样本或用于多样本像素部分的所有样本的数据。
图4A示出根据一个实施例的、用于合并处理多样本数据的方法400的流程图。虽然图4A中示出的步骤被描述为通过加载/存储单元290来实施,但加载/存储单元290、L2高速缓存265、或处理单元250中的一个或多个可配置为实施图4A中示出的步骤。在图2C中示出的加载/存储单元290的上下文中描述步骤。也可由图2D中示出的加载/存储单元290实施步骤,采用高速缓存281而非合并缓冲区258来存储经处理的数据。
在步骤405,加载/存储单元290从处理单元250接收用于多样本像素的经处理的数据。在步骤410,加载/存储单元290检查随着经处理的数据由处理单元250所提供的编码状态并确定编码状态是否是1SPP。当编码状态不是1SPP时,在步骤412,加载/存储单元290将经处理的数据输出到L2高速缓存265。在另一实施例中,当编码状态不是1SPP时,加载/存储单元290将用于所有样本的经处理的数据存储在合并缓冲区258中。当从合并缓冲区258转储整个块时,加载/存储单元290随后分析经处理的数据以确定针对每个多样本像素是否可以仅使用一个样本来代表用于整个块的经处理的数据。可应用结合图4B所描述的技术以实施分析。
在步骤410,如果编码状态是1SPP,那么在步骤415,加载/存储单元290确定是否因为多样本像素不在被存储在合并缓冲区258中的当前块内而需要新块以存储经处理的数据,并且如果否,那么加载/存储单元290前进到步骤420。如果需要新块,那么在步骤418,在加载/存储单元290前进到步骤420之前将用于当前块的经处理的数据转储到L2高速缓存265并在覆盖跟踪单元275中清除块覆盖。在步骤415,如果不需要新块以存储经处理的数据,那么在步骤420,加载/存储单元290将用于多样本像素的经处理的数据存储在合并缓冲区258中。在步骤422,加载/存储单元290对存储在覆盖跟踪单元275中的块覆盖进行更新,并且加载/存储单元290前进到步骤430。
在步骤430,加载/存储单元290确定存储在合并缓冲区258中的块是否被完全覆盖,并且如果是,那么将用于被完全覆盖的块的经处理的数据转储到L2高速缓存265并在覆盖跟踪单元275中清除块覆盖,并且加载/存储单元290终止对在步骤405所接收的过程多样本像素数据的处置。当合并缓冲区258配置为存储部分块而非整个块时,也可针对部分块实施结合图4A所描述的步骤。
图4B示出根据一个实施例的、用于实施图3中示出的方法300的步骤305的方法的流程图。虽然图4B中示出的步骤描述为由加载/存储单元290来实施,但加载/存储单元290、L2高速缓存265、或处理单元250中的一个或多个可配置为实施图4B中示出的步骤。
在步骤440,加载/存储单元290确定1SPP的编码状态是否随着多样本像素数据而被接收,并且如果是,那么加载/存储单元290前进到步骤310。否则,在步骤445,加载/存储单元290分析多样本像素数据以确定是否可以以1SPP格式对多样本像素数据进行编码。在一个实施例中,加载/存储单元290将用于每个多样本像素或多样本像素的部分的所有样本的值加以比较,以在将接收自L2高速缓存265的像素数据存储在高速缓存280中之前确定像素数据的块是否可每个被单个样本所代表。在另一实施例中,加载/存储单元290将用于读取自高速缓存280的、用于输出到处理单元250的每个多样本像素的所有样本的值加以比较,以在将像素数据输出到处理单元250之前确定数据是否可每个被单个样本所代表。在步骤450,如果加载/存储单元290确定可以以1SPP格式对多样本像素数据进行编码,那么加载/存储单元290前进到步骤310。否则,加载/存储单元290前进到步骤315。
当数据针对像素的每个样本相同时,1SPP编码状态可用来减少用于存储多样本像素数据的存储器占用空间,并且读取、写入和传送多样本像素数据的所消耗的带宽也减少。此外,在一些情况中,诸如处理单元250的处理单元可配置为处理单个样本以生成用于单个样本的经处理的多样本像素数据,其代表用于多样本像素的两个或更多个样本的、或甚至所有样本的经处理的多样本像素数据。
使用样本子集的多样本表面处理
除了1SPP和不是1SPP的编码状态以外,还可提供或确定这样的编码状态,其允许用于多样本像素的样本子集具有相同数据值,但不要求多样本像素中的所有样本具有相同数据值。这类编码状态称为子集编码状态。换句话说,当编码状态是子集时,可存储用于单个样本的数据,其代表用于包括单个样本的多样本像素的子集中的所有样本的多样本像素数据。当可使用子集编码状态时,分析多样本像素数据以标识多样本像素具有相等数据的样本的子集。
每个子集包括至少一个样本,并且子集的编码状态指示哪些样本被包括在用于多样本像素的子集中。例如,子集编码状态可包括每像素样本掩码,所述每像素样本掩码指示多样本像素的、被包括在子集中的样本。典型地,子集编码状态与各自的多样本像素相关。然而,子集的编码状态也可用于多样本像素数据的整个块或部分块。
图5A示出根据一个实施例的、图2B中示出的加载/存储单元290的另一示图。在一个实施例中,如图5A所示,加载/存储单元290包括高速缓存580、加载请求单元585、合并单元555和覆盖跟踪单元575。高速缓存580实施与先前所描述的高速缓存280大致相同的功能,不同之处是存储在高速缓存中的任何编码状态还可包括用于子集编码状态的每像素样本掩码。
加载请求单元585至少实施先前所描述的加载请求单元285的功能。加载请求单元585还包括分析单元500,所述分析单元500可配置为分析多样本像素数据以确定是否可以以1SPP格式对多样本像素数据进行编码,如先前所述。此外,分析单元500可配置为分析多样本像素数据以确定是否可采用子集的编码状态对多样本像素数据进行编码。更具体地,分析单元500可生成用于每个样本子集的每像素样本掩码,其中子集中的所有样本可由子集的单个样本所代表,即子集中的样本具有相同数据。分析单元500可确定输出到处理单元250的编码状态。在一个实施例中,编码状态随着数据被接收自L2高速缓存265,并且加载请求单元585将编码状态与数据一起提供到处理单元250。
合并单元555至少实施先前所描述的合并单元255的功能。合并单元555从处理单元250接收用于多样本像素的经处理的数据和与多样本像素相对应的编码状态。合并单元555可包括合并缓冲区558,经处理的数据存储在所述合并缓冲区558中。当编码状态是子集时,合并缓冲区558还可配置为存储用于样本子集的每像素样本掩码。可替代地,每像素样本掩码可存储在覆盖跟踪单元575中并且覆盖跟踪单元575可配置为跟踪多样本像素覆盖以及块(或部分块)覆盖。可使用按位(bit-wise)OR操作来归并多样本覆盖掩码。当在所存储的、用于多样本像素的多样本覆盖掩码中的所有位被设置时,多样本像素被完全覆盖。然而,如果合并单元555配置为随着子集的编码状态输出经处理的多样本像素数据,那么应分开存储用于每个子集的分开的每像素覆盖掩码。在一个实施例中,每像素样本掩码随着用于每个子集的经处理的多样本像素数据存储在合并缓冲区558中。
合并单元555还可包括先前所描述的分析单元500,所述分析单元500可配置为分析多样本像素数据以确定是否可采用1SPP、不是1SPP、或子集的编码状态来对多样本像素数据进行编码。分析单元500可确定输出到L2高速缓存265的编码状态。在一个实施例中,编码状态随着数据接收自处理单元250并且合并单元555将编码状态与经处理的数据一起提供到L2高速缓存265。
当针对多样本像素接收已针对正被合并的块所接收的经处理的多样本数据时(即与多样本像素相关联的至少一个位在存储在覆盖跟踪单元575中的每像素样本覆盖掩码中被设置),如果新经处理的数据等于所存储的经处理的数据,那么当用于多样本像素的编码状态是子集时可归并多样本数据。否则,新经处理的数据与所存储的经处理的数据分开存储,并且存储在覆盖跟踪单元575中的每像素样本覆盖掩码被更新以将新的每像素样本覆盖掩码和所存储的每像素样本覆盖掩码加以归并。
当每像素编码状态针对块中的至少一个多样本像素不同时,可针对各自的多样本像素中的每个样本复制与1SPP编码状态相关联的经处理的数据,并可针对各自的子集中的每个样本复制与子集编码状态相关联的经处理的数据。随后所有的经处理的数据可随着块掩码和不是1SPP的编码状态被输出。可替代地,可在两个或三个子转储中输出经处理的数据。第一子转储可包括与1SPP的编码状态相关联的经处理的数据和相应的第一块掩码。第二子转储可包括与不是1SPP的编码状态相关联的经处理的数据和相应的第二块掩码。第三子转储可包括与子集的编码状态(包括每像素样本掩码)相关联的经处理的数据和相应的第三块掩码。最后,经处理的数据可随着每像素编码状态和块掩码被输出,其中用于每个像素的编码状态可包括子集的编码状态,其包括两个或更多个每像素样本掩码。
在一个实施例中,合并缓冲区558将经处理的多样本像素数据存储为像素(x、y、经处理的数据、每像素样本掩码)值的列表。x、y坐标可以是块相关的。值存储为元组(tuple)的阵列,其中新传入的经处理的数据存储在下一可用索引中而非相对于多样本像素的x、y位置。这可允许与多样本像素的不同样本相对应的、相等的经处理的数据值在合并缓冲区558的相同条目内“归并”。在一个实施例中,当两个值在相互的阈值内时可归并数据值。在一个实施例中,可针对每个属性指定不同阈值。因此可使用与用于归并z值不同的阈值来归并颜色值。在一个实施例中,合并缓冲区558可实现为内容可寻址存储器(CAM)。当转储合并缓冲区558时,可输出元组列表以发送到L2高速缓存265,或者存储在合并缓冲区558中的经处理的数据可扩展到不是1SPP编码状态的格式。
图5B示出根据一个实施例的、图2B中示出的加载/存储单元290的另一示图。在一个实施例中,如图5B所示,加载/存储单元290包括高速缓存581、加载请求单元586、合并单元556和覆盖跟踪单元576。加载请求单元586和覆盖跟踪单元576实施与先前所描述的加载请求单元585和覆盖跟踪单元575大致相同的功能。高速缓存581实施与先前所描述的高速缓存580大致相同的功能。然而,高速缓存581配置为从处理单元250接收经处理的多样本像素数据。在一个实施例中,当接收自处理单元250的经处理的多样本像素数据具有1SPP的编码状态时,针对多样本像素或多样本像素的部分中的所有样本复制经处理的多样本像素数据并将其存储在高速缓存581中。类似地,当接收自处理单元250的经处理的多样本像素数据具有子集的编码状态时,针对多样本像素的子集中的所有样本复制经处理的多样本像素数据并将其存储在高速缓存581中。当配置为以该方式进行操作时,编码状态不需要存储在高速缓存581中。
在一个实施例中,合并单元558配置为侦听接收自处理单元250的、对高速缓存581的写入并对由覆盖跟踪单元576所维持的块覆盖掩码和每像素样本覆盖掩码进行更新。当块是“满”的时,合并单元556从高速缓存581读取块数据。当转储块时,高速缓存581的存储用于块的数据的条目可标记为空并且可清除覆盖跟踪单元576中的与块相对应的位。
在一个实施例中,当用于被转储的经处理的数据的编码状态不是1SPP时,合并单元256、合并单元256内的分析单元500配置为分析经处理的数据。分析单元500可配置为将用于每个多样本像素的不同样本的经处理的数据的值加以比较,并确定用于每个像素或用于像素的块的编码状态以将编码状态提供到L2高速缓存265。合并缓冲区559可配置为在实施分析的同时存储用于不同样本的经处理的数据。合并缓冲区559还可配置为随着经处理的数据被分析而存储用于每个多样本像素或每个多样本像素的部分的编码状态。
当合并缓冲区559配置为输出部分块时,覆盖跟踪单元576指示已针对部分块中的所有多样本像素的所有样本接收存储操作时可转储用于部分块的经处理的数据。当转储部分块时,高速缓存581中的存储用于部分块的数据的条目可标记为空并可清除覆盖跟踪单元576中的与部分块相对应的位。
在某些条件下,可在从处理单元250接收用于块中的所有多样本像素的经处理的数据之前或者当块不是“满”的时,由合并单元556转储块。第一条件是针对“新”块接收经处理的数据并且在高速缓存581中的存储不可用来合并新块。第二条件是经处理的数据用于已针对正被合并的块所接收的多样本像素的样本(即在覆盖跟踪单元576中与多样本像素的样本相关联的位被设置)。合并单元556可转储已针对块所存储的经处理的数据以采用新经处理的数据再次开始合并块。可替代地,合并单元556可转储高速缓存581中的由所存储的经处理的数据所占用的一个或多个条目并将新经处理的数据存储在该一个或多个条目中。
当不完整的块(即块不是“满”的)被转储时,加载/存储单元290输出用于已从处理单元250所接收的多样本像素的经处理的数据。可由合并单元556使用维持在跟踪单元576中的块覆盖信息以确定哪些多样本像素被转储。当针对高速缓存581发生高速缓存未命中时可转储经处理的像素数据。在一个实施例中,处理单元250配置为并行地处理用于一个块内的样本的数据以使加载/存储单元290能够将样本合并成可作为“满”块被转储到L2高速缓存265的块。
用于被转储的多样本像素的经处理的数据可全部具有相同的编码状态或可针对每个多样本像素或针对多样本像素的每个样本子集将编码状态存储在合并缓冲区559或高速缓存581中。用于不完整块的经处理的数据可随着单个编码状态或随着用于每个多样本像素的编码状态(每像素编码状态)或用于多样本像素的样本子集的编码状态被输出。当所有的多样本像素具有相同的编码状态时,经处理的数据可随着指示多样本像素中的哪些被包括在转储中的块掩码被输出。当针对每个多样本像素维持编码状态时,合并单元556可配置为检查用于块的每像素或每子集编码状态。当所有的每像素编码状态相同时,经处理的数据可随着指示多样本像素中的哪些被包括在转储中的块掩码被输出。当编码状态是子集时,将由合并单元556输出每像素样本掩码。
当每像素编码状态针对块中的至少一个多样本像素不同时,可针对各自的多样本像素中的每个样本复制与1SPP编码状态相关联的经处理的数据,并可针对各自的子集中的每个样本复制与子集编码状态相关联的经处理的数据。随后所有的经处理的数据可随着块掩码和不是1SPP的编码状态被输出。当每像素编码状态针对块中的至少一个多样本像素不同时(即子集和1SPP),与1SPP编码状态相关联的经处理的数据可编码为样本子集。可替代地,可在两个或三个子转储中输出经处理的数据。第一子转储可包括与1SPP的编码状态相关联的经处理的数据和相应的第一块掩码。第二子转储可包括与不是1SPP的编码状态相关联的经处理的数据和相应的第二块掩码。第三子转储可包括与子集的编码状态(包括每像素样本掩码)相关联的经处理的数据和相应的第三块掩码。最后,经处理的数据可随着每像素编码状态和块掩码被输出,其中用于每个像素的编码状态可包括子集的编码状态,其包括两个或更多个每像素样本掩码。
图5C示出根据一个实施例的、在多样本处理期间所使用的各处理单元和互连的示图520。L2高速缓存265实施L2高速缓存265的功能并还可包括一个或多个分析单元500以分析多样本像素数据并确定与多样本像素数据相关联的编码状态。处理单元550实施处理单元250的功能并还可包括分析单元500,所述分析单元500配置为在处理接收自加载/存储单元290的多样本像素数据之前分析多样本像素数据并确定与多样本像素数据相关联的编码状态。
图6A示出根据一个实施例的、用于处理多样本数据的方法600的另一流程图。可通过由图形处理器所执行的着色器程序来实施方法600中示出的步骤。在步骤601,加载/存储单元290接收多样本像素数据。在步骤603,加载/存储单元290确定与多样本像素数据相关联的编码状态是否是1SPP,并且如果是,那么在步骤608,加载/存储单元290将用于每个多样本像素的或多样本像素的部分的一个样本的数据和1SPP的编码状态提供到处理单元250。
在一个实施例中,加载/存储单元290随着多样本像素数据接收用于多样本像素的编码状态。在另一实施例中,加载/存储单元290包括分析单元500并配置为实施多样本像素数据的分析以确定多样本像素数据是否可以与1SPP或子集的编码状态相关联。在步骤603,当加载/存储单元290通过分析多样本像素数据确定可以以1SPP格式对多样本像素数据进行编码时,编码状态被设置为1SPP。在步骤614,像素的一个样本由处理单元250所处理以生成用于像素或像素部分的所有样本的经处理的数据。
在步骤603,如果加载/存储单元290确定与多样本像素数据相关联的编码状态不是1SPP,那么在步骤606,加载/存储单元290确定多样本像素数据是否可以与子集的编码状态相关联。在步骤616,当加载/存储单元290通过分析多样本像素数据确定可采用子集的编码状态对多样本像素数据进行编码时,编码状态被设置为子集并且相应的每像素样本掩码被包括在用于每个样本子集的编码状态中。在步骤616,编码状态与用于每个样本子集的一个样本的数据一起被输出到处理单元250。在步骤618,像素的一个样本由处理单元250所处理以生成用于样本子集的所有样本的经处理的数据。
在步骤606,如果加载/存储单元290确定与多样本像素数据相关联的编码状态不是子集,那么在步骤623,加载/存储单元290可将用于每个多样本像素的或每个多样本像素部分的所有样本的数据和编码状态提供到处理单元250。在步骤623,编码状态被设置为不是1SPP并与用于每个多样本像素的或每个多样本像素部分的所有样本的数据一起输出到处理单元250。在步骤626,处理单元250处理用于每个多样本像素或每个多样本像素部分的所有样本的数据。
在步骤632,处理单元250基于经处理的数据的表现将编码状态设置为1SPP、子集或不是1SPP。在步骤634,处理单元250将用于每个多样本像素、每个多样本像素部分、或每个样本子集的经处理的数据与编码状态一起输出到加载/存储单元290。经处理的数据可包括用于多样本像素的一个样本或所有样本、每个样本子集的一个样本、用于多样本像素部分的所有样本的一个样本、或多样本像素的所有样本的数据。
图6B示出根据一个实施例的、用于合并处理多样本数据的方法635的流程图。虽然图6B中示出的步骤被描述为通过加载/存储单元290来实施,但加载/存储单元290、L2高速缓存265(或565)、或处理单元250(或550)中的一个或多个可配置为实施图6B中示出的步骤。在图5A中示出的加载/存储单元290的上下文中描述步骤。也可由图5B中示出的加载/存储单元290实施步骤,采用高速缓存581而非合并缓冲区558来存储经处理的数据。
在步骤605,加载/存储单元290从处理单元250接收用于多样本像素的经处理的数据。在步骤607,加载/存储单元290确定是否因为多样本像素不在被存储在合并缓冲区558中的当前块内而需要新块以存储经处理的数据,并且如果否,那么加载/存储单元290前进到步骤610。如果需要新块,那么在步骤609,在加载/存储单元290前进到步骤610之前将用于当前块的经处理的数据转储到L2高速缓存265并在覆盖跟踪单元575中清除块覆盖。
在步骤610,加载/存储单元290检查由处理单元250随着经处理的数据所提供的编码状态并确定编码状态是否是1SPP。当编码状态不是1SPP时,在步骤640,加载/存储单元290确定经处理的数据是否可编码为一个或多个子集。加载/存储单元290可使用分析单元500实施对经处理的数据的分析以确定编码状态。如果经处理的数据可编码为一个或多个子集,那么在步骤645,针对每个子集生成每像素样本掩码。在步骤650,加载/存储单元290确定合并缓冲区558中的条目是否与用于多样本像素的x、y坐标(或其他唯一标识符)相匹配。如果在步骤650找到相匹配的条目,那么在步骤655,加载/存储单元290将经处理的数据归并到相匹配的条目中。否则,在步骤660,加载/存储单元290将经处理的数据存储在合并缓冲区558的空条目中。
在步骤640,如果加载/存储单元290确定无法编码一个或多个子集,那么在步骤660,加载/存储单元290将经处理的数据存储在合并缓冲区558的空条目中。当经处理的数据无法编码为1SPP或子集时,编码状态不是1SPP,并针对多样本像素存储用于每个样本的经处理的数据。在另一实施例中,当编码状态不是1SPP时加载/存储单元290将经处理的数据输出到L2高速缓存265。
在步骤610,如果编码状态是1SPP,那么在步骤620,加载/存储单元290将用于多样本像素的经处理的数据存储在合并缓冲区558中。在步骤665,加载/存储单元290对存储在覆盖跟踪单元575中的块覆盖进行更新。在步骤670,加载/存储单元290确定存储在合并缓冲区558中的块是否被完全覆盖,并且如果是,那么将用于被完全覆盖的块的经处理的数据转储到L2高速缓存265并在覆盖跟踪单元575中清除块覆盖。随后加载/存储单元290终止对在步骤605所接收的过程多样本像素数据的处置。当合并缓冲区558配置为存储部分块而非整个块时,也可针对部分块实施结合图6B所描述的步骤。
当数据针对多样本像素的样本的一个或多个子集相同时,子集编码状态可用来减少用于存储多样本像素数据的存储器占用空间,并且读取、写入和传送多样本像素数据的所消耗的带宽也减少。此外,在一些情况中,诸如处理单元250或550的处理单元可配置为处理单个样本以生成用于单个样本的经处理的多样本像素数据,其代表用于多样本像素的两个或更多个样本的、或甚至所有样本的经处理的多样本像素数据。
多样本加载和存储指令
如先前所述,可支持多样本加载指令(SULD.MS),其返回指示已知哪些样本具有相同值的样本掩码。多样本加载指令还指定多样本像素的地址或坐标。在一个实施例中,多样本加载指令返回指示多样本像素是否具有不是1SPP的编码状态(即针对多样本像素的每个样本存储分开的值)的断言。在另一实施例中,断言指示多样本像素的编码状态,例如1SPP、不是1SPP、或子集。
在一个实施例中,到多样本加载指令的输入包括像素地址和与多样本像素的一个样本相对应的样本标识符。除了返回用于一个样本的数据之外,多样本加载指令还返回整数样本掩码,所述整数样本掩码指示已知多样本像素中的哪些其他样本具有与该一个样本相同的数据。可定义多样本加载指令使得可伺机计算样本掩码。例如,如果已知多样本像素是具有1SPP的编码状态的块的一部分,那么样本掩码将指示即多样本像素的所有样本具有相同数据。当多样本像素的编码状态是子集时,样本掩码将指示哪些样本被包括在相同子集中作为与指定的样本标识符相对应的样本。加载/存储单元290或L2高速缓存265可配置为分析多样本像素数据,并生成子集相对应的每像素样本掩码,所述子集包括与指定的样本标识符相对应的样本。所生成的每像素样本掩码可作为样本掩码由多样本加载指令返回。在一个实施例中,加载/存储单元290或L2高速缓存265分析存储在高速缓存行中的其他样本以生成样本掩码,因此当用于所有样本的数据不能存储在单个高速缓存行中时样本掩码可以不代表子集中的所有样本。
此外,可支持接受样本掩码的多样本存储指令(SUST.MS),其中随多样本存储指令所提供的值被存储到根据指定的样本掩码所使能的多样本像素的每个样本。在一个实施例中,指示完全覆盖的像素的样本掩码可以以1SPP格式存储,如图6B所示。在另一实施例中,指示被部分覆盖的像素的样本掩码可以以子集编码来存储。
表1所示的代码示出可如何在着色器程序中使用SUST.MS和SULD.MS指令以计算和存储像素中的被基元所覆盖的样本值的函数的示例。
表1
像素覆盖掩码指示新基元的样本覆盖而无论针对每个样本所存储的值如何(不是对其中样本全部存储相同数据的子集的样本覆盖)。在循环的每次迭代中,使用SULD.MS指令加载根据coverageMask(覆盖掩码)所覆盖的一个样本的值。SULD.MS指令将每像素样本掩码(或每高速缓存行样本掩码)返回。所要求的样本的值被处理以生成经处理的值。
用于一个样本的经处理的数据被返回并存储到所有(根据每像素样本掩码)与该一个样本具有相同值的、并且由新基元所覆盖的样本。将coverageMask与每像素样本掩码进行按位AND(与)以确保仅写入由新基元所覆盖的样本。coverageMask随后基于由SUST.MS所写入的样本进行更新。仅针对每个样本子集执行循环,而非针对根据像素覆盖掩码所覆盖的每个样本执行。
在一个实施例中,分析单元500实现为固定功能电路,其配置为实现比较操作以计算由SULD.MS指令所返回的每像素样本掩码。例示性实现方案使用32字节的高速缓存行大小,并包括8个4字节比较器。取决于多样本像素的数据格式,4字节组被多路复用到比较器的输入中。例如,当数据格式是4BPP(例如RGBA8)时,8个比较器实施针对8个dword(数据字(dataword),其中数据字是4字节)的比较:
dword[i]==dword[0]
dword[i]==dword[1]
dword[i]==dword[2]
dword[i]==dword[3]
dword[i]==dword[4]
dword[i]==dword[5]
dword[i]==dword[6]
dword[i]==dword[7]
其中<i>是正被获取的样本。取决于多样本模式(即每像素的样本数),适当的比较可归并到所返回的每像素样本掩码中。8xAA(每像素8个样本)的多样本模式使用全部8个比较器,4XAA(每像素4个样本)使用一半的比较器,以此类推。
如果多样本像素的数据格式是8BPP(例如RGBA16F),那么比较可布置如下:
dword[2*i+0]==dword[0](样本0的下半部分)
dword[2*i+1]==dword[1](样本0的上半部分)
dword[2*i+0]==dword[2](样本1的下半部分)
dword[2*i+1]==dword[3](样本1的上半部分)
dword[2*i+0]==dword[4](样本2的下半部分)
dword[2*i+1]==dword[5](样本2的上半部分)
dword[2*i+0]==dword[6](样本3的下半部分)
dword[2*i+1]==dword[7](样本3的上半部分)
如果多样本模式是4xAA,那么上文示出的布置可对像素中的所有样本进行比较。如果多样本模式是8xAA,那么上文示出的布置将仅对像素中的一半的样本进行比较,并且每像素样本掩码代表多样本像素的一部分,或者实施另一集合的比较以生成用于整个多样本像素的每像素样本掩码。
在可替代实施例中,可使用过滤电路以实施比较。例如,加载/存储单元290可实现MIN和MAX过滤模式,模式采取双线性占用空间(4个纹元)并配置为计算按分量的最小或最大的4个纹元值,而非计算加权平均。在一个实施例中,加载/存储单元290包括配置为实施纹理操作的纹理单元。纹理单元可包括值为至少4个纹元的比较器,其可配置为实施等式比较,以及MIN和MAX过滤模式操作。类似地,加载/存储单元290可支持深度(z)比较操作(即将所采样的值与着色器提供的“参考”值进行比较),其可用来实施针对深度值的比较。
并行处理系统
图7示出根据一个实施例的并行处理单元(PPU)700。虽然本文提供并行处理器作为PPU700的示例,但应特别注意的是,这类处理器仅出于示例性目的而阐述,并且可出于相同目的采用任何处理器以对其进行补充和/或替换。在一个实施例中,PPU700配置为在两个或更多个流多处理器(SM)750中并发地执行多个线程。在一个实施例中,处理单元250和550实现为SM750。线程(即执行的线程)是在特定SM750内执行的指令集的实例化。下文结合图8更详细描述的每个SM750可包括但不限于一个或多个处理核心、一级(L1)高速缓存、共享存储器等。
在一个实施例中,PPU700包括输入/输出(I/O)单元705,其配置为通过系统总线702传送和接收来自中央处理单元(CPU)(未示出)的通信(即命令、数据等)。I/O单元705可实现用于高速外围部件互连(PCIe)总线上的通信的PCIe接口。在可替代实施例中,I/O单元705可实现其他类型的公知总线接口。
PPU700还包括主机接口单元710,其将命令解码并将命令传送到网格管理单元715或如命令可指定的PPU700的其他单元(例如存储器接口780)。主机接口单元710配置为路由PPU700的各逻辑单元之间的通信。
在一个实施例中,由CPU将被编码为命令流的程序写入缓冲区。缓冲区是例如存储器704或系统存储器的存储器中的区域,其可由CPU和PPU700二者访问(即读/写)。CPU将命令流写入缓冲区并随后将指向命令流开始的指针传送到PPU700。主机接口单元710为网格管理单元(GMU)715提供指向一个或多个流的指针。GMU715选择一个或多个流并配置为将所选择的流组织成挂起网格池。挂起网格池可包括尚未被选择用于执行的新网格和已被部分地执行并且已被暂停的网格。
耦连在GMU715和SM750之间的工作分布单元720管理活动网格池,选择并分派活动网格用于由SM750执行。当挂起的网格有资格执行、即不具有未解决的数据依赖时,挂起的网格由GMU715转移到活动网格池。当活动网格的执行被依赖阻塞时,活动网格被转移到挂起池。当网格的执行完成时,网格被工作分布单元720从活动网格池移除。除了接收来自主机接口单元710和工作分布单元720的网格以外,GMU715还接收在网格的执行期间由SM750所动态生成的网格。这些动态生成的网格加入挂起网格池中的其他挂起的网格。
在一个实施例中,CPU执行实现应用编程接口(API)的驱动程序内核,该应用编程接口使能在CPU上执行的一个或多个应用以调度用于在PPU700上执行的操作。应用可包括使驱动程序内核生成一个或多个网格用于执行的指令(即API调用)。在一个实施例中,PPU700实现SIMD(单指令、多数据)结构,其中由线程块中的不同线程对不同数据集并发地执行网格中的每个线程块(即线程束(warp))。驱动程序内核定义包含k个相关线程的线程块,使得相同线程块中的线程可通过共享存储器交换数据。在一个实施例中,线程块包括32个相关线程,并且网格是执行相同流的一个或多个线程块的阵列,并且不同的线程块可通过全局存储器交换数据。
在一个实施例中,PPU700包括X个SM750(X)。例如,PPU700可包括15个不同的SM750。每个SM750是多线程的并配置为并发地执行来自特定线程块的多个线程(例如32个线程)。SM750中的每一个经由加载/存储单元290和交叉开关260(或其他类型的互连网络)连接到二级(L2)高速缓存265。加载/存储单元290配置为实施接收自SM750的加载和存储操作,如先前所描述的。
L2高速缓存265连接到一个或多个存储器接口780。存储器接口780实现16、32、64、128位数据总线等等,用于高速数据转移。在一个实施例中,PPU700包括U个存储器接口780(U),其中每个存储器接口780(U)连接到相对应的存储器设备704(U)。例如,PPU700可连接到多达6个存储器设备704,诸如图形双数据速率、版本5、同步动态随机存取存储器(GDDR5SDRAM)。
在一个实施例中,PPU700实现多级存储器层次。存储器704位于耦连到PPU700的SDRAM的片外。来自存储器704的数据可被获取并存储在L2高速缓存265中,该L2高速缓存265位于片上并在各SM750之间共享。可采用L2高速缓存565来替换L2高速缓存265。在一个实施例中,SM750中的每一个还实现L1高速缓存。L1高速缓存是专用于特定SM750的私有存储器。L1高速缓存中的每一个耦连到共享的L2高速缓存265。来自L2高速缓存265的数据可被获取并存储在L1高速缓存中的每一个中用于SM750的功能单元中的处理。
在一个实施例中,PPU700包括图形处理单元(GPU)。PPU700配置为接收指定用于处理图形数据的着色器程序的命令。图形数据可被定义为诸如点、线、三角形、四边形、三角形条带等基元的集合。典型地,基元包括指定用于(例如在模型空间坐标系中的)基元的若干顶点以及与基元的每个顶点相关联的属性的数据。PPU700可配置为处理图形基元以生成帧缓冲区(即用于显示器的像素中的每一个的像素数据)。驱动程序内核实现图形处理管线,诸如由OpenGL API定义的图形处理管线。
应用将用于场景的模型数据(即顶点和属性的合集)写到存储器。模型数据定义在显示器上可见的对象中的每一个。应用随后对驱动程序内核做出请求模型数据被渲染和显示的API调用。驱动程序内核读取模型数据并将命令写到缓冲区以实施一个或多个操作来处理模型数据。命令可将包括顶点着色器、外壳着色器、几何着色器、像素着色器等中的一个或多个的不同着色器程序编码。
例如,GMU715可配置一个或多个SM750为执行处理由模型数据所定义的若干顶点的顶点着色器程序。在一个实施例中,GMU715可配置不同SM750为并发地执行不同着色器程序。例如,SM750的第一子集可配置为执行顶点着色器程序,而SM750的第二子集可配置为执行像素着色器程序。SM750的第一子集处理顶点数据以产生经处理的顶点数据并经由加载存储单元290和交叉开关260将经处理的顶点数据写到L2高速缓存265和/或存储器704。在经处理的顶点数据被光栅化(即从三维数据变换成屏幕空间中的二维数据)以产生片段数据(fragment data)之后,SM750的第二子集执行像素着色器以产生经处理的片段数据,其随后与其他经处理的片段数据混归并被写到存储器704中的帧缓冲区。顶点着色器程序和像素着色器程序可并发地执行,以管线的方式处理来自同一场景的不同数据直到用于场景的所有模型数据已被渲染到帧缓冲区为止。随后,帧缓冲区的内容被传送到显示控制器用于在显示设备上显示。
PPU700可包括在台式计算机、膝上型计算机、平板计算机、智能电话(例如无线、手持设备)、个人数字助理(PDA)、数字相机、手持电子设备等等中。在一个实施例中,PPU700具体化在单个半导体衬底上。在另一实施例中,PPU700连同一个或多个其他逻辑单元被包括在片上系统(SoC)中,所述一个或多个其他逻辑单元诸如精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数模转换器(DAC)等。
在一个实施例中,PPU700可被包括在包括诸如GDDR5SDRAM的一个或多个存储器设备704的图形卡上。图形卡可配置为与包括例如北桥芯片集和南桥芯片集的、台式计算机的主板上的PCIe槽相接。在又一实施例中,PPU700可以是被包括在主板的芯片集(即北桥)中的集成图形处理单元(iGPU)。
图8示出根据一个实施例的、图7的流多处理器750。如图8所示,SM750包括指令高速缓存805、一个或多个调度器单元810、寄存器堆820、一个或多个处理核心850、一个或多个双精度单元(DPU)851、一个或多个特殊功能单元(SFU)852、一个或多个加载/存储单元(LSU)853、互连网络880以及共享存储器/L1高速缓存870。SM750耦连到加载/存储单元290。加载/存储单元290除图2C中示出的单元以外还可包括一个或多个纹理单元。
在一个实施例中,SM750和加载/存储单元290实现在GPU内。在这类实施例中,加载/存储单元290包括一个或多个纹理单元,所述一个或多个纹理单元配置为从存储器704加载纹理映射图(即纹元的2D阵列)并对纹理映射图进行采样以产生所采样的纹理值用于在着色器程序中使用。纹理单元使用mip-map(即细节级别变化的纹理映射图)实现诸如抗锯齿操作的纹理操作。
如上文所述,工作分布单元720分派活动网格用于在PPU700的一个或多个SM750上执行。调度器单元810从工作分布单元720接收网格并管理用于每个活动网格的一个或多个线程块的指令调度。调度器单元810调度线程用于在并行线程的组中执行,其中每个组称为线程束。在一个实施例中,每个线程束包括32个线程。调度器单元810可管理多个不同线程块,在每个时钟周期期间将线程块分配到线程束用于执行并随后调度来自各功能单元(即核心850、DPU851、SFU852以及LSU853)上的多个不同线程束的指令。
在一个实施例中,每个调度器单元810包括一个或多个指令分派单元815。每个分派单元815配置为将指令传送到功能单元中的一个或多个。在图8示出的实施例中,调度器单元810包括两个分派单元815,其使能来自同一线程束的两个不同指令在每个时钟周期期间被分派。在可替代实施例中,每个调度器单元810可包括单个分派单元815或附加的分派单元815。
每个SM750包括寄存器堆820,其提供用于SM750的功能单元的寄存器的集合。在一个实施例中,寄存器堆820在功能单元中的每一个之间被划分,使得每个功能单元被分配寄存器堆820的专用部分。在另一实施例中,寄存器堆820在正由SM750执行的不同线程束之间被划分。寄存器堆820为连接到功能单元的数据路径的操作数提供暂时存储。
每个SM750包括L个处理核心850。在一个实施例中,SM750包括大数目的(例如192个等)不同的处理核心850。每个核心850是完全管线(fully-pipelined)的单精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE754-2008标准。每个SM750还包括实现双精度浮点运算的M个DPU851、实施特殊功能(例如拷贝矩形、像素混合操作等)的N个SFU852以及在共享存储器/L1高速缓存870和寄存器堆820之间实现加载和存储操作的P个LSU853。在一个实施例中,SM750包括64个DPU851、32个SFU852以及32个LSU853。
每个SM750包括互连网络880,其将功能单元中的每一个连接到寄存器堆820和共享存储器/L1高速缓存870。在一个实施例中,互连网络880是交叉开关,其可配置为将任何功能单元连接到寄存器堆820中的任何寄存器或共享存储器/L1高速缓存870中的任何存储器位置。
上文所述的PPU700可配置为实施比常规CPU快得多的高度并行计算。并行计算在图形处理、数据压缩、计量生物学、流处理算法等方面具有优势。
图9示出在其中可实现各先前实施例的各架构和/或功能性的示例性系统900。如所示,提供了系统900,其包括至少一个连接到通信总线902的中央处理器901。通信总线902可使用任何合适的协议来实现,诸如PCI(外围部件互连)、PCI-Express、AGP(加速图形端口)、超传输、或任何其他总线或点对点通信协议。系统900还包括主存储器904。控制逻辑(软件)和数据存储在可采取随机存取存储器(RAM)形式的主存储器904中。
系统900还包括输入设备912、图形处理器906以及显示器908,所述显示器908即常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器等等。可从输入设备912例如键盘、鼠标、触摸板、扩音器等接收用户输入。在一个实施例中,图形处理器906可包括多个着色器模块、光栅化模块等。前述模块中的每一个实际上可布置于单个半导体平台上以形成图形处理单元(GPU)。
在本描述中,单个半导体平台可以指单独一个的基于半导体的集成电路或芯片。应注意的是,术语单个半导体平台还可以指具有增强的连通性的多芯片模块,其仿真片上操作,并通过利用常规中央处理单元(CPU)和总线实现方案做出实质的改进。当然,各模块还可根据用户的期望分开地或以半导体平台的各种组合来布置。
系统900还可包括二级存储910。二级存储910包括例如硬盘驱动器和/或表示软盘驱动器、磁带驱动器、压缩光盘驱动器、数字通用光盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存的可移动存储驱动器。可移动存储驱动器以公知的方式从可移动存储单元读取和/或写入到可移动存储单元。
计算机程序或计算机控制逻辑算法可存储在主存储器904和/或二级存储910中。这类计算机程序当被执行时使得系统900能够实施各种功能。可由中央处理器901或图形处理器906执行编译器程序。主存储器904、存储910和/或任何其他存储是计算机可读介质的可能的示例。
在一个实施例中,可在以下内容的上下文中实现各先前示图的架构和/或功能性:中央处理器901、图形处理器906、能够具有中央处理器901和图形处理器906二者的能力的至少一部分的集成电路(未示出)、芯片集(即设计为作为用于实施相关功能的单元来工作和出售的集成电路组等)和/或用于此的任何其他集成电路。
还有就是,可在以下内容的上下文中实现各先前示图的架构和/或功能性:通用计算机系统、电路板系统、专用于娱乐目的的游戏机系统、特定于应用的系统和/或任何其他所期望的系统。例如,系统900可采取台式计算机、膝上型计算机、服务器、工作站、游戏机、嵌入式系统和/或任何其他类型的逻辑的形式。还有就是,系统900可采取各种其他设备的形式,包括但不限于个人数字助理(PDA)设备、移动电话设备、电视机等。
进一步地,虽然未示出,但系统900可耦连到网络(例如电信网络、局域网(LAN)、无线网、诸如互联网的广域网(WAN)、对等网络、电缆网络等等)用于通信目的。
虽然上文已描述了各实施例,但应理解的是它们通过仅示例而非限制的方式加以呈现。因此,优选实施例的宽度和范围不应被上文所述的示例性实施例中的任何一个所限制,而应仅根据下面的权利要求和其等同物来加以限定。
Claims (20)
1.一种方法,包括:
接收多样本像素数据;
确定与所述多样本像素数据相关联的编码状态;
将用于多样本像素的一个样本的数据提供到处理单元;
将所述编码状态提供到所述处理单元;
由所述处理单元处理所述多样本像素的所述一个样本以生成用于所述一个样本的经处理的数据,所述经处理的数据代表用于所述多样本像素的所有样本的或所述多样本像素的两个或更多个样本的经处理的多样本像素数据。
2.根据权利要求1所述的方法,其中所述编码状态指示用于所述像素的所述一个样本的所述数据代表用于所述多样本像素的所有样本的或所述多样本像素的所述两个或更多个样本的所述多样本像素数据。
3.根据权利要求1所述的方法,其中样本掩码与所述多样本像素相关联,其指示所述多样本像素的哪些样本由所述经处理的多样本像素数据所代表。
4.根据权利要求1所述的方法,进一步包括:
确定其他经处理的数据是否存储在用于所述多样本像素的缓冲区中;
确定所述其他经处理的数据不与所述多样本像素的由所述经处理的多样本像素数据所代表的任何样本相对应;
将所述样本掩码和用于所述一个样本的所述经处理的数据存储在所述缓冲区中;以及
跟踪包括所述多样本像素的块的覆盖。
5.根据权利要求1所述的方法,进一步包括:
将用于所述一个样本的所述经处理的数据存储在缓冲区中;以及
更新块覆盖掩码以指示所述经处理的多样本像素数据存储在所述缓冲区中。
6.根据权利要求5所述的方法,进一步包括:
基于所述块覆盖掩码确定块中的所有多样本像素被覆盖;以及
将用于所述一个样本的所述经处理的数据和用于所述块中的每个附加多样本像素的一个样本的其他经处理的数据写入到存储器。
7.根据权利要求5所述的方法,进一步包括:
基于所述块覆盖掩码确定块中的所有多样本像素被覆盖;以及
将用于所述一个样本的所述经处理的数据和所述编码状态写入到存储器。
8.根据权利要求1所述的方法,其中所述确定所述编码状态包括:
比较用于所述多样本像素的每个样本的所述多样本像素数据;以及
确定用于所述多样本像素的所述一个样本的所述数据代表用于所述多样本像素的所有样本的数据。
9.根据权利要求1所述的方法,其中所述确定所述编码状态包括:
比较用于所述多样本像素的每个样本的所述多样本像素数据;以及
确定用于所述多样本像素的所述一个样本的所述数据代表用于所述多样本像素的所述两个或更多个样本的数据。
10.根据权利要求1所述的方法,其中所述编码状态指示多样本像素的单个样本代表所述多样本像素的样本子集的所有样本。
11.根据权利要求1所述的方法,其中被包括在所述多样本像素中的样本数由多样本模式所指定。
12.根据权利要求1所述的方法,其中所述两个或更多个样本与所述多样本像素的存储在单个高速缓存行中的样本数相对应。
13.根据权利要求1所述的方法,其中所述多样本数据读取自存储器,并进一步包括接收多样本加载指令,所述多样本加载指令返回所述编码状态和所述多样本像素的所述一个样本。
14.一种非暂时性计算机可读存储介质,其存储指令,所述指令当由处理器所执行时,使所述处理器实施步骤,包括:
接收多样本像素数据;
确定与所述多样本像素数据相关联的编码状态;
将用于多样本像素的一个样本的数据提供到处理单元;
将所述编码状态提供到所述处理单元;
由所述处理单元处理所述多样本像素的所述一个样本以生成用于所述一个样本的经处理的数据,所述经处理的数据代表用于所述多样本像素的所有样本的或所述多样本像素的两个或更多个样本的经处理的多样本像素数据。
15.一种系统,包括:
存储器,其存储多样本像素数据;以及
加载/存储单元,其耦连在所述存储器和处理单元之间,并配置为:
接收所述多样本像素数据;
确定与所述多样本像素数据相关联的编码状态;
将用于多样本像素的一个样本的数据提供到所述处理单元;以及
将所述编码状态提供到所述处理单元;以及
所述处理单元,其配置为:
由所述处理单元处理所述多样本像素的所述一个样本以生成用于所述一个样本的经处理的数据,所述经处理的数据代表用于所述多样本像素的所有样本的或所述多样本像素的两个或更多个样本的经处理的多样本像素数据。
16.根据权利要求15所述的系统,其中所述编码状态指示用于所述像素的所述一个样本的所述数据代表用于所述多样本像素的所有样本的或所述多样本像素的所述两个或更多个样本的所述多样本像素数据。
17.根据权利要求15所述的系统,其中所述加载/存储单元进一步配置为:
比较用于所述多样本像素的每个样本的所述多样本像素数据;以及
确定用于所述多样本像素的所述一个样本的所述数据代表用于所述多样本像素的所述两个或更多个样本的所有样本的数据以确定所述编码状态。
18.根据权利要求15所述的系统,其中所述两个或更多个样本与所述多样本像素的存储在单个高速缓存行中的样本数相对应。
19.根据权利要求15所述的系统,其中所述加载/存储单元进一步配置为:
将用于所述一个样本的所述经处理的数据存储在缓冲区中;以及
更新块覆盖掩码以指示所述经处理的数据存储在用于所述多样本像素的所述缓冲区中。
20.根据权利要求15所述的系统,其中所述多样本数据响应于多样本加载指令而读取自所述存储器,并且所述加载/存储单元进一步配置为返回所述编码状态和所述多样本像素的所述一个样本。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/844,095 US9262797B2 (en) | 2013-03-15 | 2013-03-15 | Multi-sample surface processing using one sample |
US13/844,095 | 2013-03-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050632A true CN104050632A (zh) | 2014-09-17 |
CN104050632B CN104050632B (zh) | 2017-10-17 |
Family
ID=51418669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310745828.5A Active CN104050632B (zh) | 2013-03-15 | 2013-12-30 | 用于多样本像素数据处理的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9262797B2 (zh) |
CN (1) | CN104050632B (zh) |
DE (1) | DE102013114279B4 (zh) |
TW (1) | TWI512672B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106355544A (zh) * | 2015-07-15 | 2017-01-25 | Arm有限公司 | 数据处理系统 |
CN113016009A (zh) * | 2018-09-13 | 2021-06-22 | 辉达公司 | 使用一个或更多个神经网络的多级图像重建 |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9262797B2 (en) | 2013-03-15 | 2016-02-16 | Nvidia Corporation | Multi-sample surface processing using one sample |
US9286659B2 (en) | 2013-03-15 | 2016-03-15 | Nvidia Corporation | Multi-sample surface processing using sample subsets |
US9965876B2 (en) * | 2013-03-18 | 2018-05-08 | Arm Limited | Method and apparatus for graphics processing of a graphics fragment |
US9665958B2 (en) | 2013-08-26 | 2017-05-30 | Nvidia Corporation | System, method, and computer program product for redistributing a multi-sample processing workload between threads |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
US10417739B2 (en) | 2017-03-23 | 2019-09-17 | Google Llc | Phase aligned foveated rendering |
US10572258B2 (en) | 2017-04-01 | 2020-02-25 | Intel Corporation | Transitionary pre-emption for virtual reality related contexts |
US10395623B2 (en) | 2017-04-01 | 2019-08-27 | Intel Corporation | Handling surface level coherency without reliance on fencing |
US10591971B2 (en) | 2017-04-01 | 2020-03-17 | Intel Corporation | Adaptive multi-resolution for graphics |
US10453241B2 (en) | 2017-04-01 | 2019-10-22 | Intel Corporation | Multi-resolution image plane rendering within an improved graphics processor microarchitecture |
US10152822B2 (en) | 2017-04-01 | 2018-12-11 | Intel Corporation | Motion biased foveated renderer |
US10089230B1 (en) | 2017-04-01 | 2018-10-02 | Intel Corporation | Resource-specific flushes and invalidations of cache and memory fabric structures |
US10706612B2 (en) | 2017-04-01 | 2020-07-07 | Intel Corporation | Tile-based immediate mode rendering with early hierarchical-z |
US10572966B2 (en) | 2017-04-01 | 2020-02-25 | Intel Corporation | Write out stage generated bounding volumes |
US10424097B2 (en) | 2017-04-01 | 2019-09-24 | Intel Corporation | Predictive viewport renderer and foveated color compressor |
US10489915B2 (en) | 2017-04-01 | 2019-11-26 | Intel Corporation | Decouple multi-layer render fequency |
US10157493B2 (en) | 2017-04-01 | 2018-12-18 | Intel Corporation | Adaptive multisampling based on vertex attributes |
US10223773B2 (en) | 2017-04-01 | 2019-03-05 | Intel Corporation | On demand MSAA resolve during lens correction and/or other post-processing phases |
US10242494B2 (en) | 2017-04-01 | 2019-03-26 | Intel Corporation | Conditional shader for graphics |
US10628907B2 (en) | 2017-04-01 | 2020-04-21 | Intel Corporation | Multi-resolution smoothing |
US10235794B2 (en) | 2017-04-10 | 2019-03-19 | Intel Corporation | Multi-sample stereo renderer |
US11106274B2 (en) | 2017-04-10 | 2021-08-31 | Intel Corporation | Adjusting graphics rendering based on facial expression |
US10235735B2 (en) | 2017-04-10 | 2019-03-19 | Intel Corporation | Graphics processor with tiled compute kernels |
US10319064B2 (en) | 2017-04-10 | 2019-06-11 | Intel Corporation | Graphics anti-aliasing resolve with stencil mask |
US10725929B2 (en) | 2017-04-10 | 2020-07-28 | Intel Corporation | Graphics memory extended with nonvolatile memory |
US10204393B2 (en) | 2017-04-10 | 2019-02-12 | Intel Corporation | Pre-pass surface analysis to achieve adaptive anti-aliasing modes |
US10497340B2 (en) | 2017-04-10 | 2019-12-03 | Intel Corporation | Beam scanning image processing within an improved graphics processor microarchitecture |
US10204394B2 (en) | 2017-04-10 | 2019-02-12 | Intel Corporation | Multi-frame renderer |
US10152632B2 (en) | 2017-04-10 | 2018-12-11 | Intel Corporation | Dynamic brightness and resolution control in virtual environments |
US10373365B2 (en) | 2017-04-10 | 2019-08-06 | Intel Corporation | Topology shader technology |
US11030713B2 (en) | 2017-04-10 | 2021-06-08 | Intel Corporation | Extended local memory including compressed on-chip vertex data |
US10109078B1 (en) | 2017-04-10 | 2018-10-23 | Intel Corporation | Controlling coarse pixel size from a stencil buffer |
US10460415B2 (en) | 2017-04-10 | 2019-10-29 | Intel Corporation | Contextual configuration adjuster for graphics |
US10430147B2 (en) | 2017-04-17 | 2019-10-01 | Intel Corporation | Collaborative multi-user virtual reality |
US10846918B2 (en) | 2017-04-17 | 2020-11-24 | Intel Corporation | Stereoscopic rendering with compression |
US10401954B2 (en) | 2017-04-17 | 2019-09-03 | Intel Corporation | Sensory enhanced augmented reality and virtual reality device |
US10672175B2 (en) | 2017-04-17 | 2020-06-02 | Intel Corporation | Order independent asynchronous compute and streaming for graphics |
US10521876B2 (en) | 2017-04-17 | 2019-12-31 | Intel Corporation | Deferred geometry rasterization technology |
US10192351B2 (en) | 2017-04-17 | 2019-01-29 | Intel Corporation | Anti-aliasing adaptive shader with pixel tile coverage raster rule system, apparatus and method |
US10347039B2 (en) | 2017-04-17 | 2019-07-09 | Intel Corporation | Physically based shading via fixed-functionality shader libraries |
US10242486B2 (en) | 2017-04-17 | 2019-03-26 | Intel Corporation | Augmented reality and virtual reality feedback enhancement system, apparatus and method |
US10290141B2 (en) | 2017-04-17 | 2019-05-14 | Intel Corporation | Cloud based distributed single game calculation of shared computational work for multiple cloud gaming client devices |
US10896657B2 (en) | 2017-04-17 | 2021-01-19 | Intel Corporation | Graphics with adaptive temporal adjustments |
US10452552B2 (en) | 2017-04-17 | 2019-10-22 | Intel Corporation | Memory-based dependency tracking and cache pre-fetch hardware for multi-resolution shading |
US10467796B2 (en) | 2017-04-17 | 2019-11-05 | Intel Corporation | Graphics system with additional context |
US10719902B2 (en) | 2017-04-17 | 2020-07-21 | Intel Corporation | Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform |
US10242496B2 (en) | 2017-04-24 | 2019-03-26 | Intel Corporation | Adaptive sub-patches system, apparatus and method |
US10347357B2 (en) | 2017-04-24 | 2019-07-09 | Intel Corporation | Post-packaging environment recovery of graphics on-die memory |
US10728492B2 (en) | 2017-04-24 | 2020-07-28 | Intel Corporation | Synergistic temporal anti-aliasing and coarse pixel shading technology |
US10402933B2 (en) | 2017-04-24 | 2019-09-03 | Intel Corporation | Adaptive smart grid-client device computation distribution with grid guide optimization |
US10643374B2 (en) | 2017-04-24 | 2020-05-05 | Intel Corporation | Positional only shading pipeline (POSH) geometry data processing with coarse Z buffer |
US10251011B2 (en) | 2017-04-24 | 2019-04-02 | Intel Corporation | Augmented reality virtual reality ray tracing sensory enhancement system, apparatus and method |
US10109039B1 (en) | 2017-04-24 | 2018-10-23 | Intel Corporation | Display engine surface blending and adaptive texel to pixel ratio sample rate system, apparatus and method |
US10553016B2 (en) * | 2017-11-15 | 2020-02-04 | Google Llc | Phase aligned foveated rendering |
US11838400B2 (en) * | 2019-11-19 | 2023-12-05 | International Business Machines Corporation | Image encoding for blockchain |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6614449B1 (en) * | 1998-08-28 | 2003-09-02 | Ati International Srl | Method and apparatus for video graphics antialiasing using a single sample frame buffer and associated sample memory |
US20070257935A1 (en) * | 2006-05-08 | 2007-11-08 | Ati Technologies Inc. | Advanced anti-aliasing with multiple graphics processing units |
CN101198982A (zh) * | 2005-05-27 | 2008-06-11 | Ati技术公司 | 抗锯齿系统及方法 |
US20090091577A1 (en) * | 2007-10-08 | 2009-04-09 | Via Technologies Inc. | Compression of Multiple-Sample-Anti-Aliasing Title Data in a Graphics Pipeline |
CN101620725A (zh) * | 2008-07-03 | 2010-01-06 | 辉达公司 | 混合多重采样/超采样抗锯齿 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6720975B1 (en) | 2001-10-17 | 2004-04-13 | Nvidia Corporation | Super-sampling and multi-sampling system and method for antialiasing |
US6825847B1 (en) | 2001-11-30 | 2004-11-30 | Nvidia Corporation | System and method for real-time compression of pixel colors |
US7242400B2 (en) * | 2002-11-13 | 2007-07-10 | Ati Technologies Ulc | Compression and decompression of data using plane equations |
US7162092B2 (en) | 2003-12-11 | 2007-01-09 | Infocus Corporation | System and method for processing image data |
US7126615B2 (en) | 2004-11-12 | 2006-10-24 | Via Technologies, Inc. | Color compression using multiple planes in a multi-sample anti-aliasing scheme |
US8928676B2 (en) | 2006-06-23 | 2015-01-06 | Nvidia Corporation | Method for parallel fine rasterization in a raster stage of a graphics pipeline |
US8086806B2 (en) | 2008-03-24 | 2011-12-27 | Nvidia Corporation | Systems and methods for coalescing memory accesses of parallel threads |
GB0922126D0 (en) | 2009-12-17 | 2010-02-03 | Advanced Risc Mach Ltd | Graphics processing systems |
US20110285718A1 (en) * | 2010-05-21 | 2011-11-24 | Kilgard Mark J | Point containment for quadratic bèzier strokes |
US20120013629A1 (en) * | 2010-07-19 | 2012-01-19 | Advanced Micro Devices, Inc. | Reading Compressed Anti-Aliased Images |
US9262797B2 (en) | 2013-03-15 | 2016-02-16 | Nvidia Corporation | Multi-sample surface processing using one sample |
US9286659B2 (en) | 2013-03-15 | 2016-03-15 | Nvidia Corporation | Multi-sample surface processing using sample subsets |
US9665958B2 (en) | 2013-08-26 | 2017-05-30 | Nvidia Corporation | System, method, and computer program product for redistributing a multi-sample processing workload between threads |
-
2013
- 2013-03-15 US US13/844,095 patent/US9262797B2/en active Active
- 2013-08-19 US US13/970,542 patent/US9436971B2/en active Active
- 2013-12-04 TW TW102144475A patent/TWI512672B/zh not_active IP Right Cessation
- 2013-12-18 DE DE102013114279.6A patent/DE102013114279B4/de active Active
- 2013-12-30 CN CN201310745828.5A patent/CN104050632B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6614449B1 (en) * | 1998-08-28 | 2003-09-02 | Ati International Srl | Method and apparatus for video graphics antialiasing using a single sample frame buffer and associated sample memory |
CN101198982A (zh) * | 2005-05-27 | 2008-06-11 | Ati技术公司 | 抗锯齿系统及方法 |
US20070257935A1 (en) * | 2006-05-08 | 2007-11-08 | Ati Technologies Inc. | Advanced anti-aliasing with multiple graphics processing units |
US20090091577A1 (en) * | 2007-10-08 | 2009-04-09 | Via Technologies Inc. | Compression of Multiple-Sample-Anti-Aliasing Title Data in a Graphics Pipeline |
CN101620725A (zh) * | 2008-07-03 | 2010-01-06 | 辉达公司 | 混合多重采样/超采样抗锯齿 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106355544A (zh) * | 2015-07-15 | 2017-01-25 | Arm有限公司 | 数据处理系统 |
CN106355544B (zh) * | 2015-07-15 | 2021-08-17 | Arm有限公司 | 处理单元、在处理单元中进行处理操作的方法 |
CN113016009A (zh) * | 2018-09-13 | 2021-06-22 | 辉达公司 | 使用一个或更多个神经网络的多级图像重建 |
Also Published As
Publication number | Publication date |
---|---|
TWI512672B (zh) | 2015-12-11 |
DE102013114279B4 (de) | 2022-10-20 |
DE102013114279A1 (de) | 2014-09-18 |
TW201435793A (zh) | 2014-09-16 |
US20140267376A1 (en) | 2014-09-18 |
US9262797B2 (en) | 2016-02-16 |
CN104050632B (zh) | 2017-10-17 |
US9436971B2 (en) | 2016-09-06 |
US20140267315A1 (en) | 2014-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104050632A (zh) | 使用一个样本的多样本表面处理 | |
US9411715B2 (en) | System, method, and computer program product for optimizing the management of thread stack memory | |
US11977888B2 (en) | Inline data inspection for workload simplification | |
US11106261B2 (en) | Optimal operating point estimator for hardware operating under a shared power/thermal constraint | |
CN110737470A (zh) | 低精度机器学习操作的计算优化 | |
CN103885752A (zh) | 多线程处理单元中可编程的混合 | |
US9665958B2 (en) | System, method, and computer program product for redistributing a multi-sample processing workload between threads | |
CN104050704A (zh) | 用于可变分辨率渲染的一致性顶点捕捉 | |
US11550632B2 (en) | Facilitating efficient communication and data processing across clusters of computing machines in heterogeneous computing environment | |
CN103810228A (zh) | 用于经采样的后缀数组的并行重建的系统、方法和产品 | |
US10725837B1 (en) | Persistent scratchpad memory for data exchange between programs | |
CN103914804A (zh) | 用于分块式延期着色的系统、方法和计算机程序产品 | |
JP2021082262A (ja) | ベクトル正規化のための単一の命令セットアーキテクチャ(isa)命令の使用 | |
CN111833233A (zh) | 深度学习线程通信 | |
US11088907B2 (en) | System characterization and configuration distribution for facilitating improved performance at computing devices | |
US10114755B2 (en) | System, method, and computer program product for warming a cache for a task launch | |
CN104050633A (zh) | 使用样本子集的多样本表面处理 | |
CN113822975B (zh) | 用于对图像进行有效采样的技术 | |
US9214008B2 (en) | Shader program attribute storage | |
US20230305978A1 (en) | Chiplet architecture for late bind sku fungibility | |
US20230305993A1 (en) | Chiplet architecture chunking for uniformity across multiple chiplet configurations | |
WO2023240466A1 (en) | Methods and apparatus to detect a region of interest based on variable rate shading | |
US20240111925A1 (en) | Hardware power optimization via e-graph based automatic rtl exploration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |