CN107038740A - 图形处理设备和执行图形管线的方法 - Google Patents
图形处理设备和执行图形管线的方法 Download PDFInfo
- Publication number
- CN107038740A CN107038740A CN201611013541.3A CN201611013541A CN107038740A CN 107038740 A CN107038740 A CN 107038740A CN 201611013541 A CN201611013541 A CN 201611013541A CN 107038740 A CN107038740 A CN 107038740A
- Authority
- CN
- China
- Prior art keywords
- draw call
- surface subdivision
- bounding box
- pipeline
- segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
提供了一种图形处理设备和执行图形管线的方法。在图形处理设备中执行图形管线的方法包括:像素组合以产生与需要曲面细分的绘制调用相应的包围盒比特流;响应于在将被处理的当前图块中识别到由包围盒比特流分配的包围盒,通过对与识别的包围盒相应的绘制调用执行选择性的曲面细分来渲染当前图块。
Description
技术领域
以下描述涉及一种图形处理设备和执行图形管线的方法。
背景技术
图形处理设备(诸如图形处理单元(GPU))在计算设备(诸如,工作站、个人计算机(PC)、笔记本计算机、视频游戏控制台以及嵌入式装置)中渲染图形数据。嵌入式装置的一些示例为智能电话、平板装置和可穿戴装置。图形处理设备通过将与二维(2D)或三维(3D)对象相应的图形数据转换为2D像素表达来产生用于显示的帧。嵌入式装置具有相对低的处理能力和高功耗,而工作站、PC、笔记本计算机以及视频游戏控制台确保充足的存储空间和处理能力。因此,嵌入式装置未适当地配备可与工作站比拟的图形处理性能。由于嵌入式装置已变得更加被广泛使用,因此用户比以前更频繁地通过智能电话或平板装置玩游戏或观看内容(诸如,电影、肥皂剧)。因此,图形处理设备的制造商已进行研究,从而即使在嵌入式装置中也提高图形处理设备的性能和处理效率。
发明内容
提供本发明内容来以简化形式介绍以下在具体实施方式中进一步描述的构思的选择。本发明内容不意图识别请求保护的主题的关键特征或必要特征,也不意图用来帮助确定请求保护的主题的范围。
在一个总的方面,提供一种在图形处理设备中执行图形管线的方法,所述方法包括:像素组合以产生与需要曲面细分的绘制调用相应的包围盒比特流;响应于在将被处理的当前图块中识别到由包围盒比特流分配的包围盒,通过对与识别的包围盒相应的绘制调用执行选择性的曲面细分来渲染当前图块。
包围盒比特流可包括:指示是否将针对每个输入绘制调用执行曲面细分的信息以及关于覆盖与需要曲面细分的绘制调用相应的包围盒的图块列表的信息。
像素组合的步骤可包括:由像素组合管线产生包括指示每个输入绘制调用的可视性的信息的绘制调用比特流以及包括指示包括在该输入绘制调用中的图元的可视性的信息的图元比特流。
所述方法可包括:由像素组合管线确定每个输入绘制调用是需要曲面细分的第一类绘制调用还是不需要曲面细分的第二类绘制调用;由像素组合管线执行图块像素组合以识别覆盖与第一类绘制调用相应的包围盒的图块列表;由像素组合管线产生包括指示第一类绘制调用的标识信息、指示第二类绘制调用的标识信息以及关于图块列表的信息的包围盒比特流。
曲面细分可在渲染管线中被延迟执行。
在渲染管线渲染当前图块的步骤可包括:使用包围盒比特流针对需要曲面细分的第一类绘制调用以及针对不需要曲面细分的第二类绘制调用按照不同的渲染方案渲染当前图块。
第一类绘制调用可通过包括曲面细分阶段的第一子渲染管线来处理,第二类绘制调用可通过不包括曲面细分阶段的第二子渲染管线来处理。
响应于确定尚未在先前图块中执行针对第一类绘制调用的曲面细分,第一子渲染管线可对当前图块中将被处理的第一类绘制调用执行曲面细分,并且响应于确定已经在先前图块中产生针对第一类绘制调用的曲面细分图元,第一子渲染管线可跳过针对当前图块中将被处理的第一类绘制调用的曲面细分。
所述方法可包括:由渲染管线基于包围盒比特流的图块像素组合的结果安排图块的渲染次序,以使得更高优先级被分配给覆盖包围盒的图块;由渲染管线根据安排的渲染次序以每个图块为基础执行渲染。
所述方法可包括:响应于针对第一类绘制调用的曲面细分图元未在其他图块中使用,从存储器删除与所述曲面细分图元关联的数据。
在另一总的方面,提供一种用于执行图形管线的计算设备,所述计算设备包括:图形处理单元(GPU),被配置为:执行像素组合管线以产生与需要曲面细分的绘制调用相应的包围盒比特流,响应于在将被处理的当前图块中识别到由包围盒比特流分配的包围盒,执行渲染管线以通过对与识别的包围盒相应的绘制调用执行选择性的曲面细分来渲染当前图块;存储器,被配置为存储在像素组合管线中产生的包围盒比特流并将存储的包围盒比特流提供给渲染管线。
包围盒比特流可包括:指示是否将针对每个输入绘制调用执行曲面细分的信息以及关于覆盖与需要曲面细分的绘制调用相应的包围盒的图块列表的信息。
当执行像素组合管线时,所述GPU可被配置为:产生包括指示每个输入绘制调用的可视性的信息的绘制调用比特流以及包括指示包括在该输入绘制调用中的图元的可视性的信息的图元比特流。
当执行像素组合管线时,所述GPU可被配置为:确定每个输入绘制调用是需要曲面细分的第一类绘制调用还是不需要曲面细分的第二类绘制调用;执行图块像素组合以识别覆盖与第一类绘制调用相应的包围盒的图块列表;产生包括指示第一类绘制调用的标识信息、指示第二类绘制调用的标识信息以及关于图块列表的信息的包围盒比特流。
所述GPU可被配置为基于延迟的曲面细分执行图形管线。
当执行渲染管线时,所述GPU还可被配置为:使用包围盒比特流针对需要曲面细分的第一类绘制调用以及针对不需要曲面细分的第二类绘制调用按照不同的渲染方案渲染当前图块。
第一类绘制调用可通过包括曲面细分阶段的第一子渲染管线来处理,第二类绘制调用可通过不包括曲面细分阶段的第二子渲染管线来处理。
当执行渲染管线时,所述GPU可被配置为:基于包括在包围盒比特流中的图块像素组合的结果安排图块的渲染次序,以使得更高优先级被分配给覆盖包围盒的图块;根据安排的渲染次序以每个图块为基础执行渲染。
存储器可被配置为:响应于针对第一类绘制调用的经曲面细分的图元未在其他图块中使用,在执行渲染管线时删除与所述经曲面细分的图元关联的数据。
其他特征和方面从以下的具体实施方式、附图和权利要求将是清楚的。
附图说明
图1是示出计算设备的示例的示图。
图2是示出用于描述基于图块的渲染(TBR)的示例的示图。
图3至图5是示出用于描述曲面细分管线的示例的示图。
图6是示出图1的图形处理单元(GPU)的硬件配置的示例的示图。
图7是示出图形管线的示例的示图。
图8是示出像素组合管线的示例的示图。
图9是示出产生包围盒比特流的方法的示例的示图。
图10是示出由2×2的图块覆盖的绘制调用的示例的示图。
图11是示出用于描述包围盒的空间与由曲面细分的图元限定的空间之间的包含关系的示例的示图。
图12是示出用于描述包围盒比特流的产生的示例的示图。
图13是示出用于描述各种类型的可视性比特流的示例的示图。
图14是示出用于描述渲染管线的示例的示图。
图15是示出执行渲染管线的方法的示例的示图。
图16是示出计算设备的硬件配置的示例的示图。
图17是示出执行图形管线的方法的示例的示图。
贯穿附图和具体实施方式,除非另外描述或提供,否则相同的标号将被理解为表示相同的元件、特征和结构。为了清楚、说明和方便,附图可以不按比例绘制,并且附图中的元件的相对尺寸、比例和描绘可以被夸大。
具体实施方式
提供以下具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物对本领域普通技术人员来说将是显而易见的。这里描述的操作的顺序仅为示例,除了必须按照特定次序发生的操作以外,操作的顺序不限于在此阐述的顺序,而可如本领域普通技术人员将清楚的那样改变。此外,在理解本公开之后,为了更加清楚和简明,对于本领域普通技术人员来说会是公知的功能和结构的描述可被省略。
在此描述的特征可以以不同的形式被实施,而不应被解释为受在此描述的示例所限制。相反,已提供在此描述的示例以使本公开将是彻底和完整的,并将本公开的完整范围传达给本领域普通技术人员。
可对描述的实施例进行各种变更和修改,在附图和具体实施方式中将示出所描述的实施例中的一些。然而,应该理解,这些实施例将不被解释为限于示出的形式并且包括本公开的理念和技术范围内的所有改变、等同物或替代物。
在此使用的术语仅用于解释具体实施例,因此不意味着限制。除了两个表达在语境上彼此不同之外,单数表达包括复数表达。例如,如在此使用,除非上下文明确地另有指示,否则单数形式意图也包括复数形式。术语“包括”或“具有”应该被理解为不预先排除一个或更多个其他的特性、形状、操作、组件、元件或它们的组合的存在或另外的可能性。此外,包括诸如“第一”、“第二”等的序数的术语被用于描述各种元件或在各种元件之间区分的描述方便,但是这些元件不应被这些术语所限制,并且除非在语境上具有不同的含义否则不意图表示需求的顺序或次序。
图1是根据实施例的计算设备1的示图。
参照图1,计算设备1包括图形处理单元(GPU)10、中央处理器(CPU)20、存储器30和总线40。虽然在图1的计算设备1中示出关于本示例的组件,但是本领域技术人员应理解,计算设备1可包括其他通用组件。
仅作为非穷尽说明,在此描述的计算设备1可表示诸如以下的装置:移动电话、蜂窝电话、智能电话、可穿戴智能装置(诸如,戒指、手表、眼镜、眼镜式装置、手镯、踝部支架、带、项链、耳环、头带、头盔、嵌入衣服中的装置)、个人计算机(PC)、膝上型电脑、笔记本、小型笔记本、上网本、或超移动PC(UMPC)、平板个人计算机(平板)、平板手机、移动互联网装置(MID)、个人数字助理(PDA)、企业数字助理(EDA)、数码相机、数码摄像机、便携式游戏机、MP3播放器、便携式/个人多媒体播放器(PMP)、手持电子书、超移动个人计算机(UMPC)、便携式桌面PC、电子游戏机、电视机顶盒、电子书阅读器、全球定位系统(GPS)导航、个人导航装置或便携式导航装置(PND)、手持游戏机、电子书、以及诸如高清晰度电视(HDTV)、光盘播放器、DVD播放器、蓝光播放器、机顶盒、机器人清洁器、家用电器、内容播放器、通信系统、图像处理系统、图形处理系统的装置,或者任何其他消费电子/信息技术(CE/IT)装置。在示例中,所述装置可被实现为能够感测用户的眼睛运动的各种装置。所述装置还可被实现为智能家电、智能车辆或者在智能家居系统中实现。因此,计算设备1可以是具有用于内容显示的图形处理功能的任何设备并且可包括各种类型的设备。
在示例中,所述装置可被实现为穿戴在用户的身体上的可穿戴装置。在一个示例中,可穿戴装置可以是可自安装在用户身体上的,诸如,手表、手镯或者包括单眼眼镜或双眼眼镜的眼镜显示器(EGD)。在另一非穷尽示例中,可穿戴装置可通过附接装置被安装到用户的身体上,诸如,使用臂带将智能电话或平板电脑附接到用户的手臂、将可穿戴装置并入用户的衣服中或者使用挂绳将可穿戴装置悬挂在用户的颈部周围。
CPU 20可以是控制计算设备1的整体操作和功能的硬件元件。例如,CPU 20可驱动操作系统(OS),调用用于GPU 10的图形应用程序编程接口(API),并执行GPU 10的驱动器。CPU 20可执行存储在存储器30中的各种应用,例如,网页浏览应用、游戏应用和视频应用等。
GPU 10可以是执行各种版本或类型的图形管线100的专用图形处理器,例如,开放图形库(OpenGL)、DirectX和统一计算设备架构(CUDA)。在示例中,GPU 10可以是执行三维(3D)图形管线以便将用于转换的3D图像上的3D对象渲染为将被显示的二维(2D)图像的硬件元件。例如,GPU 10可执行各种功能,诸如着色、混合、照明以及产生像素的将被显示的像素值的各种功能。
GPU 10可执行基于图块的图形管线或基于图块的渲染(TBR)。在此使用的术语“基于图块”意思是在视频的每帧被划分或分割为多个图块之后以每个图块为基础执行渲染。在基于图块的架构中,与以每个像素为基础处理帧的情况相比可降低计算量。因此,基于图块的架构可以是适合于具有相对低处理性能的装置的图形渲染方法。
参照图1,GPU 10可执行包括像素组合管线101和渲染管线102的图形管线100。在示例中,像素组合管线101是产生指示组成2D或3D对象的顶点、图元或贴片(patch,小片,补片)所属的图块的图块列表的处理。像素组合管线101可与其他术语“图块化管线”或“像素组合阶段”互换使用。渲染管线102是基于由像素组合管线101产生的图块列表以每个图块为基础来渲染对象的处理。当渲染管线102完成时,可确定将被显示在2D显示屏幕上的2D或3D对象的像素表达。渲染管线102可与其他术语“渲染阶段”互换使用。
图形管线的一些示例包括诸如微软的DirectX 11(DX11)API、OpenGL 4.0 API的管线,可包括用于图形图元或图形贴片的曲面细分的另外的处理阶段(曲面细分阶段)。曲面细分可以是将图形贴片划分为更小的图形图元以使图像的显示具有更细微的细节的处理。由计算设备1的GPU 10驱动的图形管线100可支持曲面细分。在示例中,可由GPU 10来执行以下示例。
存储器30可以是存储由计算设备1处理的各种数据的硬件元件。例如,存储器30可存储由GPU 10和CPU 20处理的数据以及将被GPU 10和CPU 20处理的数据。此外,存储器30可存储将被GPU 10和CPU 20驱动的应用、驱动器等。存储器30可包括只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、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、蓝光或光盘存储、硬盘驱动(HDD)、固态驱动(SSD)、磁带、软盘、磁光数据存储装置、光数据存储装置、硬盘、固态盘以及本领域普通技术人员公知的任何装置,所述本领域普通技术人员公知的任何装置能够以非暂时性方式存储指令或软件以及任何关联数据、数据文件和数据结构,并能向处理器或计算机提供指令或软件以及任何关联数据、数据文件和数据结构,以使处理器或计算机能执行指令。在示例中,存储器30可包括可由计算设备1访问的外部存储装置。
总线40可以是例如连接计算设备1的硬件元件以使得在硬件元件之间发送和接收数据的硬件元件。总线40可包括各种类型的总线,例如,外围组件互连(PCI)总线和PCIExpress总线。
图2是用于描述TBR的示图的示例。
参照图2,3D车辆对象220对应于视频的一帧。图1的GPU 10可将包括3D汽车对象220的一帧划分为N×M个图块210(其中,N和M为自然数)。在示例中,图1的像素组合管线101可将包括3D车辆对象220的帧划分为多个图块210并确定3D车辆对象220存在于哪些图块中。图1的GPU 10可通过基于每个图块渲染3D车辆对象220来将包括在图块210中的3D车辆对象220转换为像素表达。在这种情况下,图1的渲染管线102可通过基于每个图块渲染3D车辆对象220来将3D车辆对象220转换为像素表达。如上所述,通过使用图块210而不是基于每个像素来渲染包括在一帧中的3D车辆对象220被称为基于图块的渲染(TBR)。
图3至图5是用于描述曲面细分管线300的示图的示例。将参照图3至图5给出以下描述。如上所述,将参照图3至图5描述的曲面细分管线(或曲面细分阶段)300可被包括在图1的图形管线100中。
参照图3,可通过控制着色器121、曲面细分器123和曲面细分评估着色器125来执行曲面细分管线300。结合在本说明书中描述的曲面细分管线300使用的术语可根据图形管线100的版本和类型与其他术语互换使用。例如,术语“控制着色器”可与“外壳着色器”互换使用,术语“曲面细分评估着色器”可与“域着色器”互换使用。
控制着色器121可将表示低阶表面的输入控制点转换为组成贴片的输出控制点。例如,控制着色器121可执行输入控制点的转换以产生由如图4所示的控制点P00、P01、P02、P03、P10、P11、P12、P13、P20、P21、P22、P23、P30、P31、P32和P33组成的网格的贴片410。贴片410可具有多边形形状,诸如三角形、矩形或等值线。
除了产生组成贴片的输出控制点之外,控制着色器121可确定曲面细分因子(TF)或曲面细分等级(TL)。曲面细分因子(TF)或曲面细分等级(TL)可以是指示贴片将被划分成多少片或者贴片将被如何划分的指标。图5示出的表格500是定义曲面细分因子(TF)和将被划分的三角形的数量之间的关系的表格。由于当曲面细分因子(TF)为1时,表格500中的三角形的数量为1,因此可不对贴片执行曲面细分。然而,随着曲面细分因子(TF)的数增大,三角形的数量以指数方式增大。将被划分的三角形的数量随着曲面细分因子(TF)的增大而增大可意味着由GPU 10针对贴片进行处理的计算量的增大。当曲面细分因子(TF)的数增大时,对象的贴片可被更柔软地表达。在图5的表格500中将三角形作为将被划分的多边形的示例,但是多边形不限于此。贴片可被划分为其他多边形,诸如矩形或等值线。
控制着色器121可将关于输出贴片的曲面细分因子(TF)和输出控制点的信息传送到曲面细分器123和曲面细分评估着色器125。
曲面细分器123可使用从控制着色器121接收的曲面细分因子(TF)来针对输出控制点计算重心坐标系上的uvw坐标和权重值。
曲面细分评估着色器125可使用从控制着色器121接收的关于输出贴片的曲面细分因子(TF)和输出控制点的信息以及从曲面细分器123接收的uvw坐标和权重值来产生曲面细分的顶点。在示例中,w坐标是可选的。参照图4,曲面细分的顶点的位置可组成表面420。可通过执行曲面细分管线将贴片410转换为被做得更软的表面420上的顶点(或图元)。
图6是示出图1的GPU 10的硬件配置的示例的示图。
参照图6,GPU 10可包括执行图形管线100的输入装配器110、顶点着色器115、控制着色器121、曲面细分器123、曲面细分评估着色器125、图元装配器130、像素组合器140、光栅化器150和片元着色器160。在示例中,GPU 10还包括控制器170和缓冲器180。在GPU 10内执行图形管线100的以上元件可基于以下将描述的功能被分类,并且执行图形管线100的以上元件可通过包括在GPU 10中的子处理单元(或处理器核)被实现。即,执行图形管线100的以上元件的实现可不具体地限制于任何一个。执行图形管线100的以上元件的名称可基于以下将描述的功能而被给出,但是本领域普通技术人员将会理解,这些名称可被各种改变。
为了便于描述,在GPU 10内执行图形管线100的元件被分配在开放图形库(OpenGL)中定义的名称,但是这些元件的名称不限于此。在示例中,在GPU 10内执行图形管线100的元件可对应于在其他类型的API(诸如微软DirectX 11(DX11)和统一计算设备架构(CUDA)6.0)中定义的相似元件。例如,本领域普通技术人员将理解,曲面细分评估着色器125可对应于在DirectX 11中使用的域着色器,并且类似地,GPU 10中的其他元件可对应于在其他API中使用的元件。
输入装配器110可基于输入绘制调用(drawcall)将存储在存储器(图1中的30)中的与对象关联的顶点的数据提供给图形管线100。由图形管线100提供的顶点可与作为表面的表达的网格或贴片有关,但是不限于此。绘制调用是指示将在其上渲染对象的帧以及将在该帧上渲染的对象的命令。例如,绘制调用可以是用于在图像或帧上绘制图元(诸如三角形或矩形)的命令。
顶点着色器115可将由输入装配器110提供的顶点作为控制着色器121的输入控制点来传输。
控制着色器121、曲面细分器123和曲面细分评估着色器125可执行以上参照图3描述的曲面细分管线300。在一个示例中,输入到控制着色器121的输入控制点可被曲面细分评估着色器125输出为与输出贴片关联的曲面细分的顶点。
当执行曲面细分管线300时,图元装配器130可将经曲面细分的顶点转换为图元(即,经曲面细分的图元)。当未执行曲面细分管线300时,图元装配器130可将从顶点着色器115输出的顶点转换为图元。
像素组合器140可使用从图元装配器130输出的图元(或曲面细分的图元)来执行像素组合或图块化。在示例中,像素组合器140可通过执行深度测试(或图块Z测试)产生(像素组合)指示与每个输出图元所属的图块有关的信息的图块列表。在另一示例中,像素组合器140可产生可视性比特流,诸如,将参照图8至图11描述的包围盒比特流(第一比特流)、绘制调用比特流(第二比特流)、图元比特流(第三比特流)或曲面细分比特流。
光栅化器150可基于产生的图块列表将输出图元转换为2D空间的像素值。片元可意味着被图元覆盖的像素。片元着色器160可产生图元并确定片元的深度值、模板(stencil)值、颜色值等。片元着色器160的着色结果可被存储在缓冲器180(例如,帧缓冲器)中并可作为视频的帧被显示。
控制器170可控制图形管线100的元件110至150以及缓冲器180的整体操作和功能。
图7是根据实施例的图形管线的示图。
参照图7,控制器170可控制像素组合管线101和渲染管线102的操作。
在像素组合管线101中不存在曲面细分。如以上参照图3所述,由于当执行曲面细分管线300时产生关于多个三角形的数据,因此需要许多硬件/软件资源来处理这些数据。因此,当在像素组合管线101和渲染管线102二者中重复执行曲面细分并因此产生许多曲面细分的图元时,计算量可呈以指数方式增大并且计算处理速度可被降低。在示例中,图形管线(图1中的100)可执行推迟的曲面细分。图形管线(图1中的100)可在渲染管线102中执行曲面细分,而不在像素组合管线101中执行曲面细分。
在示例中,渲染管线102可包括第一子渲染管线102-1和第二子渲染管线102-2。第一子渲染管线102-1可以是执行曲面细分管线300的管线,第二子渲染管线102-2可以是不执行曲面细分管线300的管线。出于在像素组合管线101中不执行曲面细分同样的原因(例如,减小计算量、提高处理速度等),不执行曲面细分的子管线甚至可存在于渲染管线102中。
图8是根据实施例的像素组合管线101的示图。
将结合参照图6描述的GPU 10的硬件配置来描述图8所示的像素组合管线。在图8中,仅描述与本实施例关联的元件和管线阶段。因此,本领域普通技术人员将理解,在不脱离所描述的说明性示例的精神和范围的情况下,可包括除图8所示的元件和管线阶段以外的其他通用元件和管线阶段。
从存储器30提供的绘制调用821可被输入到像素组合管线101。绘制调用821可对应于与将在当前图像帧中被渲染的对象关联的绘制命令。
顶点着色器115可执行用于从输入绘制调用821产生顶点的顶点着色801。顶点着色器115可将产生的顶点传送到图元装配器130。图元装配器130可执行图元装配802以将从顶点着色器115输出的顶点转换为图元的集合。像素组合管线101可被设置以使得在顶点着色801和图元装配802之间不执行曲面细分。因此,在像素组合管线101中可不产生曲面细分图元。
像素组合器140可使用从图元装配器130输出的图元执行像素组合803或图块化。像素组合器140可执行像素组合803以通过执行深度测试(或图块Z测试)、剔除(culling,挑选)、裁剪、隐藏面消除(HSR)等来预测指示关于图元属于哪些图块的信息的图块列表。在示例中,预测的图块列表可作为比特流822被存储在存储器30中。在另一示例中,为了更快访问,通过像素组合器140的像素组合803的结果可被存储在设置于GPU 10的缓冲器180中的高速缓存185中,而不是存储器30中。像素组合器140可执行像素组合803以产生可视性比特流,诸如包围盒比特流、绘制调用比特流、图元比特流等。绘制调用可视性比特流可包括指示每个图块中的每个绘制调用的可视性的信息,图元比特流可包括指示每个图块中的每个图元的可视性的信息。
图9是示出产生包围盒比特流的方法的示例的示图。图9中的操作可按照所示的顺序和方式来执行,但是在不脱离描述的说明性示例的精神和范围的情况下,一些操作的次序可被改变或者一些操作可被省略。图9所示的许多操作可被并行执行或被同时执行。除了以下图9的描述之外,图1至图8的以上描述也可应用于图9,并且通过引用包含于此。因此,以上描述在这里不会再重复。
参照图9,在901,像素组合器140可确定每个输入绘制调用是需要曲面细分的第一类绘制调用还是不需要曲面细分的第二类绘制调用。
在902,像素组合器140可执行图块像素组合以识别覆盖与第一类绘制调用对应的包围盒的图块列表。在另一示例中,因为不需要曲面细分的第二类绘制调用即使在渲染管线中也将不被曲面细分,所以像素组合器140可不对与第二类绘制调用相应的包围盒执行图块像素组合。
在903,像素组合器140可基于包围盒的图块像素组合的结果产生包括指示第一类绘制调用的标识信息、指示第二类绘制调用的标识信息以及关于图块列表的信息的包围盒比特流。包围盒比特流可包括指示是否对于每个输入绘制调用需要曲面细分的信息和关于覆盖与需要曲面细分的第一类绘制调用对应的包围盒的图块列表的信息。
在另一示例中,在操作901至903产生包围盒比特流的处理可在参照图8描述的像素组合803的阶段中被执行。
图10是示出由2×2的图块覆盖的绘制调用的示例的示图。
参照图10,第零绘制调用1000、第一绘制调用1001和第二绘制调用1002可由2×2的图块(即,图块0至图块3)覆盖。图10的示例仅为了便于描述,本实施例不限于此。第零绘制调用1000、第一绘制调用1001和第二绘制调用1002中的每个可包括三个图元。在这种情况下,假设第零绘制调用1000对应于需要曲面细分的绘制调用而第一绘制调用1001和第二绘制调用1002对应于不需要曲面细分的绘制调用。
参照以上参照图9描述的901,像素组合器135可确定第零绘制调用1000对应于第一类绘制调用而第一绘制调用1001和第二绘制调用1002对应于第二类绘制调用。参照以上参照图9描述的操作902,像素组合器135可确定与第零绘制调用1000相应的包围盒并通过图块像素组合来识别覆盖与第零绘制调用1000相应的包围盒的图块列表(图块0和图块2)。通过对从第一类绘制调用产生的曲面细分图元所执行的图块像素组合识别的图块列表可被包括在通过对与第一类绘制调用相应的包围盒所执行的图块像素组合识别的图块列表中。这是因为由从第一类绘制调用产生的曲面细分图元所定义的空间与相应于第一类绘制调用的包围盒没有不同。以下将参照图11描述细节。
图11是示出用于描述包围盒1110的空间与由曲面细分图元1102定义的空间之间的包含关系的示例的示图。
参照图11,与第一类绘制调用1101相应的包围盒1110可包括由第一类绘制调用1101定义的空间。在第一类绘制调用1101被曲面细分之后,由曲面细分图元1102定义的空间可不偏离包围盒1110,因为图形API设置包围盒1110以使得由曲面细分图元1102定义的空间被包括在包围盒1110中。
当即使在像素组合管线(图8中的101)中未执行曲面细分但还是对包围盒执行图块像素组合时,可获取与通过对曲面细分图元执行图块像素组合所获取的结果类似的结果。因此,在像素组合管线(图8中的101)中可跳过曲面细分管线(曲面细分阶段)。因此,与在像素组合管线(图8中的101)中执行的曲面细分相比,在GPU 10中减少计算量并且提高处理速度。
图12是根据实施例的用于描述包围盒比特流的产生的示图。
参照图12,假设第零绘制调用1000对应于需要曲面细分的绘制调用而第一绘制调用1001和第二绘制调用1002对应于不需要曲面细分的绘制调用。
关于图12所示的包围盒比特流中的“1 0 2”,为首的“1”可意味着针对第零绘制调用1000需要曲面调用,而1之后的“0 2”可意味着覆盖与绘制调用1000相应的包围盒1200的图块为“图块0”和“图块2”。包围盒比特流中的“1 0 2”之后的“0 0”可意味着针对第一绘制调用1001和第二绘制调用1002不需要曲面细分。
包围盒比特流可包括指示针对每个输入绘制调用1000、1001和1002是否需要曲面细分的信息,以及关于覆盖与需要曲面细分的绘制调用1000相应的包围盒1200的图块列表的信息。在其他示例中,只要比特流能够包括上述信息,则可对比特流的形式(诸如以上参照图12描述的“1 0 2 0 0”)进行各种改变。
图13是根据实施例的用于描述各种类型的可视性比特流的示例的示图。
参照图13,像素组合器140可产生包围盒比特流、绘制调用比特流、图元比特流和曲面细分比特流。包围盒比特流可以是在像素组合管线101中产生的比特流,曲面细分比特流可以是在渲染管线102中产生的比特流。
由于包围盒比特流与参照图12描述的基本相同,因此包围盒比特流的详细描述将被省略。
因为需要曲面细分的第一类绘制调用(例如,第零绘制调用1000)的可视性已被反映到包围盒比特流,所以绘制调用比特流和图元比特流可针对不需要曲面细分的第二类绘制调用(例如,第一绘制调用1001和第二绘制调用1002)而产生。
绘制调用比特流是用于识别每个图块中的可视性绘制调用的比特流。例如,由于图块0覆盖第一绘制调用1001,因此“1 0”被分配给图块0。由于图块1覆盖第一绘制调用1001和第二绘制调用1002二者,因此“1 1”被分配给图块1。由于图块2既不覆盖第一绘制调用1001也不覆盖第二绘制调用1002,因此“0 0”被分配给图块2。由于图块3覆盖第二绘制调用1002,因此“0 1”被分配给图块3。
图元比特流是用于识别每个图块中的可视的图元的比特流。例如,由于图块0仅覆盖第一绘制调用1001的图元P0,因此“1 0 0 0 0 0”被分配给图块0。由于图块1覆盖第一绘制调用1001和第二绘制调用1002的所有图元,因此“1 1 1 1 1 1”被分配给图块1。由于图块2不覆盖第一绘制调用1001和第二绘制调用1002中的任何图元,因此“0 0 0 0 0 0”被分配给图块2。由于图块3覆盖第二绘制调用1002的图元P0、P1和P3,因此“0 0 0 1 1 1”被分配给图块3。
如上所述,在渲染管线102中执行曲面细分之后可产生曲面细分比特流。曲面细分比特流是用于识别每个图块中的可视的曲面细分图元的比特流。由于仅对第零绘制调用1000执行曲面细分并且与第零绘制调用1000相应的包围盒在包围盒比特流中被定义为“02”,因此曲面细分比特流可仅包括图块0和图块2的可视性信息。由于图块0覆盖第零绘制调用1000的图元P0、P1和P3,因此“1 1 1”被分配给图块0。由于图块2也覆盖第零绘制调用1000的图元P0、P1和P3,因此“1 1 1”被分配给图块2。
如上所述,渲染管线102可使用将被处理的当前图块中的可视的包围盒、可视的绘制调用和可视的图元基于各种类型的可视性比特流来执行渲染,并且还可跳过对不存在可视的对象的图块的渲染的步骤,从而在GPU 10中减少计算量并提高处理速度。
图14是根据实施例的用于描述渲染管线102的示图。
关于结合图6描述的GPU 10的硬件配置来描述图14所示的渲染管线102。以下将描述与本实施例关联的元件和管线阶段。因此,本领域普通技术人员将理解,除了图14所示的元件和管线阶段以外,还可包括其他通用元件和管线阶段。
渲染管线102可使用在像素组合管线101中产生的包围盒比特流,针对需要曲面细分的第一类绘制调用和不需要曲面细分的第二类绘制调用以不同的渲染方案来渲染图块。在示例中,可由包括曲面细分阶段的第一子渲染管线102-1处理第一类绘制调用,并且可由不包括曲面细分阶段的第二子渲染管线102-2处理第二类绘制调用。当在将被处理的当前图块中识别到由包围盒比特流分配的包围盒时,渲染管线102可通过执行选择性曲面细分(即,渲染管线102可对与识别的包围盒相应的绘制调用执行曲面细分而不对其他绘制调用执行曲面细分)来渲染当前图块。
GPU 10的控制器170可基于包括在包围盒比特流中的图块像素组合的结果安排图块的渲染次序,以使得将高优先级分配给覆盖包围盒的图块。因此,渲染管线102可根据安排的图块的渲染次序以每个图块为基础执行渲染。
从存储器30提供的绘制调用821被输入到渲染管线102。控制器170可确定每个输入绘制调用821是第一类绘制调用还是第二类绘制调用。控制器170可控制针对第一类绘制调用的第一子渲染管线102-1的操作并且控制针对第二类绘制调用的第二子渲染管线102-2的操作。
第一子渲染管线102-1可对在先前图块中尚未执行曲面细分的第一类绘制调用执行操作1411至1418的渲染阶段。第一子渲染管线102-1可对在先前图块中已执行曲面细分并且通过曲面细分产生的曲面细分比特流已被存储在存储器30中的第一类绘制调用执行操作1401、1417和1418的渲染阶段。因此,通过不对已执行曲面细分的第一类绘制调用重复曲面细分操作,可减少GPU 10的计算量。
在以下描述中,将采取上面已参照图10至图13描述的由2×2的图块覆盖的第零绘制调用1000、第一绘制调用1001和第二绘制调用1002作为示例。对第零绘制调用1000执行第一子渲染管线102-1,对第一绘制调用1001和第二绘制调用1002执行第二子渲染管线102-2。在另一示例中,可假设与第零绘制调用1000相应的包围盒被图块0和图块2覆盖,并且安排渲染次序以使得图块0比图块2更早被渲染。由于第零绘制调用1000的所有图元P0、P1和P2被覆盖在图块0中,因此当完成对图块0的曲面细分时,图元P0、P1和P2的曲面细分图元可被产生并可被存储在存储器30的比特流822中。当渲染图块2(当前图块)时,因为通过渲染图块0(先前图块)而被曲面细分的图元已经产生,所以可不需要曲面细分。因此,当渲染图块2(当前图块)时,跳过曲面细分,加载存储在存储器30的比特流822中的曲面细分图元的数据,并执行剩余的渲染阶段。
以下将描述将对在先前图块中尚未执行曲面细分的第一类绘制调用(即,将被初始曲面细分的绘制调用)执行的操作1411至1418的渲染阶段。
顶点着色器115可执行顶点着色1411以从绘制调用821之中的第一类绘制调用产生顶点。顶点着色器115可将产生的顶点传送到控制着色器121。
如以上参照图3描述的,控制着色器121、曲面细分器123和曲面细分评估着色器125可通过使用顶点执行控制着色1412、曲面细分1413和曲面细分评估着色1414来产生曲面细分的顶点。
图元装配器130可执行图元装配1415,以将曲面细分的顶点转换成曲面细分图元的集合。
像素组合器140可使用从图元装配器130输出的曲面细分的图元执行像素组合1416或图块化。即,像素组合器140可执行像素组合1416以通过执行深度测试(或图块Z测试)、剔除(culling,挑选)、裁剪、隐藏面消除(HSR)等来预测指示关于曲面细分图元属于哪些图块的信息的图块列表。此外,像素组合器140可通过执行像素组合1416产生可视性比特流(诸如曲面细分比特流)并将可视性比特流存储在存储器30的比特流822中。如上所述,为了更快访问,所产生的可视性比特流可被存储在设置于GPU 10的缓冲器180中的高速缓存(图8中的185)中,而不是存储器30中。关于曲面细分的图元的坐标的信息也可被存储在存储器30或高速缓存185中。
光栅化器150可执行光栅化1417以通过使用存储在存储器30或高速缓存185中的可视性比特流将曲面细分图元转换成2D空间中的像素值。片元着色器160可产生片元并执行片元着色1418以确定片元的深度值、模板值、颜色值等。由片元着色器160执行的片元着色1418的结果可被存储在缓冲器180(例如,帧缓冲器)中并可作为视频的帧被显示。
以下将描述将对在先前图块中已执行曲面细分的第一类绘制调用执行的操作1401、1417和1418的渲染阶段。
在操作1401,从存储器30或高速缓存185加载曲面细分图元的曲面细分比特流和坐标数据。光栅化器150可使用曲面细分图元的加载的曲面细分比特流和加载的坐标数据执行光栅化1417,以将曲面细分图元转换成2D空间中的像素值。片元着色器160可产生片元并执行片元着色1418以确定片元的深度值、模板值、颜色值等。由片元着色器160执行的片元着色1418的结果可被存储在缓冲器180(例如,帧缓冲器)中并可作为视频的帧被显示。
可对第二类绘制调用执行第二子渲染管线102-2。由于第二类绘制调用不需要曲面细分,因此第二子渲染管线102-2可不包括曲面细分管线(曲面细分阶段),诸如操作1412至1414。在将在当前图块中处理的第一类绘制调用的曲面细分图元已在先前图块中产生的情况下,可跳过将在当前图块中处理的绘制调用的曲面细分。
顶点着色器115可执行顶点着色1421以从绘制调用821之中的第二类绘制调用产生顶点。顶点着色器115可将产生的顶点传送到图元装配器130。
图元装配器130可执行图元装配1422,图元装配1422将从顶点着色器115输出的顶点转换成图元。
光栅化器150可执行光栅化1423以通过使用存储在存储器30或高速缓存185中的可视性比特流(绘制调用比特流、图元比特流等)将曲面细分图元转换成2D空间中的像素值。片元着色器160可产生片元并执行片元着色1424以确定片元的深度值、模板值、颜色值等。由片元着色器160执行的片元着色1424的结果可被存储在缓冲器180(例如,帧缓冲器)中并可作为视频的帧被显示。
另一方面,在第一类绘制调用的曲面细分图元不在将被随后处理的其他图块中使用的情况下,控制器170可控制操作以使得在执行渲染管线的同时从存储器30和高速缓存185删除与曲面细分图元关联的数据。
如上所述,在渲染管线102中,可根据输入绘制调用的类型(即,输入绘制调用是第一类绘制调用还是第二类绘制调用)执行不同类型的子渲染管线102-1和102-2。仅对需要曲面细分的绘制调用执行曲面细分,而不是对所有绘制调用无条件地执行曲面细分,从而在减少GPU 10的计算量的同时提高了处理速度。
图15是示出执行渲染管线102的方法的示例的示图。可按照如图所示的顺序和方式执行图15的操作,但是在不脱离描述的说明性示例的精神和范围的情况下,一些操作的次序可被改变或者一些操作可被省略。图15所示的许多操作可被并行执行或被同时执行。除了以下图15的描述之外,图1至图14的以上描述也可应用于图15,并且通过引用包含于此。因此,以上描述在这里不会再重复。
在1501,GPU 10可使用可视性比特流安排图块的渲染次序。在这种情况下,GPU 10可安排图块的处理次序以使得使用包围盒比特流将更高的优先级分配给覆盖包围盒的图块。
在1502,GPU 10可基于安排的结果确定将被处理(渲染)的当前图块。
在1503,GPU 10可确定被当前图块覆盖的绘制调用是否为需要曲面细分的绘制调用(即,第一类绘制调用)。当被当前图块覆盖的绘制调用为第一类绘制调用时,GPU 10进行到操作1504。然而,当被当前图块覆盖的绘制调用不是第一类绘制调用而是不需要曲面细分的绘制调用(即,第二类绘制调用)时,GPU 10进行到操作1505。
在1504,GPU 10可确定在存储器30或高速缓存185中是否存在曲面细分比特流。当存在曲面细分比特流时,GPU 10进行到1507。当不存在曲面细分比特流(需要曲面细分)时,GPU 10进行到1506。
在1505,GPU 10可对不需要曲面细分的第二类绘制调用执行第二子渲染管线102-2。
在1506,当不存在曲面细分比特流(即,初始执行曲面细分)时,GPU 10可通过对输入到GPU 10的第一类绘制调用执行曲面细分管线300来产生曲面细分比特流。然后,可将曲面细分图元的产生的曲面细分比特流和产生的坐标数据存储在存储器30或高速缓存185中。
在1507,GPU 10可使用在渲染先前图块的过程中存储的曲面细分图元的产生的曲面细分比特流和产生的坐标数据或者在1506产生的曲面细分图元的曲面细分比特流和坐标数据来执行其他渲染阶段。
在1508,GPU 10可确定在将被随后处理的其他图块中是否再次使用曲面细分比特流。即,GPU 10可确定在将被随后处理的其他图块中是否使用在当前图块中处理的第一类绘制调用。当在随后的其他图块中使用在当前图块中处理的第一类绘制调用时,GPU 10进行到操作1510。当在随后的其他图块中不使用在当前图块中处理的第一类绘制调用时,GPU10进行至1509。
在1509,当在随后的其他图块中不使用在当前图块中处理的第一类绘制调用时,GPU 10可控制从存储器30或高速缓存185删除与曲面细分图元关联的数据的操作。
在1510,GPU 10可确定在当前图块中是否存在未渲染的绘制调用。当在当前图块中存在未渲染的绘制调用时,GPU 10返回操作1502。当在当前图块中不存在未渲染的绘制调用时,GPU 10进行到1511。
在1511,GPU 10可确定是否存在未渲染的图块。当存在未渲染的图块时,GPU 10返回操作1502。当不存在未渲染的图块时,完成渲染管线的执行。
图16是示出根据实施例的计算设备1的硬件配置的示图。
参照图16,计算设备1可包括GPU 10、CPU 20、存储器30、缓冲器35、总线40、显示器1601、输入单元1603和通信器1605。在图16中仅示出与本实施例有关的计算设备1的元件。因此,本领域普通技术人员将理解,计算设备1还可包括除了图16中示出的元件以外的其他通用元件。
GPU 10、CPU 20和存储器30可执行以上参照附图描述的操作和功能。
缓冲器35可存储通过基于图块的图形管线或基于图块的渲染而输出的图块信息。例如,缓冲器35可存储在图块中进行深度测试的结果或在图块中进行渲染的结果。虽然在图16中将缓冲器35示出为与计算设备1中的GPU 10、CPU 20或存储器30分开,但是缓冲器35可被设置于GPU 10、CPU 20或存储器30内部。
显示器1601可以是用于将各种信息(诸如由计算设备1处理的信息或将被计算设备1处理的信息)显示给用户的显示界面。在一个示例中,显示器1601可显示用于视觉并直观地将由计算设备1处理的信息提供给用户的图形用户界面(GUI)。例如,显示器1601可显示由GPU 10处理的图形数据。显示器1601可以是包括提供渲染用户界面和/或接收用户输入的能力的一个或更多个硬件组件的物理结构,诸如,液晶显示器(LCD)面板、发光二极管(LED)面板和等离子体显示面板(PDP)。显示器能够包含显示区域、手势捕捉区域、触敏显示器和/或可配置区域的任何组合。显示器可被嵌入信号特征提取设备中或者可以是可从信号特征提取设备附接和拆卸的外围装置。显示器可以是单屏或多屏显示器。单个物理屏幕可包括被管理为允许不同内容被显示在单独的显示器上的单独的逻辑显示器的多个显示器(虽然为相同物理屏幕的部分)。显示器还可被实现为包括单眼眼镜或双眼眼镜的眼镜显示器(EGD)。
输入单元1603可以是用于允许用户输入信息的输入接口。在示例中,输入单元1603可被实现为触摸板、轨迹球、鼠标、键盘或游戏控制器的形式。在示例中,显示器1601和输入单元1603可通过集成触摸屏来实现。
通信器1605可包括用于移动通信的移动通信模块、有线/无线局域网(LAN)模块、用于近程无线通信的Wi-Fi模块、蓝牙模块、近场通信(NFC)模块等。
图17是示出执行图形管线100的方法的示例的示图。图17中的操作可按照如图所示的顺序和方式来执行,但是在不脱离描述的说明性示例的精神和范围的情况下,一些操作的次序可被改变或者一些操作可被省略。图17所示的许多操作可被并行执行或被同时执行。除了以下图17的描述之外,图1至图16的以上描述也可应用于图17,并且通过引用包含于此。因此,以上描述在这里不会再重复。
在1701,GPU 10可执行像素组合管线101以产生包括与需要曲面细分的绘制调用相应的包围盒的图块像素组合的结果的包围盒比特流。
在1702,当在将被处理的当前图块中识别到由包围盒比特流分配的包围盒时,GPU10可执行渲染管线102以通过对与识别的包围盒相应的绘制调用执行选择性曲面细分来渲染当前图块。
可由硬件组件来实现例如可执行在此针对图1、图7、图8、图9、图14、图15和图17描述的操作的例如在图1、图3、图6、图7、图8、图14、图16和图17中示出的设备、单元、模块、装置和其他组件。硬件组件的示例包括控制器、传感器、存储器、驱动器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器和本领域普通技术人员公知的任何其他电子组件。在一个示例中,硬件组件由一个或更多个处理装置或处理器或计算机实现。处理装置、处理器或计算机由一个或更多个处理元件(诸如逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器)或本领域普通技术人员公知的任何其他装置或装置的组合实现,这些装置或装置的组合能够以限定的方式响应并执行指令以得到期望的结果。在一个示例中,处理装置、处理器或计算机包括或连接到存储被处理装置、处理器或计算机执行的指令或软件以及可控制处理装置、处理器或计算机实现在此描述的一个或更多个方法的一个或更多个存储器。由处理装置、处理器或计算机例如通过实现计算机执行代码、指令或软件(诸如操作系统(OS)和在OS上运行的一个或更多个软件应用)来实现的硬件组件可执行针对图1、图7、图8、图9、图14、图15和图17在此描述的操作(仅作为示例)。硬件组件还响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为简单起见,在此描述的示例的描述中使用单数术语“计算设备”、“处理器”或“计算机”,但是在其他示例中,使用多个计算设备(计算装置)、处理器或计算机,或者一个计算设备、处理器或计算机包括多个处理元件或多种类型的处理元件,或者应用以上两种形式。在一个示例中,硬件组件包括多个处理器,而在另一示例中,硬件组件包括一个处理器和一个控制器。硬件组件具有任意一个或更多个不同的处理配置,所述不同处理配置的示例包括单个处理器、独立处理器、并行处理器、远程处理环境、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理、以及多指令多数据(MIMD)多处理。此外,在各种设备图中示出的连接线或连接器意在表示示例功能关系和/或各种硬件元件之间的物理或者逻辑结合,在许多可选或另外的功能关系的情况下,物理连接或逻辑连接可存在于相应的装置实施例中。
在图1、图7、图8、图9、图14、图15和图17中示出的执行在此描述的操作的方法可由如上所述的执行可读代码、指令或软件以执行在此描述的操作的计算硬件、处理器或计算机来执行。
用于控制处理器或计算机以实现硬件组件并执行如上所述的方法的指令或软件被写为计算机程序、代码段、指令或它们的任意组合,用于单独或共同指示或配置处理器或者计算机作为机器或专用计算机操作,以执行由硬件组件执行的操作和如上所述的方法。在一个示例中,指令或软件包括被处理器或计算机直接执行的机器代码(诸如由编译器产生的机器代码)。在另一示例中,指令或软件包括被处理器或计算机使用解释器执行的高级代码。基于这里的公开,本领域普通技术程序员能够容易地基于附图中示出的框图和流程图以及说明书中的相应描述来编写处理器或计算机可读代码、指令或软件,这些框图和流程图以及说明书中的相应描述公开了用于执行由硬件组件执行的操作和如上所述的方法的算法。
用于控制计算设备(或计算装置)、处理装置、处理器或计算机以实现硬件组件(诸如在图1、图3、图6、图7、图8、图14、图16和图17中的任何图中所讨论的)并执行如上在图1、图7、图8、图9、图14、图15和图17中的任何图中所描述的方法的处理器或计算机可读代码、指令或软件、以及任何关联数据、数据文件和数据结构被记录、存储或固定在一个或更多个非暂时性处理器/计算机可读存储介质中或非暂时性处理器/计算机可读存储介质上。非暂时性处理器/计算机可读存储介质的示例包括只读存储器(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、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及本领域普通技术人员公知的任何装置,所述本领域普通技术人员公知的任何装置能够以非暂时性方式存储处理器或计算机可读代码、指令或软件以及任何关联数据、数据文件和数据结构,并能向处理装置、处理器或计算机提供处理器或计算机可读代码、指令或软件以及任何关联数据、数据文件和数据结构,以使处理装置、处理器或计算机能执行指令。在一个示例中,处理器或计算机可读代码、指令或软件以及任何关联数据、数据文件和数据结构被分布于联网的计算机系统上,以使指令和软件以及任何关联数据、数据文件和数据结构被处理装置、处理器或计算机以分布方式存储、访问和执行。
仅作为非详尽示例,这里的电子装置实施例(诸如以上关于图1、图3、图6、图7、图8、图14、图16和图17描述的和/或被配置为实现关于图1、图7、图8、图9、图14、图15和图17所述的方法的电子装置)可包括移动装置(诸如,移动电话、蜂窝电话、智能电话、可穿戴智能装置(诸如,戒指、手表、眼镜、眼镜式装置、手镯、踝部支架、带子、项链、耳环、头带、头盔、嵌入衣服的装置)、个人计算机(PC)、膝上型电脑、笔记本、小型笔记本、上网本或超移动PC(UMPC)、平板个人计算机(平板)、平板手机、移动互联网装置(MID)、个人数字助理(PDA)、企业数字助理(EDA)、数码相机、数码摄像机、便携式游戏机、MP3播放器、便携式/个人多媒体播放器(PMP)、手持电子书、超移动个人计算机(UMPC)、便携式膝上PC、全球定位系统(GPS)导航、个人导航装置或便携式导航装置(PND)、手持游戏机、电子书)以及诸如高清晰电视(HDTV)、光盘播放器、DVD播放器、蓝牙播放器、机顶盒、机器人清洁器、家用电器、内容播放器、通信系统、图像处理系统、图形处理系统、其他消费者电子/信息技术(CE/IT)装置的装置或者能够进行与在此公开相一致的无线通信或网络通信的任何其他装置。移动装置可在智能电器、智能车辆或智能家居系统中实现。
移动装置还可被实现为穿戴在用户身体上的可穿戴装置。在一个示例中,可穿戴装置可以是可自安装在用户身体上的,诸如,手表、手镯或者包括单眼眼镜或双眼眼镜的眼镜显示器(EGD)。在另一非详尽示例中,可穿戴装置可通过附接装置被安装到用户的身体上,诸如,使用臂带将智能电话或平板附接到用户的手臂、将可穿戴装置并入用户的衣服中或者使用挂绳将可穿戴装置悬挂在用户的颈部周围。根据实施例,移动装置包括显示器。
虽然本公开包括具体示例,但是本领域普通技术人员将清楚,在不脱离权利要求及其等同物的精神和范围的情况下,可以在这些示例中进行形式和细节上的各种改变。这里描述的示例被认为仅具有描述性意义,而不用于限制的目的。每个示例中的特征或方面的描述将被认为可适用于其他示例中的类似特征或方面。如果以不同的次序执行描述的技术和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合和/或被其他组件及其等同物替换或补充,则可得到合适的结果。因此,本公开的范围不是由具体实施方式限定,而是由权利要求及其等同物进一步支持,并且权利要求及其等同物的范围内的所有变化将被解释为包括在本公开中。
Claims (15)
1.一种在图形处理设备中执行图形管线的方法,所述方法包括:
像素组合以产生与需要曲面细分的绘制调用对应的包围盒比特流;
响应于在将被处理的当前图块中识别到由包围盒比特流分配的包围盒,通过对与识别的包围盒对应的绘制调用执行选择性的曲面细分来渲染当前图块。
2.如权利要求1所述的方法,其中,包围盒比特流包括:指示是否将要针对每个输入绘制调用执行曲面细分的信息以及关于覆盖与需要曲面细分的绘制调用对应的包围盒的图块列表的信息。
3.如权利要求1所述的方法,其中,像素组合的步骤包括:由像素组合管线产生包括指示每个输入绘制调用的可视性的信息的绘制调用比特流以及包括指示包括在该输入绘制调用中的图元的可视性的信息的图元比特流。
4.如权利要求1所述的方法,还包括:
由像素组合管线确定每个输入绘制调用是需要曲面细分的第一类绘制调用还是不需要曲面细分的第二类绘制调用;
由像素组合管线执行图块像素组合以识别覆盖与第一类绘制调用相应的包围盒的图块列表;
由像素组合管线产生包括指示第一类绘制调用的标识信息、指示第二类绘制调用的标识信息以及关于图块列表的信息的包围盒比特流。
5.如权利要求1所述的方法,其中,在渲染管线渲染当前图块的步骤包括:使用包围盒比特流针对需要曲面细分的第一类绘制调用以及针对不需要曲面细分的第二类绘制调用以不同的渲染机制渲染当前图块。
6.如权利要求5所述的方法,其中,第一类绘制调用由包括曲面细分阶段的第一子渲染管线处理,第二类绘制调用由不包括曲面细分阶段的第二子渲染管线处理。
7.如权利要求6所述的方法,其中,
响应于确定尚未在先前图块中执行针对第一类绘制调用的曲面细分,第一子渲染管线对当前图块中将被处理的第一类绘制调用执行曲面细分;
响应于确定已经在先前图块中产生针对第一类绘制调用的曲面细分图元,第一子渲染管线跳过针对当前图块中将被处理的第一类绘制调用的曲面细分。
8.如权利要求1所述的方法,还包括:
由渲染管线基于包围盒比特流的图块像素组合的结果安排图块的渲染次序,以使得更高优先级被分配给覆盖包围盒的图块;
由渲染管线根据安排的渲染次序以每个图块为基础执行渲染。
9.如权利要求1所述的方法,还包括:响应于针对第一类绘制调用的曲面细分图元未在其他图块中使用,从存储器删除与所述曲面细分图元关联的数据。
10.一种用于执行图形管线的计算设备,所述计算设备包括图形处理单元(GPU)和存储器,
图形处理单元被配置为:
执行像素组合管线以产生与需要曲面细分的绘制调用对应的包围盒比特流;
响应于在将被处理的当前图块中识别到由包围盒比特流分配的包围盒,执行渲染管线以通过对与识别的包围盒对应的绘制调用执行选择性的曲面细分来渲染当前图块;
存储器被配置为存储在像素组合管线中产生的包围盒比特流并将存储的包围盒比特流提供给渲染管线。
11.如权利要求10所述的计算设备,其中,包围盒比特流包括:指示是否将针对每个输入绘制调用执行曲面细分的信息以及关于覆盖与需要曲面细分的绘制调用对应的包围盒的图块列表的信息。
12.如权利要求10所述的计算设备,其中,当执行像素组合管线时,所述GPU还被配置为:产生包括指示每个输入绘制调用的可视性的信息的绘制调用比特流以及包括指示包括在该输入绘制调用中的图元的可视性的信息的图元比特流。
13.如权利要求10所述的计算设备,其中,当执行像素组合管线时,所述GPU还被配置为:
确定每个输入绘制调用是需要曲面细分的第一类绘制调用还是不需要曲面细分的第二类绘制调用;
执行图块像素组合以识别覆盖与第一类绘制调用对应的包围盒的图块列表;
产生包括指示第一类绘制调用的标识信息、指示第二类绘制调用的标识信息以及关于图块列表的信息的包围盒比特流。
14.如权利要求10所述的计算设备,其中,当执行渲染管线时,所述GPU还被配置为:使用包围盒比特流针对需要曲面细分的第一类绘制调用以及针对不需要曲面细分的第二类绘制调用以不同的渲染机制渲染当前图块,
其中,第一类绘制调用由包括曲面细分阶段的第一子渲染管线来处理,第二类绘制调用由不包括曲面细分阶段的第二子渲染管线来处理。
15.如权利要求10所述的计算设备,其中,当执行渲染管线时,所述GPU还被配置为:
基于包括在包围盒比特流中的图块像素组合的结果安排图块的渲染次序,以使得更高优先级被分配给覆盖包围盒的图块;
根据安排的渲染次序以每个图块为基础执行渲染。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2015-0161918 | 2015-11-18 | ||
KR1020150161918A KR102381945B1 (ko) | 2015-11-18 | 2015-11-18 | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107038740A true CN107038740A (zh) | 2017-08-11 |
CN107038740B CN107038740B (zh) | 2021-09-14 |
Family
ID=57256107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611013541.3A Active CN107038740B (zh) | 2015-11-18 | 2016-11-17 | 图形处理设备和执行图形管线的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10192357B2 (zh) |
EP (1) | EP3171336B1 (zh) |
JP (1) | JP2017097870A (zh) |
KR (1) | KR102381945B1 (zh) |
CN (1) | CN107038740B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116912395A (zh) * | 2023-09-14 | 2023-10-20 | 武汉蜂鸟龙腾软件有限公司 | 基于OpenGL的图形混合渲染方法、装置及存储介质 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9842428B2 (en) * | 2014-06-27 | 2017-12-12 | Samsung Electronics Co., Ltd. | Dynamically optimized deferred rendering pipeline |
US11080928B2 (en) * | 2019-04-01 | 2021-08-03 | Qualcomm Incorporated | Methods and apparatus for visibility stream management |
US11373020B2 (en) * | 2019-07-29 | 2022-06-28 | GM Global Technology Operations LLC | Method and system with mesh data conversion for stamping dies |
US11010862B1 (en) * | 2019-11-14 | 2021-05-18 | Advanced Micro Devices, Inc. | Reduced bandwidth tessellation factors |
US20210287418A1 (en) * | 2020-03-10 | 2021-09-16 | Advanced Micro Devices, Inc. | Graphics processing unit render mode selection system |
KR102258610B1 (ko) * | 2020-08-07 | 2021-05-31 | 대한민국 | 모바일 기기에서의 대규모 건축물의 증강현실 구현을 위한 데이터 최적화에 의한 인터페이스 향상 방법 |
US20240005602A1 (en) * | 2022-06-30 | 2024-01-04 | Advanced Micro Devices, Inc. | Pipeline delay reduction for coarse visibility compression |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130120380A1 (en) * | 2011-11-16 | 2013-05-16 | Qualcomm Incorporated | Tessellation in tile-based rendering |
US20130265309A1 (en) * | 2012-04-04 | 2013-10-10 | Qualcomm Incorporated | Patched shading in graphics processing |
US20140043342A1 (en) * | 2012-08-09 | 2014-02-13 | Qualcomm Incorporated | Extending dx11 gpu for programmable vector graphics |
CN103870213A (zh) * | 2012-12-18 | 2014-06-18 | 辉达公司 | 经由管线化的状态包触发性能事件捕获 |
US20140267259A1 (en) * | 2013-03-15 | 2014-09-18 | Qualcomm Incorporated | Tile-based rendering |
US20140324204A1 (en) * | 2013-04-18 | 2014-10-30 | Massachusetts Institute Of Technology | Methods and apparati for implementing programmable pipeline for three-dimensional printing including multi-material applications |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011510396A (ja) | 2008-01-23 | 2011-03-31 | インテル コーポレイション | グラフィック・パフォーマンス改善のための方法、装置およびコンピュータ・プログラム・プロダクト |
GB201007348D0 (en) | 2010-04-30 | 2010-06-16 | Imagination Tech Ltd | Programmable tessellation in a tile based rendering system |
US8941676B2 (en) | 2012-10-26 | 2015-01-27 | Nvidia Corporation | On-chip anti-alias resolve in a cache tiling architecture |
GB2544679B (en) | 2012-12-20 | 2017-08-16 | Imagination Tech Ltd | Tessellating patches of surface data in tile based computer graphics rendering |
KR102109130B1 (ko) | 2013-08-12 | 2020-05-08 | 삼성전자주식회사 | 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들 |
-
2015
- 2015-11-18 KR KR1020150161918A patent/KR102381945B1/ko active IP Right Grant
-
2016
- 2016-07-06 US US15/202,608 patent/US10192357B2/en active Active
- 2016-11-04 EP EP16197336.7A patent/EP3171336B1/en active Active
- 2016-11-16 JP JP2016223100A patent/JP2017097870A/ja active Pending
- 2016-11-17 CN CN201611013541.3A patent/CN107038740B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130120380A1 (en) * | 2011-11-16 | 2013-05-16 | Qualcomm Incorporated | Tessellation in tile-based rendering |
US20130265309A1 (en) * | 2012-04-04 | 2013-10-10 | Qualcomm Incorporated | Patched shading in graphics processing |
US20140043342A1 (en) * | 2012-08-09 | 2014-02-13 | Qualcomm Incorporated | Extending dx11 gpu for programmable vector graphics |
CN103870213A (zh) * | 2012-12-18 | 2014-06-18 | 辉达公司 | 经由管线化的状态包触发性能事件捕获 |
US20140267259A1 (en) * | 2013-03-15 | 2014-09-18 | Qualcomm Incorporated | Tile-based rendering |
US20140324204A1 (en) * | 2013-04-18 | 2014-10-30 | Massachusetts Institute Of Technology | Methods and apparati for implementing programmable pipeline for three-dimensional printing including multi-material applications |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116912395A (zh) * | 2023-09-14 | 2023-10-20 | 武汉蜂鸟龙腾软件有限公司 | 基于OpenGL的图形混合渲染方法、装置及存储介质 |
CN116912395B (zh) * | 2023-09-14 | 2024-01-12 | 武汉蜂鸟龙腾软件有限公司 | 基于OpenGL的图形混合渲染方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20170140573A1 (en) | 2017-05-18 |
EP3171336A1 (en) | 2017-05-24 |
EP3171336B1 (en) | 2019-02-27 |
JP2017097870A (ja) | 2017-06-01 |
US10192357B2 (en) | 2019-01-29 |
KR102381945B1 (ko) | 2022-04-01 |
CN107038740B (zh) | 2021-09-14 |
KR20170058113A (ko) | 2017-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107038740A (zh) | 图形处理设备和执行图形管线的方法 | |
EP3026635B1 (en) | Graphic processing unit and method of performing, by graphic processing unit, tile-based graphics pipeline | |
CN105574924B (zh) | 渲染方法、渲染设备和电子设备 | |
US10332307B2 (en) | Apparatus and method performing rendering on viewpoint disparity image | |
CN106575228B (zh) | 图形处理中的渲染目标命令重新排序 | |
US11615284B2 (en) | Efficient transferring of human experiences to robots and other autonomous machines | |
CN105518742B (zh) | 用于图形处理的任意控制点处的容错抢占机制 | |
CN103733170B (zh) | 对象在应用之间的拖拽和放下 | |
CN103649922B (zh) | 着色器操作的同步方法及装置 | |
US10535186B2 (en) | Multi-resolution deferred shading using texel shaders in computing environments | |
US10657706B2 (en) | 3D rendering method and apparatus | |
CN106605211A (zh) | 着色器的渲染时间链接 | |
CN116091329B (zh) | 图像处理方法、装置、设备及存储介质 | |
Qiu et al. | Concurrent pipeline rendering scheme based on GPU multi-queue and partitioning images | |
WO2017222646A1 (en) | Extension of register files for local processing of data in computing environments | |
US20180095754A1 (en) | Graphics processing apparatus and method of executing instructions | |
US20140028668A1 (en) | Multiple scissor plane registers for rendering image data | |
WO2023185476A1 (zh) | 对象渲染方法、装置、电子设备、存储介质及程序产品 | |
US10692169B2 (en) | Graphics driver virtual channels for out-of-order command scheduling for a graphics processor |
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 |