CN111508056A - 利用扩展变换级掩码的图形处理系统 - Google Patents
利用扩展变换级掩码的图形处理系统 Download PDFInfo
- Publication number
- CN111508056A CN111508056A CN202010078243.2A CN202010078243A CN111508056A CN 111508056 A CN111508056 A CN 111508056A CN 202010078243 A CN202010078243 A CN 202010078243A CN 111508056 A CN111508056 A CN 111508056A
- Authority
- CN
- China
- Prior art keywords
- untransformed
- primitives
- primitive
- transform
- extended
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 135
- 230000009466 transformation Effects 0.000 claims abstract description 73
- 238000009877 rendering Methods 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims description 54
- 238000003860 storage Methods 0.000 claims description 47
- 238000004519 manufacturing process Methods 0.000 claims description 39
- 230000008569 process Effects 0.000 claims description 14
- 230000001131 transforming effect Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 2
- 230000015654 memory Effects 0.000 description 141
- 239000012634 fragment Substances 0.000 description 18
- 239000000872 buffer Substances 0.000 description 14
- 238000010586 diagram Methods 0.000 description 14
- 238000007906 compression Methods 0.000 description 10
- 230000006835 compression Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000013507 mapping Methods 0.000 description 7
- 230000006872 improvement Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000012993 chemical processing Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000000206 photolithography Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005389 semiconductor device fabrication Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- 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/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- 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
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
一种用于生成渲染输出的图形处理系统,所述系统包括几何结构处理逻辑和光栅化逻辑。所述几何结构处理逻辑包括:第一变换逻辑,其配置成将多个未变换图元变换成多个已变换图元,所述第一变换逻辑配置成实施生成一个或多个子图元的一个或多个扩展变换级;图元块生成器,其配置成将所述多个已变换图元分成多个群组,并且针对每个群组生成未变换图元块,所述未变换图元块包括(i)标识与所述群组中的所述已变换图元相关的所述未变换图元的信息,以及(ii)用于所述一个或多个扩展变换级中的至少一个扩展变换级的扩展变换级掩码,其指示针对在所述未变换图元块中标识的所述未变换图元生成的所述子图元,所述子图元将用于生成所述渲染输出。所述光栅化逻辑包括:第二变换逻辑,其配置成根据用于所述一个或多个扩展变换级中的所述至少一个扩展变换级的扩展变换级掩码而基于未变换图元块将所述多个未变换图元重新变换成所述已变换图元;以及配置成渲染所述已变换图元以生成所述渲染输出的逻辑。
Description
技术领域
本申请涉及图形处理系统,并且更具体地说,涉及使用扩展变换级掩码的图形处理系统。
背景技术
图形处理系统配置成例如从计算机系统上运行的应用程序(例如游戏应用程序)接收图形数据,并根据图形数据渲染图像以提供渲染输出。例如,应用程序可生成场景的3D模型并输出表示场景中的对象的几何结构数据。具体地说,应用程序可将每个对象划分成多个图元(即,简单的几何形状,例如但不限于可应用纹理的矩形、三角形、线和点),所述多个图元由一个或多个顶点的位置限定。在这些情况下,由应用程序输出的几何结构数据可包含标识每个顶点的信息(例如顶点在世界空间中的坐标)以及指示由顶点形成的图元的信息。接着,图形处理系统将接收到的几何结构数据转换成可显示在屏幕上的图像。
图形处理系统可例如实施即时模式渲染(IMR)或基于平铺块的渲染(TBR)。在IMR中,将整个场景作为整体进行渲染。相比之下,在TBR中,使用划分成被称为平铺块的分部的渲染空间来渲染场景,其中可针对每个平铺块独立地执行至少一部分渲染过程。平铺块可具有任何合适形状,但通常是矩形(其中术语“矩形”包含方形)。TBR的优势在于,可在渲染期间使用快速片上存储器以用于颜色、深度和模板缓冲区操作,这与IMR相此允许显著减小系统存储器带宽,而无需大得足以同时存储整个场景的数据的片上存储器。
TBR涉及两个关键阶段:几何结构处理阶段;以及光栅化阶段。在几何结构处理阶段期间,将从应用程序(例如游戏应用程序)接收的几何结构数据(例如限定图元的顶点)从世界空间坐标变换成渲染空间坐标(例如屏幕空间坐标)。接着,创建至少部分地落入平铺块的界限内的已变换图元(例如三角形)的每平铺块列表。在光栅化阶段期间,对每个平铺块单独地渲染(即,将已变换图元映射到像素,并且针对平铺块中的每个像素标识颜色)。这可包括标识每个像素处哪个(哪些)图元可见。接着,可通过每个像素处的可见图元的外观确定该像素的颜色,所述外观可由应用于该像素处的纹理和/或对该像素运行的像素着色器程序限定。像素着色器程序描述要针对给定像素执行的操作。单独地渲染每个平铺块使得图形处理系统能够在光栅化阶段对特定平铺块进行渲染时仅检索与该平铺块相关的已变换图元数据,这会使针对存储器(例如中间缓冲区)的带宽要求保持最小。在针对每个像素标识出颜色值后,将所述颜色值写出到存储器(例如帧缓冲区),直到已渲染整个场景为止。在已渲染整个场景后,可将所述场景例如显示在屏幕上。
图1示出示例TBR图形处理系统100。系统100包括存储器1021、1022、1023、1024、几何结构处理逻辑104以及光栅化逻辑106。存储器1021、1022、1023、1024中的两个或更多个存储器可实施于存储器的同一物理单元中。
几何结构处理逻辑104实施TBR的几何结构处理阶段。几何结构处理逻辑104包括变换逻辑108和平铺引擎110。变换逻辑108从应用程序(例如游戏应用程序)接收几何结构数据(例如顶点、图元和/或分块)并将几何结构数据变换到渲染空间(例如屏幕空间)中。变换逻辑108还可执行例如裁剪和剔除的功能以移除落在视锥外的几何结构数据(例如图元或分块),和/或应用所属领域的技术人员所知的光照/属性处理。已变换几何结构数据(例如顶点、图元和/或分块)(i)存储在存储器1022中,并且(ii)被提供到平铺引擎110。针对每个平铺块,平铺引擎110根据已变换几何结构数据生成至少部分地落入该平铺块内的已变换图元的列表。所述列表可称作显示列表或已变换显示列表。在一些情况下,已变换显示列表包括指向与至少部分地落入平铺块内的图元相关的已变换几何结构数据(例如顶点数据)的指针或链接。
光栅化逻辑106实施TBR的光栅化阶段。具体地说,光栅化逻辑106通过以下操作而以逐平铺块的方式渲染图元:从存储器1023提取平铺块的显示列表,并且接着针对如由该平铺块的显示列表所指示的落入平铺块内的图元,从存储器1022提取已变换几何结构数据;以及基于已变换几何结构数据对该平铺块的图元进行渲染。
在一些情况下,光栅化逻辑106可包括提取逻辑112、隐藏表面去除(HSR)逻辑114和纹理化/着色逻辑116。在这些情况下,提取逻辑112从存储器1023提取每个显示列表,并对于每个显示列表,针对如由对应显示列表所指定的落入平铺块内的图元,从存储器1022提取已变换几何结构数据。接着,将特定平铺块的已变换几何结构数据提供到HSR逻辑114,所述HSR逻辑光栅化已变换几何结构数据(例如通过执行扫描转换)以生成图元片段并且接着去除隐藏的(例如被其它图元片段隐藏的)图元片段。术语“片段”在本文中用于意指取样点处的图元的样本,所述样本将被处理以渲染图像像素。在一些示例中,可存在像素与片段的一划一映射。然而,在其它示例中,片段可多于像素,并且这种过取样可例如通过促进可应用于多个片段以渲染每个像素值的抗混叠和其它滤波器而允许像素值的较高质量渲染。
接着(在隐藏表面移除之后)将其余片段传递到纹理化/着色逻辑116,所述纹理化/着色逻辑对图元片段执行纹理化和/或着色以确定被渲染图像的像素值。接着,将平铺块的被渲染像素值存储在存储器1024(例如帧缓冲区)中。
光栅化逻辑106处理每个平铺块,并且当整个图像已被渲染并存储在存储器1024(例如帧缓冲区)中时,可从图形处理系统100输出图像并以任何合适方式进行使用,例如显示在显示器上、存储在存储器中或传送到另一装置等。在片段由HSR逻辑114处理、之后由纹理化/着色逻辑116处理的意义上,图1所示的TBR图形处理系统100是“推迟的”渲染系统。在其它示例中,图形处理系统可能并非推迟的渲染系统,在此情况下,纹理化/着色将应用于片段,之后HSR应用于那些片段。
在许多情况下,已变换几何结构数据可能非常大。这在未变换几何结构数据与已变换几何结构数据之间存在大的扩展比率的情况下(例如当由变换逻辑108执行曲面细分(tessellation)时)尤其如此。
因此,如英国公开专利申请GB2458488和GB2542133中所描述,一些TBR图形处理系统使用“未变换显示列表”,其指示哪些未变换图元(在变换后)将至少部分地落入每个平铺块的界限内。由此,未变换显示列表涉及未变换图元而非已变换图元。例如,未变换显示列表可包括指向与变换后将至少部分地落入平铺块内的未变换图元相关的未变换几何结构数据(例如顶点数据)的指针或链接。这意味着已变换几何结构数据不需要从几何结构处理逻辑104提供到存储器1022,或存储在存储器1022中。然而,在这些系统中,未变换显示列表中涉及的未变换几何结构数据又在光栅化阶段中被变换。尽管这意味着几何结构数据在一些情况下被变换两次,但避免将已变换几何结构数据传送到存储器并予以存储的延迟以及存储器的使用的这些益处可能胜过在光栅化阶段中执行变换的处理成本。
图2示出使用未变换显示列表的示例TBR图形处理系统200,其类似于GB2458488和GB2542133中所描述的图形处理系统,可称作未变换显示列表(UDL)图形处理系统。系统200类似于图1的系统100,不同之处在于:(i)已变换几何结构数据不由几何结构处理逻辑写入到存储器;(ii)代替标识落入每个平铺块内的已变换图元,显示列表标识在变换后将落入每个平铺块内的未变换图元;以及(iii)光栅化逻辑包含变换逻辑以重新变换未变换显示列表中涉及的未变换图元。类似于图1所示的系统100,系统200包括存储器2021、2023、2024、几何结构处理逻辑204和光栅化逻辑206。
类似于图1所示的几何结构处理逻辑104,几何结构处理逻辑204实施TBR的几何结构处理阶段。图2中示出的几何结构处理逻辑204包括变换逻辑208和平铺引擎210。变换逻辑208从应用程序(例如游戏应用程序)接收几何结构数据(例如顶点和图元)并将几何结构数据变换到渲染空间(例如屏幕空间)中。变换逻辑208还可执行例如裁剪和剔除的功能以移除落在视锥外的几何结构数据(例如图元)。相比于图1所示的变换逻辑108,图2中示出的变换逻辑208可能不应用光照/属性处理,因为几何结构处理逻辑204仅使用位置信息。已变换几何结构数据(例如顶点和图元)被提供到平铺引擎210。针对每个平铺块,平铺引擎210根据已变换几何结构数据生成在变换后至少部分地落入该平铺块内的未变换图元的列表。由图2中示出的平铺引擎201生成的列表可称作未变换显示列表,因为它们涉及未变换几何结构数据而非已变换几何结构数据。
类似于图1所示的光栅化逻辑106,图2中示出的光栅化逻辑206实施TBR的光栅化阶段。具体地说,光栅化逻辑206通过以下操作而以逐平铺块的方式渲染图元:提取如由平铺块的未变换显示列表指示的落入该平铺块内的图元的未变换几何结构数据;变换该平铺块的未变换几何结构数据;以及基于已变换几何结构数据对该平铺块的图元进行渲染。
在一些情况下,光栅化逻辑206可包括提取逻辑212、变换逻辑213、隐藏表面去除(HSR)逻辑214和纹理化/着色逻辑216。在这些情况下,提取逻辑212M存储器2023提取每个未变换显示列表,并针对每个未变换显示列表,从存储器2021提取在所述未变换显示列表中标识的未变换几何结构数据。接着,将特定平铺块的未变换几何结构数据提供到变换逻辑213,所述变换逻辑将未变换几何结构数据(例如图元)变换到渲染空间(例如屏幕空间)中。接着,将特定平铺块的已变换几何结构数据提供到HSR逻辑214,所述HSR逻辑光栅化已变换几何结构数据(例如通过执行扫描转换)以生成图元片段并且接着去除隐藏的(例如被其它图元片段隐藏的)图元片段。接着(在隐藏表面移除之后)将其余片段传递到纹理化/着色逻辑216,所述纹理化/着色逻辑对图元片段执行纹理化和/或着色以确定被渲染图像的像素值,所述像素值可传递到存储器2024(例如帧缓冲区)以供存储。
下文描述的实施例仅作为举例而提供,并非是对解决已知UDL图形处理系统的任一或所有缺点的实施方案的限制。
发明内容
提供此发明内容以介绍下文在具体实施方式中进一步描述的一系列概念。此发明内容并非旨在标识所要求的主题的关键特征或基本特征,也并非旨在用于限制所要求的主题的范围。
本文描述用于生成渲染输出的方法和图形处理系统。所述系统包括几何结构处理逻辑和光栅化逻辑。所述几何结构处理逻辑包括:第一变换逻辑,其配置成通过一个或多个变换级将多个未变换图元变换成多个已变换图元,所述一个或多个变换级包括生成一个或多个子图元的一个或多个扩展变换级;图元块生成器,其配置成将所述多个已变换图元分成多个群组,并且针对每个群组生成未变换图元块,所述未变换图元块包括(i)标识与群组中的已变换图元相关的未变换图元的信息,以及(ii)用于所述一个或多个扩展变换级中的至少一个扩展变换级的扩展变换级掩码,所述掩码指示针对在该未变换图元块中标识的未变换图元生成的子图元,所述子图元将用于生成渲染输出。所述光栅化逻辑包括:第二变换逻辑,其配置成根据用于所述一个或多个扩展变换级中的所述至少一个扩展变换级的扩展变换级掩码而基于未变换图元块将所述多个未变换图元重新变换成已变换图元;以及配置成渲染所述已变换图元以生成渲染输出的逻辑。
第一方面提供一种用于生成渲染输出的图形处理系统,所述系统包括:几何结构处理逻辑,其包括配置成通过包括生成一个或多个子图元的一个或多个扩展变换级的一个或多个变换级将多个未变换图元变换成多个已变换图元的第一变换逻辑、配置成将所述多个已变换图元分成多个群组并且针对每个群组生成未变换图元块的图元块生成器,所述未变换图元块包括(i)标识与群组中的已变换图元相关的未变换图元的信息,以及(ii)用于所述一个或多个扩展变换级中的至少一个扩展变换级的扩展变换级掩码,所述掩码指示针对在该未变换图元块中标识的未变换图元生成的子图元,所述子图元将用于生成渲染输出;光栅化逻辑,其包括配置成根据用于所述一个或多个扩展变换级中的所述至少一个扩展变换级的扩展变换级掩码而基于未变换图元块将所述多个未变换图元重新变换成已变换图元的第二变换逻辑,以及配置成渲染所述已变换图元以生成渲染输出的逻辑。
第二方面提供一种在图形处理系统中生成渲染输出的方法,所述方法包括:执行几何结构处理阶段,其包括通过包括生成一个或多个子图元的一个或多个扩展变换级的一个或多个变换级将多个未变换图元变换成多个已变换图元、将所述多个已变换图元分成多个群组并且针对每个群组生成未变换图元块,所述未变换图元块包括(i)标识与群组中的已变换图元相关的未变换图元的信息,以及(ii)用于所述一个或多个扩展变换级中的至少一个扩展变换级的扩展变换级掩码,所述掩码指示针对在该未变换图元块中标识的未变换图元生成的子图元,所述子图元将用于生成渲染输出;以及执行光栅化阶段,其包括根据用于所述一个或多个扩展变换级中的所述至少一个扩展变换级的扩展变换级掩码而基于未变换图元块将所述多个未变换图元重新变换成已变换图元,以及渲染所述已变换图元以生成渲染输出。
第三方面提供一种图形处理系统,其配置成执行第二方面的方法。
本文所描述的图形处理系统和存储器可体现在集成电路上的硬件中。可提供一种在集成电路制造系统处制造本文所描述的图形处理系统和存储器的方法。可提供一种集成电路定义数据集,所述集成电路定义数据集在集成电路制造系统中被处理时将系统配置成制造本文所描述的图形处理系统和存储器。可提供一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有本文所描述的图形处理系统或存储器的计算机可读描述,所述计算机可读描述在集成电路制造系统中被处理时使所述集成电路制造系统制造体现所述图形处理系统或存储器的集成电路。
可提供一种集成电路制造系统,其包括:非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有本文所描述的图形处理系统或存储器的计算机可读描述;布局处理系统,其配置成处理所述计算机可读描述以生成体现所述图形处理系统或存储器的集成电路的电路布局描述;以及集成电路生成系统,其配置成根据所述电路布局描述来制造所述图形处理系统或存储器。
可提供用于执行本文中描述的方法的计算机程序代码。可提供非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令在计算机系统处执行时使所述计算机系统执行本文中描述的方法。
所属领域的技术人员将清楚,上述特征可在适当时组合,并且可与本文所描述的示例的任一方面组合。
附图说明
现将参考附图详细地描述示例,在附图中:
图1是已知的基于平铺块的渲染图形处理系统的框图;
图2是已知的未变换显示列表图形处理系统的框图;
图3是示出示例变换级以及由此生成的图元和子图元的示意图;
图4是在光栅化阶段将扩展变换级掩码用于重新变换未变换图元的示例未变换显示列表图形处理系统的框图;
图5是示出示例未变换显示列表、示例未变换图元块和示例未变换几何结构数据的示意图;
图6是图4中示出的变换逻辑的示例实施方案的框图;
图7是示出用于示例未变换图元的示例扩展变换级掩码的示意图;
图8是示出具有曲面细分级掩码的示例未变换图元块的示意图;
图9是示出压缩用于未变换图元块的扩展变换级掩码的示例方法的示意图;
图10是用于使用图4中示出的利用扩展变换级掩码的图形处理系统生成渲染输出的示例方法的流程图;
图11是未变换图元块存储器的示例实施方案的框图;
图12是用于在图11中示出的存储器中存储未变换图元块的示例方法的流程图;
图13是其中可实施本文所描述的任一图形处理系统和/或存储器的示例计算机系统的框图;以及
图14是可用于生成体现本文所描述的任一图形处理系统和/或存储器的集成电路的示例集成电路制造系统的框图。
附图示出各种示例。所属领域的技术人员应了解,图中所示元件边界(例如,方框、方框群组,或其它形状)表示边界的一个示例。在一些示例中,可将一个元件设计为多个元件,或可将多个元件设计为一个元件。适当时,贯穿各图使用共同附图标号来指示类似特征。
具体实施方式
通过举例方式呈现以下描述,使得所属领域的技术人员能够制出和使用本发明。本发明不限于本文中描述的实施例,并且对所公开实施例的各种修改对于所属领域的技术人员来说将是显而易见的。仅通过举例来描述实施例。
如上文所描述,未变换显示列表(UDL)图形处理系统,例如图2中示出的图形处理系统200,不会将几何结构处理阶段中生成的已变换几何结构数据存储在存储器中,而是针对每个平铺块生成涉及未变换图元的未变换显示列表,接着在光栅化阶段中再次变换对应于每个显示列表中标识的未变换图元的未变换几何结构数据。此类系统不需要将几何结构处理阶段中生成的已变换几何结构数据传送到存储器并将已变换几何结构数据存储在存储器中。这可避免在将已变换几何结构数据传送到外部存储器以及从外部存储器传送已变换几何结构数据时的延迟。例如,存储器在其并不处于与几何结构处理逻辑或光栅化逻辑相同的芯片上的情况下可被视为“外部存储器”。例如,外部存储器可以是系统存储器,其中几何结构处理逻辑或光栅化逻辑与系统存储器之间的通信通过系统总线例如通过存储器接口发生。因此,传送数据到外部存储器和/或从外部存储器传送数据会在时延和功耗方面产生大量成本,因此对于尝试快速(例如实时)处理图形数据而不消耗大量功率的图形处理系统(例如在所述系统实施于智能电活或平板电脑等电池供电移动装置上的情况下),避免传送数据到外部存储器和/或从外部存储器传送数据可尤其有益。这些基于存储器的益处可实现TBR图形处理系统性能的显著提高,在用于渲染复杂游戏的场景时尤其如此。然而,这些益处的代价是必须在光栅化阶段重新变换未变换几何结构数据。
变换未变换图元的未变换几何结构的过程可包括一个或多个变换级。例如,变换未变换几何结构数据可包括以下中的一个或多个:顶点着色器级,曲面细分级(其可包含外壳着色器子级和/或域着色器子级);几何着色器级;视口变换级;和/或裁剪和/或剔除级。每个变换级接收图元的几何结构数据并且输出一个或多个图元的几何结构数据。这些变换级中的一些(例如顶点着色器级或视口变换级)接收图元的几何结构数据并且更改该图元的参数(例如颜色、纹理或空间位置)。在这些变换级中,输入到所述级的图元与从所述级输出的图元之间存在一对一映射。相比之下,其它级(例如曲面细分级或几何着色器级)接收图元的几何结构数据并且从该图元生成一个或多个新图元(这在本文中可称为子图元)。因此,在这些级中,输入到该级的图元与从该级输出的图元之间可能不存在一对一映射(例如可存在一对多映射)。由于这些变换级可增大图元的数目,因此这些变换级可称作扩展变换级。
在存在一个或多个扩展变换级的情况下,由此生成的子图元并非全部可用于生成最终图像。例如,图3示出包括顶点着色器级302、曲面细分级304、几何着色器级306和剔除级308的未变换几何结构数据处理的示例实施方案。当原始未变换图元(P0)由顶点着色器级302处理时,顶点着色器级302可产生该图元的修改版本(P0′)。当原始图元的修改版本(P0′)接着由曲面细分级304处理时,曲面细分级304可产生两个子图元(P0-′0和P0′-1)。当曲面细分子图元(P0-′0和P0′-1)由几何着色器级306处理时,几何着色器级306可针对每个曲面细分子图元产生两个子图元(P0′-0-0、P0′-0-1、P0′-1-0、P0′-1-1)。当几何着色器子图元(P0′-0-0、P0′-0-1、P0′-1-0、P0′-1-1)随后由剔除级308处理时,剔除级308可剔除那些子图元中除一个子图元(P0′-1-1)之外的所有子图元,例如因为其它子图元落在视锥外部。因此,其它几何着色器子图元(P0′-0-0、P0′-0-1、P0′-1-0)将不用于渲染场景。
如上文所描述,在UDL图形处理系统中,在几何结构处理阶段和光栅化阶段中均对未变换几何结构数据进行变换。如果在几何结构处理阶段中已知某些子图元将不用于渲染场景,则可基于此知识在光栅化阶段中更高效地执行未变换几何结构数据的重新变换,因为此知识可用于减小在重新变换期间执行的处理量。例如,如果在光栅化阶段中已知某些子图元将不用于渲染场景,则可在过程中的早先级舍弃那些子图元,使得不会浪费时间和资源来进一步处理那些子图元。
在以上示例中,如果在几何结构处理阶段中确定某些几何着色器子图元(P0′-0-0、P0′-0-1、P0′-1-0)将不用于渲染场景,则光栅化阶段可使用此信息来在几何着色器级306之后舍弃这些子图元并且因此不将这些子图元发送到后续级(例如图3所示的示例中的剔除级308)。此外,在存在子图元层级而使得较高层级子图元可生成一个或多个较低层级子图元的情况下,如果与较高层级子图元相关或从中生成的最低层级子图元中没有一个子图元要用于渲染场景,则可认为较高层级子图元不用于渲染场景。例如,在图3所示的示例中,可认为第一曲面细分子图元(P0′-0)不用于渲染场景,因为没有一个与之相关的较低层级子图元(P0′-0-0和P0′-0-1)用于渲染场景。如果将此信息提供到光栅化阶段,则较高层级子图元(P0′-0)可在曲面细分级之后被舍弃并且不传递到较低层级的级,使得不会从中生成其它子图元。
本发明人已确认,此信息可通过掩码极高效地从几何结构处理阶段输送到光栅化阶段,所述掩码指示在特定扩展变换级中生成的哪些子图元将用于渲染场景以及哪些子图元将不用于渲染场景。此类掩码在本文中将称为扩展变换级掩码。
因此,本文描述用于通过几何结构处理阶段和光栅化阶段根据几何结构数据生成渲染输出的方法和系统,其中在几何结构处理阶段,通过一个或多个扩展变换级变换所述几何结构数据,并且针对扩展变换级中的一个或多个级而生成扩展变换级掩码,所述掩码指示由此生成的哪些子图元将用于渲染场景;以及在光栅化阶段,根据扩展变换级掩码来重新变换所述几何结构数据。
现在参考图4,其示出示例未变换显示列表(UDL)图形处理系统400,其中几何结构处理逻辑配置成针对其扩展变换级中的一个或多个级生成扩展变换级掩码,所述掩码指示由该扩展变换级生成的哪些子图元用于渲染场景,并且光栅化逻辑配置成根据所述一个或多个扩展变换级掩码而重新变换未变换几何结构数据。图4中示出的系统400与图2示出的系统200类似之处在于,其包括存储器4021、4022、4023、4024、几何结构处理逻辑404和光栅化逻辑406。
存储器4021、4022、4023、4024可实施为一个或多个存储器块。存储器4021、4022、4023、4024可位于“芯片外”(即,与几何结构处理逻辑404和/或光栅化逻辑406不在同一芯片上)。几何结构处理逻辑404和光栅化逻辑406可通过所属领域中所知的一个或多个通信总线与存储器4021、4022、4023、4024通信。
如上文所描述,应用程序生成存储于存储器4021中的几何结构数据,所述几何结构数据描述场景中要渲染的图元。由应用程序生成的几何结构数据在本文中称为未变换几何结构数据,而由其描述的图元称为未变换图元。图元是简单的几何形状,例如但不限于可应用纹理的矩形、三角形、线或点。每个图元可由一个或多个顶点限定。未变换几何结构数据包括每个未变换图元的位置数据,其描述该图元在世界空间中的位置,而未变换几何结构数据还可包括每个未变换图元的其它数据,例如纹理和颜色数据。
在一些情况下,几何结构数据可划分成顶点数据和图元数据。顶点数据可包括每个顶点的位置数据(例如世界空间中描述顶点位置的X、Y和Z坐标)。顶点数据还可包括描述顶点外观的属性集合,例如要应用于顶点的纹理坐标(U,V)和/或基色。顶点数据可存储在存储器4021的顶点缓冲区中。图元数据可包括指示哪些顶点形成每个图元的信息。例如,在图元是三角形的情况下,图元数据可指示哪三个顶点形成该图元。在一些情况下,图元数据中标识特定顶点的信息可以是指向顶点缓冲区中与该顶点相关的特定部分的索引或指针。例如,如果顶点的编号是从0到127,则顶点缓冲区中与顶点0相关的部分可由索引或指针0标识,并且顶点缓冲区中与顶点20相关的部分可由索引或指针20标识。图元数据可存储在存储器4021的索引缓冲区中。在这些情况下,未变换图元的位置数据可包括形成该未变换冲图元的每个顶点的位置数据(例如X、Y、Z坐标)。
类似于图2所示的几何结构处理逻辑204,几何结构处理逻辑404实施TBR的几何结构处理阶段。具体地说,其生成每个未变换图元的已变换位置数据,并且生成每个平铺块的未变换显示列表,所述未变换显示列表指示哪些未变换图元在变换后将至少部分地处于该平铺块的界限内。然而,不同于图2中示出的几何结构处理逻辑204,图4中示出的几何结构处理逻辑404还生成每个未变换图元的掩码,所述掩码指示每个未变换图元的哪些子图元将用于渲染场景。图4中示出的几何结构处理逻辑404包括变换逻辑408、图元块生成器409和平铺引擎410。
变换逻辑408配置成至少接收未变换图元的位置数据并且至少生成每个未变换图元的已变换位置数据。在一些情况下,变换逻辑408还可接收和变换未变换图元的未变换几何结构数据的其它方面。未变换图元的已变换位置数据限定一个或多个图元在渲染空间(例如屏幕空间)中的位置。渲染空间中的图元在本文中称为已变换图元。因此,变换逻辑408将未变换图元变换成已变换图元。图4中示出的变换逻辑408配置成通过在一个或多个变换级中处理未变换图元的位置数据来生成未变换图元的已变换位置数据。示例变换级包含但不限于:顶点着色器级;曲面细分级(其可包括外壳着色器子级和/或域着色器子级);几何着色器级;视口变换级;以及剔除或裁剪级。
每个变换级接收图元的位置数据并且输出一个或多个图元的位置数据。一些变换级(例如顶点着色器级或视口变换级)接收图元的位置数据并且更改该图元的位置数据。因此,在这些变换级中,输入到所述级的图元与从该级输出的图元之间存在一对一映射。相比之下,其它变换级(例如曲面细分级或几何着色器级)接收图元的几何结构数据并且根据该图元生成一个或多个新图元(其在本文中可称为子图元)。因此,在这些变换级中,输入到该级的图元与从该级输出的图元之间可能不存在一对一映射(例如可存在一对多映射)。由于这些变换级可增大图元的数目,因此这些变换级可称作扩展变换级。
在本文所描述的实施例中,由变换逻辑408实施的一个或多个变换级包含用于处理至少一部分未变换几何结构数据的位置数据的至少一个扩展变换级。当未变换图元由至少一个扩展变换级处理时,与所述未变换图元相关的已变换位置数据包括描述一个或多个子图元在渲染空间中的位置的位置数据。相比之下,当未变换图元没有通过任何扩展变换级处理时,与所述未变换图元相关的已变换位置数据包括描述该图元在渲染空间中的位置的位置数据。
如上文所描述,由扩展变换级生成的每个子图元实际上可能不用于渲染场景。例如,如上文相对于图3所描述,一个或多个子图元可在其光栅化之前由剔除级剔除。由于未变换图元的位置数据在光栅化阶段中以相同方式重新变换,因此在光栅化阶段提前知晓哪些子图元将用于渲染场景的情况下,可更高效地实施光栅化阶段中的重新变换。例如,如果光栅化阶段提前知晓哪些子图元将不用于渲染场景,则光栅化阶段可忽略或舍弃那些子图元。
因此,与图2中示出的变换逻辑208对比,除生成未变换图元的已变换位置数据之外,对于一个或多个扩展变换级,图4中示出的变换逻辑408还配置成生成扩展变换级掩码,所述扩展变换级掩码指示与一个或多个未变换图元相关的哪些子图元将用于渲染场景。下文相对于图6到10描述用于生成扩展变换级掩码的示例方法。
图元块生成器409将变换逻辑408所生成的已变换图元分成群组,并且针对已变换图元的每个群组生成未变换图元块。每个未变换图元块包括(i)标识从中生成群组中的已变换图元的未变换图元而非标识群组中的已变换图元的信息;以及(ii)用于至少一个扩展变换级的扩展变换级掩码,其指示在重新变换其中标以的未变换图元期间将由该扩展变换级生成的哪些子图元将用于渲染场景。通过标以生成群组中的已变换图元的未变换图元,未变换图元块标识将生成每个群组中的已变换图元的未变换几何结构数据。
图元块生成器409可使用任何合适的准则来对已变换图元进行分组。在一些情况下,图元块生成器409可配置成基于已变换图元到达图元块生成器409的次序来对已变换图元进行分组。在其它情况下,图元块生成器409可基于已变换图元在渲染空间中的位置来对已变换图元进行分组。例如,图元块生成器409可配置成对已变换图元进行分组,使得在渲染空间中具有类似位置的已变换图元处于相同群组中。
在一些情况下,与相同未变换图元相关的所有已变换图元放在相同群组中,使得将最多仅在一个未变换图元块中标识每个未变换图元。然而,在其它情况下,与相同未变换图元相关的已变换图元可处于不同群组中,使得可在多个未变换图元块中标识相同的未变换图元。在这些情况下,每个未变换图元块还可包含信息以标识与所标识的未变换图元相关的哪些已变换图元形成该未变换图元块的部分。例如,如果未变换图元(UP0)由变换逻辑408变换成两个已变换图元(TP0、TP1),并且图元块生成器409将第一已变换图元(TP0)放在第一群组中且将第二已变换图元(TP1)放在第二群组中,则这些群组中的每个群组的未变换图元块将包含标识未变换图元(UP0)的信息。然而,这些未变换图元块中的每个未变换图元块将包含信息以指示与每个未变换图元块相关的已变换图元的不同子集与所述未变换图元块相关联。
图5中示出示例未变换图元块5021、5022。图5中示出的示例未变换图元块5021、5022包含标头504、状态数据506、图元索引数据508和扩展变换级掩码数据509。标头504包含描述未变换图元块的信息。例如,标头504可包含但不限于未变换图元块中涉及的顶点数目和/或未变换图元块中涉及的未变换图元数目。状态数据506包含描述M未变换图元块5021或5022中标识的未变换图元生成的已变换图元如何由光栅化逻辑406渲染的信息。状态数据可被描述为标识用于渲染从未变换图元块中标识的未变换图元生成的已变换图元的构成(recipe)。例如,状态数据可包含但不限于标识深度比较模式、混合状态、纹理状态和/或图元类型的信息。图元索引数据508包括用于每个未变换图元的索引集合,其标识形成该图元的顶点。例如,在图元是三角形的情况下,图元索引数据508可包括标识形成三角形的三个顶点的三个索引的集合。所述索引是从应用程序发送的顶点索引。每个索引充当指向存储在存储器4021中的未变换几何结构数据510中限定或关于特定顶点的部分的指针。
例如,如图5中所示,第一未变换图元块5021的图元索引数据508通过图元顶点标识三个未变换图元P0、P1和P2。具体地说,第一未变换图元P0标识为由顶点V0、V1和V2形成,第二未变换图元P1标识为由顶点V1、V2和V3形成,并且第三未变换图元P2标识为由顶点V2、V3、V4形成。每个顶点索引或标识符充当指向未变换几何结构数据510中限定或关于特定顶点的部分(例如顶点缓冲区部分)的指针。例如,顶点0(V0)的标识充当指向未变换几何结构数据510中限定或关于顶点0(V0)的部分512的指针。如上文所描述,特定顶点的未变换几何结构数据可包括位置数据(例如世界空间中的坐标集合,例如X、Y和Z坐标,其描述顶点的位置)。在一些情况下,图元索引数据可通过复制或写出索引缓冲区中涉及相关图元的部分来生成。未变换图元块中的图元索引数据508可根据任何合适的压缩技术进行压缩。
扩展变换级掩码数据509包括用于变换逻辑的一个或多个扩展变换级的扩展变换级掩码,其指示将针对未变换图元块中标识的未变换图元生成的哪些子图元将用于渲染场景。用于特定扩展变换级的扩展变换级掩码可通过组合由变换逻辑408针对未变换图元块中的未变换图元生成的掩码来生成。下文相对于图6到10更详细地描述可包含在未变换图元块中的扩展变换级掩码以及其/它们可被生成的方式。
返回到图4,由图元块生成器409生成的未变换图元块存储在存储器4022中。由变换逻辑408生成的已变换图元则连同指示它们所属的未变换图元块的信息一起提供到平铺引擎410。平铺引擎410确定哪些已变换图元将用于渲染每个平铺块。如果已变换图元至少部分地落入平铺块界限内,则可确定所述已变换图元用于渲染所述平铺块。接着,平铺引擎410针对每个平铺块生成未变换显示列表,其标识在变换后将生成将用于渲染平铺块的至少一个已变换图元的未变换图元。
在一些情况下,平铺块的未变换显示列表可包括标识含有相关未变换图元的未变换图元块的信息以及用于被标识的每个未变换图元块的图元掩码,所述图元掩码标识由该未变换图元块中标识的未变换该图元生成的哪些已变换图元将用于渲染平铺块。标识特定未变换图元块的信息可以是未变换图元块在存储器中的地址或唯一地标识未变换图元块的任何其它合适的标识符。图元掩码可包括例如用于当在未变换图元块中标识的未变换图元在光栅化阶段中被重新变换时将由变换逻辑生成的每个已变换图元的位。掩码中的位可在对应的已变换图元将用于渲染平铺块时设置成一个值(例如“1”),并在对应的已变换图元将不用于渲染平铺块时设置成另一值(例如“0”)。例如,如果每个未变换图元块可产生最多32个已变换图元,则每个图元掩码可包括32个位。
图5中示出平铺块的示例未变换显示列表514。在此示例中,存在编号从0到5的六个未变换图元,并且未变换图元0到2(P0、P1、P2)在未变换图元块0(UPB0)中,未变换图元3到5(P3、P4、P5)在未变换图元块1(UPB1)中。如果平铺引擎410根据已变换位置数据确定从未变换图元0、3和4中的每一者生成的至少一个已变换图元落入特定平铺块(例如平铺块0)内,则平铺引擎410可针对该特定平铺块生成图5中示出的未变换显示列表514。具体地说,平铺引擎410可生成未变换显示列表514,其包括(i)将未变换图元块0和1标识为含有要用于渲染平铺块0的未变换图元的索引数据的信息;以及(ii)用于未变换图元块0的图元掩码(例如“100”),其指示针对该未变换图元块生成的第一已变换图元将用于渲染平铺块;以及(iii)用于未变换图元块1(PB1)的图元掩码(例如“110”),其指示针对该未变换图元块生成的第二和第三已变换图元将用于渲染平铺块。本文中的描述可将未变换图元描述为“在未变换图元块中”或“含在未变换图元块中”(或类似表达),并且这应理解为包含以下情况:未变换图元的标识符(例如图5中示出的图元索引数据508)包含在未变换图元块中,即使当未变换图元的顶点数据本身不包含在所述未变换图元块中时(例如未变换图元的顶点数据实际上包含在图5中示出的示例中的未变换几何结构数据顶点缓冲区中)也如此。
由平铺引擎410生成的每个未变换显示列表存储在存储器4023中。
类似于图2所示的光栅化逻辑206,图4中示出的光栅化逻辑406实施TBR的光栅化阶段。具体地兑光栅化逻辑406通过以下操作而以逐平铺块的方式渲染图元:提取在该平铺块的未变换显示列表中指示的未变换图元的未变换几何结构数据,变换提取的未变换几何结构数据以生成已变换图元,以及根据其对应的几何结构数据对所述已变换图元进行渲染。然而,不同于图2中示出的光栅化逻辑206,图4中示出的光栅化逻辑406接收用于一个或多个扩展变换级的扩展变换级掩码或扩展变换级掩码集合,其指示哪些子图元用于场景的渲染,并且图4中示出的光栅化逻辑406配置成根据所述掩码或掩码集合来重新变换提取的未变换几何结构数据。
如图4中所示,光栅化逻辑406可包括提取逻辑412、变换逻辑413、任选高速缓存415、隐藏表面去除(HSR)逻辑414和纹理化/着色逻辑416。在此示例中,光栅化逻辑406配置成基于未变换图元块提取和变换未变换几何结构。具体地说,光栅化逻辑406配置成针对未变换显示列表中涉及的未变换图元块中的所有未变换图元提取和变换几何结构数据,而不论是否所有未变换图元将用于渲染平铺铺块。
因此,为了处理平铺块,提取逻辑412从存储器4023提取该平铺块的未变换显示列表。接着,针对未变换显示列表中标识的每个未变换图元块,提取逻辑412确定高速缓存415是否包括该未变换图元块的已变换几何结构数据。如果高速缓存415不包括该未变换图元块的已变换几何结构数据,则提取逻辑412提取该未变换图元块的未变换几何结构数据。
提取未变换图元块的未变换几何结构数据可包括:(i)从存储器4022提取未变换图元块;(ii)标识与未变换图元块中标识的未变换图元(例如其索引数据存储在未变换图元块中的未变换图元)相关的未变换几何结构数据;以及(iii)M存储器4021提取未变换几何结构数据。将从存储器4021提取的任何未变换几何结构数据提供到变换逻辑413,所述变换逻辑重新变换所述未变换几何结构数据(例如未变换图元)以生成已变换几何结构数据(例如已变换图元)。变换未变换几何结构数据包括将未变换几何结构数据的位置数据至少变换到渲染空间(例如屏幕空间)中。变换未变换几何结构数据还可包括执行裁剪和剔除等功能以移除落在视锥外部的图元,和/或对图元执行光照/属性处理。
在本文所描述的示例中,除接收未变换图元块的未变换几何结构数据之外,变换逻辑413还接收一个或多个扩展变换级掩码,所述掩码描述由特定扩展变换级根据未变换图元块中标识的未变换图元生成的哪些子图元将用于渲染平铺块,并且变换逻辑413配置成根据扩展变换级掩码来重新变换未变换几何结构数据。在一些情况下,根据一个或多个扩展变换级掩码重新变换图元块中标识的未变换图元集合可包括舍弃由扩展变换级生成的未在用于该扩展变换级的扩展变换级掩码中标识为用于渲染场景的任何子图元。在一些情况下,每个扩展变换级掩码可包括用于将由对应扩展变换级根据未变换图元块中的未变换图元生成的每个子图元的位,因此可对照扩展变换级掩码直接剔除子图元。由变换逻辑413生成的任何已变换几何结构数据(例如已变换图元)存储在高速缓存415中。一些替代示例可能不实施扩展变换级掩码,在此情况下,此时在处理中不剔除任何子图元。
在将平铺块的未变换显示列表中涉及的未变换图元块的已变换几何结构数据存储在高速缓存415中后,提取逻辑412和/或变换逻辑413通知HSR逻辑414:HSR逻辑414可以开始使用该未变换图元块的已变换几何结构数据处理平铺块,以及与未变换图元块相关联的哪些已变换图元与渲染平铺块相关。HSR逻辑414例如通过对已变换图元执行扫描转换以生成图元片段以及移除隐藏(例如被其它图元片段隐藏)的图元片段来对平铺块的已变换图元进行光栅化。所属领域中已知执行隐藏表面去除的方法。接着(在隐藏表面移除之后)将其余片段传递到纹理化/着色逻辑416,所述纹理化/着色逻辑对图元片段执行纹理化和/或着色以确定被渲染图像的像素值,所述像素值可传递到存储器以供存储在帧缓冲区中。尽管图4中未示出,但纹理化/着色逻辑416可从存储器接收纹理数据,以便将纹理化应用于图元片段,如所属领域的技术人员所知。纹理化/着色逻辑416可将进一步处理应用于图元片段(例如α混合和其它过程),如所属领域的技术人员所知,以便确定图像的被渲染像素值。
扩展变换级掩码生成
现在参考图6到10,其用于更详细地描述生成扩展变换级掩码的过程。图6示出图4中所示的变换逻辑的示例实施方案。如上文所描述,变换逻辑接收世界空间中的未变换图元集合并将接收到的未变换图元变换成渲染空间(例如屏幕空间)中的已变换图元集合。可在一个或多个级中执行所述变换,所述一个或多个级例如但不限于顶点着色器级、曲面细分级、几何着色器级、视口变换级和/或裁剪和/或剔除级。在图6所示的示例中,变换逻辑408包括各自实施一个变换级的顶点着色器逻辑602、曲面细分逻辑604、几何着色器逻辑606、视口变换逻辑608和裁剪和/或剔除逻辑610。每个变换级配置成接收图元集合(即,限定图元集合的几何结构数据)并输出修改的图元集合(例如限定图元集合的修改的几何结构数据)。
如所属领域的技术人员所知,顶点着色器级用于通过对三维(3D)场景中的对象的顶点数据执行数学运算来为对象添加特效。具体地说,顶点着色器级配置成更改一个或多个顶点性质。因此,顶点着色器级接收图元的顶点数据(例如颜色、纹理或位置)并且更改该顶点数据(例如颜色、纹理或位置)以实现特定效果。因此,针对输入到顶点着色器级的每个图元,顶点着色器级输出修改的图元。在图6所示的示例中,顶点着色器级是第一级,因此顶点着色器接收原始的未变换图元(例如未变换图元的未变换几何结构数据)并基于此而生成修改的图元(例如具有修改的位置的图元)。
曲面细分级用于将分块(即,顶点群组以及因此图元群组)转换成不同图元(其在本文中称为子图元)的集合。曲面细分级可在三个子级中实施:外壳着色器子级,其产生对应于每个输入分块的几何结构分块;曲面细分子级,其创建几何结构分块的取样模式并由此生成子图元集合;以及域着色器子级,其计算子图元的顶点值(例如位置、颜色和/或纹理)。针对输入分块生成的子图元的数目可等于或大于输入分块中的图元数目。使变换逻辑实施曲面细分级允许图形处理系统评估较低细节模型并以较高细节对其进行渲染。因此,曲面细分级可输出比其接收为输入的图元更多的图元(呈子图元形式)。
几何着色器级用于处理图元并由此生成零个、一个或超过一个新图元(其在本文中称为子图元)。几何着色器级通常可配置并且可用于动态生成新形状。几何着色器级通常用于执行分层渲染。因此,几何着色器级可输出比其接收到的更多的图元。
视口变换级配置成接收世界空间中的图元并将其变换到渲染空间(例如屏幕空间)中。具体地说,视口变换级配置成接收世界窗(例如世界空间坐标)中的顶点并将其转换到视口(例如渲染空间坐标,例如屏幕空间坐标),这在本文中称为视口变换。世界窗是应用程序想要渲染的专用坐标中的场景的部分(例如千米、米或厘米)。相比之下,视口是用于生成场景图像的渲染空间的区域(例如像素或取样位置)。视口可覆盖整个图像或其部分。因此,视口变换级将传入的世界窗中的世界空间坐标转化到视口中的渲染空间坐标。在许多情况下,几何结构处理级每次使用单个视口(通常具有覆盖整个图像的尺寸),并且所有顶点的坐标会被变换到此视口。然而,一些应用程序可使用多个视口来实现一个或多个视觉效果。
裁剪和/或剔除级用于移除任何冗余图元,从而减小其余逻辑块中的工作负荷。存在可用于标识图元冗余且因此可被移除的许多不同方法。可使用任何合适方法或方法组合来标识冗余的图元。例如,在一些情况下,如果图元背对用户、完全不在屏幕中、完全在裁剪平面外部、具有不覆盖任何样本点的边界框和/或不覆盖任何样本点,则所述图元可被视为冗余。
如上文所描述,可增大图元数目的变换级(例如曲面细分级或几何着色器级)被称为扩展变换级。
所属领域的技术人员将清楚,这是变换逻辑各级的示例实施方案,并且本文中所描述的原理和技术可同等地应用于其中变换逻辑包括变换级的不同组合、例如包括至少一个扩展变换级的任何图形处理系统。
变换逻辑408还包括图元掩码生成逻辑612,所述图元掩码生成逻辑配置成针对每个未变换图元生成用于至少一个扩展变换级的图元扩展变换级掩码,所述掩码指示由该扩展变换级针对该未变换图元生成的哪些子图元将用于渲染场景。例如,如上文相对于图3所描述,由特定扩展变换级(例如曲面细分级)生成的子图元可被变换级中的另一变换级(例如裁剪和/或剔除级)舍弃。因此,此类子图元将不用于渲染场景。
在一些情况下,用于特定扩展变换级的未变换图元的图元扩展变换级掩码包括用于由该扩展变换级针对该未变换图元生成的每个子图元的位。扩展变换级掩码的每个位指示对应子图元是否将用于渲染场景。例如,如果曲面细分级针对原始未变换图元生成四个子图元,则对于该未变换图元,用于曲面细分级的扩展变换级掩码可包括四个位。每个位可在子图元将用于渲染场景时设置成一个值(例如“1”),并在子图元将不用于渲染场景时设置成不同值(例如“0”)。如果“1”用于指示子图元用于渲染场景并且“0”用于指示子图元不用于渲染场景,则在示例中的四个子图元中仅前三个子图元用于渲染场景的情况下,扩展变换级掩码可以是“1110”。在扩展变换级不生成未变换图元的任何子图元(例如因为该未变换图元绕过了扩展变换级)的情况下,则该子图元的扩展变换级掩码可为空。
图元掩码生成逻辑612可配置成通过监测扩展变换级的输出(例如曲面细分逻辑和/或几何着色器逻辑的输出)并将其与变换逻辑的输出(例如输出到图元块生成器的已变换图元)相比较来生成扩展变换级掩码。例如,图元掩码生成逻辑612可配置成确定由特定扩展变换级生成的子图元在变换逻辑不输出对应于或源自该子图元的任何已变换图元的情况下将不用于渲染场景。在一些情况下,变换逻辑可实施单个扩展变换级。在这些情况下,图元掩码生成逻辑612可配置成确定由该扩展变换级生成的子图元在变换逻辑不输出该子图元的已变换图元的情况下将不用于场景中的渲染。
在其它情况下,变换逻辑可实施多个变换级。在这些情况下,变换逻辑可配置成生成用于所有变换级或其任何组合的单独扩展变换级掩码。在一些情况下,例如图6所示的情况,变换逻辑408可实施分级扩展变换级,使得由较高层级扩展变换级(例如曲面细分级)生成的子图元在由较低层级(即,后续)扩展变换级(例如几何着色器级)处理时可自身生成另外的子图元。例如,如图7中所示,在变换逻辑408实施随后跟着几何着色器级的曲面细分级的情况下,当未变换图元(UP0)由曲面细分级处理时,可从所述未变换图元生成两个子图元(T0、T1)。当曲面细分子图元(T0、T1)接着由几何着色器级处理时,对于每个输入的子图元,可生成两个另外的子图元(GS0、GS1以及GS2、GS3)。
在这些情况下,图元掩码生成逻辑612可首先配置成:对于由最高层级扩展变换级针对未变换图元生成的每个子图元,通过确定是否存在由变换逻辑408输出的对应于该子图元的任何已变换图元来生成用于最高层级扩展变换级的该未变换图元的扩展变换级掩码。如果不存在由变换逻辑输出的对应于该子图元的已变换图元,则该子图元将不用于渲染场景并且在扩展变换级掩码中如此标识(例如其对应的位设置为‘0’)。然而,如果存在由变换逻辑408输出的对应于该子图元的至少一个已变换图元,则该子图元将用于渲染场景并且在扩展变换级掩码中如此标识(例如其对应的位设置为‘1’)。
例如,在图7中示出的示例中,最高层级扩展变换级是曲面细分级。曲面细分级生成未变换图元(UP0)的两个子图元(T0、T1)。由变换逻辑408输出的与原始未变换图元(UP0)相关的唯一已变换图元对应于第四几何着色器子图元(GS3)。因此,不存在与第一曲面细分子图元(T0)相关的已变换图元,因此确定第一曲面细分子图元(T0)将不用于渲染场景,并且添加信息到扩展变换级掩码以指示这一点(例如将‘0’添加到扩展变换级掩码)。存在与第二曲面细分子图元(T1)相关的一个已变换图元(GS3),因此确定第二曲面细分子图元(T1)将用于渲染场景,并且添加信息到扩展变换级掩码以指示这一点(例如将‘1’添加到此扩展变换级掩码)。用于曲面细分级的未变换图元(UP0)的最终扩展变换级掩码则可为“01”。
接着,图元掩码生成逻辑612可配置成生成用于下一最低扩展变换级的该未变换图元的扩展变换级掩码。对于其父级子图元将用于渲染场景的任何子图元,可通过确定是否存在由变换逻辑408输出的对应于该子图元的任何已变换图元来生成用于下一最低扩展变换级的未变换图元的扩展变换级掩码。对于其父级子图元并不用于渲染场景的子图元,可不添加信息到扩展变换级掩码。
例如,在图7中示出的示例中,前两个几何着色器子图元(GS0和GS1)的父级子图元(T0)将不用于渲染场景,因此对于这些子图元(GS0、GS1),不添加信息到扩展变换级掩码。相比之下,后两个几何着色器子图元(GS2、GS3)的父级子图元(T1)将用于渲染场景,因此对于这些子图元(GS2、GS3),添加信息到扩展变换级掩码。具体地说,由于不存在对应于第三几何着色器子图元(GS2)的已变换图元,因此添加信息到扩展变换级掩码以指示第三几何着色器子图元将不用于渲染场景(例如将“0”添加到掩码);并且由于存在对应于第四几何着色器子图元(GS3)的已变换图元,因此添加信息到扩展变换级掩码以指示第三几何着色器子图元将用于渲染场景(例如将“1”添加到掩码)。这会产生用于几何着色器级的未变换图元(UP0)的最终扩展变换级掩码“01”。对于其父级子图元在扩展变换级掩码中标识为不用于渲染场景的未变换图元,基于变换逻辑在光栅化阶段将不生成这些子图元,不添加任何信息。可针对层级中的每个后续扩展变换级重复此过程,直到生成用于每个扩展变换级的扩展变换级掩码。
由图元掩码生成逻辑612生成的图元扩展变换级掩码连同由变换逻辑408生成的已变换图元一起提供到图元块生成器409。如上文所描述,图元块生成器409配置成基于一个或多个准则(例如空间位置)而对已变换图元进行分组并且针对已变换图元的每个群组生成未变换图元块,所述未变换图元块包括(i)标识对应于群组中的已变换图元的未变换图元的信息;以及(ii)用于一个或多个扩展变换级的块扩展变换级掩码,所述掩码指示将由该扩展变换级针对未变换图元块中标识的未变换图元生成的哪些子图元将用于渲染场景。
因此,如图6所示,图元块生成器409可包括图元块掩码生成逻辑614,所述图元块掩码生成逻辑配置成根据由图元掩码生成逻辑612生成的图元扩展变换级掩码来生成用于扩展变换级的块扩展变换级掩码。在一些情况下,图元块掩码生成逻辑614可配置成通过组合用于扩展变换级的未变换图元块中标识的未变换图元的图元扩展变换级掩码来生成用于特定扩展变换级的块扩展变换级掩码。例如,图元块掩码生成逻辑614可配置成通过串接用于特定扩展变换级的在未变换图元块中标识的未变换图元的图元扩展变换级掩码来生成用于特定扩展变换级的块扩展变换级掩码。未变换图元块中标识的未变换图元的图元扩展变换级掩码可按其在未变换图元块中的相同次序串接。在变换逻辑实施多个扩展变换级的情况下,图元块掩码生成逻辑614可配置成生成用于每个扩展变换级或仅一部分扩展变换级的块扩展变换级掩码。
例如,图8示出未变换图元集合(UP0、UP1、UP2、UP3)的示例图元曲面细分级掩码。例如,第一未变换图元(UP0)具有图元曲面细分级掩码“1 1 1 0”,第二未变换图元(UP1)具有图元曲面细分级掩码“1 1 1 0 0 0”,第三未变换图元(UP2)具有图元曲面细分级掩码“00 1”,并且第四未变换图元(UP3)具有图元曲面细分级掩码“0 0 0 1 1”。如果图元块生成器409对与这些未变换图元相关的已变换图元进行分组以使得未变换图元块标识第一、第二和第四未变换图元(UP0、UP1和UP3),则图元块掩码生成逻辑可配置成通过串接第一、第二和第四未变换图元的图元曲面细分级掩码来生成块曲面细分级掩码。这会产生块曲面细分级掩码“1 1 1 0 1 1 1 0 0 0 0 0 0 1 1”。尽管图8中未示出,但扩展变换级掩码数据509还可包括可按类似方式生成的用于一个或多个其它扩展变换级的扩展变换级掩码。
虽然串接的块扩展变换级掩码仅包括每子图元一个位,但一些未变换图元可生成大量子图元,因此在一些情况下,扩展变换级掩码可变得较大。为确保未变换图元块不变得过大,在一些情况下,可存在针对所有块扩展变换级掩码的最大大小或针对每个块扩展变换级掩码的最大大小。如下文更详细地描述,可动态地确定块扩展变换级掩码的最大大小或每个块扩展变换级掩码的最大大小。在图元块掩码生成逻辑614确定通过串接未变换图元块中的未变换图元的图元扩展变换级掩码生成的块扩展变换级掩码超过最大大小的情况下,图元块掩码生成逻辑614可配置成在存储扩展变换级掩码之前压缩块扩展变换级掩码。
例如,在一些情况下,图元块掩码生成逻辑614可配置成通过对邻近位一起进行“或”运算来压缩所述/每个串接的块扩展变换级掩码。如果压缩的块扩展变换级掩码仍超过最大大小,则可重复所述过程,直到压缩的块扩展变换级掩码不再超过最大大小。在串接的块扩展变换级掩码以此方式压缩的情况下,可添加信息到未变换图元块的标头,所述信息指示块扩展变换级掩码被压缩的次数。在一些情况下,指示未变换图元块掩码被压缩的次数的信息可呈计数器形式,每当未变换图元块掩码被压缩,所述计数器就递增。
图9示出图8中示出的块曲面细分级掩码“1 1 1 0 1 1 1 0 0 0 0 0 0 1 1”可被压缩的方式。具体地说,通过“或”运算邻近的每一对位,压缩块曲面细分级掩码变成“1 1 11 0 0 1 1”。应注意,虽然此方法因单个位用于描述多个子图元而在压缩扩展变换级掩码时极为高效,但相比于未压缩扩展变换级掩码的情况,这可能导致在光栅化阶段不大高效地执行重新变换。这是因为,如果压缩扩展变换级掩码中的位表示的任一子图元将用于渲染场景,则所述位将设置成‘1’,这意味着位表示的所有子图元将被完全重新变换,而非可能舍弃将不用于渲染场景的那些子图元。
例如,如果串接的块扩展变换级掩码中的位对“10”指示第一子图元将用于渲染场景并且第二子图元将不用于渲染场景,则光栅化逻辑可完全变换第一子图元并舍弃第二子图元。然而,如果串接的扩展变换级掩码中的此位对被压缩成“1”,则尽管第二子图元将不用于渲染场景,光栅化逻辑也会完全变换第一和第二子图元。
这种压缩降低了用于存储扩展变换级掩码的数据量并且不引起任何渲染误差,但可能因压缩而失去由使用扩展变换级掩码提供的一些处理效率增益。“或”运算邻近位对的压缩过程可执行一次或多次以实现不同程度的压缩。当选择合适程度的压缩时,要考虑通过较大程度的压缩实现的压缩数据大小的减小与可能因使用较大程度的压缩引起的由使用扩展变换级掩码提供的处理效率增益的减小之间的折衷。
如上文所描述,光栅化逻辑406配置成基于平铺块来渲染场景。具体地说,光栅化逻辑406配置成针对每个平铺块提取该平铺块的未变换显示列表,然后提取并变换未变换显示列表中标识的未变换图元。光栅化逻辑406配置成基于图元块来提取和重新变换未变换图元(例如与之相关的未变换几何结构数据)。具体地说,当未变换显示列表涉及未变换图元块时,光栅化逻辑406配置成提取和变换在该未变换图元块中标识或提及的所有未变换图元。在未变换图元块包括用于一个或多个扩展变换级的扩展变换级掩码的情况下,光栅化逻辑406则配置成根据扩展变换级掩码重新变换所述未变换图元块中标识或提及的未变换图元。在一些情况下,根据一个或多个扩展变换级掩码重新变换未变换图元块中标识或提及的未变换图元集合可包括舍弃由扩展变换级生成的在对应的扩展变换级掩码中未标识为用于渲染场景的任何子图元。在一些情况下,每个扩展变换级掩码可包括用于将M未变换图元块中标识的未变换图元生成的每个子图元的位,因此可通过对照扩展变换级掩码参考所述子图元来将其直接剔除。
在未变换图元块的标头指示未变换图元块中的扩展变换级掩码已压缩的情况下,光栅化逻辑406则可配置成在根据掩码执行重新变换之前对扩展变换级掩码进行扩展或解压缩。在标头指示扩展变换级掩码被压缩的次数n的情况下,则可通过将每个‘1’替换为n个‘1’并将每个‘0’替换为n个‘0’来对扩展变换级掩码进行扩展或解压缩,使得扩展的扩展变换级掩码将具有一个位用于由对应的扩展变换级针对未变换图元块中的未变换图元生成的每个子图元。
尽管在图6中将图元掩码生成逻辑612和图元块掩码生成逻辑614示为单独的不同逻辑块,但在其它示例中,被描述为由图元掩码生成逻辑612和图元块掩码生成逻辑614执行的功能可由单个逻辑块执行,或被描述为由图元掩码生成逻辑612和图元块掩码生成逻辑614执行的功能可按不同方式分布在多个不同逻辑块当中。
现在参考图10,其示出用于在UDL 图形处理系统中,例如图4中示出的UDL图形处理系统400,在几何结构处理阶段和光栅化阶段生成渲染输出的示例方法。在几何结构处理阶段中生成用于至少一个扩展变换级的扩展变换级掩码,其指示由该扩展变换级针对未变换图元集合生成的哪些子图元将用于渲染场景以及哪些子图元将不用于渲染场景。光栅化阶段配置成根据扩展变换级掩码重新变换未变换图元。
方法1000在框1002处开始于几何结构处理阶段,其中将世界空间中的多个未变换图元(例如与之相关的未变换几何结构数据)变换成渲染空间中的多个已变换图元。如上文所描述,可通过一个或多个变换级实施所述变换。例如,变换未变换图元可包括实施以下中的一个或多个:顶点着色器级,曲面细分级(其可包含外壳着色器子级和/或域着色器子级);几何着色器级;视口变换级;和/或裁剪和/或剔除级。每个变换级接收图元的几何结构数据并且输出一个或多个图元的几何结构数据。在这些示例中,一个或多个变换级包含至少一个扩展变换级。
在框1004处,(例如通过图元块生成器)将框1002中生成的已变换图元分成群组。如上文所描述,可使用任何合适的准则将已变换图元分成群组。例如,在一些情况下可基于已变换图元在图元块生成器处的接收次序来对所述已变换图元进行分组。在其它示例中,已变换图元可分组成使得具有空间类似位置的已变换图元置于相同群组中。
在框1006处,(例如由图元块生成器)针对已变换图元的每个群组生成未变换图元块,所述未变换图元块包括(i)标识与群组中的已变换图元相关的未变换图元的信息;以及(ii)用于一个或多个扩展变换级的扩展变换级掩码,其指示针对未变换图元块中标识的未变换图元生成的哪些子图元将用于渲染场景。如上文所描述,用于扩展变换级的块扩展变换级掩码可通过以下方式生成:(i)生成每个未变换图元的图元扩展变换级掩码,其指示由该扩展变换级针对未变换图元生成的哪些子图元将用于渲染场景;以及(ii)组合(例如串接)在未变换图元块中标识的未变换图元的图元扩展变换级掩码。
未变换图元的图元扩展变换级掩码可通过以下方式生成:比较由该扩展变换级输出的对应于未变换图元的子图元与已变换图元,以及针对每个子图元并确定是否存在对应于或关于该子图元的至少一个已变换图元。如果存在对应于或关于子图元的至少一个已变换图元,则该子图元将用于渲染场景。相比之下,在不存在对应于或关于子图元的已变换图元的情况下,则子图元将不用于渲染场景。未变换图元的图元扩展变换级掩码可包括用于每个子图元的位,其指示该子图元是否将用于渲染场景。
在块扩展变换级掩码超过最大大小阈值的情况下,可压缩所述块扩展变换级掩码,之后将其添加到未变换图元块。如上文所描述,在块扩展变换级掩码包括一系列位的情况下,块扩展变换级掩码可通过例如“或”运算邻近位对来进行压缩。
在框1008处,光栅化阶段开始,并且根据未变换图元块中的扩展变换级掩码,基于未变换图元块重新变换未变换图元以生成已变换图元。具体地说,光栅化阶段每次提取和重新变换整个未变换图元块中的未变换图元。例如,如上文所描述,光栅化逻辑可配置成针对每个平铺块提取该平铺块的未变换显示列表,提取其中涉及的每个未变换图元块的所有未变换图元(例如与之相关的未变换几何结构数据);以及根据该未变换图元块中的扩展变换掩码变换提取的未变换图元。在一些情况下,根据该未变换图元块中的扩展变换级掩码变换未变换图元块中标识的未变换图元包括:当用于扩展变换级的扩展变换级掩码指示由该扩展变换级针对未变换图元生成的子图元将不用于渲染场景时,剔除或舍弃所述子图元。如上文所描述,如果扩展变换级掩码被压缩,则光栅化逻辑可配置成在将扩展变换级掩码用于重新变换未变换图元之前对所述掩码进行解压缩或扩展。
在框1010处,渲染框1008中生成的已变换图元以产生渲染输出。渲染已变换图元可包括光栅化已变换图元以生成图元片段以及执行隐藏表面去除;和/或对图元片段进行纹理化和/或着色以生成每个像素的颜色值。
所属领域的技术人员将清楚,上文描述如何生成未变换图元块中的扩展变换级掩码的一个示例,并且可按任何合适的方式生成未变换图元块中的扩展变换级掩码。例如,在另一示例中,图元块生成器可针对每个已变换图元接收:边带信息,其指示其与哪个曲面细分索引或几何着色器索引相关;以及标记,其指示该已变换图元是否被剔除。接着,图元块生成器可动态生成扩展变换级掩码。在又一示例中,扩展变换级本身可记录针对每个输入图元生成的子图元数目,并且此信息可提供到图元块生成器。
在上文所描述的示例中,扩展变换级掩码中的‘0’指示子图元将不用于渲染场景,扩展变换级掩码中的‘1’指示子图元将用于渲染场景,并且所述掩码可使用或运算进行压缩以组合掩码中的邻近位对。应了解,在实现相同效果的替代示例中,扩展变换级掩码中的‘1’指示子图元将不用于渲染场景,扩展变换级掩码中的‘0’指示子图元将用于渲染场景,并且所述掩码可使用和运算进行压缩以组合掩码中的邻近位对。
未变换图元块存储器
如上文所描述,由图元块生成器409生成的未变换图元块存储在存储器4022中。在一些情况下,给每个未变换图元块分配存储器4022的相同大小组块,未变换图元块可存储于所述组块中。确保图元块不超过预定存储空间量允许图形处理系统提前知晓图元块需要多少存储空间并且可监测存储器4022以预测其将在何时用完存储空间并在存储器完全储满之前可采取行动。在这些情况下,如果未变换图元块超过分配的存储空间量,则可压缩未变换图元块的一个或多个部分。例如,图元块生成器409可配置成如上文所描述压缩扩展变换级掩码。然而,如上文所描述,当压缩扩展变换级掩码时,信息会丢失,这意味着相比于未压缩扩展变换级掩码的情况,不大高效地执行重新变换。例如,如果原始扩展变换级掩码包括指示第一子图元将用于渲染场景的位以及指示第二子图元将不用于渲染场景的另一位,则当生成那些子图元的未变换图元被重新变换时,光栅化逻辑可配置成剔除或舍弃第二子图元而非对其进行完全变换,并且完全变换第一子图元。然而,如果如上文所描述(例如通过“或”运算邻近位对)压缩扩展变换级掩码,则两个位可能被替换为指示前两个子图元将用于渲染场景的单个位,则当生成那些图元的未变换图元被重新变换时,光栅化逻辑可配置成完全变换这两个子图元,即使第二子图元实际上将不用于渲染场景也如此。因此,完全重新变换第二子图元可能浪费资源。
由于未变换图元块在大小上可变,因此本发明人确认,可减小压缩的未变换图元块的数目,并且可更高效地使用存储器4022,同时仍具有可供用于每个未变换图元块的分配的可预测存储空间量。这通过以下方式来实现:给每个未变换图元块分配最小存储空间组块,保持已分配给未变换图元块的存储空间运行总量,并允许未变换图元块超过每未变换图元块的可用存储空间量,只要已分配的存储空间间运行总量不超过可供用于分配给目前分配有存储空间以用于当前渲染的所有未变换图元块的存储空间量即可。这意味着,如果未变换图元块并未使用其所有分配的存储空间组块,则后续未变换图元块可使用其分配的存储空间组块加上分配给先前未变换图元块的存储空间组块的未使用部分。
现在参考图11,其示出用于存储由图元块生成器409生成的未变换图元块的存储器1100的示例实施方案。存储器1100可用于实施图4中示出的存储器4022。在图11中示出的示例中,存储器1100包括存储器模块1102和存储器控制器1104。存储器模块1102可以是用于存储数字信息的任何合适的存储器。
存储器控制器1104配置成管理存储器,使得用于任何n个未变换图元块的存储空间总量不大于n*chunk_size,其中chunk_size是为每个未变换图元块预留的存储空间量。存储器控制器1104可配置成保持分配给未变换图元块1106的存储空间运行总量,并且记录分配的总存储空间中有多少未使用或空闲1108,以及基于新的未变换图元块的大小和未使用或空闲的分配存储空间量来确定是否可添加新的未变换图元块到存储器模块。如果新的未变换图元块的大小小于或等于未使用或空闲的分配存储空间量,则新的未变换图元块可未压缩地存储于存储器模块1102中(即,并不首先压缩新的未变换图元块的一个或多个部分)。存储器控制器1104可配置成每当新的未变换图元块写入到存储器模块1102时就添加新的存储空间组块到分配的总存储空间,使得当在存储器控制器1104处接收到第n个未变换图元块时,分配的总存储空间是n*chunk_size。分配的存储空间的空闲部分将基于先前存储在存储器模块1102中的未变换图元块已使用了多少存储空间。
现在参考图12,其示出可由存储器控制器1104实施来管理存储器模块1102的示例方法1200。方法1200开始于框1202处,其中存储器控制器1104添加新的存储空间组块到分配的总存储空间。分配的总存储空间表示已分配给目前被视为用于当前渲染的未变换图元块的存储空间量。添加到分配的总存储空间的存储空间组块大小表示每个未变换图元块所享有的最小存储空间量。添加到分配的存储空间的存储空间组块大小(chunk_size)可凭经验确定。在添加存储空间组块到分配的存储空间后,方法1200进行到框1204。
在框1204处,存储器控制器1104确定分配的总存储空间中的空闲或未使用部分。存储器控制器1104可配置成通过从分配的总存储空间减去当前用于存储未变换图元块的存储器模块1102的总量来确定分配的总存储空间的空闲部分。在确定分配的总存储空间的空闲或未使用部分后,方法1200进行到框1206。
在框1206处,存储器控制器1104接收新的未变换图元块以用于存储在存储器模块1102中。在一些情况下,可能已从图4中示出的图元块生成器409等图元块生成器接收到新的未变换图元块。在存储器控制器1104已接收用于存储在存储器模块1102中的新的未变换图元块后,方法1200进行到框1208。
在框1208处,存储器控制器1104确定接收到的未变换图元块的大小是否小于或等于分配的存储空间的当前空闲部分。换句活说,存储器控制器1104确定接收到的未变换图元块是否将适合分配的总存储空间中的空闲部分。如果确定接收到的未变换图元块的大小大于分配的存储空间的当前空闲部分,则方法1200进行到框1210。然而,如果确定接收到的未变换图元块的大小小于或等于分配的存储空间的当前空闲部分,则方法进行到框1212。
在框1210处,压缩未变换图元块。在一些情况下,存储器控制器1104可配置成通过通知图元块生成器409未变换图元块过大而使未变换图元块压缩。在一些情况下,存储器控制器1104可向图元块生成器409提供指示分配的总存储空间的当前空闲部分的信息。响应于被通知未变换图元块过大,未变换图元块生成器409压缩未变换图元块以生成压缩的未变换图元块。并非未变换图元块的所有部分均能够被压缩,因此未变换图元块生成器选择未变换图元块中可被压缩的一个或多个部分并且压缩该部分。未变换图元块中可被压缩的一个部分是扩展变换级掩码。然而,可存在可被压缩的未变换图元块的其它部分,例如但不限于其它掩码。在其它情况下,存储器控制器1104本身可执行对未变换图元块的压缩。可重复框1208和1210,直到压缩的未变换图元块的大小小于或等于分配的总存储空间间空闲部分。
在框1212处,将未变换图元块(或压缩的未变换图元块)写入到/存储于存储器模块1102中。接着,方法1200往回进行到框1202,其中分配另一存储空间组块,并且确定分配的总存储空间的当前空闲部分以准备用于接收下一未变换图元块。
此方法1200允许预定用于未变换图元块集合的最大存储空间,而其还允许图元块共享存储空间,这允许压缩更少的未变换图元块。具体地说,其确保用于未变换图元块集合的最大存储空间达到上限。例如,如图11中所示,如果初始将第一组块(组块0)添加到分配的总存储空间,从而使分配的总存储空间的部分等于一个组块,那么在存储器控制器1104处接收到的第一未变换图元块(UPB0)并且第一未变换图元块(UPB0)的大小少于一个组块时,则可将第一未变换图元块(UPB0)写入到存储器模块1102。接着,将第二组块(组块1)添加到分配的总存储空间以使分配的总存储空间等于两个组块(chunk_size*2)并且分配的总存储空间的当前空闲部分等于一个组块(chunk_size)加上Z,其中Z是第一未变换图元块少于一个组块的量。这意味着当接收到第二未变换图元块(UPB1)时,第二未变换图元块可大于组块并且在无压缩的情况下仍可存储在存储器中。实际上,其在大小上可高达chunk_size+Z。而两个图元块所用的存储空间总量仍等于chunk_size*2。接着,可将第三组块(组块2)添加到分配的总存储空间,使得分配的总存储空间为三个组块(chunk_size*3),并且分配的总存储空间的当前空闲部分等于一个组块(chunk_size)。这意味着如果第三未变换图元块(UPB2)大于一个组块,则其将必须被压缩以存储于存储器模块1102中。
图13示出其中可实施本文所描述的图形处理系统和/或存储器的计算机系统。所述计算机系统包括CPU 1302、GPU 1304、存储器1306和其它装置1314,例如显示器1316、扬声器1318和相机1320。在GPU 1304上实施框1310(对应于图形处理系统400或存储器1100)。在其它示例中,可在CPU 1302上实施框1310。所述计算机系统的部件可通过通信总线1322彼此通信。
将图1、2、4、6和11中所示的图形处理系统100、200、400、变换逻辑408、图元块生成器409和存储器1100示为包括数个功能块。这仅是示意性的,并非旨在限定此类实体的不同逻辑元件之间的严格划分。可按任何合适的方式提供每个功能块。应理解,本文中描述为由图形处理系统、变换逻辑、图元块生成器或存储器形成的中间值不必由所述图形处理系统、变换逻辑、图元块生成器或存储器在任一点处以物理方式生成,仅可表示方便地描述由所述图形处理系统、变换逻辑、图元块生成器或存储器在其输入与输出之间执行的处理的逻辑值。
本文所描述的图形处理系统和存储器可体现在集成电路上的硬件中。本文所描述的图形处理系统可配置成执行本文所描述的任何方法。通常,上文所描述的任何功能、方法、技术或部件可用软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合来实施。本文可使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来笼统地表示软件、固件、硬件或其任何组合。在软件实施方案的情况下,模块、功能、部件、元件、单元、块或逻辑表示在处理器上被执行时执行指定任务的程序代码。本文描述的算法和方法可由执行代码的一个或多个处理器执行,所述代码使处理器执行所述算法/方法。计算机可读存储介质的示例包含随机存取存储器(RAM)、只读存储器(ROM)、光盘、快闪存储器、硬盘存储器以及可使用磁性、光学和其它技术来存储指令或其它数据并且可由机器访问的其它存储器装置。
如本文使用的术沿计算机程序代码和计算机可读指令是指用于处理器的任何种类的可执行代码,包含以机器语言、解释码言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、限定集成节电路的代码(例如硬件描述语言或网表),以及以例如C、Java或OpenCL等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其它软件环境中适当地执行、处理、解释、编译、执行时,这些软件、固件、脚本、模块或库使得支持可执行代码的计算机系统的处理器执行由代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,具有使其可以执行指令的处理能力。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可包括一个或多个处理器。
本发明还旨在涵盖限定本文中描述的硬件配置的软件,例如硬件描述沿言(HDL)软件,其用于设计集成电路或用于配置可编程芯片以执行期望的功能。即,可提供一种计算机可读存储介质,所述计算机可读存储介质上编码有呈集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中处理(即,运行)时,所述集成电路定义数据集将系统配置成制造被配置成执行本文所描述的任何方法的图形处理系统,或者制造包括本文所描述的任何设备的计算装置。集成电路定义数据集可以是例如集成电电路描述。
因此,可提供一种在集成电路制造系统处制造如本文所描述的图形处理系统或存储器的方法。此外,可提供一种集成电路定义数据集,所述集成电路定义数据集在集成电路制造系统中被处理时使制造如本文所描述的图形处理系统或存储器的方法得以执行。
集成电路定义数据集可呈计算机代码形式,例如作为网表、用于配置可编程芯片的代码、作为定义适于在集成电路中以任何层级制造的硬件的硬件描述语言,包含作为寄存器传送级(RTL)代码、作为Veri1og或VHDL等高级电路表示以及作为OASIS(RTM)和GDSII等低级电路表示。在逻辑上定义适于在集成电路中制造的硬件的高级表示(例如RTL)可在配置成用于在软件环境的上下文中生成集成电路的制造定义的计算机系统处进行处理,所述软件环境包括电路元件的定义以及用于组合那些元件以便生成由所述表示如此定义的集成电路的制造定义的规则。如同软件在计算机系统处执行以定义机器的通常情况,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成用于生成集成电路的制造定义,以执行定义集成电路的代码,从而生成该集成电路的制造定义。
现将相对于图14描述在集成电路制造系统处理集成电路定义数据集以将系统配置成制造如本文所描述的图形处理系统或存储器的示例。
图14示出集成电路(IC)制造系统1402的示例,其配置成制造如本文任一示例中所描述的图形处理系统或存储器。具体地说,IC制造系统1402包括布局处理系统1404和集成电路生成系统1406。IC制造系统1402配置成接收IC定义数据集(例如,定义如本文任一示例中所描述的图形处理系统或存储器),处理IC定义数据集,并且根据IC定义数据集生成IC(例如,其体现如本文任一示例中所描述的图形处理系统或存储器)。IC定义数据集的处理将IC制造系统1402配置成制造体现如本文任一示例中所描述的图形处理系统或存储器的集成电路。
布局处理系统1404配置成接收并处理IC定义数据集以确定电路布局。根据IC定义数据集来确定电路布局的方法在所属领域中已知,并且例如可能涉及合成RTL代码以确定要生成的电路的门级表示,例如逻辑部件(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)方面。通过确定逻辑部件的位置信息,可根据电路的门级表示来确定电路布局。这可自动地或在用户参与下完成,以优化电路布局。当布局处理系统1404确定了电路布局,布局处理系统可将电路布局定义输出到IC生成系统1406。电路布局定义可以是例如电路布局描述。
如所属领域中已知,IC生成系统1406根据电路布局定义生成IC。例如,IC生成系统1406可实施生成IC的半导体装置制造工艺,此工艺可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可在光刻工艺中用于根据电路定义来生成IC。或者,提供给IC生成系统1406的电路布局定义可呈计算机可读代码形式,IC生成系统1406可使用所述计算机可读代码来形成用于生成IC的合适掩模。
由IC制造系统1402执行的不同过程可全部在一个位置例如由一方来实施。或者,IC制造系统1402可以是分布式系统,使得一些过程可在不同位置执行,并且可由不同方来执行。例如,可在不同位置和/或由不同方执行以下阶段中的一些:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示,(ii)基于门级表示来生成电路布局,(iii)根据电路布局来形成掩模,以及(iv)使用掩模来制造集成电路。
在其它示例中,在集成电路制造系统处对集成电路定义数据集进行处理可将系统配置成制造如本文所描述的图形处理系统或存储器,而无需对IC定义数据集进行处理以确定电路布局。例如,集成电路定义数据集可限定可重新配置的处理器(例如,FPGA)的配置,并且对该数据集的处理可将IC制造系统配置成生成具有限定的所述配置的可重新配置的处理器(例如,通过将配置数据加载到FPGA)。
在一些实施例中,集成电路制造定义数据集在集成电路制造系统中被处理时可使集成电路制造系统生成如本文所描述的装置。例如,通过集成电路制造定义数据集以上文相对于图14所描述的方式对集成电路制造系统进行配置可制造出如本文所描述的装置。
在一些示例中,集成电路定义数据集可包含软件,所述软件在数据集处限定的硬件上或结合在数据集处限定的硬件运行。在图14所示的示例中,IC生成系统还可由集成电路定义数据集配置以在制造集成电路时根据在集成电路定义数据集处限定的程序代码将固件加载到所述集成电路上,或以其它方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实施方案相比,本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文实施的方法中)的实施可引起性能改进。性能改进可包含计算性能提高、时延减小、处理量增大和/或功耗降低中的一种或多种。在此类装置、设备、模块和系统(例如在集成电路中)的制造期间,可在性能改进与物理实施方案之间进行权衡,由此改进制造方法。例如,可在性能改进与布局面积之间进行权衡,由此匹配已知实施方案的性能,但使用更少的硅。例如,这可通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,可权衡在本申请中阐述的引起装置、设备、模块和系统的物理实施方案的改进(例如硅面积减小)的概念以改进性能。例如,这可通过在预定义面积预算内制造模块的多个实例来完成。
申请人由此独立地公开本文描述的每个单独特征以及两个或更多个此类特征的任何组合,其程度使得此类特征或组合能够鉴于所属领域的技术人员的公共常识基于本说明书整体来执行,而不管此类特征或特征的组合是否解决本文公开的任何问题。鉴于前文描述,对所属领域的技术人员来说显而易见的是,可在本发明的范围内进行各种修改。
Claims (20)
1.一种用于生成渲染输出的图形处理系统(400),所述系统(400)包括:
几何结构处理逻辑(404),其包括:
第一变换逻辑(408),其配置成通过一个或多个变换级将多个未变换图元变换成多个已变换图元,所述一个或多个变换级包括生成一个或多个子图元的一个或多个扩展变换级;
图元块生成器(409),其配置成:
将所述多个已变换图元分成多个群组;以及
针对每个群组生成未变换图元块,所述未变换图元块包括(i)标识与所述群组中的所述已变换图元相关的所述未变换图元的信息,以及(ii)用于所述一个或多个扩展变换级中的至少一个扩展变换级的扩展变换级掩码,所述扩展变换级掩码指示针对在所述未变换图元块中标识的所述未变换图元生成的所述子图元,所述子图元将用于生成渲染输出;
光栅化逻辑(406),其包括:
第二变换逻辑(413),其配置成根据用于所述一个或多个扩展变换级中的所述至少一个扩展变换级的所述扩展变换级掩码而基于未变换图元块将所述多个未变换图元重新变换成已变换图元;以及
逻辑(414,416),其配置成渲染所述已变换图元以生成所述渲染输出。
2.根据权利要求1所述的系统(400),其中所述一个或多个变换级包括多个扩展变换级,并且每个未变换图元块包括用于所述多个扩展变换级中的每一者的扩展变换级掩码,所述扩展变换级掩码指示针对在所述未变换图元块中标识的所述未变换图元生成的所述子图元,所述子图元将用于生成所述渲染输出。
3.根据权利要求2所述的系统(400),其中所述多个扩展变换级形成包括至少较高层级扩展变换级和较低层级扩展变换级的层级,其中由所述较高层级扩展变换级生成的所述子图元在由所述较低层级扩展变换级处理时生成另外的子图元。
4.根据权利要求3所述的系统(400),其中每个扩展变换级掩码包括用于将由所述扩展变换级针对在所述未变换图元块中标识的所述未变换图元生成的每个子图元的位,所述位指示所述子图元是否将用于生成所述渲染输出;并且在用于所述较高层级扩展变换级的所述扩展变换级掩码指示子图元将用于生成所述渲染输出的情况下,用于所述较低层级扩展变换级的所述扩展变换级掩码仅包括用于对应子图元的位。
5.根据权利要求1所述的系统(400),其中用于扩展变换级的所述扩展变换级掩码包括用于将由所述扩展变换级针对在所述未变换图元块中标识的所述未变换图元生成的每个子图元的位,所述位指示所述子图元是否将用于生成所述渲染输出。
6.根据权利要求1至5中任一项所述的系统(400),其中所述图元块生成器(409)配置成通过以下方式生成未变换图元块的用于所述一个或多个扩展变换级中的一个扩展变换级的所述扩展变换级掩码:
接收在所述未变换图元块中标识的所述未变换图元中的每一者的掩码,所述掩码指示由所述扩展变换级针对所述未变换图元生成的所述子图元,所述子图元将用于生成所述渲染输出;以及
组合在所述未变换图元块中标识的所述未变换图元的所述掩码以形成用于所述扩展变换级的所述扩展变换级掩码。
7.根据权利要求6所述的系统(400),其中所述图元块生成器(409)配置成通过串接在所述未变换图元块中标识的所述未变换图元的所述掩码来组合在所述未变换图元块中标识的所述未变换图元的所述掩码。
8.根据权利要求6所述的系统(400),其中所述图元块生成器(409)还配置成通过比较由所述扩展变换级针对所述未变换图元生成的所述子图元与所述多个已变换图元来生成用于扩展变换级的未变换图元的所述掩码。
9.根据权利要求8所述的系统(400),其中所述图元块生成器(409)配置成在所述已变换图元中没有已变换图元对应于子图元和/或由所述子图元生成的情况下确定所述子图元将不用于生成所述渲染输出。
10.根据权利要求1至5中任一项所述的系统(400),其中所述第二变换逻辑(413)配置成根据用于所述一个或多个扩展变换级中的所述至少一个扩展变换级的所述扩展变换级掩码,基于未变换图元块而通过剔除由所述一个或多个扩展变换级中的所述至少一个扩展变换级生成的由扩展变换级掩码指示为不用于生成所述渲染输出的子图元来将所述多个未变换图元重新变换成已变换图元。
11.根据权利要求1至5中任一项所述的系统(400),其中所述图元块生成器(409)配置成响应于确定未变换图元块的用于所述一个或多个扩展变换级中的一个扩展变换级的所述扩展变换级掩码超过最大掩码大小阈值,在将所述扩展变换级掩码存储在所述未变换图元块中之前压缩所述扩展变换级掩码。
12.根据权利要求11所述的系统(400),其中用于所述一个或多个扩展变换级中的所述一个扩展变换级的所述扩展变换级掩码包括多个位,并且所述图元块生成器(409)配置成通过对邻近位对执行或运算或和运算来压缩所述扩展变换级掩码。
13.根据权利要求11所述的系统(400),其中所述图元块生成器(409)还配置成添加信息到所述未变换图元块,所述信息指示用于所述一个或多个扩展变换级中的所述一个扩展变换级的所述扩展变换级掩码被压缩的次数。
14.根据权利要求1至5中任一项所述的系统(400),其中所述图形处理系统配置成使用细分成多个平铺块的渲染空间,并且其中所述几何结构处理逻辑还包括配置成针对所述平铺块中的每一者生成未变换显示列表(514)的平铺引擎(410)。
15.根据权利要求14所述的系统(400),其中平铺块的所述未变换显示列表(514)包括:(i)标识未变换图元块的信息,所述未变换图元块标识将用于渲染所述平铺块的未变换图元;以及(ii)用于标识的未变换图元块中的每一者的图元掩码,其指示从在所述未变换图元块中标识的所述未变换图元生成的所述已变换图元中的哪些已变换图元将用于渲染所述平铺块。
16.一种在图形处理系统中生成渲染输出的方法(1000),所述方法(1000)包括:
执行几何结构处理阶段,包括:
通过一个或多个变换级将多个未变换图元变换成多个已变换图元,所述一个或多个变换级包括生成一个或多个子图元的一个或多个扩展变换级(1002);
将所述多个已变换图元分成多个群组(1004);以及
针对每个群组生成未变换图元块,所述未变换图元块包括(i)标识与所述群组中的所述已变换图元相关的所述未变换图元的信息;以及(ii)用于所述一个或多个扩展变换级中的至少一个扩展变换级的扩展变换级掩码,所述扩展变换级掩码指示针对在所述未变换图元块中标识的所述未变换图元生成的子图元,所述子图元将用于生成所述渲染输出(1006);以及
执行光栅化阶段,包括:
根据用于所述一个或多个扩展变换级中的所述至少一个扩展变换级的所述扩展变换级掩码,基于未变换图元块将所述多个未变换图元重新变换成已变换图元(1008);以及
渲染所述已变换图元以生成所述渲染输出(1010)。
17.一种图形处理系统,其配置成执行权利要求16所述的方法。
18.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令在计算机系统处执行时使所述计算机系统执行权利要求16所述的方法。
19.一种计算机可读存储介质,所述计算机可读存储介质上存储有权利要求1至5中任一项所述的图形处理系统的计算机可读描述,所述计算机可读描述在集成电路制造系统中被处理时使所述集成电路制造系统制造体现所述图形处理系统的集成电路。
20.一种集成电路制造系统,其包括:
计算机可读存储介质,所述计算机可读存储介质上存储有权利要求1至5中任一项所述的图形处理系统的计算机可读描述;
布局处理系统,其配置成处理所述计算机可读描述以生成体现所述图形处理系统的集成电路的电路布局描述;以及
集成电路生成系统,其配置成根据所述电路布局描述制造所述图形处理系统。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1901215.2A GB2580922B (en) | 2019-01-29 | 2019-01-29 | Memory for storing untransformed primitive blocks |
GB1901216.0 | 2019-01-29 | ||
GB1901215.2 | 2019-01-29 | ||
GB1901216.0A GB2580923B (en) | 2019-01-29 | 2019-01-29 | Graphics processing systems with expansion transformation stage masks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111508056A true CN111508056A (zh) | 2020-08-07 |
CN111508056B CN111508056B (zh) | 2023-04-18 |
Family
ID=69375302
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010078243.2A Active CN111508056B (zh) | 2019-01-29 | 2020-01-29 | 利用扩展变换级掩码的图形处理系统 |
CN202010078244.7A Active CN111489282B (zh) | 2019-01-29 | 2020-01-29 | 用于存储未变换图元块的存储器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010078244.7A Active CN111489282B (zh) | 2019-01-29 | 2020-01-29 | 用于存储未变换图元块的存储器 |
Country Status (3)
Country | Link |
---|---|
US (4) | US11244421B2 (zh) |
EP (2) | EP3690821A1 (zh) |
CN (2) | CN111508056B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2526598B (en) * | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
CN111508056B (zh) * | 2019-01-29 | 2023-04-18 | 畅想科技有限公司 | 利用扩展变换级掩码的图形处理系统 |
CN114328373A (zh) * | 2020-09-29 | 2022-04-12 | 伊姆西Ip控股有限责任公司 | 管理文件系统的方法、电子设备和计算机程序产品 |
GB2600108B (en) * | 2020-10-20 | 2024-04-03 | Advanced Risc Mach Ltd | Graphics processing systems |
CN116385253A (zh) * | 2023-01-06 | 2023-07-04 | 格兰菲智能科技有限公司 | 图元绘制方法、装置、计算机设备和存储介质 |
CN116758175B (zh) * | 2023-08-22 | 2024-01-26 | 摩尔线程智能科技(北京)有限责任公司 | 图元块压缩装置、方法、图形处理器及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104143990A (zh) * | 2013-05-09 | 2014-11-12 | 想象技术有限公司 | 顶点参数数据压缩 |
CN104885123A (zh) * | 2012-11-02 | 2015-09-02 | 想象技术有限公司 | 按需的几何图形和加速结构形成 |
CN106504181A (zh) * | 2015-09-08 | 2017-03-15 | 想象技术有限公司 | 用于处理子图元的图形处理方法和系统 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5652864A (en) | 1994-09-23 | 1997-07-29 | Ibm | Concurrent storage allocations or returns without need to lock free storage chain |
US20010015820A1 (en) | 1998-07-13 | 2001-08-23 | Hewlett-Packard Company | Method and apparatus for conservation of memory in a printer through selective compression of a display list |
US20030120858A1 (en) | 2000-09-15 | 2003-06-26 | Matrix Semiconductor, Inc. | Memory devices and methods for use therewith |
US20040015662A1 (en) * | 2002-07-22 | 2004-01-22 | Aron Cummings | Memory card, memory card controller, and software therefor |
US7747834B2 (en) * | 2004-09-30 | 2010-06-29 | Kyocera Wireless Corp. | Memory manager for an embedded system |
KR100859651B1 (ko) | 2007-06-04 | 2008-09-23 | 삼성에스디에스 주식회사 | 가변크기 데이터 저장을 위한 데이터구조를 기록한기록매체, 가변크기 데이터 저장방법, 및 가변크기 데이터저장방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한컴퓨터로 읽을 수 있는 기록매체 |
GB2461821B (en) * | 2007-09-12 | 2010-06-30 | Imagination Tech Ltd | Methods and systems for generating 3-dimensional computer images |
GB2458488C (en) | 2008-03-19 | 2018-09-12 | Imagination Tech Ltd | Untransformed display lists in a tile based rendering system |
GB0823254D0 (en) | 2008-12-19 | 2009-01-28 | Imagination Tech Ltd | Multi level display control list in tile based 3D computer graphics system |
GB0900700D0 (en) * | 2009-01-15 | 2009-03-04 | Advanced Risc Mach Ltd | Methods of and apparatus for processing graphics |
GB201104066D0 (en) * | 2011-03-09 | 2011-04-20 | Imagination Tech Ltd | Compression of a tessellated primitive index list in a tile rendering system |
GB2500284B (en) | 2012-09-12 | 2014-04-30 | Imagination Tech Ltd | Tile based computer graphics |
US9514039B2 (en) | 2013-02-14 | 2016-12-06 | International Business Machines Corporation | Determining a metric considering unallocated virtual storage space and remaining physical storage space to use to determine whether to generate a low space alert |
GB2506706B (en) * | 2013-04-02 | 2014-09-03 | Imagination Tech Ltd | Tile-based graphics |
GB2526598B (en) | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
US9569454B2 (en) * | 2014-09-15 | 2017-02-14 | Seagate Technology Llc | Selective compression of objects in a storage compute device |
US20170315928A1 (en) | 2016-04-28 | 2017-11-02 | Netapp, Inc. | Coarse-grained cache replacement scheme for a cloud-backed deduplication storage system |
EP3611468A1 (en) * | 2018-08-17 | 2020-02-19 | Ordnance Survey Limited | Vector tile pyramiding |
CN111429556B (zh) * | 2018-12-21 | 2023-03-24 | 畅想科技有限公司 | 图形处理系统中的基于基元块的光栅化 |
EP3671652A1 (en) * | 2018-12-21 | 2020-06-24 | Imagination Technologies Limited | Transformed geometry data cache for graphics processing systems |
CN111508056B (zh) * | 2019-01-29 | 2023-04-18 | 畅想科技有限公司 | 利用扩展变换级掩码的图形处理系统 |
-
2020
- 2020-01-29 CN CN202010078243.2A patent/CN111508056B/zh active Active
- 2020-01-29 US US16/775,981 patent/US11244421B2/en active Active
- 2020-01-29 EP EP20154247.9A patent/EP3690821A1/en active Pending
- 2020-01-29 EP EP20154248.7A patent/EP3690798A1/en active Pending
- 2020-01-29 CN CN202010078244.7A patent/CN111489282B/zh active Active
- 2020-01-29 US US16/775,796 patent/US11145025B2/en active Active
-
2021
- 2021-10-11 US US17/498,699 patent/US11640648B2/en active Active
-
2023
- 2023-04-27 US US18/140,554 patent/US20230260074A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104885123A (zh) * | 2012-11-02 | 2015-09-02 | 想象技术有限公司 | 按需的几何图形和加速结构形成 |
CN104143990A (zh) * | 2013-05-09 | 2014-11-12 | 想象技术有限公司 | 顶点参数数据压缩 |
CN106504181A (zh) * | 2015-09-08 | 2017-03-15 | 想象技术有限公司 | 用于处理子图元的图形处理方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US11244421B2 (en) | 2022-02-08 |
US11640648B2 (en) | 2023-05-02 |
EP3690821A1 (en) | 2020-08-05 |
US11145025B2 (en) | 2021-10-12 |
US20220028030A1 (en) | 2022-01-27 |
US20230260074A1 (en) | 2023-08-17 |
US20200242828A1 (en) | 2020-07-30 |
EP3690798A1 (en) | 2020-08-05 |
US20200242725A1 (en) | 2020-07-30 |
CN111489282A (zh) | 2020-08-04 |
CN111508056B (zh) | 2023-04-18 |
CN111489282B (zh) | 2023-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111508056B (zh) | 利用扩展变换级掩码的图形处理系统 | |
CN106897143B (zh) | 图形处理系统和在图形处理系统中处理基元片段的方法 | |
CN107169916B (zh) | 用于simd处理的任务组合 | |
EP3471059B1 (en) | Geometry to tiling arbiter for tile-based rendering system | |
CN111429556B (zh) | 图形处理系统中的基于基元块的光栅化 | |
US11263806B2 (en) | Graphics processing method and system for processing sub-primitives | |
US11610358B2 (en) | Data structures, methods and tiling engines for hierarchically storing tiling information in a graphics processing system | |
CN111353928A (zh) | 用于图形处理系统的经过变换的几何结构数据高速缓存 | |
EP3866119B1 (en) | Data structures, methods and primitive block generators for storing primitives in a graphics processing system | |
CN113256477B (zh) | 用于在图形处理系统中存储平铺信息的方法和平铺引擎 | |
GB2580922A (en) | Memory for storing untransformed primitive blocks | |
GB2580923A (en) | Graphics processing systems with expansion transformation stage masks | |
GB2592046A (en) | Methods and tiling engines for tiling primitives in a graphics processing system | |
GB2592045A (en) | Data structures, methods and primitive block generators for storing primitives in a graphics processing system |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |