用于基于瓦片的渲染的帧内时戳的制作方法

文档序号:9402002阅读:368来源:国知局
用于基于瓦片的渲染的帧内时戳的制作方法
【专利说明】
[0001] 本申请案主张2013年4月11日申请的第61/811,056号美国临时申请案的权益, 所述临时申请案的全部内容以引用的方式并入本文中。
技术领域
[0002] 本发明涉及图形处理系统,且更明确地说涉及在图形处理系统中使用时戳。
【背景技术】
[0003] 计算装置常常利用图形处理单元(GPU)以加速渲染用于显示的图形数据。此类计 算装置可包含(例如)计算机工作站、移动电话(例如所谓的智能电话)、嵌入系统、个人计 算机、平板计算机和视频游戏控制台。渲染通常指代将可包含一或多个3D图形对象的三维 (3D)图形场景转换为二维(2D)光栅化图像数据的过程。图形场景可渲染为一或多个帧的 序列,其中每一帧描绘在时间上特定实例处的图形场景。
[0004] GPU可包含3D渲染管线以提供用于3D图形场景的渲染的至少部分硬件加速。场 景中的3D图形对象可由图形应用细分为一或多个3D图形基元(例如,点、线、三角形、补丁 等),且GPU可将场景的3D图形基元转换为待渲染的帧中的每一者的2D光栅化图像数据。 因此,在GPU渲染的特定上下文中,渲染可指代将对应于图形场景中的3D对象的3D图形基 元转换为2D光栅化图像数据的过程。
[0005] 为渲染特定帧的3D图形基元,在主机中央处理单元(CPU)上执行的图形应用可 将对应于待渲染的基元的几何形状数据放置到GPU可存取存储器中,将一或多个GPU状态 设置命令放置到命令流中,且将一或多个绘制调用放置到命令流中,所述绘制调用致使GPU 基于几何形状数据渲染基元。GPU可以命令被放置于命令流中的次序处理命令流中包含的 命令,借此渲染场景。

【发明内容】

