CN106897143A - 对图形处理系统中的处理引擎的区片分配 - Google Patents

对图形处理系统中的处理引擎的区片分配 Download PDF

Info

Publication number
CN106897143A
CN106897143A CN201611193851.8A CN201611193851A CN106897143A CN 106897143 A CN106897143 A CN 106897143A CN 201611193851 A CN201611193851 A CN 201611193851A CN 106897143 A CN106897143 A CN 106897143A
Authority
CN
China
Prior art keywords
area
piece
treatment
engine
treatment engine
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
Application number
CN201611193851.8A
Other languages
English (en)
Other versions
CN106897143B (zh
Inventor
J·里德肖
Y·C·富
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Priority to CN202210114018.9A priority Critical patent/CN114443307A/zh
Publication of CN106897143A publication Critical patent/CN106897143A/zh
Application granted granted Critical
Publication of CN106897143B publication Critical patent/CN106897143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Image Generation (AREA)

Abstract

图形处理系统使用被再分成区片的渲染空间来处理基元片段。图形处理系统包括处理引擎,其被配置为将纹理化和/或阴影化应用于基元片段。图形处理系统还包括用于存储基元片段的图形数据的高速缓存系统,该高速缓存系统包括多个高速缓存子系统。高速缓存子系统中的每个高速缓存子系统被耦合到一个或多个处理引擎的相应集合。图形处理系统还包括区片分配单元,其在一个或多个分配模式中操作以将区片分配给处理引擎。(一个或多个)分配模式包括空间分配模式,其中空间相邻区片组根据空间分配方案而被分配给处理引擎,其确保空间相邻区片组中的每组被分配给耦合到相同高速缓存子系统的处理引擎的集合。

Description

对图形处理系统中的处理引擎的区片分配
背景技术
图形处理系统通常被配置为(例如从在计算机系统上运行的应用)接收图形数据,并且渲染图形数据以提供渲染输出。例如,向图形处理系统提供的图形数据可以描述待渲染的三维(3D)场景内的几何形状,并且渲染输出可以是场景的经渲染的图像。一些图形处理系统(其可以被称为“基于区片的(tile-based)”图形处理系统)使用被再分成多个区片的渲染空间。“区片”是渲染空间的区域,并且可以具有任何适合的形状,但是通常是矩形(其中术语“矩形”包括正方形)。为了给出一些示例,区片可以覆盖待渲染的图像的16×16像素块或32×32像素块。如本领域中已知的,存在将渲染空间再分成区片的许多益处。例如,将渲染空间再分成区片允许图像以逐区片方式渲染,其中针对区片的图形数据可以在区片的渲染期间被临时存储“在芯片上”,由此降低在系统存储器与实现图形处理系统的图形处理单元(GPU)所在的芯片之间传送的数据量。
基于区片的图形处理系统通常在两个阶段中操作:几何处理阶段和栅格化阶段。在几何处理阶段中,针对渲染的图形数据被分析,以针对区片中的每个区片确定哪些图形数据项存在于该区片中。然后,在栅格化阶段中,可以通过处理被确定为存在于该区片内的那些图形数据项来渲染区片(而不需要处理在几何处理阶段中被确定为不存在于特定区片内的图形数据项)。图形数据项可以表示几何形状,其描述场景中的结构的表面并且其被称为“基元(primitive)”。常见基元形状是三角形,但是基元可以是其他2D形状或也可以是线或点。对象可以由一个或多个(例如,数百、数千或数百万个)这样的基元组成。
图1示出了可以被用于渲染3D场景的图像的图形处理系统100的一些元件。该图形处理系统100包括图形处理单元(GPU)102和存储器1041和存储器1042的两个部分。存储器1041和存储器1042的两个部分可以是或可以不是相同物理存储器的部分。
GPU 102包括预处理模块106、区片化单元108和栅格化模块110,其中栅格化模块110包括隐藏表面移除(HSR)单元112和纹理化/阴影化单元114。纹理化/阴影化单元114包括一个或多个处理引擎,其可以被称为“统一阴影化聚类”(USC)。对图形处理系统100进行布置,使得在预处理模块106处接收由应用提供的基元的序列。
在几何处理阶段中,预处理模块106执行诸如包括修剪和裁剪的几何处理的功能以移除未落到可见视图中的基元。该预处理模块106还可以将基元投影到屏幕空间中。从预处理模块106输出的基元被传递到区片化单元108,其确定哪些基元存在于图形处理系统100的渲染空间的区片中的每个区片中。区片化单元108通过创建针对区片的显示列表来将基元分配给渲染空间的区片,其中针对区片的显示列表包括存在于区片内的基元的指示。该显示列表和基元从区片化单元108输出并且被存储在存储器1041中。
在栅格化阶段中,栅格化块110从存储器1041获取针对区片的显示列表和与该区片有关的基元。HSR单元112执行隐藏表面移除,由此移除隐藏在场景中的基元的片段(fragment)。执行隐藏表面移除的方法在本领域中是已知的。术语“片段”指代采样点处的基元的样本,其将被处理为渲染图像的像素。在一些示例中,可以存在片段到像素的一一映射。在其他示例中,可以存在比像素更多的片段,并且该过采样可以考虑到像素值的较高的质量渲染,例如,通过促进可以应用到用于渲染像素值中的每个像素值的多个片段的反混叠和其他滤波。剩余的片段从HSR单元112被传递到纹理化/阴影化单元114,其对片段执行纹理化和/或阴影化以确定可以传递到存储器1042以用于存储在帧缓冲器中的渲染图像的像素颜色值。纹理化/阴影化单元114可以从存储器1041接收纹理数据以便将纹理化应用到基元片段,如本领域中已知的(例如,通过运行阴影器程序)。纹理化/阴影化单元114可以将进一步的处理应用到基元片段(例如,alpha混合和其他过程),如本领域中已知,以便确定图像的经渲染的像素值。栅格化块110处理区片中的每个区片中的基元并且当全部图像已经被渲染并且被存储在存储器1042中时,经渲染的图像可以从图形处理系统100输出并且以任何适合的方式使用(例如,被显示在显示器上,或被存储在存储器中,或被发送到另一设备等)。
纹理化/阴影化单元114可以包括可以并行处理不同的数据的多于一个处理引擎,由此改进由纹理化/阴影化单元114所执行的纹理化和/或阴影化的效率。栅格化块110可以被配置为一次渲染针对单个区片的基元。
发明内容
提供该概述以引入以在详细描述中下文进一步描述的简化形式的概念的选择。该概述不旨在标识所要求保护的主题的关键特征或基本特征,其也不旨在被用于限制所要求保护的主题的范围。
提供了一种图形处理系统,其被配置为使用被再分成多个区片的渲染空间来处理基元片段,该系统包括:多个处理引擎,其被配置为将纹理化和阴影化中的一者或二者应用到基元片段;高速缓存系统,其被配置为存储图形数据以用于在处理基元片段中使用,该高速缓存系统包括多个高速缓存子系统,其中多个高速缓存子系统中的每个高速缓存子系统被耦合到处理引擎中的一个或多个处理引擎的相应集合;以及区片分配单元,其被配置为在一个或多个分配模式中操作以将区片分配给处理引擎,其中一个或多个分配模式包括空间分配模式,在空间分配模式中,空间相邻区片组根据空间分配方案而被分配给处理引擎,空间分配方案确保空间相邻区片组中的每组被分配给耦合到相同高速缓存子系统的处理引擎的集合。
提供了一种使用被再分成多个区片的渲染空间来在图形处理系统中处理基元片段的方法,该方法包括:在多个处理引擎处将纹理化和阴影化中的一者或二者应用到基元片段;在高速缓存系统中存储图形数据所以用于在处理基元片段中使用,高速缓存系统包括多个高速缓存子系统,其中多个高速缓存子系统中的每个高速缓存子系统被耦合到处理引擎中的一个或多个处理引擎的相应集合;并且在一个或多个分配模式中将区片分配给处理引擎,其中一个或多个分配模式包括空间分配模式,在空间分配模式中,空间相邻区片组根据空间分配方案而被分配给处理引擎,空间分配方案确保空间相邻区片组中的每组被分配给耦合到相同高速缓存子系统的处理引擎的集合。
可以提供计算机可读代码,其适于当代码被运行在计算机上时执行本文所描述的方法中的任一种方法的步骤。该计算机可读代码可以被编码在计算机可读存储介质上。
还可以提供一种在集成电路制造系统处制造根据本文所描述的示例中的任一个示例的图形处理系统的方法。还可以提供一种集成电路定义数据集,其当在集成电路制造系统中处理时将系统配置为制造如本文中的示例中的任一个示例中所描述的图形处理系统。该集成电路定义数据集可以被存储在计算机可读存储介质上。
如对于技术人员而言将是明显的,以上特征可以在适当时被组合并且可以与本文所描述的示例的各方面中的任一个方面一起组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1示出了现有技术图形处理系统的示例;
图2示出了根据本文所描述的实施例的图形处理系统;
图3表示区片块内的基元;
图4是示出在图形处理系统中处理基元片段的方法的流程图;
图5示出了待分配给处理引擎的区片块;
图6指示将区片从块分配给处理引擎;
图7图示了被分配给处理引擎的区片的序列的第一状态;
图8是示出将区片分配给处理引擎的方法的流程图;
图9图示了被分配给处理引擎的区片的队列的第二状态;
图10图示了被分配给处理引擎的区片的队列的第三状态;
图11a示出了可以处理区片块的第一顺序;
图11b图示了可以处理区片块的第二顺序;
图12示出了根据另一示例的图形处理系统;
图13是示出在另一示例的图形处理系统中处理基元片段的方法的流程图;
图14示出了在其中实现图形处理系统的计算机系统;以及
图15示出了用于生成实现图形处理系统的集成电路的集成电路制造系统。
附图图示了各种示例。本领域技术人员将理解到,附图中的所图示的元素边界(例如,块、块组或其他形状)表示边界的一个示例。可以是在一些示例中,一个元素可以被设计为多个元素或多个元素可以被设计为一个元素。在适当的情况下,共同附图标记贯穿附图被用于指示类似特征。
具体实施方式
现在将仅通过示例描述实施例。
图2示出了可以被用于渲染3D场景的图像的图形处理系统200的一些元件。该图形处理系统200包括图形处理单元(GPU)202和存储器2041和存储器2042的两个部分。应注意到,存储器2041和存储器2042的两个部分可以是或可以不是相同物理存储器的部分,并且存储器2041和存储器2042二者可以位于“芯片外”(即,不在与GPU 202相同的芯片上)。存储器(2041和2042)与GPU 202之间的通信可以在系统200中的通信总线上发生。可以以硬件(例如,在集成电路上)、软件或两者的组合实现图形处理系统。
该GPU 202包括预处理模块206、区片化单元208和栅格化模块210,其中栅格化模块210包括隐藏表面移除(HSR)单元212、纹理化/阴影化单元214和后处理模块230。纹理化/阴影化单元214包括多个处理引擎216,其可以被称为“统一阴影化聚类”(USC)。图2示出了八个处理引擎2160至2167,其中为了清晰,在图2中仅其中的两个利用附图标记进行引用。处理引擎216中的每个处理引擎216被配置为将纹理化和阴影化中的一者或二者应用到基元片段。该纹理化/阴影化单元214还包括高速缓存系统218,其被配置为存储与基元片段有关的图形数据。该高速缓存系统218是多级高速缓存。该高速缓存系统218包括多个第1级高速缓存子系统220和第2级高速缓存222。在图2中所示的示例中,存在四个第1级高速缓存子系统2200至2203,其中为了清晰,在图2中仅其中的两个利用附图标记进行引用。该纹理化/阴影化单元214还包括:区片分配单元224,其包括分配逻辑226;和队列228的集合,队列228的集合用于存储被分配给处理引擎的区片的指示。下面详细描述了区片分配单元224的操作。
由图形处理系统200所实现的几何处理阶段可以与由上文所描述的图形处理系统100所实现的几何处理阶段相同。因此,预处理模块206执行诸如修剪/裁剪的功能并且将基元投影到屏幕空间中。该区片化单元208确定哪些基元存在于图形处理系统200的渲染空间的区片中的每个区片内,并且通过创建针对区片的显示列表将基元分配给渲染空间的区片,其中针对区片的显示列表包括存在于区片内的基元的指示。该显示列表和基元从区片化单元208输出并且被存储在存储器2041中。该显示列表将数据提供给栅格化模块210以用于渲染栅格化阶段中的相应区片内的基元片段。作为示例,显示列表可以包括区域表头、控制流和顶点块。该区域表头是指向每区片控制流的头部的指针的阵列。控制流是指向顶点块的指针的每区片列表和存在于相应区片内的顶点块内的基元的列表。顶点块包括基元的指数,其中指数指向包含在相同顶点块内的顶点数据(即,顶点块的上下文内的局部指数)。
与参考图1上文所描述的图形处理系统100相反,图形处理系统200可以具有栅格化模块210中的“飞行中的多个区片”(即,在给定时间处部分处理基元所针对的多个区片)。例如,HSR单元212可以包括多个深度缓冲器,其被配置为存储针对相应多个区片的深度数据,使得其能够在完成区片内的所有基元的处理之前在来自不同的区片之间的处理基元之间进行切换。这允许基元由栅格化模块214被处理的顺序的较大的灵活性,其可以导致与由在其中在下一区片的基元中的任一个由栅格化单元110处理之前一个区片的所有基元由栅格化单元110处理的图形处理系统100所执行的处理相比较,由图形处理系统200对基元的更高效的处理。例如,如果出于特定于正被处理的区片的某种原因区片的处理停止,那么图形处理系统200的栅格化单元210可以继续处理来自其他区片的基元,然而图形处理系统100的栅格化单元110可能停止直到可以针对停止的区片恢复处理。如下面参考图12和图12更详细描述的,HSR单元可以包括可以并行对不同的区片执行HSR的超过一个HSR模块。
在其中存在飞行中的多个区片的图形处理系统200中,使用用于将纹理化/阴影化应用到特定区片内的所有可见基元的相同处理引擎216可以是高效的。也即,区片可以被分配用于由处理引擎216之一处理,而不是使用处理引擎216中的超过一个处理引擎处理针对特定区片的图形数据。这可以是有益的,这是因为区片中的每个基元可以使得针对该基元的纹理数据被加载到处理引擎216的本地高速缓存子系统220中。通过处理来自单个处理引擎216中的区片的基元片段,针对该区片中的基元的纹理化/阴影化数据需要被加载到该处理引擎216的高速缓存子系统中。相反,如果来自区片的基元片段被分布到数个处理引擎,则相同纹理化/阴影化数据将更可能被复制在高速缓存子系统220中的数个高速缓存子系统220中。而且,如果来自区片的基元片段被分布到数个处理引擎,则可以存在数据的一致性问题,例如,假设不同的处理引擎处理相同采样位置处的基元。
在一些系统中,区片被分配给处理引擎以用于根据负载平衡分配方案在其上进行处理。通过这种方式,区片可以被分配给具有防止处理引擎中的任一个变得空闲的视图的处理引擎,其可以帮助维持纹理化/阴影化单元214处理区片的速率。然而,根据这些负载平衡方案,在不考虑区片的空间位置的情况下,可以将区片分配给处理引擎,并且如下文所描述的,这可能导致高速缓存使用中的低效率。
个体基元可以存在于超过一个区片内。例如,图3示出了渲染空间内的2×4区片块300,其中基元304存在于两个区片:区片3020和区片3021内。因此,针对基元304的图形数据将被写入到由处理区片3020和区片3021的处理引擎使用的高速缓存子系统中。如将明显的,基元可以覆盖渲染空间内的许多超过两个区片。
在本文所描述的示例中,处理引擎中的每个处理引擎与其他处理引擎中的一个或多个处理引擎(但非全部)共享L1高速缓存子系统。即,L1高速缓存子系统中的每个L1高速缓存子系统被耦合到处理引擎中的一个或多个处理引擎的相应集合。例如,在图2中所示的纹理化/阴影化单元214中,高速缓存子系统2200至2203中的每一个被耦合到处理引擎2160至2167中的两个的相应集合。特别地,高速缓存子系统2200被耦合到处理引擎2160和2161;高速缓存子系统2201被耦合到处理引擎2162和2163;高速缓存子系统2202被耦合到处理引擎2164和2165;并且高速缓存子系统2203被耦合到处理引擎其2166和2167。该高速缓存子系统220被配置为存储与由高速缓存子系统220耦合到的处理引擎的相应集合所处理的基元片段有关的图形数据。例如,图形数据可以是待应用到基元片段的纹理数据。
高速缓存子系统220中的每个高速缓存子系统220被配置为存储与被分配给该高速缓存子系统220耦合到的处理引擎216的区片的基元片段有关的图形数据。该图形数据可以被称为“基元数据”。该图形数据是由处理引擎216用于将纹理化和阴影化中的一者或二者应用到基元片段的数据。一般而言,该图形数据可以包括用于在处理基元片段中使用的任何数据。该图形数据可以被称为“变化的数据”,并且可以包括与顶点相关联的数据值,其可以或可以不跨越基元的表面被内插或迭代以计算每片段值。该图形数据可以出于任何适合的目的被使用在运行在处理引擎上的片段阴影器中。例如,图形数据可以是颜色数据、用于访问纹理的坐标、距离数据(其可以被用于照明或阴影或凹凸映射或其他一些东西)、不透明的数据(其可以被称为“alpha”数据)或简单地待使用在某种任意计算中的数据值(例如,用于使用在用于产生特定效果的算法中)。该图形数据还可以包括待被用于处理基元片段的其他数据(诸如待应用到基元片段的纹理的纹理数据)。
可以利用示例图示关于负载平衡分配方案的问题。根据负载平衡方案,图3中所示的区片3020和区片3021可以相应地被分配例如到处理引擎2160和2165。由于处理引擎2160被耦合到高速缓存子系统2200并且处理引擎2165被耦合到高速缓存子系统2202,因此针对基元304的图形数据(其存在于区片3020和3021内)可以被存储在高速缓存子系统2200和2202。因此,针对基元304的图形数据可以被复制用于两个L1高速缓存子系统中的存储。该复制表示高速缓存系统218的低效使用。随着更多数据在L1高速缓存子系统中得到复制,从L1高速缓存子系统中推送出其他数据。这使以下内容更可能:数据被获取返回到L1,优选地从L2高速缓存222,而且可能来自更高级存储器(例如,主存储器2041或L3高速缓存或L2高速缓存被连接到的任何部件)。
与仅实现用于将区片分配给处理引擎的负载平衡方案的系统相比较,本文所描述的示例可以提高高速缓存效率。特别地,本文所描述的示例利用空间分配方案,其基于区片的空间位置将区片分配给处理引擎并且将高速缓存子系统耦合到处理引擎。也即,对处理引擎216的区片分配与高速缓存系统218的结构匹配。如下面更详细描述的,区片分配单元224可以在空间分配模式中操作,在空间分配模式中,空间相邻区片组根据空间分配方案被分配给处理引擎216,以确保空间相邻区片组中的每组被分配给耦合到相同高速缓存子系统220的处理引擎216的集合。
参考图4中所示的流程图,描述了处理图形处理系统200中的基元的方法。在步骤S402中,实现几何处理阶段,如上文所描述的,使得区片化单元208生成针对渲染空间的区片的显示列表(或控制流)。如上文所描述的,针对区片的显示列表包括存在于区片内的基元的指示。该显示列表和基元从区片化单元208输出并且被存储在存储器2041中。
在栅格化阶段中,将针对基元的显示列表和图形数据提供给栅格化模块210。图2中所示的图形处理系统200是推迟的渲染系统,因此在纹理化和/或阴影化被应用到基元片段之前应用隐藏表面移除。其他图形处理系统可以是非推迟的渲染系统(即,立即模式渲染系统),并且在那些系统中,在隐藏表面移除被应用到基元片段之前应用纹理化和/或阴影化。
在步骤S404中,HSR单元212对针对渲染空间的区片的基元片段执行隐藏表面移除。为了处理特定区片,HSR单元212可以接收由针对如存在于该区片内的特定区片的显示列表所指示的基元的位置数据。该HSR单元212使用针对基元的位置数据确定区片内的样本位置处的基元片段是否由其他基元隐藏查看。执行隐藏表面移除的方法在本领域中是已知的,并且如此在本文中不更详细地描述。然而,作为简要并且简化的解释,隐藏表面移除可以涉及对基元片段、针对深度缓冲器执行深度测试,并且如果基元片段穿过深度测试,其被维持,然而如果基元片段未能进行深度测试,其被移除。可以维持深度缓冲器以在每个样本位置处存储已经通过该样本位置处的深度测试的最新基元片段的深度值。隐藏表面移除可以是比这更复杂的(例如,如果基元不是完全不透明的,但是这样的复杂的隐藏表面移除技术的细节超过本公开的范围)。将通过HSR的基元片段提供给纹理化/阴影化单元214。
在步骤S406中,纹理化/阴影化单元214接收针对通过由HSR单元212所执行的HSR的基元片段的图形数据(例如,纹理数据)。例如,HSR单元212可以向纹理化/阴影化单元214提供哪些基元已经通过区片内的每个样本位置处的HSR(并且因此可以是可见的)的指示(或“标签”)。该纹理化/阴影化单元214可以从存储器2041取回针对所指示的基元的图形数据。所取回的图形数据可以包括针对基元的位置数据以及待应用到基元的属性数据(例如,待应用到基元的纹理)。
如上文所提到的,区片可以被分配给处理引擎216,而不是使用处理引擎216中的超过一个处理区片。在步骤S408中,分配单元224将区片分配给处理引擎216。该区片分配单元224被配置为在一个或多个分配模式(包括空间分配模式,其中空间相邻区片组根据空间分配方案被分配给处理引擎)中操作。如上文所提到的,空间分配方案确保多个空间相邻区片组中的每组被分配给耦合到相同高速缓存子系统220的处理引擎216的集合。例如,参考图3,区片3020和3021是空间相邻区片并且可以在相同的空间相邻区片组中,使得这些区片将被分配给耦合到相同高速缓存子系统(例如,高速缓存子系统2200)的处理引擎的集合(例如,处理引擎2160和2161)。在这种情况下,针对基元304的图形数据可以被存储在耦合到集合中的处理引擎的高速缓存子系统2200中。针对基元304的图形数据不需要被存储在其他高速缓存子系统(例如,高速缓存子系统2201、2202或2203)中的任一个高速缓存子系统中。因此,不存在跨越不同的高速缓存子系统220的用于基元304的图形数据的复制,并且其他图形数据将需要从L2高速缓存222重新获取是不太可能的。通过区片分配单元224的分配逻辑226执行将区片分配给处理引擎中所涉及的处理。而且,应注意到,纹理可以跨越多个基元被映射。如果纹理数据被存储在高速缓存子系统220中以用于在渲染超过一个基元中使用,则高速缓存系统218维持用于在渲染不同的基元中使用的纹理数据的高速缓存一致性。如果正使用纹理数据处理基元的处理引擎共享共同高速缓存子系统220,则这样的高速缓存一致性更易于维持。这更可能是当相邻区片被分配给共享高速缓存子系统220的处理引擎216时的情况。
在其中基元存在于超过一个区片的情况中,与根据负载平衡方案将区片分配给处理引擎相比较,对耦合到相同高速缓存子系统的处理引擎的空间相邻区片的集合的空间分配降低图形数据由未耦合到相同高速缓存子系统220的处理引擎216需要的可能性。下面描述了将区片分配给处理引擎的进一步的示例。
在步骤S410中,存在于区片中的基元的图形数据被存储在高速缓存系统218中。特别地,存在于区片中的基元的图形数据被存储在耦合到区片已经分配到的(一个或多个)搜索引擎216的高速缓存子系统220中。
在步骤S412中,处理引擎216通过将纹理化和阴影化中的一者或二者应用到基元片段来处理基元片段。该处理引擎216使用存储在高速缓存系统218中的图形数据(例如,纹理数据)处理基元片段。如上文所描述的,区片被分配给处理引擎216,使得处理引擎216中的每个处理引擎216处理被分配给该处理引擎216的区片的基元片段。
该图形处理系统200可以用于在渲染图像中使用,并且处理引擎216可以输出用于在生成表示经渲染的图像的像素数据中使用的经处理的基元片段。例如,在步骤S414中,后处理模块230可以将诸如滤波的后处理步骤应用到从纹理化/阴影化单元214输出的经处理的基元片段,以生成表示经渲染的图像的像素数据。该后处理模块230还可以在其被存储之前对经渲染的图像的像素数据进行压缩。如将明显的,由后处理模块230应用的后处理可以包括任何其他适合的过程(诸如格式转换、伽玛压缩、颜色空间转换或格式打包)。
在步骤S416中,像素数据(其可以是压缩的)从后处理模块230输出并且被存储在例如存储器2042中的像素缓冲器中。
下面更详细地描述了将区片分配给处理引擎216。在空间分配模式中,区片分配单元224在一个分配过程中将区片块分配给处理引擎(2160到2167)。通过这种方式,来自区片块的相应的一个或多个区片被分配给处理引擎216中的每个处理引擎216。例如,在一个分配过程中,来自块的相等数目的区片可以被分配给处理引擎216中的每个处理引擎216。该区片块包括待分配给耦合到相应的高速缓存子系统220的处理引擎的不同的集合的多组空间相邻区片。例如,图5示出了区片块500。该区片块500是4×4区片块。在图5中,区片块500中的每个区片标记有十六进制数字(0到F),使得可以容易地引用块500中的不同的区片。在该示例中,区片块包括四个2×2空间相邻区片组(在图5中表示G1、G2、G3和G4)。通过在一个分配过程中分配全部区片块,可以确保对处理引擎的区片的空间分配与高速缓存系统218的结构匹配。通过这种方式,基本上同时执行关于将块中的区片中的每个区片分配到哪个处理引擎的决策。如从以下描述将是明显的,在一个分配过程中(即,基本上同时地)将区片块500分配给处理引擎216不必意味着区片块500将由处理引擎216同时处理。
图6图示了区片分配单元224根据空间分配方案如何将区片块500分配给处理引擎216。第一区片组(G1)被分配给耦合到高速缓存子系统2200的处理引擎2160和2161,使得区片0和1被分配给处理引擎2160并且区片2和3被分配给处理引擎2161。第二区片组(G2)被分配给耦合到高速缓存子系统2201的处理引擎2162和2163,使得区片4和5被分配给处理引擎2162并且区片6和7被分配给处理引擎2163。第三区片组(G3)被分配给耦合到高速缓存子系统2202的处理引擎2164和2165,使得区片8和9被分配给处理引擎2164并且区片A和B被分配给处理引擎2165。第四区片组(G4)被分配给耦合到高速缓存子系统2203的处理引擎2166和2167,使得区片C和D被分配给处理引擎2166并且区片E和F被分配给处理引擎2167。可以理解,每个2×2区片组(G1到G4)被分配给耦合到相同高速缓存子系统220的处理引擎216对。因此,在该示例中,一对中的每个处理引擎216被分配来自被分配给该对处理引擎216的区片组的两个区片。在其他示例中,不同的数目的区片(例如,1或3或更多个区片)可以在每个分配过程中被分配给每个处理引擎。
在该示例中,在一个分配过程中,每个处理引擎被分配来自块500的两个区片。处理引擎216可以一次处理来自一个区片的数据,因此处理引擎2160开始处理区片0并且将尝试在开始处理区片1之前完成区片0的处理。然而,如果出于某种原因,区片0的处理在其被完成之前停止,则处理引擎2160可以在区片0的处理已经完成之前执行区片1的一些处理。其他处理引擎216以类似的方式操作。因此,作为示例,区片0和2将倾向于由相应的处理引擎2160和2161并发地处理,并且区片1和3将倾向于由相应的处理引擎2160和2161并发地处理。处理引擎2160和2161二者被耦合到高速缓存子系统2200,因此如果例如基元(诸如基元304)存在于区片0和2二者中,那么处理引擎2160和2161二者可以访问来自高速缓存子系统2200的基元的图形数据。
将来自块的区片分配给如图5和图6中所示的处理引擎,这提供了对处理引擎216的区片的好的分布。在备选示例中,区片0和2可以被分配给处理引擎2160;区片1和3可以被分配给处理引擎2161;区片4和6可以被分配给处理引擎2162;区片5和7可以被分配给处理引擎2163;区片8和A可以被分配给处理引擎2164;区片9和B可以被分配给处理引擎2165;区片C和E可以被分配给处理引擎2166;并且区片D和F可以被分配给处理引擎2167。区片的该分配还将根据空间分配方案,这是因为每个区片组(G1到G4)被分配给耦合到相同高速缓存子系统220的处理引擎216的相应集合。然而,这将倾向于导致不同的区片并发地处理。例如,区片0和1将然后倾向于由相应的处理引擎2160和2161并发地处理并且区片2和3将倾向于由相应的处理引擎2160和2161并发地处理。在用户界面使用案例(诸如视频合成)中,图形数据的重要比例可以是基于步幅的纹理数据,并且可以因此存在用于分配如图6中所示的区片的轻微偏好,这是因为如果区片的水平对倾向于并发地处理,则用于从高速缓存系统218读取纹理数据的高速缓存命中率可以平均比在区片的垂直对倾向于并发地处理的情况下稍微更高。
可以理解,与负载平衡分配方案相比较,用于根据高速缓存系统218的结构将区片分配给处理引擎的空间分配方案可以改进高速缓存命中率。在降低在GPU 202与存储器2041(其可以是芯片外存储器)之间传送的数据量并且降低在高速缓存层次结构的不同级之间传送的数据量方面,这可以是有益的。在纹理化/阴影化单元214的处理速度和功耗方面,其还可以是有益的。
因此,在高速缓存系统218的效率与跨越不同的处理引擎的负载的平衡之间存在权衡。特别地,如果当存在准备执行的处理时处理引擎216中的任一个处理引擎变得空闲,则其可以降低纹理化/阴影化单元214的效率。因此,在一些场景中,返回到负载平衡分配模式以避免处理引擎中的任一个处理引擎变得空闲可以是有益的。
因此,区片分配单元224可以在负载平衡分配模式中操作,其中区片基于处理引擎216的计算负载而被分配给处理引擎216。特别地,如果处理引擎216中的任一个处理引擎上的负载下降到小于阈值水平,那么一个或多个区片可以被分配给该处理引擎216从而增加该处理引擎216上的负载。这可以利用近似地维持处理引擎216中的每个处理引擎216上的相同计算负载的视图而完成。
该区片分配单元224包括队列的集合228。该区片分配单元224(特别地区片分配单元224的分配逻辑226)针对处理引擎216中的每个处理引擎216维持被分配用于由该处理引擎216处理的已分配的区片的队列。图7图示了被分配给八个处理引擎2160到2167的区片的队列228的状态。应注意到,队列228包含被分配给相应的处理引擎216的区片的指示(例如,区片ID),而不是存储用于渲染区片的实际的区片数据。图7中所示的图形图示了针对处理引擎216中的每个处理引擎216的队列中的区片的数目。当区片已经由处理引擎216处理时,从针对该处理引擎216的队列移除区片;并且当区片被分配给处理引擎216时,区片被添加到针对该处理引擎216的队列。因此,队列示出已经被分配给处理引擎216但是尚未完全由处理引擎216处理的区片。在一些其他示例中,当处理开始处理该区片时,可以从针对处理引擎的队列移除区片。当处理引擎216准备开始处理新的区片时,区片分配单元224通过查询适当的队列228确定处理引擎216接下来将处理哪个区片。队列可以以先进先出(FIFO)或根据任何其他适合的排队方案操作。
如在图7中所示,存在在任何给定时间可以被分配给处理引擎的区片的数目的最大值。利用图7中的虚线(“最大”)示出该最大值。作为示例,最大数可以是六。在其他示例中,最大值可以被设定到不同的数目。将最大值设置到可以分配给处理引擎的区片的数目防止不同的处理引擎上的区片的处理与彼此同步偏离太远。这帮助确保近似地同时处理由不同的处理引擎处理的空间相邻区片。作为示例,在共享高速缓存子系统220的两个不同的处理引擎216上保持两个空间相邻区片的处理时间地接近在一起,这增加了以下内容的可能性:对于这两个区片有用的高速缓存子系统220中的图形数据在其从高速缓存子系统220驱逐之前可以由不同的处理引擎使用。高速缓存子系统可以例如根据最近最少使用(LRU)高速缓存驱逐策略进行操作。可以使用其他高速缓存驱逐策略。
图7还示出了“分配阈值”和“加载阈值”。这些是队列中的区片的数目的阈值并且被用于控制在其中操作分配单元224的分配模式,如下文所描述的。分配阈值比加载阈值更高。例如,分配阈值可以是四,并且加载阈值可以是二,但是在其他示例中,阈值可以采取不同值。最大值、分配阈值和加载阈值可以是固定或变化的。如从以下描述将变得明显的,如果队列处于图7中所示的状态(具有大于分配阈值的至少一个队列并且没有小于加载阈值的队列),那么在该时间处没有区片将被分配给处理引擎,并且处理引擎将继续处理针对处理引擎排队的区片。
参考图8中所示的流程图描述了区片分配单元224的操作。该区片分配单元224监视队列的状态以确定在其中区片将被分配给处理引擎216的分配模式。初始地,当队列228是空的时,区片分配单元224在空间分配模式中操作。在步骤S802中,区片块被分配给处理引擎216,如上文所描述的,使得空间相邻区片组被分配给耦合到相同高速缓存子系统220的处理引擎216的相应集合。例如,区片块(例如,块500)的分配可以导致将两个区片分配给处理引擎216中的每个处理引擎216。
在步骤S804中,区片分配单元224(例如,分配逻辑226)确定所有队列是否小于或等于分配阈值。换句话说,在步骤S804中,区片分配单元224(例如,分配逻辑226)确定队列中的每个队列中的已分配的区片的数目是否不大于分配阈值。如果在步骤S804中检测到队列228中的每个队列228中的已分配的区片的数目不大于分配阈值,那么方法转到步骤S802,并且如上文所描述的,在空间分配模式中实现分配过程从而将区片块分配给处理引擎216。通过这种方式,区片被分配给处理引擎以将区片的空间位置与高速缓存系统218的结构匹配。图9示出了在其中没有队列大于分配阈值的示例,使得方法从步骤S804转到步骤S802,使得区片块在空间分配模式中被分配给处理引擎216。
在一些示例中,可以被包括在队列中的区片的最大数与分配阈值之间的差等于当区片块被分配给处理引擎时被分配给每个处理引擎的区片的数目。
如果队列228中的至少一个队列大于分配阈值,那么在那时区片块未被分配给处理引擎。在这种情况下,方法从步骤S804转到步骤S806。在步骤S806中,区片分配单元224(例如,分配逻辑226)确定队列中的任一个队列是否小于加载阈值。换句话说,在步骤S806中,区片分配单元224(例如,分配逻辑226)确定队列中的任一个队列中的已分配的区片的数目是否小于加载阈值。如果在步骤S806中检测到队列228中的任一个队列中的已分配的区片的数目小于加载阈值,那么方法转到步骤S808。在步骤S808中,分配单元224在负载平衡分配模式中将区片分配给处理引擎。如上文所描述的,在负载平衡分配模式中,可以利用平衡跨越不同的处理引擎的负载的视图将区片分配给处理引擎。特别地,在负载平衡分配模式中,可以将不同的数目的区片分配给不同的处理引擎。图10示出了在其中队列(队列3和5)中的至少一个队列小于加载阈值的示例,使得方法从步骤S806转到步骤S808使得在负载平衡分配模式中区片被分配给处理引擎216。
在处理中所涉及的工作量对于不同的区片而言可以是不同的,并且高度依赖于正运行的应用。例如,与图像的其他区域(例如,边缘)相比较,游戏应用可以常常使用其中在图像的一些区域(例如,中心)中找到更高级的细节,使得中心区片的处理涉及比渲染空间的边缘区片的处理更多工作的图像。对于其他应用而言(例如,为了渲染用户界面(UI)),细节水平可以跨越全部图像是近似恒定的,使得所有区片的处理近似地涉及相同工作量。在不同的区片上所执行的处理的数量中的差异可能导致一些处理引擎在其已经处理的区片的数目方面落后在其他处理引擎后面。随着时间逝去,这些差异可以导致针对不同的处理引擎216排队的区片的数目中的显著差异。这可以导致在其中队列中的一个或多个下降到小于加载阈值,同时队列中的不同的一个或多个大于分配阈值的情况。在这种情况下,调用负载平衡分配模式以解决对于不同的处理引擎216当前排队的计算负载中的不平衡。
在步骤S808中分配的区片的数目在不同的示例中可以是不同的。例如,响应于检测到在步骤S806中队列中的任一个队列中的已分配的区片的数目小于加载阈值,在步骤S808中,在负载平衡分配模式中区片分配单元224可以将足够的区片分配给处理引擎216以填充队列中的每个队列(即,使所有队列直到最大线)。这是确保针对处理引擎中的每个处理引擎中的的队列中的当前的区片数目相同的简单的方式。
在另一示例中,在步骤S808中,区片分配单元224可以标识当前在队列中的任一个队列中的区片的最大数并且可以将区片分配给处理引擎216,使得所有队列具有所标识的数目的区片。这是确保分配给处理引擎中的每个处理引擎的区片的数目相同的另一方式。这可以涉及与使所有队列直到最大队列占用相比较在负载平衡模式中分配更少的区片。在负载平衡模式中分配更少的区片可以意味着可以在空间分配模式中分配更多区片,其可以改进高速缓存效率,如上文所描述的。
在另一示例中,在步骤S808中,区片分配单元224可以将区片分配给处理引擎216,使得所有队列具有至少等于分配阈值的区片数目。在又一示例中,在步骤S808中,区片分配单元224可以将区片分配给处理引擎216,使得所有队列具有至少等于加载阈值的区片数目。这些示例可以导致在负载平衡模式中分配甚至更少的区片,但是其可以导致在步骤S808中比在其他先前所描述的示例中被执行更频繁。
在一些示例中,步骤S808可以涉及以负载平衡方式将区片块分配给处理引擎(例如,将来自块的不同的数目的区片分配给不同的处理引擎)。这意味着当分配模式切换回到空间分配模式时,已经分配全部数目的区片块,其可以简化切换回到空间分配模式的过程。
如果在步骤S806中确定没有队列小于加载阈值(例如,如果队列处于图7中所示的状态),那么方法转到步骤S804。而且,跟随步骤S808,方法转到步骤S804。当不再存在分配给处理引擎216的区片时,方法结束。
在上文所描述的示例中,除非在处理引擎中的不同的一个或多个处理引擎准备好在空间分配模式中待分配的新的区片块之前处理引擎风险中的一个或多个变得空闲的意义上区片的处理是不平衡的,否则空间分配模式被用于改进高速缓存效率。在该情况下,负载平衡分配模式被用于防止处理引擎变得空闲。因此,在(通过使用空间分配模式所实现的)高速缓存效率与(通过使用负载平衡分配模式所实现的)负载平衡之间的权衡中,除非通过超过(由加载阈值设定的)阈值,在该点处负载平面取得超过高速缓存效率的优先级,否则区片分配单元224旨在用于高速缓存效率。因此,这时区片分配单元224切换到在负载平衡模式中进行操作。然而,一旦负载已经重新平衡,则区片分配单元224可以然后切换回到空间分配模式以维持高速缓存效率。因此,如果在处理每个区片中所涉及的工作是近似相同的,那么区片分配单元224可能能够主要地(可能地专有地)在空间分配模式中操作;然而,如果在处理每个区片中所涉及的工作对于不同的区片而言是显著地不同的,那么区片分配单元224可以更频繁地切换到负载平衡分配模式来确保负载跨越不同的处理引擎被平衡并且防止处理引擎中的任一个处理引擎变得空闲。
图5示出了在一个分配过程中待分配给处理引擎216的一个区片块500。渲染空间可以包括许多区片块。例如,图11a示出了渲染空间1100,其包括以8×8布置的64个区片块。利用附图标记1102、1104和1106表示区片块中的三个。区片块中的每个区片块可以是4×4区片块(诸如图5中所示的块500)。区片分配单元224可以按顺序处理区片块。图11a示出了其中首先处理块1102然后按顺序处理来自第一列块(以块1104结束)的下三个块。然后处理块1106,并且随后处理来自第二列的下三个块。处理序列可以跟随图11a中所示的图案(例如,根据空间填充曲线,诸如根据莫顿序或希尔伯特曲线)直到来自各列的前四个块已经处理。然后,序列重复来自每列的后四个块直到渲染空间1100中的所有区片块已经处理。在该示例中,利用维持连续地处理的区片块之间的空间位置的程度的视图,仅四个块在移动到下一列之前从每列被处理(即,两个连续地处理块之间的空间位置中的差异保持相对小(与在移动到下一列之前处理全部列相比较)),从而增加在处理一个块之后高速缓存的内容对于处理下一块可以有用的可能性。
尽管连续地处理的区片块之间的空间位置中的跳跃在图11a中所示的示例中可以是相对小的,但是存在来自块的每列的第一块、第四块、第五块和第八块处按顺序待处理的连续的区片块之间的空间位置中的不连续性。诸如这些的不连续性意味着被存储在针对一个块的高速缓存218中的数据可能不太可能对于按顺序的下一块的处理是有用的,使得当在处理的块的序列中存在不连续性时,高速缓存命中率可能减小。
为了解决该问题,区片分配单元224处理区片块的顺序可以是以光栅扫描顺序。例如,图11b示出了渲染空间1110,渲染空间1110包括以8×8布置的64个区片块。利用附图标记1112、1114和1116表示区片块中的三个块。区片块中的每个块可以是4×4区片块(诸如图5中所示的块500)。该区片分配单元224可以以光栅扫描顺序处理区片块,使得首先处理块1112,然后处理第一行的块的剩余部分,以块1114结束。然后,处理下一行块的块,以块1116开始。进而处理每行块直到渲染空间1110中的所有区片块已经被处理。
利用图11b中所示的顺序,在来自每行块的第一块和第八块处按顺序待处理的连续区片块之间的空间位置中存在不连续性。这意味着与利用图11a中所示的顺序相比较存在关于图11b中所示的顺序的更少的不连续性。更少的不连续性意味着高速缓存命中率可能增加。用于处理区片块的最好顺序可以依赖于正被处理的数据的内容。
在另一示例中,块的行可以按顺序处理(与如在图11b中所示类似),但是备选行可以以相反顺序处理(即,从右到左)(即,块可以以右行左行交互书写顺序处理)。这将进一步降低处理块的顺序中的不连续性的数目。
一般而言,区片分配单元224处理区片块的顺序可以以任何适合的顺序(例如,在系统内定义的约束顺序)。
图12示出了可以通过硬件(例如,在集成电路上)、软件或二者的组合实现的图形处理系统1200的另一示例。该图形处理系统1200与上文所描述的图形处理系统200类似。然而,在图形处理系统1200中,在HSR单元内存在多个HSR模块。对处理引擎的区片的分配分成两级:在第一级中区片被分配给HSR模块,并且在第二级中来自HSR模块的区片被分配给处理引擎。通过这种方式,在HSR已经执行之后,在每HSR模块基础上,区片被分配给处理引擎。
特别地,图形处理系统1200包括图形处理单元(GPU)1202和存储器2041和存储器2042的两个部分。共同附图标记在图2和图12中被用于相同的部件。该GPU 1202包括预处理模块206、区片化单元208和栅格化模块1210,其中栅格化模块1210包括隐藏表面移除(HSR)单元1212、纹理化/阴影化单元1214和后处理模块1230。该HSR单元1212包括HSR区片分配单元1211和多个HSR模块12130和12131。在图12中所示的示例中,存在两个HSR模块1213,但是在其他示例中,在HSR单元1212中可以存在超过两个HSR模块1213。该HSR模块可以对不同的区片并行执行HSR。该纹理化/阴影化单元1214包括多个处理引擎1216,其中的每一个被配置为将纹理和阴影中的一者或二者应用到基元片段。该纹理化/阴影化单元1214还包括高速缓存系统1218,其被配置为存储与基元片段有关的图形数据。该高速缓存系统1218是多级高速缓存并且对应于上文所描述的高速缓存系统218。该高速缓存系统1218包括多个第1级高速缓存子系统1220和第2级高速缓存1222。高速缓存子系统1220中的每个高速缓存子系统1220被耦合到处理引擎1216的集合。在图12中所示的示例中,存在四个第1级高速缓存子系统12200到12203。该纹理化/阴影化单元1214还包括:区片分配单元1224,其包括分配逻辑1226;和队列的集合1228,其用于存储被分配给处理引擎的区片的指示。该HSR分配单元1211和区片分配单元1224提供系统1200中的区片分配的两级。在参考图13中所示的流程图描述的图形处理系统1200的操作的上下文中,描述了HSR区片分配单元1211和区片分配单元1224的操作。
在步骤S1302中,以与上文所描述的方式相同的方式实现几何处理阶段,使得区片化单元208生成针对渲染空间的区片的显示列表(或控制流)。该显示列表和基元从区片化单元208输出并且被存储在存储器2041中。
在栅格化阶段中,将针对基元的显示列表和图形数据提供给栅格化模块1210。在步骤S1304中,HSR区片分配单元1211将区片分配给HSR模块12130和12131。在步骤S1306中,HSR单元1212的HSR模块12310和12131对针对渲染空间的区片的基元片段执行隐藏表面移除。
在步骤S1308中,纹理化/阴影化单元214接收针对通过由HSR单元1212的HSR模块1213执行的HSR的基元片段的图形数据。
在步骤S1310中,在每HSR模块基础上,区片分配单元1224在一个或多个分配模式中将区片分配给处理引擎。该分配模式可以例如包括上文所描述的空间分配模式和负载平衡分配模式。
步骤S1312和S1318对应于上文所描述的步骤S410到S416。因此,在步骤S1312中,存在于区片中的基元的图形数据被存储在高速缓存系统1218中。特别地,存在于区片中的基元的图形数据被存储在耦合到区片已经分配到的(多个)搜索引擎1216的高速缓存子系统1220中。在步骤S1314中,处理引擎1216通过将纹理化和阴影化之一或之二应用到基元片段来处理基元片段。该处理引擎1216使用存储在高速缓存系统1218中的图形数据来处理基元片段。在步骤S1316中,后处理模块1230可以将后处理步骤(诸如滤波、压缩、格式转换、伽玛压缩、颜色空间转换或格式打包)应用到从纹理化/阴影化单元1214输出的经处理的基元片段,以生成表示经渲染的图像的像素数据。在步骤S1318中,像素数据(其可以是压缩的)从后处理模块1230输出并且被存储在例如存储器2042中的像素缓冲器中。
在上文所描述的示例中,高速缓存系统218(或高速缓存系统1218)包括第2级高速缓存222和四个第1级高速缓存子系统2200到2203。在其他实施例中,高速缓存系统可能不包括第2层高速缓存或可能包括高速缓存层次结构内的超过两级。此外,其他示例可以包括不同的数目的L1高速缓存子系统和/或处理引擎。例如,高速缓存子系统可以耦合到超过两个处理引擎。而且,并非高速缓存系统内的所有高速缓存子系统必然地耦合到超过一个处理引擎。此外,每个处理引擎可以耦合到高速缓存子系统中的超过一个高速缓存子系统。在上文所描述的示例中,区片块是4×4区片块(例如,块500),但是更一般地,区片块可以是任何适合的大小和/或形状。例如,区片块可以是6×2区片块。在该情况下,可以存在十二个处理引擎,使得当区片块被分配时,来自块的一个区片可以被分配给处理引擎中的每个处理引擎。
图14示出了在其中可以实现图形处理系统200或1200的计算机系统。该计算机系统包括CPU 1402、GPU 202、存储器1404(其可以包括存储器2041和2042)和其他设备1406(诸如显示器1408、扬声器1410和照相机1412)。计算机系统的部件可以经由通信总线1414彼此通信。作为示例,应用可以在CPU 1402上执行并且可以将数据发送到GPU 202以用于渲染可以被存储在存储器1404中和/或被显示在显示器1408上的图像。
一般地,可以在使用软件、固件、硬件(例如,固定逻辑电路)或这些实施方式的任何组合的模块中实现上文所描述的功能、方法、技术或部件(例如,图形处理系统202的部件)中的任一个。术语“模块”、“功能”、“部件”、“块”、“单元”和“逻辑”在本文中被用于一般地表示软件、固件、硬件或其任何组合。
在软件实施方式的情况下,模块、功能、部件或逻辑表示当执行在处理器(例如,一个或多个CPU)上时执行指定任务的程序代码。在一个示例中,可以通过被配置有以存储在计算机可读介质上的机器可读形式的软件的计算机执行所描述的方法。计算机可读介质的一个这样的配置是信号承载介质并且因此被配置为将指令(例如,作为载波)(诸如经由网络)发送到计算设备。该计算机可读介质还可以被配置为非暂态计算机可读存储介质并且因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪速存储器、硬盘存储器以及可以使用磁性、光学和其他技术存储能够由机器访问的指令或其他数据的其他存储器设备。
该软件可以以包括用于将计算机配置为执行所描述的方法的组成部分的计算机程序代码的计算机程序的形式,或者包括适于当程序运行在计算机上时并且在计算机程序可以实现在计算机可读介质上的情况下执行本文所描述的方法中的任一个方法的所有步骤的计算机程序代码装置的计算机程序的形式。该程序代码可以被存储在一个或多个计算机可读介质中。本文所描述的技术的特征是平台独立的,这意味着可以在具有各种处理器的各种计算平台上实现本文所描述的技术。
本领域的技术人员还将认识到,可以通过专用电路、专用集成电路、可编程逻辑阵列、现场可编程门阵列等执行本文所描述的功能、技术或方法的全部或一部分。例如,模块、功能、部件、单元或逻辑(例如,图形处理系统202的部件)可以包括以电路的形式的硬件。这样的电路可以包括在制造过程中可用的晶体管和/或其他硬件元件。这样的晶体管和/或其他元件可以被用于形成实现和/或包含存储器的电路或结构(诸如,举例来说,寄存器、触发器或锁存器、逻辑运算符(诸如布尔运算)、数学运算符(诸如加法器、乘法器、移位器)以及互连)。这样的元件可以被提供为定制电路或标准单元库、宏或在其他抽象度处。这样的元件可以以特定布置相互连接。模块、功能、部件、单元或逻辑(例如,图形处理系统202的部件)可以包括作为固定功能的电路和可以被编程为执行(一个或多个)功能的电路;可以根据固件或软件更新或控制机制提供这样的编程。在示例中,硬件逻辑具有实现固定功能操作、状态机或过程的电路。
还预期涵盖“描述”或定义实现上文所描述的模块、功能、部件、单元或逻辑(例如,图形处理系统202的部件)的硬件的配置的软件(诸如HDL(硬件描述语言)软件),如被用于设计集成电路或用于将可编程芯片配置为执行期望的功能。也即,可以提供已经在其上编码以集成电路定义数据集的形式的计算机可读程序代码的计算机可读存储介质,其当在集成电路制造系统中处理时,将系统配置为制造被配置为执行本文所描述的方法中的任一个方法的图形处理系统或制造包括本文所描述的任何装置的图形处理系统。IC定义数据集可以例如以适合的HDL(诸如寄存器传送级(RTL)代码)书写的计算机代码的形式。图15示出了集成电路(IC)制造系统1502的示例,其包括布局处理系统1504和集成电路生成系统1506。IC制造系统1502被配置为接收IC定义数据集(例如,定义如在本文中的示例中的任一个示例中所描述的图形处理系统)、处理IC定义数据集,并且根据IC定义数据集(例如其实现如在本文中的示例中的任一个示例中所描述的图形处理系统)来生成IC。IC定义数据集的处理将IC制造系统1502配置为制造实现如在本文中的示例中的任一个中所描述的图形处理系统的集成电路。更特别地,布局处理系统1504被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码来确定要被生成的电路的门级表示(例如,在逻辑部件(例如,NAND、NOR、AND、OR、MUX以及FLIP-FLOP部件)方面)。可以通过确定针对逻辑部件的位置信息根据电路的门级表示确定电路布局。这可以自动地或在用户介入的情况下完成以便优化电路部件。当布局处理系统1504已经确定电路布局时,其可以将电路部件定义输出到IC生成系统1506。IC生成系统1506根据电路布局定义生成IC,如本领域中已知的。例如,IC生成系统1506可以实现半导体器件制造过程以生成IC,其可以涉及在其期间在由半导体材料制成的晶圆上逐渐地创建电子电路的光刻和化学处理步骤的多步顺序。电路布局定义可以以掩模的形式,其可以使用在用于根据电路定义生成IC的光刻工艺中。备选地,提供给IC生成系统1506的电路布局定义可以以计算机可读代码的形式,IC生成系统1506可以使用其来形成用于使用在生成IC中的适合的掩模。由IC制造系统1502所执行的不同的过程可以全部实现在一个位置中(例如,通过一方)。备选地,IC制造系统1502可以是分布式系统,使得过程中的一些过程可以在不同的位置处执行并且可以由不同方执行。例如,多个级中的一些级:(i)合成表示IC定义数据集的RTL代码以形成待生成的电路的门级表示;(ii)基于门级表示生成电路布局;(iii)根据电路布局形成掩模;和(iv)可以在不同的位置和/或通过不同方执行使用掩模制造集成电路。
术语“处理器”和“计算机”在本文中被用于指代具有处理能力使得其可以执行能够执行功能或方法或其任何组合的全部或一部分的指令或专用电路的任何设备或设备的一部分。
当与已知实施方式相比较时,在设备、装置、模块和/或系统中(以及在本文所实现的方法中)的本申请中阐述的概念的实施方式可以引起性能改进。性能改进可以包括以下各项中的一项或多项:增加的计算性能、降低的延时、增加的吞吐量和/或降低的功耗。在这样的设备、装置、模块和系统(例如,在集成电路中)的制造期间,性能改进可以对物理实施方式权衡,从而改进制造的方法。例如,性能改进可以对布局面积权衡,从而匹配实施方式的性能但是使用较少的硅。这可以例如通过以序列化方式重新使用功能块或共享设备、装置、模块和/或系统的元件之间的功能块完成。相反,引起设备、装置、模块和系统(诸如降低的硅面积)的物理实施方式中的改进的本申请中阐述的概念可以交换用于经改进的性能。这可以例如通过制造预定义面积预算内的模块的多个实例来完成。
虽然已经以特定于结构特征和/或方法动作的语言描述了主题,但是应理解到,所附的权利要求中定义的主题不必限于上文所描述的特定特征或动作。相反,上文所描述的特定特征和动作被公开为实现权利要求的示例形式。将理解到,上文所描述的益处和优点可以涉及一个示例或可以涉及多个示例。
在不损失所追求的效果的情况下,可以延伸或更改本文给定的任何范围或值,如对于技术人员而言将明显的。可以以任何适合的顺序或在适当的情况下同时地执行本文所描述的方法的步骤。上文所描述的示例中的任一个示例的各方面可以与所描述的其他示例中的任一个示例的各方面进行组合,以在不损失所追求的效果的情况下形成进一步的示例。

Claims (20)

1.一种图形处理系统,所述图形处理系统被配置为使用被再分成多个区片的渲染空间来处理基元片段,所述系统包括:
多个处理引擎,所述多个处理引擎被配置为将纹理化和阴影化中的一者或二者应用到基元片段;
高速缓存系统,所述高速缓存系统被配置为存储图形数据以用于在处理所述基元片段中使用,所述高速缓存包括多个高速缓存子系统,其中所述多个高速缓存子系统中的每个高速缓存子系统被耦合到所述处理引擎中的一个或多个处理引擎的相应集合;以及
区片分配单元,所述区片分配单元被配置为在一个或多个分配模式中操作以将区片分配给所述处理引擎,其中所述一个或多个分配模式包括空间分配模式,在所述空间分配模式中,空间相邻区片组根据空间分配方案而被分配给所述处理引擎,所述空间分配方案确保所述空间相邻区片组中的每组被分配给耦合到相同高速缓存子系统的处理引擎的集合。
2.根据权利要求1所述的图形处理系统,其中在所述空间分配模式中,所述区片分配单元被配置为在一个分配过程中将区片块分配给所述处理引擎,由此向所述多个处理引擎中的每个处理引擎分配来自所述区片块的相应的一个或多个区片,其中所述区片块包括多个空间相邻区片组。
3.根据权利要求2所述的图形处理系统,其中所述区片分配单元被配置为处理区片块的序列。
4.根据任何前述权利要求所述的图形处理系统,其中所述一个或多个分配模式包括负载平衡分配模式,在所述负载平衡分配模式中,区片基于所述处理引擎的计算负载而被分配给所述处理引擎。
5.根据任何前述权利要求所述的图形处理系统,其中所述区片分配单元被配置为:针对所述处理引擎中的每个处理引擎,维持被分配用于由该处理引擎处理的已分配的区片的队列。
6.根据当从属于权利要求2时的权利要求5所述的图形处理系统,其中所述区片分配单元被配置为:监视所述队列的状态,并且响应于检测到所述队列中的每个队列中的已分配的区片的数目不大于分配阈值,在所述空间分配模式中实现分配过程,由此将区片块分配给所述处理引擎。
7.根据当从属于权利要求4时的权利要求5所述的图形处理系统,其中所述区片分配单元被配置为:监视所述队列的状态,并且响应于检测到所述队列中的任一个队列中的已分配的区片的数目小于加载阈值,在所述负载平衡分配模式中将区片分配给所述处理引擎。
8.根据权利要求7所述的图形处理系统,其中所述区片分配单元被配置为:响应于检测到所述队列中的任一个队列中的已分配的区片的所述数目小于所述加载阈值,在所述负载平衡分配模式中将足够的区片分配给所述处理引擎以填充所述队列中的每个队列。
9.根据任何前述权利要求所述的图形处理系统,其中所述高速缓存系统是多级高速缓存,并且其中所述高速缓存子系统是所述多级高速缓存中的第1级高速缓存子系统,并且其中所述高速缓存子系统中的每个高速缓存子系统被耦合到所述处理引擎的相应对。
10.根据任何前述权利要求所述的图形处理系统,其中所述高速缓存系统进一步包括第2级高速缓存。
11.根据任何前述权利要求所述的图形处理系统,其中所述空间相邻区片组是2×2区片组,并且其中在根据所述空间分配方案的所述空间分配模式中,所述区片分配单元被配置为:将每个空间相邻区片组分配给耦合到相同高速缓存子系统的处理引擎对,使得所述对中的每个处理引擎被分配来自所述组的两个区片。
12.根据任何前述权利要求所述的图形处理系统,其中所述系统被配置为渲染图像,并且其中所述处理引擎被配置为输出经处理的基元片段以用于在生成表示经渲染的所述图像的像素数据中使用,其中所述图形处理系统包括被配置为存储表示经渲染的所述图像的所述像素数据的存储库。
13.根据任何前述权利要求所述的图形处理系统,进一步包括隐藏表面移除单元,所述隐藏表面移除单元被配置为对所述基元片段执行隐藏表面移除。
14.根据权利要求13所述的图形处理系统,其中所述隐藏表面移除单元包括多个隐藏表面移除模块和HSR区片分配单元,所述HSR区片分配单元被配置为将区片分配给所述隐藏表面移除模块。
15.一种使用被再分成多个区片的渲染空间来在图形处理系统中处理基元片段的方法,所述方法包括:
在多个处理引擎处将纹理化和阴影化中的一者或二者应用到基元片段;
在高速缓存系统中存储图形数据以用于在处理所述基元片段中使用,所述高速缓存系统包括多个高速缓存子系统,其中所述多个高速缓存子系统中的每个高速缓存子系统被耦合到所述处理引擎中的一个或多个处理引擎的相应集合;以及
在一个或多个分配模式中将区片分配给所述处理引擎,其中所述一个或多个分配模块包括空间分配模式,在所述空间分配模式中,空间相邻区片组根据空间分配方案而被分配给所述处理引擎,所述空间分配方案确保所述空间相邻区片组中的每组被分配给耦合到相同高速缓存子系统的处理引擎的集合。
16.根据权利要求15所述的方法,其中在所述空间分配模式中,将区片分配给所述处理引擎包括:在一个分配过程中将区片块分配给所述处理引擎,由此向所述多个处理引擎中的每个处理引擎分配来自所述区片块的相应的一个或多个区片,其中所述区片块包括多个空间相邻区片组。
17.根据权利要求16所述的方法,进一步包括:
针对所述处理引擎中的每个处理引擎,维持被分配用于由该处理引擎处理的已分配的区片的队列;以及
监视所述队列的状态,并且响应于检测到所述队列中的每个队列中的已分配的区片的数目不大于分配阈值,在所述空间分配模式中实现分配过程,由此将区片块分配给所述处理引擎。
18.根据权利要求15至17中的任一项所述的方法,其中所述一个或多个分配模式包括负载平衡分配模式,在所述负载平衡分配模式中,区片基于所述处理引擎的计算负载而被分配给所述处理引擎。
19.根据权利要求18所述的方法,还包括:
针对所述处理引擎中的每个处理引擎,维持被分配用于由该处理引擎处理的已分配的区片的队列;以及
监视所述队列的状态,并且响应于检测到所述队列中的任一个队列中的已分配的区片的数目小于加载阈值,在所述负载平衡分配模式中将区片分配给所述处理引擎。
20.根据权利要求15至19中的任一项所述的方法,其中所述基元片段在所述图形处理系统中被处理以渲染图像,并且其中所述方法进一步包括:使用由所述处理引擎输出的经处理的基元片段来生成表示经渲染的所述图像的像素数据。
CN201611193851.8A 2015-12-21 2016-12-21 图形处理系统和在图形处理系统中处理基元片段的方法 Active CN106897143B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210114018.9A CN114443307A (zh) 2015-12-21 2016-12-21 图形处理系统、存储介质和处理基元片段的方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1522540.2 2015-12-21
GB1522540.2A GB2540227B (en) 2015-12-21 2015-12-21 Allocation of tiles to processing engines in a graphics processing system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210114018.9A Division CN114443307A (zh) 2015-12-21 2016-12-21 图形处理系统、存储介质和处理基元片段的方法

Publications (2)

Publication Number Publication Date
CN106897143A true CN106897143A (zh) 2017-06-27
CN106897143B CN106897143B (zh) 2022-02-25

Family

ID=55311355

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210114018.9A Pending CN114443307A (zh) 2015-12-21 2016-12-21 图形处理系统、存储介质和处理基元片段的方法
CN201611193851.8A Active CN106897143B (zh) 2015-12-21 2016-12-21 图形处理系统和在图形处理系统中处理基元片段的方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202210114018.9A Pending CN114443307A (zh) 2015-12-21 2016-12-21 图形处理系统、存储介质和处理基元片段的方法

Country Status (4)

Country Link
US (3) US10055877B2 (zh)
EP (1) EP3185217B1 (zh)
CN (2) CN114443307A (zh)
GB (2) GB2540227B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111353928A (zh) * 2018-12-21 2020-06-30 畅想科技有限公司 用于图形处理系统的经过变换的几何结构数据高速缓存
CN111492407A (zh) * 2017-12-19 2020-08-04 微软技术许可有限责任公司 用于绘图美化的系统和方法
CN112017104A (zh) * 2019-05-30 2020-12-01 畅想科技有限公司 图形处理系统中的功能安全
CN112116519A (zh) * 2019-06-19 2020-12-22 畅想科技有限公司 图形处理系统中的粗略深度测试
CN112529032A (zh) * 2019-09-19 2021-03-19 畅想科技有限公司 图形处理系统中分层级平铺基元的方法和平铺引擎

Families Citing this family (31)

* Cited by examiner, † Cited by third party
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
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
GB2543866B (en) 2016-03-07 2017-11-01 Imagination Tech Ltd Task assembly for SIMD processing
GB2555929B (en) * 2016-03-07 2018-11-28 Imagination Tech Ltd Task assembly
GB2561807B (en) * 2017-01-12 2019-09-25 Imagination Tech Ltd Computing systems and methods for processing graphics data using cost indications for sets of tiles of a rendering space
US10559056B2 (en) * 2017-06-12 2020-02-11 Arm Limited Graphics processing
GB2570743B (en) 2018-06-29 2021-06-23 Imagination Tech Ltd Tile assignment to processing cores within a graphics processing unit
CN111192351B (zh) * 2018-11-14 2023-06-02 芯原微电子(上海)股份有限公司 边缘抗锯齿的图形处理方法、系统、存储介质及装置
JP7354258B2 (ja) 2018-12-27 2023-10-02 ホアウェイ・テクノロジーズ・カンパニー・リミテッド ビデオエンコーダ、ビデオデコーダ、および対応する方法
MX2021007926A (es) * 2018-12-28 2021-10-22 Huawei Tech Co Ltd Un codificador de video, un decodificador de video y metodos correspondientes.
US10997686B2 (en) * 2019-01-09 2021-05-04 Intel Corporation Workload scheduling and distribution on a distributed graphics device
US11321800B2 (en) 2020-02-03 2022-05-03 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by region testing while rendering
US11508110B2 (en) 2020-02-03 2022-11-22 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering
US11514549B2 (en) 2020-02-03 2022-11-29 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase
US11170461B2 (en) 2020-02-03 2021-11-09 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis while rendering
US11080814B1 (en) 2020-02-03 2021-08-03 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using prior frame information
US11263718B2 (en) 2020-02-03 2022-03-01 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against in interleaved screen regions before rendering
US11120522B2 (en) 2020-02-03 2021-09-14 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by subdividing geometry
WO2021158468A1 (en) * 2020-02-03 2021-08-12 Sony Interactive Entertainment Inc. System and method for efficient multi-gpu rendering of geometry by geometry analysis while rendering
US11886981B2 (en) 2020-05-01 2024-01-30 SiMa Technologies, Inc. Inter-processor data transfer in a machine learning accelerator, using statically scheduled instructions
US11734605B2 (en) 2020-04-29 2023-08-22 SiMa Technologies, Inc. Allocating computations of a machine learning network in a machine learning accelerator
WO2021216464A1 (en) * 2020-04-21 2021-10-28 SiMa Technologies, Inc. Implementing a machine learning network in a machine learning accelerator
US11586894B2 (en) 2020-05-04 2023-02-21 SiMa Technologies, Inc. Ordering computations of a machine learning network in a machine learning accelerator for efficient memory usage
US11734549B2 (en) 2020-04-21 2023-08-22 SiMa Technologies, Inc. Avoiding data routing conflicts in a machine learning accelerator
US11321806B2 (en) * 2020-07-22 2022-05-03 Samsung Electronics Co., Ltd. Enhanced early coverage discard using opportunistic bypassing and dynamic queue resizing
GB2607002A (en) * 2021-05-11 2022-11-30 Advanced Risc Mach Ltd Fragment dependency management for variable rate shading
WO2023018529A1 (en) * 2021-08-11 2023-02-16 Apple Inc. Logical slot to hardware slot mapping for graphics processors
US20230195626A1 (en) * 2021-12-21 2023-06-22 Advanced Micro Devices, Inc. Variable dispatch walk for successive cache accesses
US11954757B2 (en) * 2021-12-28 2024-04-09 Advanced Micro Devices, Inc. Method and apparatus for implementing a rasterizer in GPU operations
GB2625152A (en) * 2022-12-09 2024-06-12 Advanced Risc Mach Ltd Graphics processor
GB2625288A (en) * 2022-12-12 2024-06-19 Advanced Risc Mach Ltd Graphics processing systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120320069A1 (en) * 2011-06-17 2012-12-20 Samsung Electronics Co., Ltd. Method and apparatus for tile based rendering using tile-to-tile locality
CN103871020A (zh) * 2012-12-17 2014-06-18 Arm有限公司 图形处理系统中的隐藏面消除
CN104715503A (zh) * 2013-12-13 2015-06-17 想象技术有限公司 图形处理系统中的基元处理
CN105139330A (zh) * 2014-05-29 2015-12-09 想象技术有限公司 向图元块分配图元

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5794016A (en) * 1995-12-11 1998-08-11 Dynamic Pictures, Inc. Parallel-processor graphics architecture
JP3224782B2 (ja) * 1998-08-03 2001-11-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 処理分担動的変更方法及びコンピュータ
US7176914B2 (en) * 2002-05-16 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for directing the flow of data and instructions into at least one functional unit
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
KR100668302B1 (ko) * 2004-07-28 2007-01-12 삼성전자주식회사 비디오 디코더/엔코더에서의 메모리 맵핑 장치 및 그 방법
US7460126B2 (en) * 2004-08-24 2008-12-02 Silicon Graphics, Inc. Scalable method and system for streaming high-resolution media
GB0723537D0 (en) * 2007-11-30 2008-01-09 Multi-core rasterisation in a tile based rendering system7743180001
GB0900700D0 (en) * 2009-01-15 2009-03-04 Advanced Risc Mach Ltd Methods of and apparatus for processing graphics
US8325186B2 (en) * 2009-05-21 2012-12-04 Sony Computer Entertainment America Llc Method and apparatus for rendering shadows
GB2494903B (en) * 2011-09-22 2017-12-27 Advanced Risc Mach Ltd Graphics processing systems
US9501859B2 (en) * 2013-07-19 2016-11-22 Adobe Systems Incorporated Triangle rasterization
GB2520366B (en) * 2013-12-13 2015-12-09 Imagination Tech Ltd Primitive processing in a graphics processing system
US9542221B2 (en) * 2014-05-22 2017-01-10 Oracle International Corporation Dynamic co-scheduling of hardware contexts for parallel runtime systems on shared machines

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120320069A1 (en) * 2011-06-17 2012-12-20 Samsung Electronics Co., Ltd. Method and apparatus for tile based rendering using tile-to-tile locality
CN103871020A (zh) * 2012-12-17 2014-06-18 Arm有限公司 图形处理系统中的隐藏面消除
CN104715503A (zh) * 2013-12-13 2015-06-17 想象技术有限公司 图形处理系统中的基元处理
CN105139330A (zh) * 2014-05-29 2015-12-09 想象技术有限公司 向图元块分配图元

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
NVIDIA: ""NVIDIA’s Next Generation CUDA Compute Architecture:Fermi", 《HTTPS://WWW.NVIDIA.COM/CONTENT/PDF/FERMI_WHITE_PAPERS/NVIDIA_FERMI_COMPUTE_ARCHITECTURE_WHITEPAPER.PDF》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111492407A (zh) * 2017-12-19 2020-08-04 微软技术许可有限责任公司 用于绘图美化的系统和方法
CN111492407B (zh) * 2017-12-19 2023-09-12 微软技术许可有限责任公司 用于绘图美化的系统和方法
CN111353928A (zh) * 2018-12-21 2020-06-30 畅想科技有限公司 用于图形处理系统的经过变换的几何结构数据高速缓存
CN112017104A (zh) * 2019-05-30 2020-12-01 畅想科技有限公司 图形处理系统中的功能安全
CN112017104B (zh) * 2019-05-30 2022-06-14 畅想科技有限公司 用于执行基于图块的渲染的方法和图形处理系统
CN112116519A (zh) * 2019-06-19 2020-12-22 畅想科技有限公司 图形处理系统中的粗略深度测试
CN112116519B (zh) * 2019-06-19 2022-12-27 畅想科技有限公司 图形处理系统中的粗略深度测试
US11922566B2 (en) 2019-06-19 2024-03-05 Imagination Technologies Limited Coarse depth test in graphics processing systems
CN112529032A (zh) * 2019-09-19 2021-03-19 畅想科技有限公司 图形处理系统中分层级平铺基元的方法和平铺引擎
CN112529032B (zh) * 2019-09-19 2022-05-06 畅想科技有限公司 图形处理系统中分层级平铺基元的方法和平铺引擎
US11715175B2 (en) 2019-09-19 2023-08-01 Imagination Technologies Limited Hierarchical tiling in a graphics processing system using chain sorting of primitives

Also Published As

Publication number Publication date
EP3185217A3 (en) 2017-08-16
US10475228B2 (en) 2019-11-12
GB2559042A (en) 2018-07-25
CN106897143B (zh) 2022-02-25
GB201522540D0 (en) 2016-02-03
GB2540227B (en) 2018-01-17
US10210651B2 (en) 2019-02-19
EP3185217B1 (en) 2019-12-11
GB2540227A (en) 2017-01-11
GB201720325D0 (en) 2018-01-17
EP3185217A2 (en) 2017-06-28
US20170178386A1 (en) 2017-06-22
CN114443307A (zh) 2022-05-06
US20180322684A1 (en) 2018-11-08
US10055877B2 (en) 2018-08-21
GB2559042B (en) 2019-06-05
US20190139294A1 (en) 2019-05-09

Similar Documents

Publication Publication Date Title
CN106897143A (zh) 对图形处理系统中的处理引擎的区片分配
EP3142075B1 (en) Graphics processing method and system for processing sub-primitives
US11715175B2 (en) Hierarchical tiling in a graphics processing system using chain sorting of primitives
CN105809728B (zh) 在图形处理单元中渲染场景的视图
CN107169916B (zh) 用于simd处理的任务组合
CN104103084B (zh) 基于图块的图形系统以及其中的处理方法、装置和介质
CN101124613B (zh) 片段着色管线中增加按比例缩放性的图形处理子系统及方法
CN106504184B (zh) 用于处理子图元的图形处理方法和系统
CN110097621B (zh) 图形处理系统和在图形处理系统中处理基元的方法
CN110264557B (zh) 图形处理系统和在图形处理系统中处理基元的方法
CN107341283A (zh) 用于图块的控制流的生成
EP3161793B1 (en) Adaptive partition mechanism with arbitrary tile shape for tile based rendering gpu architecture
CN111508056B (zh) 利用扩展变换级掩码的图形处理系统
EP3866118B1 (en) Methods and tiling engines for tiling primitives in a graphics processing system
CN114723598A (zh) 图形处理系统和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant