CN105654553B - 图形处理器和执行基于图块的图形管线的方法 - Google Patents

图形处理器和执行基于图块的图形管线的方法 Download PDF

Info

Publication number
CN105654553B
CN105654553B CN201510567739.5A CN201510567739A CN105654553B CN 105654553 B CN105654553 B CN 105654553B CN 201510567739 A CN201510567739 A CN 201510567739A CN 105654553 B CN105654553 B CN 105654553B
Authority
CN
China
Prior art keywords
pipeline
tile
output
tiles
tessellated
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.)
Active
Application number
CN201510567739.5A
Other languages
English (en)
Other versions
CN105654553A (zh
Inventor
郑武坰
凯莎凡·瓦拉达拉帧
柳秀晶
朴贞爱
郑锡润
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN105654553A publication Critical patent/CN105654553A/zh
Application granted granted Critical
Publication of CN105654553B publication Critical patent/CN105654553B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

提供了图形处理器和执行基于图块的图形管线的方法。图形管线包括:合并管线,被配置为产生对象的图块列表,所述对象的图块列表指示对象的顶点、图元或补片属于哪个图块;渲染管线,被配置为基于在合并管线中产生的图块列表按图块渲染对象。合并管线和渲染管线中的每一个被配置为实现曲面细分管线。图形管线可被配置为在效率模式下进行操作,以通过在合并管线和渲染管线之一中执行曲面细分,或者通过设置新的较小的曲面细分因数,延迟或降低曲面细分。

Description

图形处理器和执行基于图块的图形管线的方法
本申请要求于2014年11月26日提交到韩国知识产权局的第10-2014-0166628号韩国专利申请的权益,所述韩国专利申请的公开通过引用完整地包含于此。
技术领域
本公开涉及图形处理器以及通过图形处理器执行基于图块的图形管线的方法。
背景技术
图形处理器(GPU)在计算设备中渲染图形数据。通常,GPU通过将与2维(2D)或3维(3D)对象相应的图形数据转换为2D像素表达来产生用于显示的帧。仅举几例,计算设备的示例包括PC、便携式电脑、电子游戏机、智能电话、平板装置、可穿戴装置。由于嵌入式装置的相对低的处理能力和高功耗,在嵌入GPU的装置(诸如智能电话、平板装置和可穿戴装置)中,难以提供由具有足够的存储空间和处理能力的工作站(诸如PC、便携式电脑和电子游戏机)实现的相同的图形处理性能。然而,由于诸如智能电话或平板装置的便携式装置的进来的广泛分布、世界范围的供应、以及这些装置的用户采用这些装置来进行图形增强应用(诸如玩游戏或观看内容(如电影或连续剧))的频率,GPU的制造商正在进行大量研究,以便即使在嵌入式装置中也提高GPU的性能和吞吐量,从而满足用户需求和预期。
发明内容
提供本发明内容以简化形式介绍以下在具体实施方式中进一步描述的构思的选择。本发明内容不意图区分请求保护的主题的关键特征和必要特征,也不意图用来帮助确定请求保护的主题的范围。
提供图形处理器以及通过图形处理器执行基于图块的图形管线的方法。
在一个总的方面,一种通过图形处理器对包括被划分为一个或更多个图块的对象的帧执行图形管线的方法包括:执行合并管线,所述合并管线包括:产生输出补片,确定包括输出补片的图块的数量,基于确定的图块的数量确定是否对输出补片执行曲面细分,以及基于是否执行曲面细分,对输出补片或输出补片的曲面细分的图元的图块列表进行合并;基于合并的图块列表按图块执行渲染管线。
执行合并管线的步骤可包括:当包括输出补片的图块的数量为1时,确定不对输出补片执行曲面细分。
执行合并管线的步骤还可包括:通过对输入补片执行外壳着色的外壳着色器来产生输出补片;对输出补片的图块列表进行合并;确定输出补片是否包括在一个图块中。
执行渲染管线的步骤还可包括:当输出补片包括在一个图块中时,使用输出补片的合并的图块列表来执行栅格化。
执行合并管线的步骤还可包括:当确定输出补片包括在至少两个图块中时,通过曲面细分器对输出补片进行曲面细分,以产生曲面细分的图元;通过域着色器对曲面细分的图元进行域着色;对曲面细分的图元的图块列表进行合并;执行渲染管线的步骤还可包括:使用曲面细分的图元的合并的图块列表来执行栅格化。
执行合并管线的步骤可包括:当输出补片包括在一个图块中时,存储输出补片的可视性流;当输出补片包括在至少两个图块中时,存储曲面细分的图元的可视性流。
在另一总的方面,一种对包括被划分为一个或更多个图块的对象的帧执行图形管线的计算设备包括:图形处理器(GPU),被配置为执行合并管线,所述合并管线包括:产生输出补片,确定包括输出补片的图块的数量,基于确定的图块的数量确定是否对输出补片执行曲面细分,基于是否执行曲面细分,对输出补片或输出补片的曲面细分的图元的图块列表进行合并,存储合并的图块列表,以及访问存储的合并的图块列表;基于合并的图块列表按图块执行渲染管线;存储器,被配置为存储合并的图块列表。
由GPU执行的合并管线还可包括:当包括输出补片的图块的数量为1时,确定不对输出补片执行曲面细分。
GPU还可包括外壳着色器,由GPU执行的合并管线还可包括:通过对输入补片执行外壳着色的外壳着色器来产生输出补片;对输出补片的图块列表进行合并;确定输出补片是否包括在一个图块中。
由GPU执行的渲染管线还可包括:当GPU确定输出补片包括在一个图块中时,使用输出补片的合并的图块列表来执行栅格化。
GPU还可包括域着色器和曲面细分器,由GPU执行的合并管线还可包括:当GPU确定输出补片包括在至少两个图块中时,对输出补片进行曲面细分,以产生曲面细分的图元;对曲面细分的图元进行域着色;对曲面细分的图元的图块列表进行合并;由GPU执行的渲染管线还可包括:使用曲面细分的图元的合并的图块列表来执行栅格化。
由GPU执行的合并管线可包括:当GPU确定输出补片包括在一个图块中时,存储输出补片的可视性流;当GPU确定输出补片包括在至少两个图块中时,存储曲面细分的图元的可视性流;存储器还被配置为存储可视性流。
在另一总的方面,一种通过图形处理器(GPU)对包括被划分为一个或更多个图块的对象的帧执行图形管线的方法包括:执行合并管线,所述合并管线包括:通过外壳着色器产生输出补片,使用与外壳着色器确定的第一曲面细分因数不同的第二曲面细分因数来对输出补片进行曲面细分,通过GPU基于包括使用第二曲面细分因数进行曲面细分的图元的图块的数量来确定是否使用第一曲面细分因数执行曲面细分,基于确定的结果对使用第一曲面细分因数进行曲面细分的图元或从外壳着色器输出的输出补片的图块列表进行合并;基于合并的图块列表按图块执行渲染管线。
执行合并管线的步骤可包括:当使用第二曲面细分因数进行曲面细分的图元包括在一个图块中时,对输出补片的图块列表进行合并。
第二曲面细分因数可小于第一曲面细分因数。
执行合并管线的步骤可包括:通过外壳着色器执行产生输出补片的外壳着色;确定第一曲面细分因数;通过曲面细分器使用小于第一曲面细分因数的第二曲面细分因数对输出补片执行曲面细分并且通过域着色器对输出补片执行域着色来产生使用第二曲面细分因数进行曲面细分的图元;通过GPU确定使用第二曲面细分因数进行曲面细分的图元是否包括在一个图块中;执行渲染管线的步骤可包括:当使用第二曲面细分因数进行曲面细分的图元包括在一个图块中时,使用输出补片的合并的图块列表来执行栅格化。
执行合并管线的步骤还可包括:当使用第二曲面细分因数进行曲面细分的图元包括在至少两个图块中时,通过曲面细分器使用第一曲面细分因数对输出补片执行曲面细分并且通过域着色器对输出补片执行域着色来产生使用第一曲面细分因数进行曲面细分的图元;执行渲染管线的步骤还可包括:通过使用使用第一曲面细分因数进行曲面细分的图元的合并的图块列表来执行栅格化。
执行合并管线的步骤还可包括:当使用第二曲面细分因数进行曲面细分的图元包括在一个图块中时,存储输出补片的可视性流;当使用第二曲面细分因数进行曲面细分的图元包括在至少两个图块中时,存储使用第一曲面细分因数进行曲面细分的图元的可视性流。
在另一总的方面,一种对包括被划分为一个或更多个图块的对象的帧执行图形管线的计算设备包括:包括外壳着色器的图形处理器(GPU),被配置为:执行合并管线,所述合并管线包括:通过外壳着色器产生输出补片,使用与外壳着色器确定的第一曲面细分因数不同的第二曲面细分因数对输出补片进行曲面细分,基于包括使用第二曲面细分因数进行曲面细分的图元的图块的数量来确定是否使用第一曲面细分因数执行曲面细分,基于确定的结果对使用第一曲面细分因数进行曲面细分的图元或从外壳着色器输出的输出补片的图块列表进行合并;基于合并的图块列表按图块执行渲染管线;存储器,被配置为存储合并的图块列表。
所述合并管线可包括:当使用第二曲面细分因数进行曲面细分的图元包括在一个图块中时,对输出补片的图块列表进行合并。
第二曲面细分因数可小于第一曲面细分因数。
在另一总的方面,一种通过图形处理器(GPU)执行图形管线的方法包括:执行合并管线,所述合并管线包括:对来自外壳着色器的输出补片进行合并,确定从外壳着色器输出的输出补片是否包括在多个图块中,当GPU确定输出补片包括在所述多个图块中时,调度所述多个图块的渲染顺序;基于调度的渲染顺序对所述多个图块执行按图块的渲染管线,所述渲染管线包括:对按渲染顺序调度的第一图块执行合并,从而产生与第一图块邻近的相邻图块的可视性流。
执行合并管线的步骤可包括:不对输出补片执行曲面细分。
执行合并管线的步骤还可包括:当外壳着色器对输入补片执行外壳着色时产生输出补片;对输出补片的列表进行合并;确定输出补片是否包括在多个图块中;当GPU确定输出补片包括在所述多个图块中时,确定与按渲染顺序的第一图块相应的第一图块。
执行渲染管线的步骤还可包括:对第一图块执行第一渲染管线;对相邻图块执行第二渲染管线,所述第二渲染管线包括:使用在第一渲染管线中产生的可视性流对相邻图块的可视顶点、可视图元和可视补片中的至少一个执行渲染。
在另一总的方面,一种执行图形管线的计算设备包括:包括外壳着色器的图形渲染器(GPU),被配置为:执行合并管线,所述合并管线包括:对来自外壳着色器的输出补片进行合并,确定从外壳着色器输出的输出补片是否包括在多个图块中,当GPU确定输出补片包括在所述多个图块中时,调度所述多个图块的渲染顺序;基于调度的渲染顺序对所述多个图块执行按图块的渲染管线,所述渲染管线包括:对按渲染顺序调度的第一图块执行合并,从而产生与第一图块邻近的相邻图块的可视性流;存储器,存储与第一图块邻近的相邻图块的可视性流。
GPU还可包括曲面细分器,合并管线包括不对输出补片进行曲面细分。
在执行合并管线的同时,当外壳着色器对输入补片执行外壳着色时GPU可产生输出补片;对输出补片的列表进行合并;确定输出补片是否包括在多个图块中;当GPU确定输出补片包括在多个图块中时,确定渲染顺序的第一图块。
GPU可对第一图块执行第一渲染管线,并对相邻图块执行第二渲染管线,所述第二渲染管线包括:使用在第一渲染管线中产生的可视性流对相邻图块的可视顶点、可视图元和可视补片中的至少一个执行渲染。
在另一总的方面,一种通过图形处理器(GPU)执行图形管线的方法包括:执行合并管线,所述合并管线包括:通过外壳着色器对使用与第一曲面细分因数不同的第二曲面细分因数进行曲面细分的图元进行合并,确定使用第二曲面细分因数进行曲面细分的图元是否包括在多个图块中,当GPU确定使用第二曲面细分因数进行曲面细分的图元包括在多个图块中时,调度所述多个图块的渲染顺序;基于调度的渲染顺序对所述多个图块执行按图块的渲染管线,所述渲染管线包括:对按渲染顺序调度的第一图块执行合并,从而产生与第一图块邻近的相邻图块的可视性流。
执行合并管线的步骤可包括:不基于第一曲面细分因数进行曲面细分。
第二曲面细分因数可小于第一曲面细分因数。
执行合并管线的步骤还可包括:通过外壳着色器执行外壳着色以产生输出补片;确定第一曲面细分因数;基于小于第一曲面细分因数的第二曲面细分因数,通过曲面细分器对输出补片执行曲面细分并且通过域着色器对输出补片执行域着色来产生使用第二曲面细分因数进行曲面细分的图元;对使用第二曲面细分因数进行曲面细分的图元的图块列表进行合并;确定使用第二曲面细分因数进行曲面细分的图元是否包括在多个图块中;当确定使用第二曲面细分因数进行曲面细分的图元包括在所述多个图块中时,确定与渲染顺序相应的第一图块。
执行渲染管线的步骤可包括:对第一图块执行第一渲染管线;对相邻图块执行第二渲染管线,所述第二渲染管线包括:基于在第一渲染管线中产生的可视性流对相邻图块的可视顶点、可视图元和可视补片中的至少一个执行渲染。
在另一总的方面,一种执行图形管线的计算设备包括:包括外壳着色器的图形处理器(GPU),被配置为:执行合并管线,所述合并管线包括:通过外壳着色器对使用与第一曲面细分因数不同的第二曲面细分因数进行曲面细分的图元进行合并,确定使用第二曲面细分因数进行曲面细分的图元是否包括在多个图块中,当GPU确定使用第二曲面细分因数进行曲面细分的图元包括在所述多个图块中时,调度所述多个图块的渲染顺序;基于调度的渲染顺序对所述多个图块执行按图块的渲染管线,所述渲染管线包括:对按渲染顺序调度的第一图块执行合并,从而产生与第一图块邻近的相邻图块的可视性流;存储器,存储与与第一图块邻近的相邻图块的可视性流。
合并管线可包括:基于第一曲面细分因数进行曲面细分。
第二曲面细分因数可小于第一曲面细分因数。
在执行合并管线的同时,GPU可通过外壳着色器执行外壳着色以产生输出补片;确定第一曲面细分因数;基于小于第一曲面细分因数的第二曲面细分因数,通过曲面细分器对输出补片执行曲面细分并且通过域着色器对输出补片执行域着色来产生使用第二曲面细分因数进行曲面细分的图元;对使用第二曲面细分因数进行曲面细分的图元的图块列表进行合并;确定使用第二曲面细分因数进行曲面细分的图元是否包括在多个图块中;当确定使用第二曲面细分因数进行曲面细分的图元包括在所述多个图块中时,确定与渲染顺序相应的第一图块。
GPU可对第一图块执行第一渲染管线,并可对相邻图块执行第二渲染管线,所述第二渲染管线包括:基于在第一渲染管线中产生的可视性流对相邻图块的可视顶点、可视图元和可视补片中的至少一个执行渲染。
在另一总的方面,一种其上记录有程序的非暂时性计算机可读记录介质,当计算机执行所述程序时,所述程序执行上述方法。
在另一总的方面,一种执行基于图块的图形管线的计算设备,包括图形处理器(GPU)和存储器,图形处理器包括:合并管线,被配置为产生对象的图块列表,所述对象的图块列表指示对象的顶点、图元或补片属于哪个图块;渲染管线,被配置为基于在合并管线中产生的图块列表按图块渲染对象;存储器存储图块列表,其中,合并管线和渲染管线中的每一个被配置为实现曲面细分管线,GPU被配置为在效率模式下进行操作,以通过在合并管线和渲染管线之一中执行曲面细分来延迟或降低曲面细分。
效率模式可使GPU在效率模式下进行操作,该效率模式通过执行以下操作中的一个操作来减少管线的数据吞吐量:在合并管线中对输出补片进行曲面细分;在合并管线中使用第一曲面细分因数和小于第一曲面细分因数的第二曲面细分因数中的一个对输出补片进行曲面细分;在渲染管线中使用第一曲面细分因数进行曲面细分;在渲染管线中渲染第一图块,并通过使用在渲染第一图块期间产生的可视性流对第一图块的相邻图块的可视顶点、可视图元和可视补片中的至少一个进行渲染来渲染相邻图块。
效率模式可使GPU确定以下数量中的一个数量:包括输出补片的图块的数量;包括使用小于第一曲面细分因数的第二曲面细分因数进行曲面细分的图元的图块的数量。
在另一总的方面,一种通过图形处理器(GPU)执行基于图块的图形管线的方法包括:在效率模式下操作GPU,以通过在合并管线和渲染管线之一中执行曲面细分来延迟或降低曲面细分;根据效率模式执行合并管线,以产生对象的图块列表,所述对象的图块列表指示对象的顶点、图元或补片属于哪个图块;根据效率模式执行渲染管线,以基于在合并管线中产生的图块列表来按图块渲染对象。
在效率模式下进行操作还可包括:使GPU在效率模式下进行操作,该效率模式通过执行以下操作中的一个操作来减少管线的数据吞吐量:在合并管线中对输出补片进行曲面细分;在合并管线中使用第一曲面细分因数和小于第一曲面细分因数的第二曲面细分因数中的一个对输出补片进行曲面细分;在渲染管线中使用第一曲面细分因数进行曲面细分;在渲染管线中渲染第一图块,并通过使用在渲染第一图块期间产生的可视性流对第一图块的相邻图块的可视顶点、可视图元和可视补片中的至少一个进行渲染来渲染相邻图块。
在效率模式下进行操作还可包括:使GPU确定以下数量中的一个数量:包括输出补片的图块的数量;包括使用小于第一曲面细分因数的第二曲面细分因数进行曲面细分的图元的图块的数量。
其他特征和方面从以下的具体实施方式、附图和权利要求将是清楚的。
附图说明
图1是示出计算设备的示例的示图。
图2是示出基于图块的渲染(TBR)的示例的示图。
图3、图4和图5是示出曲面细分管线的示例的示图。
图6是示出图1的GPU的详细硬件结构的示例的框图。
图7是示出选择通过GPU执行的各种类型的图形管线的示例的示图。
图8A和图8B是示出根据示例性实施例的图形处理性能与用于划分3D对象的图块的数量之间的关系的示例的示图。
图9是示出输出补片(output patch)的输出控制点与曲面细分的图元之间的关系的示例的示图。
图10是示出在GPU中执行的图形管线的示例的示图。
图11是示出用于在GPU中执行的图形管线的方法的示例的流程图。
图12是示出在GPU中执行的图形管线的另一示例的示图。
图13是示出用于在GPU中执行的图形管线的方法的示例的流程图。
图14是示出在GPU中执行的图形管线的另一示例的示图。
图15是示出用于在GPU中执行的图形管线的方法的示例的流程图。
图16是示出在GPU中执行的图形管线的另一示例的示图。
图17是示出用于在GPU中执行的图形管线的方法的示例的流程图。
图18是示出在GPU中执行的图形管线的另一示例的示图。
图19是示出用于在GPU中执行的图形管线的方法的示例的流程图。
图20是示出在GPU中执行的图形管线的另一示例的示图。
图21是示出用于在GPU中执行的图形管线的方法的示例的流程图。
图22是示出补片所属于的图块列表与曲面细分的图元所属于的图块列表基于对补片进行曲面细分的结果而不同的情况的示例的示图。
图23是示出在GPU中执行的图形管线的示例的示图。
图24是示出用于在GPU中执行的图形管线的方法的示例的流程图。
图25是示出计算装置的详细硬件结构的示例的框图。
图26A和图26B是示出用于选择将在GPU中被处理的图形管线的类型的条件的示例的示图。
图27A和图27B是示出描述用于选择将在GPU中被处理的图形管线的类型的条件的示例的示图。
图28是示出在图形管线中应用存储在存储器的二进制流(bin stream)中的可视性流的示例的示图。
图29是示出在图形管线中应用存储在存储器的二进制流中的可视性流的示例的示图。
图30是示出在合并管线完成之后存储在二进制流中的可视性流的示例的示图。
图31是示出在合并管线完成之后存储在二进制流中的可视性流的示例的示图。
图32是示出通过计算设备执行图形管线的方法的示例的组合的流程示意图和流程图。
图33是示出通过计算设备执行图形管线的方法的示例的组合的流程示意图和流程图。
图34是示出通过计算设备执行图形管线的方法的示例的组合的流程示意图和流程图。
图35是示出通过计算设备执行图形管线的示例方法的组合的流程示意图和流程图。
贯穿附图和具体实施方式,相同的标号指示相同的元件。为了清楚、说明和方便,附图可以不按比例绘制,并且附图中的元件的相对尺寸、比例和描绘可以被夸大。
具体实施方式
在这里使用的所有术语(包括描述性术语和技术术语)应该被解释为具有与本领域普通技术人员所理解的意思一致的意思。然而,例如,根据本领域普通技术人员的意图、先例以及新技术的出现,各种术语还可具有不同的意思。此外,一些术语可由申请人选择为具有如在本发明的以下具体实施方式中描述的特定意思。
在以下的描述中,当元件被描述为“连接到”另一元件时,所述元件可以不是“直接连接到”另一元件,而是可以经由位于所述元件与另一元件之间的另一装置或多个装置“电连接到”另一元件。此外,当部件“包括”元件时,除非另外说明,否则所述部件可以在不排除所述元件的情况下包括额外的元件。在以下的描述中,诸如“单元”或“模块”的术语指示用于处理至少一个功能或操作的元件,其中,单元和方框可被实施为硬件或硬件与软件的组合。
在以下的描述中,应该理解,诸如“包括”或“具有”的术语意图表示开放性术语,并且指示存在特征或组件;然而,所述术语并不意图排除可存在或可添加一个或更多个额外的特征或组件的可能性。
应该理解,虽然术语“第一”、“第二”等在这里可用于在各种组件之间进行区分,但是除非具体说明,否则这些组件并不意图暗示顺序,或者另外被这些术语所限制。
当诸如“…中的至少一个”的表述在一列元件之后时,该表述修饰整个一列元件,而不是修饰这一列元件中的单独的元件。
这里描述的特征可以以不同的形式被实施,并且不被解释为限于这里描述的示例。相反,提供这里描述的示例,以使本公开将是彻底和完整的,并将本公开的完整范围传达给本领域的普通技术人员。
图1是示出根据一个示例性实施例的计算设备的示例的示图。
参照图1,计算设备1包括图形处理器(GPU)10、中央处理器(CPU)20、存储器30和总线40。计算设备1的组件是示例性的,如本领域技术人员所理解的那样,除了图1中示出的组件之外,计算设备1还可包括附加的通用组件。
可使用计算设备1实现的各种装置的示例包括台式计算机、膝上型计算机、智能电话、个人数字助理(PDA)、便携式媒体播放器、电子游戏机、电视机顶盒、平板装置、电子书阅读器和可穿戴装置,但是不限于此。此外,计算设备1可被实现为具有提供内容显示的图形处理功能的任何装置或设备,并且计算设备1的种类可包括各种设备。
CPU 20是控制计算设备1的整体操作和功能的硬件。例如,CPU 20执行操作系统(OS),调用用于GPU 10的图形应用程序接口(API),并执行GPU 10的驱动程序。此外,CPU 20可执行存储在存储器30中的各种应用,例如,网页浏览应用、游戏应用和视频应用等。
GPU 10是执行图形管线的图形专用处理器。在一个示例中,GPU 10可被实现为执行3维(3D)图形管线以将3D图像的3D对象显示为用于进行显示的2D图像的硬件。例如,GPU10可执行各种功能,诸如着色、混合、光照以及产生将被显示的像素的像素值。
在一个示例中,GPU 10可运行基于图块的图形管线或基于图块的渲染(TBR)。在这个上下文中,术语“基于图块”表示运动图像的每帧被分割或划分为多个图块并且按图块执行渲染。因为与按像素处理帧相比,基于图块的构架可具有低的吞吐量,所以具有低处理性能的移动装置或其他嵌入式装置(诸如智能电话或平板装置)可使用基于图块的构架作为图形渲染方法。
参照图1,CPU 10运行包括合并管线101和渲染管线102的图形管线。合并管线101是产生指示构成2D对象或3D对象的顶点、图元或补片(patch)包括在哪个图块的图块列表的处理。因此,诸如图块化管线或合并阶段的其他术语也包含在合并管线的意思之中。渲染管线102是基于在合并管线101中产生的图块列表来按图块渲染对象的处理。当渲染管线102完成时,可确定将被显示在2D屏幕上的2D对象或3D对象的像素表达。诸如渲染阶段的其他术语也包含在渲染管线102的意思之中。
合并管线101和渲染管线102中的每一个可包括曲面细分管线。换句话说,GPU 10可执行延迟的曲面细分。包括微软的DirectX11(DX11)API或为OpenGL 4.0 API的图形管线包括用于对图形图元(或图形补片)进行曲面细分的附加的处理阶段。曲面细分是将图形补片划分为比图形补片更小的图形图元以使具有更细微的细节的图像可以被显示的处理。包括由计算设备1的GPU 10执行的合并管线101和渲染管线102的图形管线可支持这样的曲面细分。在下文中描述的一个或更多个示例性实施例可由GPU 10来执行。
存储器30是存储在计算设备1中处理的各种类型的数据的硬件。例如,存储器30可存储GPU 10和CPU 20处理的数据或者将被GPU 10和CPU 20处理的数据。此外,存储器30可存储将被GPU 10和CPU 20执行的应用和驱动程序。存储器30可包括随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM))、只读存储器(ROM)、电可擦写可编程只读存储器(EEPROM)、CD-ROM、蓝光或另外的光盘存储装置、硬盘驱动(HDD)、固态驱动(SSD)或闪存,此外,存储器30可包括可由计算设备1访问的外部存储装置。
总线40是连接计算设备1中的各个硬件以使各个硬件彼此发送或接收数据的硬件。总线40的示例包括外围组件互连(PCI)总线或PCI Express总线。
这里描述的合并管线101包括合并管线101-1、101-2、101-3或101-4(如图7所示以及以下进一步详细描述)。例如,合并管线101可对应于合并管线101-1至101-4中的任何一个。此外,渲染管线102(也如在图7所示以及以下进一步详细描述)包括渲染管线102-1、102-2、102-3或102-4。渲染管线102可对应于渲染管线102-1至102-4中的任何一个。
图2是包括用于描述TBR的示例的示图。图2包括呈现包括多个图块210的对象220的帧200。在一个示例中,对象220可以是3D对象,诸如在运动图像的一帧200中呈现的汽车对象220。GPU 10将包括3D汽车对象220的帧200划分为N×M个图块210,其中,N和M均为自然数。在本示例中,合并管线101将包括汽车对象220的帧划分为图块210并确定哪些图块210包括汽车对象220。GPU 10按图块渲染汽车对象220以将汽车对象220转换为像素表达。例如,渲染管线102按图块渲染汽车对象220以将汽车对象220转换为像素表达。这样,在TBR中,包括在一帧中的汽车对象220不是按像素被渲染,而是通过使用图块210按图块被渲染。
图3、图4和图5提供帮助示出曲面细分管线的示例。图3、图4和图5彼此结合。参照图3、图4和图5描述的曲面细分管线300可包括如上所述的图1的合并管线101和渲染管线102,或者合并管线101和渲染管线102的各种修改的示例。
参照图3,通过外壳着色器121、曲面细分器123和域着色器125来执行曲面细分管线300。换句话说,这里描述的曲面细分管线300可包括由外壳着色器121执行的外壳着色、由曲面细分器123执行的曲面细分和由域着色器125执行的域着色的处理(或阶段)中的至少一个阶段。
外壳着色器121将表示低阶表面的输入控制点转换为形成补片的输出控制点。例如,外壳着色器121可转换输入控制点以产生具有网格形状的输出补片410,包括如图4所示的控制点P00、P01、P02、P03、P10、P11、P12、P13、P20、P21、P22、P23、P30、P31、P32和P33。这里,输出补片410具有多边形形状,诸如三角形、矩形或等值线形状。
外壳着色器121可产生构成补片的输出控制点。与此同时,外壳着色器121还可确定曲面细分因数TF或曲面细分等级TL。曲面细分因数TF或曲面细分等级TL是指示补片将被划分成多少个以及补片将被如何划分的索引。如图5所示,示例性表格500定义曲面细分因数TF域和将被划分的三角形的数量之间的关系。根据表格500,当曲面细分因数TF为1时,三角形的数量为1,因此可不对补片执行曲面细分。然而,随着曲面细分因数TF增大,三角形的数量呈几何级数增大。当将被划分的三角形的数量随着曲面细分因数TF的增大而增大时,GPU 10执行的关于补片的吞吐量也增大。当曲面细分因数TF增大时,对象的补片的表达会更平滑。在图5的表格500提供的示例中,将被划分的多边形为三角形,但是可使用其他多边形(诸如矩形或等值线)来划分补片。
外壳着色器121将关于输出补片的输出控制点的信息以及曲面细分因数TF发送到曲面细分器123和域着色器125。
曲面细分器123使用从外壳着色器121接收的曲面细分因数TF来计算输出控制点的关于重心坐标系的uvw坐标和权重。
域着色器125使用从外壳着色器121接收的信息、由曲面细分器123计算的uvw坐标(其中,w坐标为可选项)和权重来产生曲面细分的顶点。参照图4,曲面细分的顶点的位置形成边界420。通过执行曲面细分管线300,输出补片410可被转换为顶点(或图元),以形成更平滑的边界420。
图6是示出图1的GPU 10的详细硬件结构的示例的框图。
参照图6,GPU 10包括图形管线100、控制器170和缓冲器180。图形管线包括输入装配器110、顶点着色器115、外壳着色器121、曲面细分器123、域着色器125、几何着色器130、合并器135、栅格化器140、像素着色器150和输出合并器160。在GPU 10执行图形管线100的组件可基于以下进一步详细描述的功能被分类。执行图形管线100的每个组件被实现为由GPU 10运行以执行特定功能的程序逻辑或软件模块。在另一示例中,执行图形管线100的组件可被实现为包括在GPU 10中的子处理单元或处理器核。换句话说,这里提供的执行图形管线100的组件的各种配置是示例,并且不应被认为是限制于此。此外,执行图形管线100的组件的术语基于它们执行的功能而被指定,但是本领域普通技术人员将会理解,这些术语可以改变。例如,根据一个示例性实施例,合并器135和控制器170可以是单独的组件,但是根据另一示例性实施例,合并器135作为处理器170的一部分而被包括,从而由GPU 10提供控制器170,而没有单独的合并器。
为了便于描述,在GPU 10中执行图形管线100的组件的以下示例使用与由微软DirectX(例如,DX11)提供的应用程序接口(API)相关创立的术语,然而,与这里描述的组件结合使用的术语不限于此。换句话说,在GPU 10中执行图形管线100的组件还可对应于在另一API(诸如开放图形库(OpenGL)4.0或统一计算设备架构(CUDA)6.0)中创立的相似组件。例如,域着色器125可对应于在OpenGL 4.0中描述的曲面细分估计着色器,并且本领域普通技术人员应该理解,GPU 10的其他组件可对应于在其他API(诸如OpenGL 4.0或CUDA 6.0)中使用的组件。
输入装配器110将存储在存储器30中的关于对象的顶点的数据提供给图形管线100。提供给图形管线100的顶点可对应于补片,例如,网格或表面表达,但是不限于此。
顶点着色器115将输入装配器110提供的顶点作为外壳着色器121的输入控制点来发送。例如,在DX9中定义的顶点着色对顶点执行世界示图投影。然而,在引进了曲面细分管线的DX11中定义的顶点着色不对顶点执行世界示图投影,而仅将顶点发送到下一阶段。根据当前实施例的顶点着色器115可以以相似的方式操作。换句话说,顶点着色器115仅将与输入装配器110提供的顶点相应的输入控制点发送到外壳着色器121,而不产生新的控制点。
外壳着色器121、曲面细分器123和域着色器125可执行以上参照图3描述的曲面细分管线300。换句话说,输入到外壳着色器121的输入控制点可被域着色器125输出为包围输出补片的曲面细分的顶点(或曲面细分的图元)。
几何着色器130是可用于从自域着色器125接收的曲面细分的顶点(或曲面细分的图元)产生附加的顶点(或图元)的可选组件。
合并器135使用来自域着色器125或几何着色器130的输出图元来执行合并或图块化。换句话说,合并器135通过执行深度测试(或图块Z测试)产生(合并)指示关于输出图元所属于的每个图块的信息的图块列表。根据另一示例,合并器135可以是包括在控制器170中的组件。
栅格化器140基于产生的图块列表将来自域着色器125或几何着色器130的输出图元转换为2D空间中的像素值。像素着色器150可对像素执行附加的操作,诸如深度测试、裁剪、剪切和混合。由像素着色器150执行的像素着色的结果可通过输出合并器160被存储在存储器180中,并作为运动图像的帧被显示。
控制器170控制执行图形管线100的组件以及缓冲器180的整体功能和操作。此外,控制器170可控制如下参照图7描述的图形管线100的模式。
图7是示出由GPU 10执行的各种类型的图形管线的选择的示例的示图。
参照图7,图形管线可根据在下文中描述的各种实施例在模式①至模式⑧下进行操作,并且控制器170可控制将由GPU 10执行管线之中的哪个管线。
详细地,控制器170可开启或关闭提供在模式①至模式⑧下进行操作的一个或更多个管线的效率模式。效率模式的开启和关闭可由计算设备的用户设置,或者可取决于将被图形管线处理的运动图像的处理环境(例如,计算设备1的分辨率、能力或性能)。
当效率模式关闭时,控制器170执行普通的图形管线109。这里,普通的图形管线109可使用公知的图形管线(诸如由DX9、DX10、DX11、CUDA6.0或OpenGL 4.0提供的图形管线)中的任何一种来实现,因此以下不再详细描述。
当效率模式开启时,控制器170可执行模式①至模式⑧下的图形管线中的任何一个。模式①至模式⑧可以以多种方式来选择。例如,模式可由计算设备1的用户设置,或者选择的模式可取决于将被图形管线处理的运动图像的处理环境(例如,计算设备1的图块尺寸、分辨率、能力或性能)。在模式①下,控制器170控制包括由GPU 10执行的合并管线101-1和渲染管线102-1的图形管线。在模式②下,控制器170控制包括由GPU 10执行的合并管线101-2和渲染管线102-1的图形管线。在模式③下,控制器170控制包括由GPU 10执行的合并管线101-3和渲染管线102-1的图形管线。在模式④下,控制器170控制包括由GPU 10执行的合并管线101-4和渲染管线102-1的图形管线。在模式⑤下,控制器170控制包括由GPU 10执行的合并管线101-3和渲染管线102-2的图形管线。在模式⑥下,控制器170控制包括由GPU10执行的合并管线101-4和渲染管线102-2的图形管线。在模式⑦下,控制器170控制包括由GPU 10执行的合并管线101-3、第一渲染管线102-3和第二渲染管线102-4的图形管线。在模式⑧下,控制器170控制包括由GPU 10执行的合并管线101-4、第一渲染管线102-3和第二渲染管线102-4的图形管线。在下文中,详细描述在模式①至模式⑧下进行操作的图形管线的各种示例性实施例。
图8A和图8B是示出图形处理性能(或效率)与划分3D对象的图块的数量之间的关系的示例的示图。
图8A示出3D对象815被划分为10×10的图块810的示例,图8B示出3D对象815被划分为2×2的图块820的示例。因为GPU 10按图块执行基于图块的渲染或基于图块的图形管线,所以可对100个图块执行关于图8A的3D对象815的渲染。另一方面,可对4个图块执行关于图8B的3D对象815的渲染。在图8A中,仅有大约1/3的图块810与3D对象815重叠。其结果是,可对其他2/3的图块810跳过渲染;然而,必须对100个图块810预先执行合并(或图块化)。另一方面,因为图8B的4个图块820均与3D对象815重叠,所以使用可对4个图块820执行并行的图形处理。
目前,许多GPU被制造为具有单指令多线程(SIMT)架构。SIMT架构是用于实现使用一个程序处理大量数据的单程序多数据(SPMD)处理器的多种方法之一。SIMT架构能够使用少量控制硬件处理大量数据,但是由于难以处理线程发散,所以处理效率会降低。
与在图8A和图8B中提供的示例相比,SIMT架构可在针对图8A的100个图块810产生并处理100个线程之后完成操作;然而,SIMT架构可在针对图8B的4个图块820产生并处理仅4个线程之后完成操作。因为包括在图8A中的一个图块中的一个图块的尺寸和对象的尺寸小于包括在图8B中的一个图块中的一个图块的尺寸和对象的尺寸,所以在图8A中将被处理的图形数据可少于在图8B中将被处理的图形数据。然而,因为线程发散增加,所以与图8B中示出的更少的图块820相比,如图8A所示将3D对象815划分为多个图块810不会是必然有利的。许多最近开发的使用SIMT架构实现的GPU倾向于使用大的图块尺寸。
图9是示出输出补片的输出控制点与曲面细分的图元之间的关系的示例的示图。
如以上参照图8所述,当GPU 10使用大的图块尺寸时,3D对象的输出补片410包括在图块901(例如,图块0)可能性会增加。在图1的合并管线101中的曲面细分管线通过对包括输出控制点415的输出补片410进行曲面细分产生更多数量的曲面细分的图元425,并对曲面细分的图元425执行合并(或图块化)。如图9所示,即使包括图块901中提供的输出控制点415的输出补片410在曲面细分管线中被处理,由曲面细分的图元425形成的边界420也可与由输出补片410形成的边界相似地位于图块902之内,这是因为,GPU 10的图形管线可被编程为使得由曲面细分的图元425形成的边界420位于由输出补片410形成的边界之内。如果不是这样,则可通过编译器来调试图形管线。
作为对包括输出控制点415的输出补片410执行合并(或图块化)的结果的图块901可以与作为对曲面细分的图元425执行合并的结果的图块902(图块0)相同。因此,即使曲面细分器123跳过合并管线101中的曲面细分管线的曲面细分,也可假设合并管线101的最终结果与曲面细分器123不跳过曲面细分的结果相同。
相同的假设对于用于输出控制点415的输出补片410的曲面细分因数TF或曲面细分等级TL是有效的。例如,由通过较低的曲面细分因数(例如,TF=3)产生的曲面细分的图元形成的边界包括在由通过较高的曲面细分因数(例如,TF=13)产生的曲面细分的图元形成的边界中。因此,即使合并管线101被设置为使用新的、较低的曲面细分因数(例如,TF=3),而不是使用由外壳着色器121确定的较高的曲面细分因数(例如,TF=13)来执行曲面细分管线,由新设置的较低的曲面细分因数造成的合并(图块化)也可与较高的曲面细分因数造成的合并(图块化)相同。
同时,设计并检验将在GPU 10中被驱动的图形管线的编译器可调试并非如图9所述进行操作的任何图形管线,并将所述图形管线编译为如图9所述进行操作。
在下文中参照图10至图21描述的以下实施例可基于以上描述进行操作,但不限于此。
图10是示出在GPU 10执行的图形管线的示例的示图。
参照图10,包括合并管线101-1和渲染管线102-1的图形管线在以上参照图7描述的模式①下进行操作。参照以上关于图6描述的GPU 10的硬件组件来描述图10的图形管线;然而,仅详细描述与当前示例相关的组件以及管线阶段。因此,本领域普通技术人员将理解,还可包括除了参照图10描述的组件和管线阶段以外的通用组件和管线阶段。
顶点着色器115使用存储在存储器30中的顶点1001来执行顶点着色1011。顶点着色器115将顶点1001转换为输入到外壳着色器121的控制点。
外壳着色器121执行外壳着色1012,以将表达低阶表面的输入控制点转换为形成补片的输出控制点。外壳着色器121可在产生输出控制点的同时确定曲面细分因数TF。外壳着色器121将关于输出补片的输出控制点的信息发送到几何着色器130或合并器135。
如以上参照图3所述,曲面细分管线300包括外壳着色器121、曲面细分器123和域着色器125的全部阶段,但是因为如以上参照图9所述,输出补片410的合并结果可以与曲面细分的图元425的合并结果相同,所以如图10所示,曲面细分器123和域着色器125的阶段可被跳过。
几何着色器130是执行几何着色1013以产生除了从外壳着色器121输出的输出补片的输出控制点以外的附加顶点(或图元)的可选组件。因此,几何着色1013也可被跳过。
当几何着色1013被跳过时,合并器135使用从外壳着色器121接收的输出补片的输出图元来执行合并1014或图块化。如果几何着色1013被执行,则合并器135使用从几何着色器130接收的输出补片的输出图元来执行合并1014或图块化。例如,合并器135使用用于预测图块列表的深度测试(或图块Z测试)来执行合并1014。图块列表指示关于输出补片的输出图元所属于的图块的信息。这里,合并的图块列表可作为可视性流存储在存储器30的二进制流(bin stream)1012中。可视性流是指示输入补片、输入控制点、输入图元、输出补片、输出控制点或输出图元是否从图块可见的流。输入补片、输入控制点或输入图元的可视性流可被定义为输入可视性流,输出补片、输出控制点或输出图元的可视性流可被定义为输出可视性流。
合并器135基于执行合并1014的结果确定从外壳着色器121输出的输出补片的输出图元是否包括在一个图块中。当确定输出图元包括在一个图块中时,合并器135将可视性流存储在二进制流1002中。存储的可视性流指示输出图元根据通路①包括在一个图块中,并且对输出补片执行的合并管线101-1完成。其结果是,由曲面细分器123执行的曲面细分1015以及由域着色器125执行的域着色1016在通路①中可被跳过。
另一方面,当确定输出图元不是包括在一个图块中时,根据通路②,合并器135控制曲面细分器123对输出补片执行曲面细分1015。合并器135还控制域着色器125对输出补片执行域着色1016。换句话说,仅在合并器135确定输出图元不是包括在一个图块中时执行通路②。
曲面细分器123使用从外壳着色器121接收的曲面细分因数TF执行曲面细分1015,以计算在重心坐标系中输出控制点的uvw坐标和权重。
除了从外壳着色器121接收的关于输出控制点的信息和曲面细分因数TF之外,域着色器125使用从曲面细分器123接收的uvw坐标(其中,w坐标是可选的)和权重来执行域着色1016,以产生曲面细分的顶点(或曲面细分的图元)。
几何着色器130是可用于执行几何着色1017以从自域着色器125接收的曲面细分的顶点(或曲面细分的图元)产生附加的顶点(或图元)的可选组件。几何着色1017也可在通路②中被跳过。
根据通路②,合并器135使用从域着色器125或几何着色器130输出的曲面细分的图元(或曲面细分的顶点)执行合并1018或图块化。换句话说,合并器135执行合并,以通过执行深度测试(或图块Z测试)来预测指示关于曲面细分的图元(或曲面细分的顶点)所属于的图块的信息的图块列表。在本示例中,合并的图块列表可作为可视性流存储在存储器30的二进制流1002中。
当合并管线101-1完成时,GPU 10按图块执行渲染管线102-1。渲染管线102-1可包括由以上参照图6描述的图形管线100的输入装配器110、顶点着色器115、外壳着色器121、曲面细分器123、域着色器125、几何着色器130、合并器135、栅格化器140、像素着色器150和输出合并器160执行的阶段。
因为如果输出补片的输出图元包括在一个图块中,则曲面细分器123执行的曲面细分1015可被跳过,所以上述根据模式①操作的图10的合并管线101-1可不产生曲面细分的顶点(或曲面细分的图元)。因此,与如图3所示的曲面细分管线300(其中,曲面细分器123必定执行曲面细分)的吞吐量相比,图形数据的吞吐量降低。
图11是示出用于由GPU 10执行的图形管线的方法的示例的流程图。执行图11中示出的方法的图形管线是包括根据模式①操作的合并管线101-1和渲染管线102-1的图10的图形管线。因此,即使在以下描述中被省略,图10的描述也可应用于图11的描述。
在操作1101,顶点着色器115使用存储在存储器30中的顶点1001执行顶点着色1011。
在操作1102,外壳着色器121执行外壳着色1012以将输入控制点转换为输出控制点,从而形成输出补片。外壳着色器121产生输出控制点,并可同时确定曲面细分因数TF。外壳着色器121将关于输出补片的输出控制点的信息发送到合并器135。
在操作1103,合并器135使用输出补片的输出图元执行合并1014或图块化。
在操作1104,合并器135基于执行合并1014的结果确定从外壳着色器121输出的输出图元是否包括在一个图块中。合并1014预测指示关于输出图元所属于的图块的信息的图块列表。当确定输出图元包括在一个图块中时,直接执行操作1105,当确定输出图元不是包括在一个图块中时,在执行操作1105之前,执行操作1107、1108和1109。
在操作1105(通路①),合并的图块列表的可视性流被存储在存储器30的二进制流1002中。
在操作1106,栅格化器140、像素着色器150和输出合并器160执行渲染管线102-1。这里,与合并管线101-1相同,渲染管线102-1可包括由输入装配器110、顶点着色器115、外壳着色器121、曲面细分器123、域着色器125和几何着色器130执行的阶段。
在操作1107(通路②),曲面细分器123使用从外壳着色器121接收的曲面细分因数TF执行曲面细分1015,并计算在重心坐标系中输出控制点的uvw坐标和权重。
在操作1108,域着色器125使用从外壳着色器121接收的关于输出控制点的信息、曲面细分因数TF、从曲面细分器123接收的uvw坐标(其中,w坐标是可选的)和权重来执行域着色1016,以产生曲面细分的顶点(或曲面细分的图元)。
在操作1109,合并器135使用曲面细分的图元(或曲面细分的顶点)执行合并1018或图块化。合并1018通过执行深度测试(或图块Z测试)来预测指示关于曲面细分的图元(或曲面细分的顶点)所属于的图块的信息的图块列表。在操作1109之后,在操作1105,合并的图块列表的可视性流被存储在存储器30的二进制流1002中,并且在操作1106,栅格化器140、像素着色器150和输出合并器160执行渲染管线102-1(如上所述)。
图12是示出在GPU 10中执行的图形管线的另一示例的示图。
参照图12,包括合并管线101-2和渲染管线102-1的图形管线在以上参照图7描述的模式②下进行操作。关于图6中示出的GPU 10的硬件组件来描述图12的图形管线,其中,仅详细描述与示例性实施例相关的组件以及管线阶段。因此,本领域普通技术人员将理解,还可包括除了关于图12描述的组件和管线阶段以外的通用组件和管线阶段。
顶点着色器115使用存储在存储器30中的顶点1201来执行顶点着色1211。顶点着色器115转换顶点1201并将转换的顶点1201作为控制点输入到外壳着色器121。
外壳着色器121执行外壳着色1212,以将表达低阶表面的输入控制点转换为形成补片的输出控制点。外壳着色器121可同时产生输出控制点并确定第一曲面细分因数。
曲面细分器123从外壳着色器121接收第一曲面细分因数,并设置小于第一曲面细分因数的新的第二曲面细分因数。随后,曲面细分器123使用第二曲面细分因数执行曲面细分1213以计算在重心坐标系中输出控制点的uvw坐标和权重。
如上所述,参照图3中示出的曲面细分管线300,曲面细分器123使用由外壳着色器121确定的曲面细分因数TF。然而,如以上参照图9所述,即使曲面细分器123使用小于由外壳着色器121确定的第一曲面细分因数的第二曲面细分因数,曲面细分器123也可获得相同的合并结果。换句话说,即使当使用小的曲面细分因数时,因为产生较少数量的图元(三角形),所以GPU 10的吞吐量减少,GPU 10也可获得相同的合并结果。
域着色器125使用关于输出控制点的信息、从曲面细分器123接收的第二曲面细分因数、uvw坐标(其中,w坐标是可选的)和权重来执行域着色1214,以产生曲面细分的顶点(或曲面细分的图元)。
几何着色器130是可执行几何着色1219,以从自域着色器125接收的曲面细分的顶点(或曲面细分的图元)产生附加顶点(或图元)的可选组件。因此,几何着色1215可被跳过。
合并器135利用使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)来执行合并1216或图块化。合并1216包括深度测试(或图块Z测试),深度测试(或图块Z测试)预测指示关于使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)所属于的图块的信息的图块列表。
基于合并1216的结果,合并器135确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)是否包括在一个图块中。
当确定曲面细分的图元(或曲面细分的顶点)包括在一个图块中时,合并器135根据通路①将具有指示使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)包括在一个图块中的信息的可视性流存储在二进制流1202中,并且使用第二曲面细分因数的合并管线101-2完成。换句话说,因为使用小于外壳着色器121确定的第一曲面细分因数的第二曲面细分因数的合并管线101-2完成,所以可能与使用第一曲面细分因数相比,GPU 10完成具有更少吞吐量的合并管线101-2。
当确定曲面细分的图元(或曲面细分的顶点)不是包括在一个图块中时,合并器135根据通路②执行曲面细分1217。
根据通路②,曲面细分器123使用由外壳着色器121确定的第一曲面细分因数,而不是第二曲面细分因数来执行曲面细分1217,以计算在重心坐标系中输出控制点的uvw坐标和权重。
域着色器125使用关于输出控制点的信息、第一曲面细分因数、从曲面细分器123接收的uvw坐标(其中,w坐标是可选的)和权重来执行域着色1218,以产生曲面细分的顶点(或曲面细分的图元)。
几何着色器130是可执行几何着色1219,以从自域着色器125接收的曲面细分的顶点(或曲面细分的图元)产生附加顶点(或图元)的可选组件。因此,几何着色1219可被跳过。
合并器135利用使用第一曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)来执行合并1220或图块化。合并1220执行深度测试(或图块Z测试),以预测指示关于使用第一曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)所属于的图块的信息的图块列表。随后,合并器135将曲面细分的图元(或曲面细分的顶点)的可视性流存储在二进制流1202中,从而完成使用第一曲面细分因数的合并管线101-2。
一旦合并管线101-2完成,GPU 10就按图块执行渲染管线102-1。渲染管线102-1可包括由以上参照图6描述的图形管线100的输入装配器110、顶点着色器115、外壳着色器121、曲面细分器123、域着色器125、几何着色器130、合并器135、栅格化器140、像素着色器150和输出合并器160执行的阶段。
因为执行曲面细分1213的曲面细分器123使用小的曲面细分因数,所以上述根据模式②操作的图13的合并管线101-2可产生较少数量的曲面细分的顶点(或曲面细分的图元)。因此,与图3中示出的曲面细分管线300的吞吐量相比,图形数据的吞吐量可降低。
图13是示出用于在GPU 10中执行的图形管线的另一方法的示例的流程图。图13中示出的方法可用于执行包括根据模式②进行操作的合并管线101-2和渲染管线102-1的图12中示出的图形管线。因此,即使这里省略,图12的描述也可应用于图13的描述。
在操作1301,顶点着色器115使用存储在存储器30中的顶点1201来执行顶点着色1211。
在操作1302,外壳着色器121执行外壳着色1212,以将输入控制点转换为输出控制点,从而形成输出补片。外壳着色器121同时产生输出控制点并确定第一曲面细分因数。
在操作1303,曲面细分器123使用小于外壳着色器121确定的第一曲面细分因数的第二曲面细分因数对输出控制点执行曲面细分1213。
在操作1304,域着色器125使用关于输出控制点的信息、从曲面细分器123接收的第二曲面细分因数、uvw坐标(其中,w坐标是可选的)和权重来执行域着色1214,以产生曲面细分的顶点(或曲面细分的图元)。
在操作1305,合并器135利用使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)来执行合并1216或图块化。
在操作1306,合并器135基于合并1216的执行结果确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)是否包括在一个图块中。当合并器135确定曲面细分的图元(或曲面细分的顶点)包括在一个图块中时,执行操作1307,当合并器135确定曲面细分的图元(或曲面细分的顶点)不是包括在一个图块中时,执行操作1309。
在操作1307,合并器135将指示使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)包括在一个图块中的信息的可视性流存储在二进制流1202中。
在操作1308,栅格化器140、像素着色器150和输出合并器160执行渲染管线102-1。这里,与合并管线101-2相同,渲染管线102-1可包括由输入装配器110、顶点着色器115、外壳着色器121、曲面细分器123、域着色器125和几何着色器130执行的阶段。
在操作1309,曲面细分器123使用由外壳着色器121确定的第一曲面细分因数,而不是第二曲面细分因数来对输出控制点执行曲面细分1217,
在操作1310,域着色器125使用关于输出控制点的信息、第一曲面细分因数、从曲面细分器123接收的uvw坐标(其中,w坐标是可选的)和权重来执行域着色1218,以产生曲面细分的顶点(或曲面细分的图元)。
在操作1311,合并器135利用使用第一曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)来执行合并1220或图块化。在操作1311之后,在操作1307,合并器135将曲面细分的图元(或曲面细分的顶点)的可视性流存储在二进制流1202中。
图14是示出在GPU 10中执行的图形管线的另一示例的示图。
参照图14,包括合并管线101-3和渲染管线102-1的图形管线在以上参照图7描述的模式③下进行操作。关于图6中示出的GPU 10的硬件组件来描述图14的图形管线,其中,仅描述与示例性实施例相关的组件以及管线阶段。因此,本领域普通技术人员将理解,还可包括除了关于图14描述的组件和管线阶段以外的通用组件和管线阶段。
顶点着色器115使用存储在存储器30中的顶点1401来执行顶点着色1411。顶点着色器115转换顶点1401并将转换的顶点1401作为表达低阶表面的输入控制点输入到外壳着色器121。
外壳着色器121执行将输入控制点转换为形成输出补片的输出控制点的外壳着色1412。外壳着色器121将关于输出控制点的信息发送到合并器135。
如以上参照图3所述,曲面细分管线300包括外壳着色器121、曲面细分器123和域着色器125的全部阶段,但是根据关于图14描述的管线,因为以上参照图9所述,输出补片410的合并结果与曲面细分的图元425的合并结果可以相同,所以曲面细分器123和域着色器125的阶段可被跳过。然而,即使合并结果不同,因为在渲染管线102-1中执行诸如卷曲、裁剪和隐藏表面移除(HSR),所以最终的像素渲染结果也会相同。
合并器1413使用从外壳着色器121输出的输出补片的输出图元来执行合并1413或图块化。换句话说,合并器135执行深度测试(或图块Z测试),深度测试(或图块Z测试)预测指示关于输出图元所属于的图块的图块列表。这里,合并的图块列表可作为可视性流存储在存储器30的二进制流1402中。
与以上参照图10、图11、图12和图13描述的示例不同,合并器135不确定从外壳着色器121输出的输出补片的输出图元是否包括在一个图块中。换句话说,在本示例中,输出图元可包括在一个或更多个图块中。
当合并管线101-3完成时,GPU 10按图块执行渲染管线102-1。渲染管线102-1可包括由顶点着色器115执行的顶点着色1421、由外壳着色器121执行的外壳着色1422、由曲面细分器123执行的曲面细分1423、由域着色器125执行的域着色1424、由几何着色器130可选地执行的几何着色1425、由栅格化器140执行的栅格化1426以及由像素着色器150执行的像素着色1427。由像素着色器150执行像素着色1427的结果可存储在缓冲器1403中。
因为图14中示出的图形管线根据上述的模式③进行操作,所以在合并管线101-3中由曲面细分器123执行曲面细分可被跳过,并且曲面细分的顶点(或曲面细分的图元)不被产生。因此,与图3中示出的必须使用曲面细分器123执行曲面细分的曲面细分管线300相比,使用图14中示出的图形管线的图形数据的吞吐量可减少。
图15是示出实现在GPU 10中执行的图形管线的方法的另一示例的流程图。在本示例中,图15中示出的方法可用于实施执行图14中示出的图形管线,所述图形管线包括根据模式③进行操作的合并管线101-3和渲染管线102-1。因此,即使这里省略,图14的描述也可应用于图15。
包括操作1511至操作1514的管线1510对应于合并管线101-3,包括操作1521的管线1520对应于渲染管线102-1。
在操作1511,顶点着色器115使用存储在存储器30中的顶点1401来执行顶点着色1411。
在操作1512,外壳着色器121执行将输入控制点转换为形成输出补片的输出控制点的外壳着色1412。
在操作1513,合并器135对输出补片的输出控制点执行合并1413或图块化。
在操作1514,合并器135存储指示关于输出补片的输出图元所属于的图块的信息的图块列表。图块列表基于合并1413的结果作为可视性流存储在存储器30的二进制流1402中。与以上参照图10至图13描述的示例不同,合并器135不确定从外壳着色器121输出的输出补片的输出图元是否包括在一个图块中。换句话说,输出图元可包括在一个或更多个图块中。
在操作1521,GPU 10按图块执行渲染管线102-1。渲染管线102-1可包括由顶点着色器115执行的顶点着色1421、由外壳着色器121执行的外壳着色1422、由曲面细分器123执行的曲面细分、由域着色器125执行的域着色1424、由几何着色器130可选地执行的几何着色1425、由栅格化器140执行的栅格化1426以及由像素着色器150执行的像素着色1427。
图16是示出在GPU 10中执行的图形管线的示例的示图。
参照图16,包括合并管线101-4和渲染管线102-1的图形管线在以上参照图7描述的模式④下进行操作。关于图6中示出的GPU 10的硬件组件来描述图16的图形管线,其中,仅描述与本示例相关的组件以及管线阶段。因此,本领域普通技术人员将理解,还可包括除了关于图16描述的组件和管线阶段以外的通用组件和管线阶段。
顶点着色器115使用存储在存储器30中的顶点1601来执行顶点着色1611。顶点着色器115转换顶点1601并将转换的顶点1601作为表达低阶表面的输入控制点发送到外壳着色器121。
外壳着色器121执行将输入控制点转换为形成补片的输出控制点的外壳着色1612。外壳着色器121同时产生输出控制点并确定第一曲面细分因数。
曲面细分器123从外壳着色器121接收第一曲面细分因数,并设置小于第一曲面细分因数的新的第二曲面细分因数。此外,曲面细分器123使用新设置的第二曲面细分因数执行计算在重心坐标系中输出控制点的uvw坐标和权重的曲面细分1613。
在以上参照图3示出并描述的曲面细分管线300中,曲面细分器123使用由外壳着色器121确定的曲面细分因数TF。然而,如以上参照图9所述,即使曲面细分器123使用小于由外壳着色器121确定的第一曲面细分因数的第二曲面细分因数,合并结果也可以相同。然而,即使合并结果不同,因为在渲染管线102-1中执行诸如卷曲、裁剪和HSR的阶段,所以最终的像素渲染结果也会相同。
域着色器125使用关于输出补片的输出控制点的信息、从曲面细分器123接收的第二曲面细分因数、uvw坐标(其中,w坐标是可选的)和权重来执行域着色1614,以产生曲面细分的顶点(或曲面细分的图元)。
几何着色器130是可用于执行几何着色1615,以从自域着色器125接收的曲面细分的顶点(或曲面细分的图元)产生附加顶点(或图元)的可选组件。因此,几何着色1615可被跳过。
合并器135利用使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)来执行合并1616或图块化。换句话说,合并器135执行深度测试(或图块Z测试),深度测试(或图块Z测试)预测指示关于使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)所属于的图块的信息的图块列表。这里,合并的图块列表可作为可视性流存储在存储器30的二进制流1602中。
与以上参照图10至图13描述的示例不同,合并器135不基于执行合并1616的结果确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)是否包括在一个图块中。换句话说,使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)可包括在一个或更多个图块中。
当合并管线101-4完成时,GPU 10按图块执行渲染管线102-1。渲染管线102-1可包括由顶点着色器115执行的顶点着色1621、由外壳着色器121执行的外壳着色1622、由曲面细分器123执行的曲面细分1623、由域着色器125执行的域着色1624、由几何着色器130可选地执行的几何着色1625、由栅格化器140执行的栅格化1626以及由像素着色器150执行的像素着色1627的阶段。由像素着色器150执行像素着色1627的结果可存储在缓冲器1603中。
因为图16中示出的图形管线101-4根据上述的模式④进行操作,所以曲面细分1623可通过曲面细分器123使用较小的曲面细分因数来执行,以产生较少数量的曲面细分的图元(或曲面细分的顶点)。因此,与图3中示出的曲面细分管线300相比,图16中示出的图形数据的吞吐量可减少。
图17是示出实现在GPU中执行的图形管线的方法的另一示例的流程图。图17中示出的方法可用于执行包括根据模式④进行操作的合并管线101-4和渲染管线102-1的图16中示出的图形管线。因此,即使这里省略,图16的描述也可应用于图17的描述。
包括操作1711至操作1716的管线1710对应于合并管线101-4,包括操作1712的管线1720对应于渲染管线102-1。
在操作1711,顶点着色器115使用存储在存储器30中的顶点1601来执行顶点着色1611。
在操作1712,外壳着色器121执行外壳着色1612,以将输入控制点转换为输出控制点并形成输出补片。
在操作1713,曲面细分器123使用小于由外壳着色器121确定的第一曲面细分因数的第二曲面细分因数对输出控制点执行曲面细分1613。
在操作1714,域着色器125使用关于输出控制点的信息、从曲面细分器123接收的第二曲面细分因数、uvw坐标(其中,w坐标是可选的)和权重来执行域着色1614,以产生曲面细分的顶点(或曲面细分的图元)。
在操作1715,合并器135利用使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)执行合并1616或图块化。
在操作1716,合并器135存储包括指示输出补片的输出图元所属于的图块的信息的图块列表。图块列表基于执行合并1616的结果作为可视性流存储在存储器30的二进制流1602中。与以上参照图10至图13描述的示例不同,合并器135不确定从外壳着色器121输出的输出补片的输出图元是否包括在一个图块中。换句话说,输出图元可包括在一个或更多个图块中。
在操作1721,GPU 10按图块执行渲染管线102-1。渲染管线102-1可包括由顶点着色器115执行的顶点着色1621、由外壳着色器121执行的外壳着色1622、由曲面细分器123执行的曲面细分1623、由域着色器125执行的域着色1624、由几何着色器130可选地执行的几何着色1625、由栅格化器140执行的栅格化1626以及由像素着色器150执行的像素着色1627的阶段。这里,曲面细分1623和域着色1624可使用第一曲面细分因数来执行。
图18是示出在GPU 10中执行的图形管线的示例的示图。
参照图18,包括合并管线101-3和渲染管线102-2的图形管线在以上参照图7描述的模式⑤下进行操作。关于图6中示出的GPU 10的硬件组件来描述图18中示出的图形管线,其中,仅详细描述与本示例相关的组件以及管线阶段。因此,本领域普通技术人员将理解,还可包括除了关于图18描述的组件和管线阶段以外的通用组件和管线阶段。
为了便于描述,假设对图19中示出的跨过多个图块A至D的输出补片的示例1900执行图18中示出的图形管线。
顶点着色器115使用存储在存储器30中的顶点1801来执行顶点着色1811。顶点着色器115转换顶点1801并将转换的顶点1801作为表达低阶表面的输入控制点发送到外壳着色器121。
外壳着色器121执行将输入控制点转换为输出控制点以形成补片1900的外壳着色1812。外壳着色器121将关于输出控制点的信息发送到合并器135。
如以上参照图3所述,图3中示出的曲面细分管线300包括外壳着色器121、曲面细分器123和域着色器125的全部阶段。然而,根据图18,因为如以上参照图9所述,输出补片410的合并结果可以与曲面细分的图元425的合并结果相同,所以曲面细分器123和域着色器125的阶段可被跳过。然而,即使合并结果不同,因为在渲染管线102-2中执行诸如卷曲、裁剪和HSR的阶段,所以最终的像素渲染结果也会相同。
合并器135使用从外壳着色器121输出的输出补片1900的输出图元来执行合并1813或图块化。换句话说,合并器135执行深度测试(或图块Z测试),以预测指示关于输出图元所属于的图块的信息的图块列表。这里,合并的图块列表可作为可视性流存储在存储器30的二进制流1802中。
合并器135基于执行合并1813的结果确定从外壳着色器121输出的输出补片1900的输出图元是否包括在多个图块(即,图19中示出的图块A至图块D)中。换句话说,合并器135确定输出补片1900的输出图元是否跨过两个或更多个图块。
当确定输出补片1900跨过图块时(或者当确定输出补片1900包括在多个图块A至D中时),合并器135调度图块A至D将被渲染的顺序。在本示例中,作为调度的结果,因为图块A在图块A至D中按渲染顺序被首先调度,所以合并器135确定图块A为参考图块。这里,假设参考图块被设置在多个图块的左上位置(即,图块A的位置),但是参考图块的位置不限于此。例如,参考图块可被定位为左下图块、右上图块、右下图块或中央图块。
在任何相邻图块(即,图块B至D)之前,合并器135调度对参考图块(即,图块A)执行渲染管线102-2的时间。可在GPU 10中通过一个处理器单元(或一个处理器核)依次对图块A至D执行渲染管线102-2,或者在GPU 10中通过多个处理器单元(或多个处理器核)并行地对图块A至D执行渲染管线102-2。参考图块的确定和执行时序的调度可通过控制器170或GPU10中的另一组件,而不是通过合并器135来执行。换句话说,确定参考图块和调度执行时序的组件不限于合并器135。
当确定输出补片1900跨过图块时,合并器135将确定的参考图块和调度的执行时序存储在存储器30中。
另一方面,当确定输出补片1900没有跨过图块时(或者当确定输出补片1900仅包括在一个图块中时),合并器135不确定参考图块且不调度执行时序。
在合并管线101-3完成之后,GPU 10按图块执行渲染管线102-2。这里,因为在合并管线101-3中确定图块A为参考图块,所以GPU 10首先对图块A执行渲染管线102-2。
对图块A执行的渲染管线102-2可包括由顶点着色器115执行的顶点着色1821、由外壳着色器121执行的外壳着色1822、由曲面细分器123执行的曲面细分1823、由域着色器125执行的域着色1824、由几何着色器130可选地执行的几何着色1825、由栅格化器140执行的栅格化1826以及由像素着色器150执行的像素着色1827的阶段。由像素着色器150执行像素着色1827的结果可存储在缓冲器1803中。
同时,对图块A执行的渲染管线102-2另外地使用合并器135执行合并1828。详细地,合并器135执行合并1828以产生指示输出补片1900在与图块A邻近的每个相邻图块(即,图块B至D)中是否可见的可视性流。这里,可视性流可包括这里描述的任何类型的可视性流。因此,当使用图块B至D的可视性流独立地对图块B至D执行渲染管线102-2时,GPU 10可仅处理可视顶点、可视图元或可视补片。当对图块A执行渲染管线102-2时,产生图块B至D的可视性流。其结果是,在对图块B至D执行的渲染管线102-2中的数据吞吐量可减少。
因为根据上述模式⑤进行操作的图18中示出的图形管线可在合并管线101-3中跳过由曲面细分器123执行的曲面细分,所以可不产生曲面细分的顶点(或曲面细分的图元)。因此,因为图3中示出的曲面细分管线300的曲面细分器123必须执行曲面细分1015,所以与曲面细分管线300相比,图形数据的吞吐量在图18中示出的图形管线中可降低。
图19是示出用于实现在GPU 10中执行的图形管线的方法的另一示例的流程图。图19中示出的方法可用于执行包括根据模式⑤进行操作的合并管线101-3和渲染管线102-2的图18中示出的图形管线。因此,即使这里省略,与图18相关的描述也可应用于图19。
包括操作1911至1915的管线1910对应于合并管线101-3,包括操作1921的管线1920对应于对参考图块(即,图块A)执行的渲染管线102-2。
在操作1911,顶点着色器115使用存储在存储器30中的顶点1801来执行顶点着色1811。
在操作1912,外壳着色器121执行将输入控制点转换为形成补片1900的输出控制点的外壳着色1812。
在操作1913,合并器135对输出补片1900的输出控制点执行合并1813或图块化。然后,合并器135基于执行合并1813的结果创建包括指示输出补片1900的输出图元所属于的图块的信息的图块列表。合并器135将图块列表存储在存储器30的二进制流1802中。
在操作1914,合并器135确定从外壳着色器121输出的输出补片1900的输出图元是否包括在多个图块(例如,图块A至图块D)中。换句话说,合并器135确定输出补片1900的输出图元是否跨过图块。如果合并器135确定输出补片1900跨过图块,则执行操作1915,如果合并器135确定输出补片1900不跨过图块,则执行操作1930。
在操作1915,合并器135调度图块A至D的渲染顺序。基于调度结果,因为图块A在图块A至D中被调度为渲染顺序中的第一图块,所以合并器135可确定图块A为参考图块。
在操作1921,顶点着色器115使用存储在顶点着色器115中的顶点1801对图块A执行顶点着色1821。
在操作1922,GPU 10对图块A执行曲面细分管线,曲面细分管线包括由外壳着色器121执行的外壳着色1822、由曲面细分器123执行的曲面细分1823以及由域着色器125执行的域着色1824。
在操作1923,GPU 10渲染在曲面细分管线中产生的图块A的曲面细分的图元。换句话说,GPU 10对图块A执行栅格化1826和像素着色1827。
在操作1924,合并器135执行合并1828以产生指示输出补片在每个相邻图块(即,图块B至D)中是否可见的可视性流,并且合并器135存储图块B至D的可视性流。虽然图19中没有示出,但是GPU 10使用存储的可视性流对图块B至D执行渲染管线102-2。这里,当对图块B至D执行渲染管线102-2时,根据图块B至D的可视性流,仅处理可视顶点、可视图元或可视补片。
如果确定输出补片1900没有跨过图块时(如果确定输出补片1900仅包括在一个图块中),GPU 10对包括输出补片1900的图块执行渲染管线102-2。
图20是示出在GPU 10中执行的图形管线的示例的示图。
参照图20,包括合并管线101-4和渲染管线102-2的图形管线在以上参照图7描述的模式⑥下进行操作。关于图6中示出的GPU 10的硬件组件来描述图20中示出的图形管线,其中,仅描述与本示例相关的组件以及管线阶段。因此,本领域普通技术人员将理解,还可包括除了在图20中描述的组件和管线阶段以外的通用组件和管线阶段。
为了便于描述,假设对图21中示出的跨过多个图块A至D的输出补片2100执行图20中示出的图形管线。
顶点着色器115使用存储在存储器30中的顶点2001来执行顶点着色2011。顶点着色器115转换顶点2001并将转换的顶点2001作为表达低阶表面的输入控制点发送到外壳着色器121。
外壳着色器121执行将输入控制点转换为形成输出补片2100的输出控制点的外壳着色2012。外壳着色器121同时产生形成输出补片2100的输出控制点并确定第一曲面细分因数。
曲面细分器123从外壳着色器121接收第一曲面细分因数,并设置小于第一曲面细分因数的新的第二曲面细分因数。随后,曲面细分器123使用新设置的第二曲面细分因数执行计算在重心坐标系中输出控制点的uvw坐标和权重的曲面细分2013。
域着色器125使用关于输出补片2100的输出控制点的信息、从曲面细分器123接收的第二曲面细分因数、uvw坐标(其中,w坐标是可选的)和权重来执行域着色2014,以产生曲面细分的顶点(或曲面细分的图元)。
几何着色器130是可用于执行几何着色2015,以从自域着色器125接收的曲面细分的顶点(或曲面细分的图元)产生附加顶点(或图元)的可选组件。因此,几何着色2015可被跳过。
合并器135利用使用第二曲面细分因数进行曲面细分的曲面细分的图元(或曲面细分的顶点)来执行合并2016或图块化。换句话说,合并器135执行深度测试(或图块Z测试),深度测试(或图块Z测试)预测包括指示关于使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)所属于的图块的信息的图块列表。这里,合并的图块列表可作为可视性流存储在存储器的二进制流2002中。
合并器135确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)是否包括在多个图块(例如,图21中示出的图块A至D)中。换句话说,合并器135确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)的图块跨过。
如果确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)跨过图块(或者如果确定输出补片2100包括在多个图块A至D中),则合并器135调度图块A至D的渲染顺序。基于调度结果,因为图块A在图块A至D中按渲染顺序被调度为第一图块,所以合并器135可确定图块A为参考图块。这里,假设参考图块被设置在多个图块中的左上位置(即,图块A的位置)。然而,参考图块的位置不限于此,参考图块可以是左下图块、右上图块、右下图块或中央图块。
在任何相邻图块(即,图块B至D)之前,合并器135调度对参考图块(即,图块A)执行渲染管线102-2的时间。可在GPU 10中通过一个处理器单元(或一个处理器核)依次对图块A至D执行渲染管线102-2,或者在GPU 10中通过多个处理器单元(或多个处理器核)并行地对图块A至D执行渲染管线102-2。参考图块的确定和执行时序的调度可通过控制器170或GPU10中的另一组件,而不是通过合并器135来执行。换句话说,确定参考图块和调度执行时序的组件不限于合并器135。
当确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)跨过图块时,合并器135将确定的参考图块和调度的执行时序存储在存储器30中。
另一方面,当确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)没有跨过图块时(或者当确定输出补片2100仅包括在一个图块中时),合并器135不确定参考图块且不调度执行时序。
当合并管线101-4完成时,GPU 10按图块执行渲染管线102-2。这里,因为图块A在合并管线101-3中被确定为参考图块,所以GPU 10首先对图块A执行渲染管线102-2。
对图块A执行的渲染管线102-2可包括由顶点着色器115执行的顶点着色2021、由外壳着色器121执行的外壳着色2022、由曲面细分器123执行的曲面细分2023、由域着色器125执行的域着色2024、由几何着色器130可选地执行的几何着色2025、由栅格化器140执行的栅格化2026以及由像素着色器150执行的像素着色2027的阶段。由像素着色器150执行像素着色2027的结果可存储在缓冲器2003中。
同时,在对参考图块(即,图块A)执行的渲染管线102-2中,通过合并器135另外地执行合并2028。详细地,合并器135执行合并2028,合并2028产生指示输出补片2100在与图块A邻近的每个相邻图块(即,图块B至D)中是否可见的可视性流。这里,可视性流可包括这里描述的任何类型的可视性流。因此,当使用图块B至D的可视性流独立地对图块B至D执行渲染管线102-2时,GPU 10可仅处理可视顶点、可视图元或可视补片。在对图块A执行的渲染管线102-2中产生图块B至D的可视性流。其结果是,在对图块B至D执行的渲染管线102-2中的数据吞吐量可减少。
根据上述模式⑥进行操作的图18中示出的合并管线101-4使用较小的曲面细分因数产生较少的曲面细分的图元。因此,与图3中示出的曲面细分管线300相比,图20中示出的图形管线的图形数据的吞吐量可降低。
图21是实现在图10中执行的图形管线的方法的另一示例的流程图。图21中示出的方法可用于执行包括根据模式⑥进行操作的合并管线101-4和渲染管线102-2的图20中示出的图形管线。因此,即使这里省略,关于图20的描述也可应用于图21的描述。
包括操作2111至2117的管线2110对应于合并管线101-4,包括操作2121至2124的管线2120对应于对参考图块(即,图块A)执行的渲染管线102-2。
在操作2111,顶点着色器115使用存储在存储器30中的顶点2001来执行顶点着色2011。
在操作2112,外壳着色器121执行将输入控制点转换为输出控制点并形成输出补片2100的外壳着色2012。
在操作2113,曲面细分器123使用小于由外壳着色器121确定的第一曲面细分因数的第二曲面细分因数对输出控制点执行曲面细分2013。
在操作2114,域着色器125使用关于输出控制点的信息、从曲面细分器123接收的第二曲面细分因数、uvw坐标(其中,w坐标是可选的)和权重来执行域着色2014,以产生曲面细分的顶点(或曲面细分的图元)。
在操作2115,合并器135利用使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)来执行合并2016或图块化。随后,合并器135基于执行合并2016的结果,存储包括指示使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)所属于的图块的信息的图块列表。合并器将图块列表存储在存储器30的二进制流2002中。
在操作2116,合并器135确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)是否包括在多个图块(即,图块A至D)中。换句话说,合并器135确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)跨过图块。当合并器135确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)跨过图块时,执行操作2117,当合并器135确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)没有跨过图块时,执行操作2130。
在操作2117,合并器135调度图块A至D的渲染顺序。基于调度结果,因为图块A在图块A至D中按渲染顺序被首先调度,所以合并器135可确定图块A为参考图块。
在操作2121,顶点着色器115使用存储在存储器30中的顶点2001对图块A执行顶点着色2021。
在操作2122,GPU 10对图块A执行曲面细分管线,曲面细分管线包括由外壳着色器121执行的外壳着色2022、由曲面细分器123执行的曲面细分2023以及由域着色器125执行的域着色2024。
在操作2123,GPU 10渲染在曲面细分管线中产生的图块A的曲面细分的图元。换句话说,GPU 10对图块A执行栅格化2026和像素着色2027。
在操作2124,合并器135执行合并2028以产生指示输出补片2100在每个相邻图块(即,图块B至D)中是否可见的可视性流。合并器135存储图块B至D的可视性流。虽然图21中没有示出,但是GPU 10使用存储的可视性流对图块B至D执行渲染管线102-2。这里,对图块B至D执行的渲染管线102-2使用图块B至D的可视性流仅处理可视顶点、可视图元或可视补片。
在操作2130,当在操作2116确定使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)没有跨过图块(即,包括在一个图块中)时,GPU 10对包括使用第二曲面细分因数进行曲面细分的曲面细分的图元(曲面细分的顶点)执行渲染管线102-2。
图22是示出补片所属于的图块列表与曲面细分的图元所属于的图块列表基于对补片进行曲面细分的结果而不同的情况的示例的示图。
通常,在图3中示出的曲面细分管线300中,外壳着色器121和域着色器125是可编程的,但是曲面细分器123是不可编程的。因此,对曲面细分器123进行编码的开发者可对外壳着色器121和域着色器125进行编程,以使输出补片2213包括在一个图块(即,图块0)中,而曲面细分的图元2225包括在两个图块(即,图块0和图块1)中。换句话说,图元2230可能被误预测,并且存在于曲面细分的图元2225中。以下参照图23和图24描述在渲染管线期间误预测的图块列表在合并管线中发生的图形管线。
图23是示出在GPU 10中执行的图形管线的另一示例的示图。
参照图23,包括合并管线101-3以及第一渲染管线102-3和第二渲染管线102-4的图形管线在以上参照图7描述的模式⑦下进行操作,包括合并管线101-4以及第一渲染管线102-3和第二渲染管线102-4的图形管线在以上同样参照图7描述的模式⑧下进行操作。参照以上关于图6描述的GPU 10的硬件组件来描述图23中示出的图形管线,其中,仅详细描述与本示例相关的组件以及管线阶段。因此,本领域普通技术人员将理解,还可包括除了参照图23描述的组件和管线阶段以外的通用组件和管线阶段。
GPU 10执行上述的合并管线101-3或101-4。合并管线101-3或101-4的合并结果可作为可视性流存储在存储器30的二进制流2302中。然后,GPU 10执行第一渲染管线102-3。按图块执行第一渲染管线102-3。如图23中所示,假设图块X是执行第一渲染管线102-3的当前图块。
顶点着色器115基于存储在二进制流2302中的合并结果使用图块X的顶点2301来执行顶点着色2311。顶点着色器115转换顶点2301并将转换的顶点2301作为表达低阶表面的输入控制点发送到外壳着色器121。
外壳着色器121执行将输入控制点转换为形成输出补片的输出控制点的外壳着色2312。外壳着色器121同时产生输出控制点并确定曲面细分因数TF。
曲面细分器123使用使用从外壳着色器121接收的曲面细分因数TF执行曲面细分2313,以计算在重心坐标系中输出控制点的uvw坐标和权重。
域着色器125使用关于输出控制点的信息、曲面细分因数TF、从曲面细分器123接收的uvw坐标(其中,w坐标是可选的)和权重来执行域着色2314,以产生曲面细分的顶点(或曲面细分的图元)。
几何着色器130是可用于执行几何着色2315,以从自域着色器125接收的曲面细分的顶点(或曲面细分的图元)产生附加顶点(或图元)的可选组件。因此,几何着色2315可被跳过。
栅格化器140对包括在当前图块(即,图块X)中的曲面细分的图元(或曲面细分的顶点)执行栅格化2316,并且像素着色器150对于栅格化的图元相应的像素执行像素着色2317。执行像素着色2317的结果存储在缓冲器2304中。
合并器135对包括在图块X中的曲面细分的图元(曲面细分的顶点)执行合并2318或图块化。合并器135通过对执行合并2318的结果与存储在来自于合并管线101-3或101-4的二进制流2302中的图块列表进行比较,确定在包括在图块X中的曲面细分的图元(曲面细分的顶点)的图块位置之中是否存在误预测的图块。当确定不存在误预测的图块时,GPU 10对图块X之后的图块执行第一渲染管线102-3。另一方面,当确定存在误预测的图块,合并器135更新二进制流2302中的误预测的图块的图块列表,或者将误预测的图块的图块列表存储在误预测的二进制流2303中。这里,当还没有对误预测的图块开始渲染时,在二进制流2302中更新误预测的图块的图块列表;然而,当对误预测的图块已经完成渲染时,将误预测的图块的图块列表存储在误预测的二进制流2303中。
在对所有图块按图块执行第一渲染管线102-3之后,GPU 10确定在误预测的二进制流2303中是否存在误预测的图块列表。当在误预测的二进制流2303中存在误预测的图块列表时,GPU 10对包括在误预测的图块列表中的图块执行第二渲染管线102-4。在本示例中,包括在误预测的图块列表中的图块被称为超级图块。对包括在误预测的图块列表中的图块按超级图块执行第二渲染管线102-4。换句话说,GPU 10按超级图块执行包括以下阶段的第二渲染管线102-4:由顶点着色器115执行的顶点着色2321、由外壳着色器121执行的外壳着色2322、由曲面细分器123执行的曲面细分2323、由域着色器125执行的域着色2324、由几何着色器130可选地执行的几何着色2325、由栅格化器140执行的栅格化2326以及由像素着色器150执行的像素着色2327的阶段。对超级图块执行像素着色2327的结果存储在缓冲器2304中,从而图形管线完成。
图24是用于实现在GPU 10中执行的图形管线的方法的另一示例的流程图。图24中示出的方法可用于执行图23中示出的图形管线,图23中示出的图形管线包括根据模式⑦或⑧进行操作的合并管线101-3或101-4、第一渲染管线102-3和第二渲染管线102-4。因此,即使这里省略,关于图23的描述也可应用于图24的描述。
在操作2401,GPU 10通过执行合并管线101-3或101-4来对图块列表进行合并。
在操作2402,GPU 10将合并的图块列表存储在第一二进制流(即,图23中示出的二进制流2302)中。
在操作2403,GPU 10对来自使用第一二进制流2302的第一渲染管线102-3的当前图块(即,图块X)执行图23中示出的曲面细分管线,包括外壳着色2312、曲面细分2313和域着色2314。
在操作2404,GPU 10使用从曲面细分管线输出的曲面细分的图元对图块X执行剩余的管线,包括栅格化2316和像素着色2317。
在操作2405,GPU 10确定所有图块的渲染是否完成。当确定所有图块的渲染完成时,执行操作2410。当确定所有图块的渲染没有完成时,对图块X之后的图块执行操作2403。
在操作2406,GPU 10对包括在当前图块(即,图块X)中的曲面细分的图元(曲面细分的顶点)执行合并2318或图块化。GPU 10通过对合并2318的结果与在合并管线101-3或101-4中存储在二进制流2302中的图块列表进行比较,确定在包括在图块X中的曲面细分的图元(曲面细分的顶点)的图块位置之中是否存在误预测的图块。当确定不存在误预测的图块时,执行操作2405。当确定存在误预测的图块时,执行操作2407。
在操作2407,GPU 10确定对误预测的图块的渲染是否已经完成。当确定对误预测的图块的渲染已经完成时,执行操作2408。当确定对误预测的图块的渲染还没有完成时,执行操作2409。
在操作2408,GPU 10将误预测的图块的图块列表存储在第二二进制流(即,图23中示出的误预测的二进制流2303)中。
在操作2409,GPU 10更新第一二进制流(即,图23中示出的二进制流2302)中的误预测的图块的图块列表。
在操作2410,GPU 10确定在第二二进制流中是否存在误预测的图块列表。当确定不存在误预测的图块列表时,图形管线结束。当确定存在误预测的图块列表时,执行操作2411。
在操作2411,GPU 10基于第二二进制流对误预测的图块(即,超级图块)执行图23中示出的第二渲染管线102-4。
图25是计算装置1的详细硬件结构的示例的框图。
参照图25,计算设备1包括GPU 10、CPU 20、存储器30、缓冲器35、总线40、显示单元2501、输入单元2503和通信器2505。图25中示出的计算设备1的组件是示例性的,本领域普通技术人员将理解,计算设备1可包括除了图25中示出的组件以外的通用组件。
GPU 10、CPU 20和存储器30执行上述操作和功能。
例如,GPU 10和CPU 20的硬件组件可由一个或更多个处理器或处理单元来实现。处理器或处理单元由一个或更多个处理元件(诸如逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或本领域普通技术人员公知的能够以定义的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)实现。在一个示例中,处理器或处理单元包括或者连接到存储由处理器或处理单元执行的指令或软件的一个或更多个存储器。由处理器或处理单元实现的硬件组件执行指令或软件(诸如操作系统(OS)以及在OS上运行的一个或更多个软件应用),以执行这里关于图3、图7、图10至图21、图23、图24、图28、图29和图32至图35描述的操作。硬件组件还响应于指令或软件的执行而访问、操作、处理、创建和存储数据。为了简单起见,单数术语“处理器”或“处理单元”可用于这里描述的示例的描述,而在其他示例中,使用多个处理器或处理单元,或者处理器或处理单元包括多个处理元件或多种类型的处理元件,或者包括二者。在一个示例中,硬件组件包括多个处理器,在另一示例中,硬件组件包括处理器和控制器。硬件组件具有不同处理配置中的任何一种或更多种,所述处理配置的示例包括单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理以及多指令多数据(MIMD)多处理。
所述方法执行这里关于图3、图7、图10至图21、图23、图24、图28、图29和图32至图35描述的操作,其中,通过如上所述的运行指令或软件以执行这里描述的操作的处理器或计算机来执行所述操作。
用于控制处理器或处理单元实现硬件组件并且执行如上所述的方法的指令或软件被编写为计算机程序、代码段、指令或它们的任意组合,用于单独地或共同地指示或配置处理器或处理单元作为机器或专用计算机运行以执行由硬件组件和如上所述的方法执行的操作。在一个示例中,指令或软件包括由处理器或处理单元直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由处理器或计算机使用解释器执行的更高级代码。本领域普通编程技术人员可基于公开用于执行由硬件组件和如上所述的方法执行的操作的算法的附图中示出的框图和流程图以及说明书中相应的描述,容易地编写指令或软件。
控制处理器或处理单元实现硬件组件并且执行如上所述的方法的指令或软件以及任何关联的数据、数据文件和数据结构被记录、存储或固定在一个或更多个非暂时性计算机可读存储介质(诸如存储器30)中。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、闪存、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及本领域普通技术人员公知的任何装置,所述任何能够以非暂时性方式存储指令或软件和任何关联的数据、数据文件和数据结构并将指令或软件和任何关联的数据、数据文件和数据结构提供给处理器或计算机以使处理器或计算机可执行指令。在一个示例中,指令或软件和任何关联的数据、数据文件和数据结构被分布在联网的计算机系统上,从而指令和软件和任何关联的数据、数据文件和数据结构以分布式方式由处理器或计算机存储、访问和执行。
缓冲器35存储经由基于图块的图形管线或基于图块的渲染输出的图块信息。例如,缓冲器35可存储对图块执行深度测试的结果或渲染图块的结果。在图25中,包括在计算设备1中的缓冲器35与GPU 10、CPU 20及存储器30分开;然而,缓冲器35可包括在GPU 10、CPU 20或存储器30中。
显示单元2501是用于将各种类型的信息(诸如计算设备1处理的信息或将被计算设备1处理的信息)显示给用户的显示接口单元。显示单元2501可显示图形用户接口(GUI),以视觉并直观地将计算设备1处理的信息提供给用户。例如,显示单元2501可显示GPU 10处理的图形数据。显示单元2501可包括各种显示器(诸如液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示面板(PDP))中的任何一种。
输入单元2503是用于从用户接收信息的输入接口单元。输入单元2503可被实现为触摸板、轨迹球、鼠标、键盘或游戏控制器。可选择地,显示单元2501和输入单元2503可被实现为集成触摸屏的硬件。
通信器2505可包括用于移动通信的移动通信模块或有线/无线局域网(LAN)模块或者用于近场通信(NFC)的Wi-Fi模块、蓝牙模块或NFC模块。
图26A和图26B是示出用于选择将在GPU 10中被处理的图形管线的类型的条件的示例的示图。
如以上在图7中所描述,可根据用户输入或图形处理环境选择模式①至模式⑧中的任何一种模式。根据图26A和图26B中示出的示例,GPU 10可基于对象2615或2625的尺寸(或者形成对象2615或2625的补片的尺寸)相对于一个图块2610或2620的尺寸的比率来选择模式①至模式⑧中的任何一种模式。例如,对象2615或2625的尺寸(或者形成对象2615或2625的补片的尺寸)相对于一个图块2610或2620的尺寸的比率在图26A和图26B中不同。因此,GPU 10可在模式①至模式⑧中的每个模式中设置特定阈值范围,并且控制图形管线在与比率所属于的范围相应的效率模式下执行。
图27A和图27B是示出用于选择将在GPU 10中被处理的图形管线的类型的条件的示例的示图。
根据图27A和图27B,GPU 10可基于对象2175或2725(或者形成对象2175或2725的补片)在一个图块2710或2720中的位置来选择模式①至模式⑧中的任何一种模式。例如,距离(a)和距离(b)是图块2710和2720的边界与对象2175或2725(或者形成对象2175或2725的补片)的边界之间的距离。距离(a)和距离(b)在图27A和图27B中不同。因此,GPU 10可在模式①至模式⑧中的每个模式中设置特定阈值范围,并且控制图形管线在与距离所属于的范围相应的模式下执行。
图28是示出在图形管线中应用存储在存储器的二进制流中的可视性流的示例的示图。
参照图28,如果合并管线101被执行,则当GPU 10执行合并2811时,输入补片可视性流可被存储在存储器30的二进制流2802中。此外,当执行合并管线101的合并2811时,可将输出图元可视性流存储在存储器30的二进制流2802中。在本示例中,合并2811可对应于包括在上述各种图形管线中的合并阶段中的任意一个。
输入补片可视性流可包括关于输入补片可视性掩码的信息,所述输入补片可视性掩码指示将被输入到在渲染管线102期间执行外壳着色281的外壳着色器121的输入补片的可视性。例如,输入补片可视性掩码可以是指示输入补片在图块中是否可见的比特0或1。因此,通过使用输入补片可视性流,外壳着色器121在渲染管线102期间能够仅对可见的输入补片执行外壳着色2821。其结果是,吞吐量在渲染管线102中可减少。
类似地,输出图元可视性流可包括关于指示输出图元的可视性的输出图元可视性掩码的信息。关于输出图元可视性掩码的信息在渲染管线102期间被输入,以执行图元装配2822。例如,输出图元可视性掩码可包括指示输出图元在图块中是否可见的比特0或1。因此,通过使用输出图元可视性流,GPU 10可在渲染管线102期间仅对可见的输出图元执行图元装配2822。其结果是,吞吐量在渲染管线102中可减少。
图29是示出在图形管线中应用存储在存储器的二进制流中的可视性流的示例的示图。
参照图29,如以上参照图18至图21所述,当对参考图块(例如,图19和图21中的图块A)执行渲染管线102的合并2911时,可将顶点可视性流存储在存储器30的二进制流2902中。此外,当执行渲染管线102的合并2911时,可将域可视性流存储在存储器30的二进制流2902中。在本示例中,合并2911可对应于包括在上述各种图形管线(例如,图19和图21中的图形管线)中的合并阶段中的任意一个。
顶点可视性流可包括关于顶点可视性掩码的信息,所述顶点可视性掩码指示输入到在渲染管线102期间对相邻图块(例如,与参考图块(例如,图19和图21中示出的图块A)邻近的图块B至D)执行顶点着色的顶点着色器115的顶点的可视性。例如,顶点可视性掩码可包括指示顶点在图块中是否可见的比特0或1。因此,通过使用顶点可视性流,顶点着色器115可在渲染管线102期间仅对可见的顶点执行顶点着色2921。其结果是,渲染管线102中的吞吐量可减少。
类似地,域可视性流可包括关于域可视性掩码(visibility mask)的信息,所述域可视性掩码指示将被输入到在渲染管线102期间执行域着色2922的域着色器125的输出补片的可视性。例如,域可视性掩码可包括指示输出图元在图块中是否可见的比特0或1。因此,通过使用域可视性流,域着色器125可在渲染管线102期间仅对可见的输出补片执行域着色2922。其结果是,渲染管线102中的吞吐量可减少。
同时,这里描述的可视性流可包括输入补片可视性流、输出图元可视性流、顶点可视性流或域可视性流,但是不限于此。
图30是示出在合并管线完成之后存储在二进制流中的可视性流的示例的示图。
如上所述,当合并管线101完成时,GPU 10将可视性流存储在存储器30中。参照图30,可视性流可包括输入可视性流和输出可视性流。
输入可视性流可包括关于每个补片的1和0的流。每个比特表示补片的至少一部分是否从最终帧可见。例如,在补片2中具有值1的比特指示补片2在最终帧中可见,而在其他补片中具有值0的比特指示其他补片在最终帧中不可见。输出可视性流可包括关于每个图元的1和0的流,其中,具有值1的比特(例如,在图元0中具有值1的比特)指示图元对于在最终场景中可见的像素有贡献,而具有值0的比特(例如,在图元6中具有值0的比特)指示图元对于在最终场景中可见的像素没有贡献。
可按补片产生输出可视性流。换句话说,每个图块的每个补片可存在一个输出可视性流。可选择地,每个图块可具有连接从输入图元产生的输出图元的一个输出可视性流
图31是示出在合并管线完成之后存储在二进制流中的可视性流的示例的示图。
参照图31,可针对从外壳着色器121输出的输出补片产生输出可视性流3110,并且可针对从域着色器125输出的曲面细分的图元产生输出可视性流3120,但是输出可视性流不限于此。
图32是示出通过计算设备1执行图形管线的方法的示例的组合的流程框图和流程图。图32中示出的方法与根据以上参照图10和图11描述的模式①的操作的示例相关。因此,即使这里省略,图10和图11的描述也可应用于图32中示出的方法。
在操作3201,计算设备1的GPU 10执行合并管线101-1,在合并管线101-1中,基于包括输出补片的图块的数量确定是否跳过对从外壳着色器121输出的输出补片进行曲面细分,并且基于确定结果对输出补片或曲面细分的图元的图块列表进行合并。
在操作3202,计算设备1的GPU 10基于合并的图块列表按图块执行渲染管线102-1。
详细地,在操作3201中,当包括输出补片的图块的数量为1时,可跳过通过曲面细分器123对输出补片执行的曲面细分。在操作3201中,通过对输入补片执行外壳着色的外壳着色器121产生输出补片,对输出补片的图块列表进行合并,并且确定输出补片是否包括在一个图块中。如果确定输出补片包括在一个图块中,则在操作3202,可使用合并的输出补片的图块列表执行栅格化。这里,栅格化对应于在渲染管线102-1中执行的部分阶段。渲染管线102-1可包括各种阶段,诸如除了栅格化阶段之外的像素着色阶段。当在合并管线101-1中跳过曲面细分时,可使用来自合并管线101-1的针对输出补片存储的二进制流在操作3202执行曲面细分管线。同时,在操作3201,曲面细分可被编程为使得输出补片的边界包括由曲面细分的图元形成的边界。
如果确定输出补片包括在至少两个图块中(或者,如果确定输出补片不是包括在一个图块中),则可在操作3201通过由曲面细分器123对输出补片执行曲面细分并由域着色器125对输出补片执行域着色来产生曲面细分的图元。这里,可在操作3202使用合并的曲面细分的图元的图块列表来执行栅格化。
同时,计算设备1的存储器30存储在合并管线101-1中产生的图块列表,并将存储的图块列表提供给渲染管线102-1。在操作3201,如果确定输出补片包括在一个图块中时,可将输出补片的可视性流存储在存储器30中,如果确定输出补片包括在至少两个图块中,则可将曲面细分的图元的可视性流存储在存储器30中。
图33是示出通过计算设备1执行图形管线的方法的示例的组合的流程框图和流程图。图33中示出的方法与以上参照图12和图13描述的模式②下的操作的示例相关。因此,即使这里省略,图12和图13的描述也可应用于图33中示出的方法。
在操作3301,计算设备1的GPU 10通过以下操作来执行合并管线101-2:基于由外壳着色器121确定的第一曲面细分因数和包括使用不同于第一曲面细分因数的第二曲面细分因数进行曲面细分的图元的图块的数量确定是否跳过曲面细分,并基于确定结果对从外壳着色器121输出的输出补片或使用第一曲面细分因数进行曲面细分的图元的图块列表进行合并。
在操作3302,计算设备1的GPU 10基于合并的图块列表按图块执行渲染管线102-1。
详细地,当包括使用第二曲面细分因数进行曲面细分的图元的图块的数量为1时,在操作3301,跳过将由曲面细分器123执行的基于第一曲面细分因数的曲面细分。这里,第二曲面细分因数可小于第一曲面细分因数。在操作3301,外壳着色器121执行外壳着色,以产生输出补片并确定第一曲面细分因数。曲面细分器123基于小于第一曲面细分因数的第二曲面细分因数对输出补片进行曲面细分,以产生使用第二曲面细分因数进行曲面细分的图元。域着色器125对曲面细分的图元执行域着色,并且确定使用第二曲面细分因数进行曲面细分的图元是否包括在一个图块中。这里,当确定使用第二曲面细分因数进行曲面细分的图元包括在一个图块中时,可在操作3302使用合并的输出补片的图块列表来执行栅格化。这里,栅格化对应于在渲染管线102-1中执行的部分阶段。渲染管线102-1可包括各种阶段,诸如除了栅格化阶段之外的像素着色阶段。同时,在操作3301,曲面细分可被编程为使得由使用第一曲面细分因数进行曲面细分的图元形成的边界包括由使用第二曲面细分因数进行曲面细分的图元形成的边界。
当确定使用第二曲面细分因数进行曲面细分的图元包括在至少两个图块中时(或者当确定使用第二曲面细分因数进行曲面细分的图元不是包括在一个图块中时),可在操作3301通过使用曲面细分器123基于第一曲面细分因数对输出补片执行曲面细分并使用域着色器125对输出补片执行域着色,产生使用第一曲面细分因数进行曲面细分的图元。这里,可在操作3302使用使用第一曲面细分因数进行曲面细分的图元的合并的图块列表来执行栅格化和像素着色。
同时,计算设备1的存储器30存储在合并管线101-2中产生的图块列表,并将存储的图块列表提供给渲染管线102-1。在操作3301,当确定使用第二曲面细分因数进行曲面细分的图元包括在一个图块中时,可将输出补片的可视性流存储在存储器30中,当确定使用第二曲面细分因数进行曲面细分的图元包括在至少两个图块中,可将使用第一曲面细分因数进行曲面细分的图元的可视性流存储在存储器30中。
图34是示出通过计算设备1执行图形管线的方法的另一示例的组合的流程框图和流程图。图34中示出的方法与以上参照图18和图19描述的模式⑤下的操作的示例相关。因此,即使这里省略,图18和图19的描述也可应用于图34中示出的方法。
在操作3401,计算设备1的GPU 10通过以下操作来执行合并管线101-3:对从外壳着色器121输出的输出补片进行合并以确定输出补片是否包括在多个图块中,并且如果确定输出补片包括在多个图块中,则调度所述多个图块的渲染顺序。
在操作3402,计算设备1的GPU 10基于调度的渲染顺序按图块执行渲染管线102-2。
详细地,在操作3401,可跳过将通过曲面细分器123对输出补片执行的曲面细分。在操作3401,外壳着色器121对输入补片执行外壳着色以产生输出补片,对输出补片的图块列表进行合并,确定输出补片是否包括在多个图块中,如果确定输出补片包括在多个图块中,则确定所述多个图块中与第一渲染顺序相应的第一图块(参考图块,例如,图19中示出的图块A)。
在操作3402,对第一图块执行第一渲染管线,对相邻图块(例如,图19中示出的图块B、C或D)执行第二渲染管线。第二渲染管线基于在第一渲染管线中产生的可视性流对相邻图块的可视顶点、可视图元和可视补片中的至少一个执行渲染。图34中示出的第一渲染管线和第二渲染管线是渲染管线102-2的部分,并且不同于图7中示出的第一渲染管线102-3和第二渲染管线102-4。
计算设备1的存储器30存储在对第一图块执行的渲染管线102-2中产生的可视性流,并将存储的可视性流提供给对相邻图块执行的渲染管线102-2。换句话说,在操作3401,可将在对第一图块执行的渲染管线102-2中产生的可视性流存储在存储器30中。
图35是示出通过计算设备1执行图形管线的方法的另一示例的组合的流程框图和流程图。图35中示出的方法与以上参照图20和图21描述的模式⑥下的操作的示例相关。因此,即使这里省略,图21和图22的描述也可应用于图35中示出的方法。
在操作3501,计算设备1的GPU 10对使用与由外壳着色器121确定的第一曲面细分因数不同的第二曲面细分因数进行曲面细分的图元进行合并,以确定使用第二曲面细分因数进行曲面细分的图元是否包括在多个图块中。当确定使用第二曲面细分因数进行曲面细分的图元包括在多个图块中时,GPU 10调度所述多个图块的渲染顺序。
在操作3502,计算设备1的GPU 10基于调度的渲染顺序按图块执行渲染管线102-2。
详细地,在操作3501,可跳过将通过曲面细分器123执行的基于第一曲面细分因数的曲面细分。这里,第二曲面细分因数具有比第一曲面细分因数更小的值。在操作3501,外壳着色器121执行外壳着色,以产生输出补片并确定第一曲面细分因数。曲面细分器123基于小于第一曲面细分因数的第二曲面细分因数对输出补片执行曲面细分,以产生使用第二曲面细分因数进行曲面细分的图元。域着色器125对使用第二曲面细分因数进行曲面细分的图元执行域着色。对使用第二曲面细分因数进行曲面细分的图元的图块列表进行合并,确定使用第二曲面细分因数进行曲面细分的图元是否包括在多个图块中,当确定使用第二曲面细分因数进行曲面细分的图元包括在多个图块中时,确定与第一渲染顺序相应的第一图块(参考图块,例如,图21中示出的图块A)。
在操作3502,对第一图块执行第一渲染管线,对相邻图块(例如,图21中示出的图块B、C或D)执行第二渲染管线。在第二渲染管线中,基于在第一渲染管线中产生的可视性流对相邻图块的可视顶点、可视图元和可视补片中的至少一个执行渲染。图35中示出的第一渲染管线和第二渲染管线是渲染管线102-2的部分,并且不同于图7中示出的第一渲染管线102-3和第二渲染管线102-4。
计算设备1的存储器30存储在对第一图块执行的渲染管线102-2中产生的可视性流,并将存储的可视性流提供给对相邻图块执行的渲染管线102-2。换句话说,在操作3501,可将在对第一图块执行的渲染管线102-2中产生的可视性流存储在存储器30中。
如上所述,根据一个或更多个示例性实施例,因为曲面细分器跳过曲面细分或者使用小的曲面细分因数执行曲面细分,所以在由GPU处理的图形管线的一部分的曲面细分管线中,GPU的吞吐量可减少,并且处理速度可提高。
虽然本公开包括特定的示例,但是本领域的普通技术人员将清楚的是,可在不脱离权利要求及其等同物的精神和范围的情况下对这些示例做出形式和细节上的各种改变。这里描述的示例仅被考虑为描述性意义,而不是限制的目的。对每个示例中的特征或方面的描述被认为可应用于其他示例中的类似特征或方面。如果描述的技术以不同的顺序执行和/或如果描述的系统、架构、装置或电路中的组件以不同的方式组合和/或由其他组件或其等同物代替或补充,则可实现合适的结果。因此,本公开的范围不是由具体实施方式限定,而是由权利要求及其等同物限定,并且在权利要求及其等同物的范围内的所有改变将被解释为包括在本公开中。

