于系统存储器中产生α提示的方法及其图形装置与流程

文档序号:11621218阅读:157来源:国知局
于系统存储器中产生α提示的方法及其图形装置与流程

【相关申请的交叉引用】

本申请主张申请于2016年1月22日申请号为no.62/281,814的美国临时申请的。

【技术领域】

本发明是关于一种图形处理系统,特别是关于于系统存储器中产生α提示的方法及其图形装置。



背景技术:

于计算机图形中,渲染是根据图形对象或模型的描述于显示装置上产生图像的过程。图形处理单元(graphicsprocessingunit,gpu)将2d以及3d图形对象渲染为图片元素(像素),2d以及3d图形通常是由图元(primitive)的组合来表示,例如:点、线、多边形、以及更高阶表面(higherordersurface)。gpu通常包括用于执行渲染操作的渲染管线(renderingpipeline)。渲染管线包括以下的主要阶段:(1)顶点(vertex)处理,其对描述图元的顶点进行处理,并将其转换至投影空间(projectionspace),(2)光栅化,其将每个图元转换为与显示的像素网格(pixelgrid)对齐(alignedwith)的一组像素,(3)分段处理,处理每个独立的像素以产生颜色以及深度值,以及(4)输出处理,其将所有的像素组合至2d显示空间的表面(即,图像层)。

通常,显示的图像(即,帧)是由多个表面组成,且每个表面是由多个像素组成。每个像素由多个值以及属性(attribute)来描述,包含但不限于:像素位置、深度值、以及颜色值,例如:四个元组(tuple)向量r、g、b、a分别指示了红、绿、蓝的值、以及指示像素透明度的α值。通常,α值的正常范围为[0、1],0表示全透明,1表示全不透明(fullyopaque)。全透明表面仅包含全透明像素,全不透明表面仅包含全不透明像素。全透明表面对显示的帧没有贡献;即,表面的颜色值完全地由其像素的零α值无效(nullified)。另一方面,全不透明表面完全地遮挡其后表面的任何重叠部分(如果存在任何重叠部分)。

当多个表面被合成到一个帧时,现有的一些图形系统读取每个表面的颜色值,甚至在这些表面的α值指示某些颜色值是不被需要的情况下,现存的一些图形系统也读取每个表面的颜色值。读取颜色值会涉及到存储器存取并导致延迟。因为显示模块通常运行于固定的更新频率(例如,60hz),延迟可能会导致失帧(droppedframe)以及系统性能不佳。

为了减少存储器存取,合成器可基于提示缓冲器(hintbuffer)的内容确定是否获取(retrieve)表面或表面的一部分。如果缓冲器指示表面是全透明的,则合成器甚至不需获取表面。如果缓冲器指示表面是全不透明的,则合成器不获取位于全不透明表面后面的那些表面或那些表面的重叠部分(如果有)。

然而,提示缓冲器内容的产生显著增加了系统开销(overhead),并影响了系统性能。因此,需要改进提示缓冲器内容的产生。



技术实现要素:

为了解决上述问题,本发明提出了一种于系统存储器中产生α提示的方法及其图形装置。

本发明提供一种于系统存储器中产生α提示的方法,用以减少存储器存取,所述方法包括:由图形处理单元将图形对象渲染为储存于芯片上缓冲器的一组像素,其中,所述芯片上缓冲器与所述gpu位于相同的芯片上;从所述芯片上缓冲器读取每个像素的α值,所述α值指示所述像素的透明度;根据所述组像素的α值于所述系统存储器中产生用于所述组像素的所述α提示,所述α提示代表所述α值的集合;以及将所述组像素储存至所述系统存储器的帧缓冲器中。

本发明还提供一种于系统存储器中产生α提示的图形装置,用以减少存储器存取,所述图形装置包括:芯片上缓冲器;以及渲染硬件,将图形对象渲染为一组像素,且将所述组像素储存于所述芯片上缓冲器,其中,所述渲染硬件进一步执行:从所述芯片上缓冲器读取每个像素的α值,所述α值指示所述像素的透明度,根据所述组像素的α值于所述系统存储器中产生用于所述组像素的所述α提示,所述α提示代表所述α值的集合,以及将所述组像素储存至所述系统存储器的帧缓冲器中。

本发明提供的于系统存储器中产生α提示的方法及其图形装置,可以减小存储器流量且图形装置的性能可以显著地改善。

【附图说明】

图1所示为根据本发明一实施例的执行图形渲染操作的系统。

图2所示为根据本发明一实施例的颜色缓冲器以及其对应的提示缓冲器的示意图。

图3所示为根据本发明一实施例的执行绘画提示命令(drawhintcommand)的gpu的示意图。

图4所示为根据本发明一实施例的执行绘画提示命令的gpu的方法流程图。

图5a所示为根据本发明一实施例的执行绘画提示命令的过程示意图。

图5b所示为根据本发明另一实施例的执行绘画提示命令的过程示意图。

图6所示为根据本发明一实施例的提示缓冲器内容产生的时间线。

图7所示为根据本发明一实施例的gpu的方法流程图。

【具体实施方式】

下面的描述是实施本发明的较佳预期模式。这种描述是为了说明本发明的一般原理的目的,而不应被理解成具有限制性的意义。但是应当理解,实施例可以利用软件、硬件、固件、或其任何组合来实现。

本发明是有关于一种图形处理系统,更具体地,本发明是有关于产生具有高效存储器存取的图形图像的方法。

本发明的实施例提供了高效产生表面的α提示的系统、图形装置、以及方法,其中,表面的α提示用于指示表面是否为全透明、全不透明、或既不是全透明也不是全不透明。表面的α提示被放置于α提示缓冲器(alphahintbuffer)中,α提示缓冲器也被称作提示缓冲器。每个α提示代表一组像素的α值的集合(aggregate)。在一个实施例中,每个α提示是一个指示表面的对应组像素是否为全透明、全不透明、或既不是全透明也不是全不透明的二进制值。例如,对应组像素可以是形成显示区域的片(tile)的像素,例如:32x32像素块或另一像素块大小。在表面合成过程中,合成器在获取表面的颜色值之前,读取给定表面的提示缓冲器。在一个实施例中,提示缓冲器中的每个α提示对应于给定表面的片。如果α提示指示对应片是全透明的,则合成器不会从存储器中获取片。如果α提示指示对应片是全不透明的,则合成器不会从存储器中获取直接位于对应片后的片(如果有)。

本文所使用的术语“存储器”是指系统存储器装置,典型的系统存储器装置来自gpu的单独芯片上的随机存取存储器(random-accessmemory,ram)。例如,系统存储器可以是动态随机存取存储器(dynamicrandom-accessmemory,dram),或其它易失性或非易失性随机存取存储器。本文所使用的术语“芯片上”或“相同芯片上”是指制造于相同半导体晶圆(semiconductorwafer)上的集成电路。此外,术语“a直接位于b后”中的“直接位于…后”是指a位于b后且完全被b遮挡的场景。

在一个实施例中,gpu产生α提示最大限度地降低了存储器存取且提高了效率。更具体地,于片被渲染为像素后且渲染的片被写入存储器的帧缓冲器之前,gpu从芯片上的片缓冲器读取片中每个像素的α值,并将对应的α提示写入提示缓冲器。因此,α提示的产生不涉及存储器读取,且因此可以显著地节省存储器带宽。相反的,与现有的gpu两通道方式相比,于gpu将具有其α值的渲染表面写入到存储器后,α提示将由gpu产生。因此,gpu将执行存储器读取以便能确定用于表面的α提示。于现存的cpu方式中,于gpu将具有其α值的渲染表面写入到存储器后,α提示将由cpu产生。因此,cpu必须将表面复制到其自己的存储器空间,且读取该存储器空间以便能确定用于表面的α提示。根据本发明实施例描述的α提示的产生,gpu可在表面渲染的同时产生α提示以最大限度地降低存储器存取;因此,系统性能可以显著地提高。

