用于图形处理的任意控制点处的容错抢占机制的制作方法_4

文档序号:9756975阅读:来源:国知局
件技术要求更多的复杂度。
[0052]在任何情况下,保存此状态信息允许GPU以正确的输入及输出数据在已知点处重 新开始处理。然而,在接收抢占请求时处理直到安全点及保存状态信息要花费不确定的时 间量。抢占请求可在由GPU执行的命令缓冲区中的异步点处发生,并且因此,可能不可能预 测在到达安全点之前GPU可需要操作多长时间。在一些情形中,响应于抢占请求使GPU到达 安全点、保存状态信息及开始处理新命令缓冲区的时间可能不合意地长。如果较高优先级 图形任务不能够立即开始,那么一些应用可导致较差的用户体验。
[0053]例如,用户接口(UI)是其中响应于抢占请求的较长延迟是不合意的应用的实例。 一般来说,经配置成吸引用户的注意的任何应用或应用的部分可受益于另一实例的低延迟 抢占请求(例如,抢占背景的渲染以支持渲染视频、弹出式文本或作为用户的焦点的中心的 应用的任何其它部分)。另一实例应用是扩增实境应用,其中基于用户的视点的移动而保持 恰当地定位抬头显示器(HUD)可比正由GPU执行的其它任务更重要。
[0054]鉴于这些缺点,本发明呈现用于处理任意控制点处的抢占请求的技术。具体来说, 本发明的技术包含对由GPU使用的读取-修改-写入资源进行双重缓冲以执行用于原始任务 的命令缓冲区,使得可丢掉部分处理命令缓冲区的结果,且命令缓冲区可响应于执行较高 优先级任务的抢占请求而从起点重新运行。以此方式,可立即处置抢占请求,同时仍维持重 新开始处理原始任务的稳定及无错状态(即,具有正确输入数据的状态)。本发明的技术可 单独地使用,或结合现有的安全点抢占技术而使用。即,本发明的技术可根据情形或根据应 用而应用,且无需替代所有其它抢占技术。
[0055]图5是说明本发明的抢占技术的概念图。如图5中所展示,GPU 12可经配置以执行 命令缓冲区68中的命令流。再者,命令缓冲区68可含有任何类型的命令,包含用于3D图形、 2D图形、GPGPU着色器应用的命令,或可在GPU中执行的任何其它类型的命令。如图5中所展 示,命令缓冲区68包含3D图形渲染命令(例如,三角形绘制命令)。
[0056]为了允许在命令缓冲区内的任何任意点处抢占命令缓冲区68,在GPU 12修改任何 数据之前复制由GPU 12使用的任何读取-修改-写入资源。如图5中所展示,帧缓冲区72是可 用作用于执行命令缓冲区68中的命令流的输入数据的读取-修改-写入资源。帧缓冲区72由 GPU 12或CPU 6复制(即,双重缓冲),使得帧缓冲区72的副本(帧缓冲区副本74)存储在存储 器(例如,第一缓冲区)中,之后GPU 12修改帧缓冲区72的任何内容。帧缓冲区72的经修改的 内容可被视为第二缓冲区。本发明的技术不限于帧缓冲区,而是可由任何类型的读取-修 改-写入资源利用,包含帧缓冲区、渲染目标、无序存取视图(UAV)缓冲区、表面及类似者。
[0057] 在帧缓冲区的情形下,第一缓冲区(即,帧缓冲区副本74)是先前帧缓冲区的副本 (即,帧缓冲区的在命令缓冲区68中执行命令之前的内容)。第二缓冲区(即,帧缓冲区72)含 有用于当前渲染的帧缓冲区(即,当前帧缓冲区)的经修改内容。
[0058] 含有帧缓冲区72的原始内容的副本的第一缓冲区(即,帧缓冲区副本74)以及(含 有帧缓冲区72的经修改内容)的第二缓冲区可被配置成单独的存储器单元、单一存储器单 元的单独分区,或其中第一缓冲区及第二缓冲区是可单独寻址的空间的存储器单元的任何 其它配置。
[0059]应理解,在此背景下,双重缓冲与往复缓冲不相同。往复缓冲可涉及使用两个存储 缓冲区(一个用于读取且一个用于写入)。在本发明的情形下,双重缓冲涉及存储读取-修 改-写入资源的副本(或存储此资源的一部分的副本)直到已经确认已经完成使用所述资源 的整个命令流为止。
[0060] 在本发明的一个实例中,待决命令缓冲区68(或当前由GPU 12处理的任何命令流) 被GPU 12跟踪完成。如果抢占请求(例如,来自在CPU 6上执行的应用,例如GPU驱动程序7) 出现在完成命令缓冲区68中的所有命令之前的点处,那么GPU 12抛弃直到所述点所创建的 帧缓冲区72中的所有经修改内容。在完成作为抢占请求的主体的任务之后,GPU 12返回到 原始命令缓冲区68且从命令流的起点开始。在常规系统中,这将不可能,因为用于命令流中 的一些输入数据将已经通过处理所述命令流(例如,帧缓冲区72中的经修改内容)而被覆 写。然而,由于帧缓冲区72被双重缓冲,所以GPU 12可在抢占之后重新起始命令缓冲区68的 执行时将帧缓冲区副本74用作输入。帧缓冲区副本74将随后自身被双重缓冲。
[0061] 在本发明的另一实例中,可包含进一步的技术以避免其中命令缓冲区被连续地抢 占的情形。由于本发明的技术包含从起点重新开始被抢占的命令缓冲区,所以可理解,花费 较长时间完成的一些命令缓冲区可被抢占一或多次。为避免其中命令缓冲区被抢占长于所 要的时间的情形,本发明进一步提议包含计数机制,其由GPU 12、GPU驱动程序7或在CPU 6 上执行的某一应用执行,其对特定命令缓冲区已经被抢占的次数进行计数。如果抢占的数 目超过某一阈值,不允许对所述命令缓冲区的进一步抢占。所述阈值可取决于由GPU 12执 行的应用的类型而变化。一般来说,复杂的计算工作(例如,通用GPU应用)可预期比其它应 用更频繁地被抢占且可受益于其中抢占的数目有上限的技术。
[0062]图6是说明根据本发明的一个实例的方法的流程图。图6的技术可由一或多个处理 器(包含GPU 12及/或CPU 6)执行。
[0063]在本发明的实例中,GPU 12可经配置以执行命令缓冲区中的命令,所述命令对读 取-修改-写入存储器资源中的数据进行操作(600) APU 12可进一步经配置以将读取-修 改-写入存储器资源的原始数据存储在第一缓冲区中(602),且将通过执行所述命令缓冲区 中的命令而产生的任何经修改数据存储在第二缓冲区中(604)。在本发明的一个实例中,所 述读取-修改-写入存储器资源是帧缓冲区,其中所述第一缓冲区是用于先前帧的帧缓冲区 的副本且所述第二缓冲区是当前帧缓冲区。
[0064] GPU 12可进一步经配置以在完成命令缓冲区中的所有命令之前抢占所述命令缓 冲区中的命令的执行(606)。在本发明的一个实例中,GPU 12可进一步经配置以跟踪所述命 令缓冲区中的命令的完成以确定所有命令已经完成。在抢占执行之后,GPU 12可进一步经 配置以使用第一缓冲区中的原始数据在所述命令缓冲区的开始处重新开始执行所述命令 (608)〇
[0065]在本发明的另一实例中,GPU 12可经配置以将命令缓冲区存储在存储器中,且响 应于抢占命令缓冲区中的命令的执行而执行辅助命令缓冲区中的命令。在本发明的一个实 例中,GPU 12经配置以响应于从在中央处理单元上执行的软件接收的抢占执行的请求而抢 占所述命令的执行。在一个实例中,所述软件包含图形驱动程序。
[0066]在本发明的另一实例中,GPU 12可经配置以跟踪所述命令缓冲区被抢占的次数, 在所述命令缓冲区被抢占的次数超过阈值的情况下拒绝抢占,且在所述命令缓冲区被抢占 的次数低于阈值的情况下允许抢占。
[0067]在一或多个实例中,上文所描述的功能可以硬件、软件、固件或其任何组合实施。 如果以软件来实施,那么功能可作为一或多个指令或代码存储在包括非暂时性计算机可读 媒体的制品上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可为可由一或 多个计算机或一个或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码 及/或数据结构的任何可用媒体。举例来说而非限制,此类计算机可读媒体可包括RAM、R0M、 EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器,或 可用以携载或存储呈指令或数据结构的形式且可由计算机存取的所要程序代码的任何其 它媒体。如本文所使用,磁盘及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光 盘(DVD )、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式重现数据,而光盘用激光以光学 方式重现数据。上述各者的组合也应包含在计算机可读媒体的范围内。
[0068] 代码可由一或多个处理器执行,所述一或多个处理器例如为一或多个DSP、通用微 处理器、ASIC、FPGA,或其它等效集成或离散逻辑电路。另外,在一些方面中,可在专用硬件 和/或软件模块内提供本文中所描述的功能性。并且,可将所述技术完全实施于一或多个电 路或逻辑元件中。
[0069] 本发明的技术可实施在广泛多种装置或设备中,包含无线手持机、集成电路(1C) 或一组1C(例如,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所 揭示技术的装置的功能方面,但未必需要通过不同硬件单元实现。实际上,如上文所描述, 各种单元可以结合合适的软件及/或固件组合在编码解码器硬件单元中,或者通过互操作 硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
[0070] 已描述各种实例。这些及其它实例在所附权利要求书的范围内。
【主权项】
1. 一种图形处理方法,所述方法包括: 执行用于图形处理单元的命令缓冲区中的命令,所述命令对读取-修改-写入存储器资 源中的数据进行操作; 将所述读取-修改-写入存储器资源的原始数据
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1