Claims (10)

1.一种通过图形处理器对包括被划分为一个或更多个图块的对象的帧执行图形管线的方法,所述方法包括:
执行合并管线;以及
执行渲染管线,
其中,所述合并管线包括:
产生输出补片;
确定包括输出补片的图块的数量;
基于确定的图块的数量来确定是否对输出补片执行曲面细分;以及
基于是否执行曲面细分,对输出补片或输出补片的曲面细分的图元的图块列表进行合并,
其中,基于合并的图块列表按图块执行所述渲染管线,
其中,执行合并管线的步骤包括:当包括输出补片的图块的数量为1时,确定不对输出补片执行曲面细分。
2.如权利要求1所述的方法,其中,执行合并管线的步骤还包括:
通过外壳着色器对输入补片执行外壳着色来产生输出补片;
对输出补片的图块列表进行合并;
确定输出补片是否包括在一个图块中。
3.如权利要求2所述的方法,其中,执行渲染管线的步骤还包括:当输出补片包括在一个图块中时,使用输出补片的合并的图块列表来执行栅格化。
4.如权利要求2所述的方法,其中,执行合并管线的步骤还包括:
当确定输出补片包括在至少两个图块中时,通过曲面细分器对输出补片进行曲面细分,以产生曲面细分的图元;
通过域着色器对曲面细分的图元进行域着色;
对曲面细分的图元的图块列表进行合并;
其中,执行渲染管线的步骤还包括:
使用曲面细分的图元的合并的图块列表来执行栅格化。
5.如权利要求1所述的方法,其中,执行合并管线的步骤包括:
当输出补片包括在一个图块中时,存储输出补片的可视性流;
当输出补片包括在至少两个图块中时,存储曲面细分的图元的可视性流。
6.一种对包括被划分为一个或更多个图块的对象的帧执行图形管线的计算设备,所述计算设备包括:
图形处理器GPU,被配置为:执行合并管线并执行渲染管线,
其中,所述合并管线包括:
产生输出补片;
确定包括输出补片的图块的数量;
基于确定的图块的数量来确定是否对输出补片执行曲面细分;
基于是否执行曲面细分,对输出补片或输出补片的曲面细分的图元的图块列表进行合并;
存储合并的图块列表;以及
访问存储的合并的图块列表;
其中,基于合并的图块列表按图块执行所述渲染管线;
存储器,被配置为存储合并的图块列表,
其中,由GPU执行的合并管线还包括:当包括输出补片的图块的数量为1时,确定不对输出补片执行曲面细分。
7.如权利要求6所述的计算设备,其中,GPU还包括外壳着色器,
其中,由GPU执行的合并管线还包括:通过对输入补片执行外壳着色来产生输出补片;对输出补片的图块列表进行合并;确定输出补片是否包括在一个图块中。
8.如权利要求7所述的计算设备,其中,由GPU执行的渲染管线还包括:当GPU确定输出补片包括在一个图块中时,使用输出补片的合并的图块列表来执行栅格化。
9.如权利要求7所述的计算设备,其中,GPU还包括域着色器和曲面细分器,
其中,由GPU执行的合并管线还包括:当GPU确定输出补片包括在至少两个图块中时,对输出补片进行曲面细分以产生曲面细分的图元;对曲面细分的图元进行域着色;对曲面细分的图元的图块列表进行合并;
其中,由GPU执行的渲染管线还包括:使用曲面细分的图元的合并的图块列表来执行栅格化。
10.如权利要求6所述的计算设备,其中,由GPU执行的合并管线包括:当GPU确定输出补片包括在一个图块中时,存储输出补片的可视性流;当GPU确定输出补片包括在至少两个图块中时,存储曲面细分的图元的可视性流;
其中,存储器还被配置为存储可视性流。
CN201510567739.5A 2014-11-26 2015-09-08 图形处理器和执行基于图块的图形管线的方法 Active CN105654553B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020140166628A KR102327144B1 (ko) 2014-11-26 2014-11-26 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법
KR10-2014-0166628 2014-11-26