图1所示为根据本发明一实施例的系统100。系统100包括cpu110、gpu120、系统存储器(图中示为:存储器)130、合成器140以及显示模块160。要理解,为了简要起见,其它系统元件于本文中被省略。虽然图1中仅显示了一个cpu以及一个gpu,要理解,系统100可包含任何数量的cpu以及gpu,以及任何数量的其它处理器。在一个实施例中,cpu110和/或gpu120可被实现为芯片上系统(system-on-a-chip,soc)。每个cpu110可包含多个cpu核心,且每个gpu可包含多个gpu核心。存储器130可以是dram、或其它易失性或非易失性随机存取存储器。在一个实施例中,系统100可以是移动计算和/或通信装置(例如:智能电话、平板电脑、膝上型电脑等)的一部分。在另一实施例中,系统100可以是服务器计算机的一部分。

在一个实施例中,cpu110执行通用计算任务,且可以经由一个或多个图形应用程序接口(applicationprograminterface,api)来发布图形命令,以由gpu120来执行。如图形命令所指示的,gpu120渲染图形对象为对齐显示模块160的像素网格的像素。图形对象可包含2d以及3d图形对象,且可以由图元的组合来表示,例如:点、线、多边形、以及更高阶表面。在一个实施例中,gpu120(更具体地,每个gpu核心)包括作为其渲染硬件管线的一部分的着色器硬件(shaderhardware)125,以执行至少包括分段着色操作的着色操作。着色器硬件125包括计算单元180(例如,算术逻辑单元(arithmeticlogicunit,alu))的阵列,以执行预定义于指令集中的指令,和/或由命令指定的操作。计算单元180的阵列可执行逻辑、整数、以及浮点运算,除此之外,还可以被安排相继地和/或并行地执行操作。这些着色器指令可以高等级语言来编写,例如:opengl着色语言(openglshadinglanguage,glsl)、direct3d中的高级着色语言(high-levelshadinglanguage,hlsl)、或用于图形的c(cforgraphics,cg)等。

在一个实施例中,cpu110、gpu120、以及其它图像生成器(例如:照相机或视频录像机)中的每一个可产生一个或多个表面。所产生的表面(例如:主屏、状态栏、以及系统用户接口等)在由合成器140合成以用于显示模块160之前,可临时储存于存储器130中。更具体地,每个表面可存储于帧缓冲器131中,其颜色值可储存于颜色缓冲器132中。在一个实施例中,表面可具有不同的大小(size)。

在一个实施例中,每个颜色缓冲器132具有一个对应的提示缓冲器133,以储存表面的α提示。如上所述,合成器140在从存储器130中获取表面之前会读取表面的α提示以用于合成。基于α提示,合成器140确定哪个颜色缓冲器132会被获取。如果提示缓冲器133指示表面为全透明,则合成器可以跳过全透明表面的获取。如果提示缓冲器133指示表面是全不透明的,则合成器140可跳过直接位于全不透明表面后的那些表面(如果有)的获取。接着,合成器140将对应的α值应用到获取的颜色值,并组成α权重颜色值(alpha-weightedcolorvalue)的结果以产生用于显示的合成的帧。于可选实施例中,合成器140可基于提示缓冲器133的内容(例如,片是否为全透明,或片是否直接位于全不透明片后),确定是否从存储器130获取表面的片。

由于提示缓冲器133的大小远小于颜色缓冲器132的大小,于存取颜色缓冲器132之前读取提示缓冲器133可以显著地减少存储器存取的数量并提高系统性能。

图2所示为根据本发明一实施例的颜色缓冲器132及其对应的提示缓冲器133的示例。作为示例,颜色缓冲器132被划分为多个片210;例如,4x4片,且于提示缓冲器133中每个片210具有对应的α提示220。在一个实施例中,每个α提示220为3比特旗标;可选地,每个α提示包括三个1比特旗标。于可选实施例中,α提示可具有与图2所示的示例中不同数量的比特。