[0006] 本发明描述用于支持执行基于瓦片的渲染的图形处理系统中的帧内时戳请求的 技术。基于瓦片的渲染可涉及将渲染目标(例如,帧)细分为多个仓(例如,子区或瓦片), 以及针对所述仓中的每一者执行单独渲染遍次迭代。帧内时戳请求可指代可放置在与待渲 染的图形帧相关联的图形命令流中的任意位置处的时戳请求。时戳请求可指代对于指示时 戳请求由处理所述时戳请求的装置(例如,GPU或CPU)处理的时间实例的时戳值的请求。 本发明的帧内时戳产生技术可基于由图形处理单元(GPU)在执行基于瓦片的渲染时产生 的一或多个每仓时戳值产生应用请求的时戳值。使用每仓时戳值来产生应用请求的时戳值 可允许执行基于瓦片的渲染的图形处理系统支持帧内时戳。
[0007] 在一个实例中,本发明描述一种方法,其包含利用一或多个处理器基于由GPU在 执行图形帧的基于瓦片的渲染时产生的多个每仓时戳值产生指示时间点的时戳值。所述时 戳值可为所述多个每仓时戳值的至少两个每仓时戳值的函数。
[0008] 在另一实例中,本发明描述一种装置,其包含一或多个处理器,所述一或多个处理 器经配置以基于由GPU在执行图形帧的基于瓦片的渲染时产生的多个每仓时戳值产生指 示时间点的时戳值。所述时戳值可为所述多个每仓时戳值的至少两个每仓时戳值的函数。
[0009] 在另一实例中,本发明描述一种设备,其包含GPU。所述设备进一步包含用于基于 由GPU在执行图形帧的基于瓦片的渲染时产生的多个每仓时戳值产生指示时间点的时戳 值的装置。所述时戳值可为所述多个每仓时戳值的至少两个每仓时戳值的函数。
[0010] 在另一实例中,本发明描述一种存储指令的计算机可读存储媒体,所述指令在执 行时致使一或多个处理器基于由图形处理单元GPU在执行图形帧的基于瓦片的渲染时产 生的多个每仓时戳值产生指示时间点的时戳值。所述时戳值可为所述多个每仓时戳值的至 少两个每仓时戳值的函数。
[0011] 在附图和下文描述中陈述本发明的一或多个实例的细节。本发明的其它特征、目 标和优点将从所述描述和图式以及权利要求书而显而易见。
【附图说明】
[0012] 图1是说明可用以实施本发明的帧内时戳产生技术的实例计算装置的框图。
[0013] 图2为说明图1中更详细地展示的计算装置的CPU、GPU和存储器的框图。
[0014] 图3为说明细分为多个子区(例如,瓦片)的实例渲染目标和显示在经细分渲染 目标上的基元的实例集合的概念图。
[0015] 图4为说明根据本发明由图形应用发布的实例命令流的概念图。
[0016] 图5为说明根据本发明用于执行渲染遍次的实例执行时间线的概念图。
[0017] 图6为说明根据本发明用于执行多个渲染遍次迭代的实例命令流的概念图。
[0018] 图7为说明根据本发明用于支持执行基于瓦片的渲染的图形处理系统中的帧内 时戳的实例技术的流程图。
[0019] 图8为说明根据本发明用于支持执行基于瓦片的渲染的图形处理系统中的帧内 时戳的另一实例技术的流程图。
【具体实施方式】
[0020] 本发明描述用于支持执行基于瓦片的渲染的图形处理系统中的帧内时戳请求的 技术。基于瓦片的渲染可涉及将渲染目标(例如,帧)细分为多个仓(例如,子区或瓦片), 以及针对所述仓中的每一者执行单独渲染遍次迭代。帧内时戳请求可指代可放置在与待渲 染的图形帧相关联的图形命令流中的任意位置处的时戳请求。时戳请求可指代对于指示时 戳请求由处理所述时戳请求的装置(例如,GPU或CPU)处理的时间实例的时戳值的请求。 本发明的帧内时戳产生技术可基于由图形处理单元(GPU)在执行基于瓦片的渲染时产生 的一或多个每仓时戳值产生应用请求的时戳值。使用每仓时戳值来产生应用请求的时戳值 可允许执行基于瓦片的渲染的图形处理系统支持帧内时戳。
[0021] 发布位于两个不同绘制调用命令之间的帧内时戳请求的图形应用可(例如)期 望响应于所述请求传回的时戳值对应于第一绘制调用命令的执行与第二绘制调用命令的 执行之间的时间。然而,基于瓦片的渲染系统可以非连续方式执行用于图形帧的绘制调用 命令,使得一个绘制调用命令的执行与同相同图形帧相关联的其它绘制调用命令的执行交 错。举例来说,基于瓦片的渲染系统可将与待渲染的图形帧相关联的绘制调用命令的执行 细分为多个每仓绘制调用,依据仓将所述每仓绘制调用分组在一起,且执行每仓绘制调用 的群组中的每一者作为单独渲染遍次迭代的一部分。执行绘制调用命令的此非连续交错方 式使得基于瓦片的渲染系统难以支持帧内时戳。
[0022] 本发明中描述的技术可允许基于瓦片的渲染系统支持帧内时戳,即使在基于瓦片 的渲染系统以非连续交错方式执行绘制调用命令的情况下也如此。举例来说,本发明的帧 内时戳产生技术可基于由GPU在执行基于瓦片的渲染时产生的多个每仓时戳值产生应用 请求的时戳值。可产生用于产生应用请求的时戳值的至少一些每仓时戳值作为不同渲染遍 次迭代的一部分。使用不同渲染遍次迭代期间产生的每仓时戳值可允许图形处理系统产生 至少在一定程度上反映不同绘制调用命令在图形帧的渲染期间执行所花费的相对时间量 的应用请求的时戳值。以此方式,有用时戳值可由基于瓦片的渲染系统提供到图形应用,所 述图形应用采用关于不同绘制调用命令花费的相对执行时间量的定时统计。
[0023] 如本文所使用,应用请求的时戳值可指代响应于由图形应用(例如,高于软件堆 栈中的驱动程序水平的应用)产生的时戳请求而产生的时戳值。每仓时戳值可指代由GPU 在执行特定仓(例如,渲染目标的子区)的渲染遍次迭代时产生的时戳值。由图形应用产 生的时戳请求可被称为应用产生的时戳请求。在一些情况下,每仓时戳请求可指代由GPU 驱动程序或由GPU(例如,低于用户应用层的软件/硬件层)产生的时戳请求。
[0024] 在一些实例中,GPU驱动程序或其它应用可产生针对命令流中接收的应用产生的 时戳请求中的每一者的多个每仓时戳请求。每仓时戳请求可由GPU服务,GPU可响应于接 收每仓时戳请求中的每一者产生相应每仓时戳值。每仓时戳值可指示GPU遇到在执行基于 瓦片的渲染时执行的命令流中的每仓时戳请求的时间。响应于应用产生的时戳请求而产生 的时戳和时戳值可分别称为应用请求的时戳和应用请求的时戳值。类似地,响应于每仓时 戳请求产生的时戳和时戳值可分别称为每仓时戳和每仓时戳值。
[0025] 图形应用(例如,在包含致使GPU渲染一或多个图形帧的指令的主机中央处理单 元(CPU)上执行的应用)可常常发布多个绘制调用命令以便渲染特定图形帧。举例来说, GPU通常经配置以利用针对待执行的每一绘制调用命令的渲染状态设定的单一集合渲染单 一类型的基元(例如,点、线、三角形、补丁等)。在此些实例中,如果需要一个以上类型的基 元来渲染帧或如果需要一个以上类型的渲染状态来渲染所述帧,那么图形应用可需要发布 多个绘制调用命令来渲染单一图形帧。
[0026] 为当多个绘制调用命令用于渲染图形帧时获得用于个别绘制调用命令或所述绘 制调用命令的子集的执行的定时统计,图形应用可将时戳请求放置在待由GPU执行的命令 流中的绘制调用命令之间。放置在用于渲染个别图形帧的绘制调用命令之间的时戳请求可 在本文中被称作帧内时戳请求,且响应于此些请求产生的对应时戳可被称为帧内时戳。
[0027] 图形应用可响应于放置到命令流中的每一时戳请求接收时戳。所述时戳可包含指 定GPU执行时戳请求的时间的时戳值。因为图形命令流通常由GPU以命令放置到命令流 中的次序执行,所以图形应用可期望当时戳请求放置在命令流中的两个邻近绘制调用之间 时,所传回的时戳值将对应于第一绘制调用命令的执行与第二绘制调用命令的执行之间发 生的时间。
[0028] 满足上文提及的期望的时戳值可允许图形应用(例如)执行各种时戳处理技术。 举例来说,此些时戳值可用于通过取在绘制调用命令之前和之后响应于放置于命令流中的 时戳请求传回的时戳值之间的差而确定绘制调用命令的近似执行时间。
[0029] 在一些实例中,基于瓦片的渲染可涉及将渲染目标(例如,帧)细分为多个子区 (例如,仓或瓦片),以及执行包含针对渲染目标的所述子区中的每一者的单独渲染遍次迭 代的渲染遍次。为执行单独渲染遍次迭代,基于瓦片的渲染系统可将与待渲染的图形帧相 关联的绘制调用命令的执行细分为多个每仓绘制调用,且依据仓将每仓绘制调用分组在一 起。可执行每仓绘制调用的群组中的每一者,作为单独渲染遍次迭代的一部分。
[0030] 如果待渲染的图形帧包含多个绘制调用,那么与一个绘制调用命令相关联的每仓 绘制调用的执行可与同相同图形帧的其它绘制调用命令相关联的每仓绘制调用的执行交 错。然而,如上文所论述,一些类型的时戳处理技术可假定以连续方式且以图形命令放置于 命令流中的次序执行绘制调用命令。当执行基于瓦片的渲染时发生的绘制调用命令的交错 执行可使得难以针对此些时戳处理技术提供有用的帧内时戳。
[0031] 本发明的技术可用于即使在以交错方式执行绘制调用命令时(归因于基于瓦片 的植染技术的执行)也产生帧内时戳。在一些实例中,根据本发明产生的帧内时戳值可模 仿或近似在执行连续按序绘制调用处理(尽管所述绘制调用可实际上以交错方式执行)的 情况下原本将获得的时戳值,同时提供指示针对命令流中的绘制调用命令发生的相对执行 时间量的时戳值。以此方式,时戳值可与时戳处理技术一起使用,所述时戳处理技术假定以 连续方式且以图形命令放置于命令流中的次序执行绘制调用命令。
[0032] 图1是说明可用以实施本发明的帧内时戳产生技术的实例计算装置2的框图。计 算装置2可包括个人计算机、台式计算机、膝上型计算机、计算机工作站、视频游戏平台或 控制台、无线通信装置(例如,移动电话、蜂窝式电话、卫星电话和/或移动电话手持机)、陆 线电话、因特网电话、手持式装置(例如,便携式视频游戏装置或个人数字助理(PDA))、个 人音乐播放器、视频播放器、显示装置、电视机、电视机顶盒、服务器、中间网络装置、主机计 算机,或处理和/或显示图形数据的任何其它类型的装置。
[0033] 如图1的实例中所说明,计算装置2包含用户接口 4、CPU 6、存储器控制器8、存储 器10、图形处理单元(GPU) 12、显示接口 14、显示器16和总线18。用户接口 4、CPU6、存储 器控制器8、GPU 12和显示接口 14可使用总线18彼此通信。应注意,图1中展示的不同组 件之间的总线和通信接口的特定配置仅是示范性的,且具有相同或不同组件的计算装置和 /或其它图形处理系统的其它配置可用于实施本发明的技术。
[0034] CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到 计算装置2以致使CPU 6执行一或多个软件应用。在CPU 6上执行的软件应用可包含(例 如)图形应用、文字处理器应用、电子邮件应用、电子数据表应用、媒体播放器应用、视频游 戏应用、图形用户接口应用、操作系统或任何其它类型的程序。用户可经由一或多个输入装 置(未图示)(例如,键盘、鼠标、麦克风、触摸垫或经由用户接口 4耦合到计算装置2的另 一输入装置)将输入提供到计算装置2。
[0035] 在CPU 6上执行的软件应用可包含一或多个图形渲染指令,其指示GPU 12将图形 数据渲染到帧缓冲器以供在显示器16上显示。在一些实例中,图形渲染指令可符合图形 应用编程接口(API),例如开放图形库(OpoiGLK))API、开放图形库嵌入系统(OpenGL ES) API、Direct3D API、X3D API、RenderMan API、WebGL API 或任何其它公共或专有标准图形 API。为了处理图形渲染指令,CPU 6可将一或多个图形渲染命令发布到GPU12以致使GPU 12执行图形数据的渲染的一些或全部。在一些实例中,待渲染的图形数据可包含例如点、 线、三角形、四边形、三角形条带等图形基元的列表。
[0036] 存储器控制器8促进数据进出存储器10的传递。举例来说,存储器控制器8可接 收存储器读取和写入命令,且服务相对于存储器系统10的此些命令以便为计算装置2中的 组件提供存储器服务。存储器控制器8以通信方式耦合到存储器10。虽然存储器控制器8 在图1的实例计算装置2中被说明为与CPU 6和存储器10两者分开的处理模块,但在其它 实例中,存储器控制器8的功能性中的一些或全部可实施于CPU 6和存储器10中的一或两 者上。
[0037] 存储器10可存储可由CPU 6存取以用于执行的程序模块和/或指令和/或由在 CPU 6上执行的程序使用的数据。举例来说,存储器10可存储与在CPU 6上执行的应用相 关联的程序代码和图形数据。存储器10可另外存储由计算装置2的其它组件使用和/或产 生的信息。举例来说,存储器10可充当用于GPU 12的装置存储器且可存储将在GPU 12上 操作的数据以及由GPU 12执行的操作而产生的数据。举例来说,存储器10可存储纹理缓冲 器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器、渲染目标或其类似者的任何组合。另 外,存储器10可存储命令流以供GPU 12处理。存储器10可包含一或多个易失性或非易失 性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读 存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性 数据媒体或光学存储媒体。
[0038] GPU 12可经配置以执行由CPU 6发布到GPU 12的命令。由GPU 12执行的命令可 包含图形命令、绘制调用命令、GPU状态编程命令、时戳请求、储器传递命令、通用计算命令、 核心执行命令等。
[0039] 在一些实例中,GPU 12可经配置以执行图形操作以将一或多个图形基元渲染到显 示器16。在此些实例中,当在CPU 6上执行的软件应用中的一者需要图形处理时,CPU6可 将图形数据提供到GPU 12且将一或多个图形命令发布到GPU 12。图形命令可包含例如绘 制调用命令、GPU状态编程命令、存储器传递命令、传图命令等。图形数据可包含顶点缓冲 器、纹理数据、表面数据等。在一些实例中,CPU 6可通过将命令和图形数据写入到存储器 10而将所述命令和图形数据提供到GPU 12,存储器10可由GPU 12存取。
[0040] 在其它实例中,GPU 12可经配置以针对在CPU 6上执行的应用执行通用计算。在 此等实例中,当在CPU 6上执行的软件应用中的一者决定将计算任务卸载到GPU 12时,CPU 6可将通用计算数据提供到GPU 12,且将一或多个通用计算命令发布到GPU 12。通用计算 命令可包含例如核心执行命令、存储器传递命令等。在一些实例中,CPU 6可通过将命令和 数据写入到可由GPU 12存取的存储器10而将命令和通用计算数据提供到GPU
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1