Publications (2)

Publication Number Publication Date
CN105654553A CN105654553A (zh) 2016-06-08
CN105654553B true CN105654553B (zh) 2020-08-28

Family

ID=53719642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510567739.5A Active CN105654553B (zh) 2014-11-26 2015-09-08 图形处理器和执行基于图块的图形管线的方法

Country Status (5)

Country Link
US (1) US9870639B2 (zh)
EP (1) EP3026635B1 (zh)
JP (1) JP6709038B2 (zh)
KR (1) KR102327144B1 (zh)
CN (1) CN105654553B (zh)

Families Citing this family (28)

* 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
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
KR102276909B1 (ko) * 2014-12-09 2021-07-13 삼성전자주식회사 렌더링 방법 및 장치
GB2552260B (en) * 2015-06-05 2019-04-10 Imagination Tech Ltd Tessellation method
KR102465969B1 (ko) * 2015-06-23 2022-11-10 삼성전자주식회사 그래픽스 파이프라인을 수행하는 방법 및 장치
US10037625B2 (en) 2016-09-15 2018-07-31 Intel Corporation Load-balanced tessellation distribution for parallel architectures
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US11379941B2 (en) * 2016-09-22 2022-07-05 Advanced Micro Devices, Inc. Primitive shader
KR20180038793A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 영상 데이터 처리 방법 및 장치
KR102646906B1 (ko) 2016-11-17 2024-03-12 삼성전자주식회사 타일 기반 렌더링 방법 및 장치
US11222397B2 (en) * 2016-12-23 2022-01-11 Qualcomm Incorporated Foveated rendering in tiled architectures
KR20180097342A (ko) * 2017-02-23 2018-08-31 한국전자통신연구원 영상 아티팩트를 최소화하는 초해상도 영상 선명화 방법 및 장치
US10885607B2 (en) 2017-06-01 2021-01-05 Qualcomm Incorporated Storage for foveated rendering
KR102446865B1 (ko) * 2017-09-12 2022-09-23 삼성전자주식회사 경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법
US10515431B2 (en) * 2017-12-12 2019-12-24 Intel Corporation Global optimal path determination utilizing parallel processing
US10580209B2 (en) 2018-03-06 2020-03-03 Qualcomm Incorporated Removal of degenerated sub-primitives in tessellation
US11080928B2 (en) * 2019-04-01 2021-08-03 Qualcomm Incorporated Methods and apparatus for visibility stream management
US11640649B2 (en) 2019-06-19 2023-05-02 Samsung Electronics Co., Ltd. Methods and apparatus for efficient range calculation
US11176721B2 (en) * 2019-07-25 2021-11-16 Dreamworks Animation Llc Multiplex pixel distribution for multi-machine rendering
CN110751706B (zh) * 2019-10-29 2024-03-22 网易(杭州)网络有限公司 游戏中的图形处理方法、装置、设备及存储介质
US11010862B1 (en) 2019-11-14 2021-05-18 Advanced Micro Devices, Inc. Reduced bandwidth tessellation factors
US11741653B2 (en) * 2020-07-28 2023-08-29 Advanced Micro Devices, Inc. Overlapping visibility and render passes for same frame
US11682109B2 (en) * 2020-10-16 2023-06-20 Qualcomm Incorporated Configurable apron support for expanded-binning
US11508124B2 (en) 2020-12-15 2022-11-22 Advanced Micro Devices, Inc. Throttling hull shaders based on tessellation factors in a graphics pipeline
US11776085B2 (en) 2020-12-16 2023-10-03 Advanced Micro Devices, Inc. Throttling shaders based on resource usage in a graphics pipeline
US20220198735A1 (en) * 2020-12-21 2022-06-23 Intel Corporation Hierarchical tiling mechanism
GB2608094A (en) * 2021-01-27 2022-12-28 Advanced Risc Mach Ltd Graphics processing
US11710207B2 (en) 2021-03-30 2023-07-25 Advanced Micro Devices, Inc. Wave throttling based on a parameter buffer

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103180882A (zh) * 2010-04-30 2013-06-26 想象技术有限公司 基于图块的渲染系统中表面面片的细化
CN103946895A (zh) * 2011-11-16 2014-07-23 高通股份有限公司 基于平铺块的呈现中的镶嵌

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6359619B1 (en) 1999-06-18 2002-03-19 Mitsubishi Electric Research Laboratories, Inc Method and apparatus for multi-phase rendering
US8089486B2 (en) 2005-03-21 2012-01-03 Qualcomm Incorporated Tiled prefetched and cached depth buffer
KR101661931B1 (ko) 2010-02-12 2016-10-10 삼성전자주식회사 3차원 그래픽스 랜더링 장치 및 그 방법
US9058685B2 (en) * 2010-03-11 2015-06-16 Broadcom Corporation Method and system for controlling a 3D processor using a control list in memory
GB201104066D0 (en) 2011-03-09 2011-04-20 Imagination Tech Ltd Compression of a tessellated primitive index list in a tile rendering system
US9483861B2 (en) * 2013-03-15 2016-11-01 Qualcomm Incorporated Tile-based rendering

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103180882A (zh) * 2010-04-30 2013-06-26 想象技术有限公司 基于图块的渲染系统中表面面片的细化
CN103946895A (zh) * 2011-11-16 2014-07-23 高通股份有限公司 基于平铺块的呈现中的镶嵌