于图2所示的示例中,当对应片210的至少一个像素是全透明时,α提示220的第一比特(例如,最右侧的比特)被设置(例如,设为1);当对应片210的至少一个像素是全不透明时,第二比特(例如,中间的比特)被设置(例如,设为1),且当对应片210的至少一个像素的是既不是全透明也不是全不透明时,第三比特(例如,最左侧的比特)被设置(例如,设为1)。因此,当片210对应的α提示220仅有第一比特被设置时,片210是全透明的,当片210对应的α提示220仅有第二比特被设置时,片210是全不透明的。要理解,于不同的实施例中,α提示220的比特位置的定义可以不同于图2所示的示例。

例如,对于“001”的α提示,例如,α提示220对应于顶部行(toprow)的片210,由于α提示220的其它两个比特均没被设置,则指示顶部行的那些片210仅有全透明像素。对于“010”的α提示,例如,α提示220对应于中间行的片210,由于α提示220的其它两个比特均没被设置,则指示中间行的那些片210仅具有全不透明像素。对应于底部两个行的片210的α提示220指示那些片210既不是全透明也不是全不透明的。本领域技术人员应理解,以上描述仅为本发明的较优实施例,在本发明的其他实施例中,上述比特的值也可根据需求做修改。

图3所示为根据本发明一实施例的执行绘画提示命令的gpu120的示意图,且图4所示为根据本发明一实施例的执行绘画提示命令的方法400的流程图。参考图3以及图4,gpu120获取命令310的列表以执行用于片的n个绘画调用(drawcall)(步骤410),其中,n表示待渲染的片的图形对象的数量。绘画调用的结果是属于片内的像素的值以及属性。像素值及其属性(例如颜色值以及α值)由分段着色器320写入到芯片上的片缓冲器330。分段着色器320可以是着色器硬件125(如图1所示)的一部分。在一个实施例中,着色器硬件125可以被编程以执行分段着色器320的运算。

在一个实施例中,片缓冲器330为随机存取存储器(randomaccessmemory,ram),例如:静态ram,其与gpu120位于相同的芯片。于像素值以及属性被写入片缓冲器330后,gpu120执行命令310的列表中的绘画提示命令315。根据绘画提示命令315,gpu120(例如,分段着色器320)从片缓冲器330中读取每个像素的α值(步骤420),计算用于片的提示缓冲器133中的偏置(步骤430),且于计算出的偏置位置将α提示写入用于片的提示缓冲器133(步骤440)。于α提示被写入提示缓冲器133后,gpu120执行交换缓冲命令以将片缓冲器330的内容刷新到存储器130中的帧缓冲器131(步骤450);即,将片的像素(例如:像素值以及属性)储存到帧缓冲器131。gpu120可继续渲染下一片;例如,通过重复图4的步骤410到450来渲染下一片。

因此,由于gpu120是从芯片上的片缓冲器330读取片的α值,而不是从存储器130读取片的α值,α提示可被高效地产生。此外,第一片的α提示的产生可与第二片的渲染可同时进行。因此,α提示产生的效率可进一步增强。

在一个实施例中,gpu120可使用多个片工作单元来同时渲染多个片,且将渲染后的像素值以及属性储存到相应的片缓冲器330。在一个实施例中,gpu120可使用着色器硬件125来同时读取片的多个像素的α值,并产生用于片的α提示。在一个实施例中,片工作单元以及像素工作单元可以是分段着色器320的一部分,且这些工作单元的计算可由计算单元180(如图1所示)并行地执行。

在一个实施例中,gpu120执行一个程序来响应绘画提示命令315。图5a以及图5b所示为用于该程序的两个可选的着色器代码。于图5a以及图5b中,阵列buf.hint代表提示缓冲器133。在一个实施例中,在被写入提示缓冲器133之前,阵列buf.hint可以是被缓存或临时储存于与gpu120相同的芯片的位置。buf.hint[offset]代表提示缓冲器133的偏置位置,其中,用于片的α提示将被写入该偏置位置。在一个实施例中,分段着色器320可使用多个像素工作单元来同时读取片中多个像素的α值,且写入对应于片的相同的α提示。因此,这些像素工作单元可尝试同时将buf.hint[offset]写入相同的偏置位置。为了避免写后写(write-after-write,waw)的问题,采取特殊措施使得每个写入的buf.hint[offset]只能将1比特设置为1,但是不能重设该比特为零。

于图5a所示的示例中,分段着色器320计算用于片的提示缓冲器133的偏置,且根据片中像素的α值,分段着色器320将buf.hint[offset]中适当的比特设为1。在此示例中,每个α提示包括三个1比特旗标。当像素为全透明时,第一旗标被设置为1,当像素为全不透明时,第二旗标被设置为1,当像素为既不是全透明也不是全不透明时,第三旗标被设置为1。一旦旗标被设置为1,则其不能被相同片内的另一个像素重设为0。在此示例中,α提示的每个旗标可以独立于其它两个旗标;因此,一个像素工作单元可以写入α提示的一个旗标,而另一像素工作单元可同时写入相同α提示的另一个旗标。此外,α提示的写入可以是异步的,以改进系统性能。

于图5b所示的示例中,分段着色器320计算用于片的提示缓冲器133中的偏置,且根据片中像素的α值,分段着色器320于偏置位置执行原子或运算(atomicoroperation)。原子运算序列化(serialize)像素工作单元的同时写入,像素工作单元可尝试同时写入用于相同片的相同α提示。在此示例中,每个α提示包括一个3比特旗标。原子运算计算具有3比特掩码(3-bitmask)的3比特旗标的逐比特或(bit-wiseor),掩码的值是由像素的α值来确定。3比特掩码中只有一个比特为1。例如,当α值为0时,掩码的第一比特为1,当α值为1时,掩码的第二比特为1,且当α值既不是0也不是1时,掩码的第三比特为1。或运算确保一旦一个旗标比特由一个像素设置,其不能被相同片的另一像素重设。

再次参考图1以及图3,在一个实施例中,gpu120于渲染操作的同时产生α提示。例如,于gpu120将表面的第一片渲染为像素后,gpu120可于渲染表面的第二片的同时产生第一片的提示缓冲器133的内容。图6所示为根据本发明一实施例的提示缓冲器133的内容产生的时间线。时间线显示了用于表面的提示缓冲器133的内容的产生可与表面渲染同时执行:即,在整个表面被渲染之前,一旦片缓冲器330中片的α值为可用时,用于片的α提示的产生即可开始。gpu120不需要等到整个表面被渲染且写入到存储器130才开始确定α提示。

图7所示为根据本发明一实施例的方法700的流程图。方法700可由硬件(例如:电路、专用逻辑、可编程逻辑、微码等)、软件(例如,运行于处理装置的指令)、或其组合来执行。在一个实施例中,方法700由图1以及图3中的gpu120来执行。

参考图7,在一个实施例中,当gpu120将图形对象渲染为芯片上缓冲器(例如,图3的片缓冲器330)中储存的一组像素时,方法700开始,其中,芯片上缓冲器与gpu120位于相同的芯片上(步骤710)。gpu120从芯片上缓冲器读取每个像素的α值(步骤720)。α值指示像素的透明度;例如,像素是否为全透明、全不透明或两者都不是。gpu120根据一组像素的α值于系统存储器(例如,图1以及图3的存储器130)中产生用于该组像素的α提示,其中,α提示代表该组像素的α值的集合(步骤730)。接着,gpu120将该组像素储存到系统存储器的帧缓冲器(例如,图1以及图3的帧缓冲器131)中(步骤740)。

图4以及图7的流程图的操作已经参照图1以及图3的示范性实施例做了描述。然而,应该理解,图4以及图7的流程图的操作可由不同于本发明所讨论的图1以及图3的实施例的其他实施例来执行,且参考图1以及图3所讨论的实施例也可执行不同于图4以及图7所描述的流程图。图4以及图7所示的流程图显示了本发明的某些实施例执行的特定顺序的操作,应该理解,这样的顺序仅为示范性的(例如,可选实施例可以不同顺序执行操作、合并某些操作、或重复某些操作等)。

根据本文描述的以上实施例,图形装置产生的α提示是高效的且具有极少的系统存储器存取。片的α提示以及片自身产生于相同的渲染通道(pass)。不需要复制或扫描帧缓冲器以产生α提示。因此,存储器流量可以减小且图形装置的性能可以显著地改善。

本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视权利要求所界定者为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1