Also Published As

Publication number Publication date
US9870639B2 (en) 2018-01-16
KR102327144B1 (ko) 2021-11-16
EP3026635A2 (en) 2016-06-01
EP3026635B1 (en) 2019-09-18
EP3026635A3 (en) 2016-08-03
US20160148424A1 (en) 2016-05-26
KR20160063079A (ko) 2016-06-03
JP2016100012A (ja) 2016-05-30
JP6709038B2 (ja) 2020-06-10
CN105654553A (zh) 2016-06-08

Similar Documents

Publication Publication Date Title
CN105654553B (zh) 图形处理器和执行基于图块的图形管线的方法
EP3183713B1 (en) Render target command reordering in graphics processing
CN106127848B (zh) 对视点视差图像执行渲染的设备和方法
EP2780891B1 (en) Tessellation in tile-based rendering
US9569811B2 (en) Rendering graphics to overlapping bins
CN103620641B (zh) 最大化图形处理器中的并行处理
CN105574924B (zh) 渲染方法、渲染设备和电子设备
EP2946364B1 (en) Rendering graphics data using visibility information
KR102381945B1 (ko) 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
KR20190100194A (ko) 타일식 아키텍처들에서의 포비티드 렌더링
US10169839B2 (en) Method and apparatus for executing graphics pipeline
KR20230048441A (ko) 그래픽스 프로세싱 유닛 하이브리드 렌더링을 위한 장치 및 방법
EP3353746A2 (en) Dynamically switching between late depth testing and conservative depth testing
US10262391B2 (en) Graphics processing devices and graphics processing methods
KR20230162023A (ko) 서브패스 인터리빙을 통한 동기화 프리 크로스 패스 비닝

Legal Events

Date Code Title Description
C06 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