用于图形处理的任意控制点处的容错抢占机制转让专利

申请号 : CN201480049417.5

文献号 : CN105518742B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 克里斯托弗·保罗·弗拉斯卡蒂穆拉特·巴尔契阿温阿什·赛塔拉迈亚安德鲁·埃文·格鲁贝尔阿列克谢·弗拉基米罗维奇·布尔德

申请人 : 高通股份有限公司

摘要 :

本发明呈现用于图形处理中的任意控制点处的抢占的技术及结构。一种图形处理方法可包括:执行命令缓冲区中的命令,所述命令对读取‑修改‑写入存储器资源中的数据进行操作;对所述读取‑修改‑写入存储器资源中的所述数据进行双重缓冲,使得第一缓冲区存储所述读取‑修改‑写入存储器资源的原始数据且第二缓冲区存储通过执行所述命令缓冲区中的所述命令而产生的任何经修改数据;在完成所述命令缓冲区中的所有命令之前接收抢占所述命令缓冲区中的所述命令的执行的请求;及使用所述第一缓冲区中的所述原始数据在所述命令缓冲区的开始处重新开始执行所述命令。

权利要求 :

1.一种图形处理方法,所述方法包括:执行用于图形处理单元的命令缓冲区中的命令,所述命令对读取-修改-写入存储器资源中的数据进行操作;

将所述读取-修改-写入存储器资源的原始数据存储在第一缓冲区中;

将通过执行所述命令缓冲区中的所述命令而产生的任何经修改数据存储在第二缓冲区中;

在完成所述命令缓冲区中的所有命令之前抢占所述命令缓冲区中的所述命令的执行;

在抢占执行之后,使用所述第一缓冲区中的所述原始数据在所述命令缓冲区的开始处重新开始执行所述命令。

2.根据权利要求1所述的方法,其进一步包括:跟踪所述命令缓冲区中的所述命令的完成。

3.根据权利要求1所述的方法,其进一步包括:将所述命令缓冲区存储在存储器中;及

响应于抢占所述命令缓冲区中的所述命令的执行,执行辅助命令缓冲区中的命令。

4.根据权利要求1所述的方法,其进一步包括响应于从在中央处理单元上执行的软件接收的抢占执行的请求而抢占所述命令的所述执行。

5.根据权利要求4所述的方法,其中所述软件包含图形驱动程序。

6.根据权利要求1所述的方法,其中所述读取-修改-写入存储器资源是帧缓冲区,且其中所述第一缓冲区是用于先前帧的所述帧缓冲区的副本且所述第二缓冲区是当前帧缓冲区。

7.根据权利要求1所述的方法,其进一步包括:跟踪所述命令缓冲区被抢占的次数;

在所述命令缓冲区被抢占的所述次数超过阈值的情况下拒绝抢占;及在所述命令缓冲区被抢占的所述次数低于所述阈值的情况下允许抢占。

8.一种经配置以用于图形处理的设备,所述设备包括:一或多个处理器,其经配置以:

执行用于图形处理单元的命令缓冲区中的命令,所述命令对读取-修改-写入存储器资源中的数据进行操作;

将所述读取-修改-写入存储器资源的原始数据存储在第一缓冲区中;

将通过执行所述命令缓冲区中的所述命令而产生的任何经修改数据存储在第二缓冲区中;

在完成所述命令缓冲区中的所有命令之前抢占所述命令缓冲区中的所述命令的执行;

在抢占执行之后,使用所述第一缓冲区中的所述原始数据在所述命令缓冲区的开始处重新开始执行所述命令。

9.根据权利要求8所述的设备,其中所述一或多个处理器进一步经配置以:跟踪所述命令缓冲区中的所述命令的完成。

10.根据权利要求8所述的设备,其中所述一或多个处理器进一步经配置以:将所述命令缓冲区存储在存储器中;及

响应于抢占所述命令缓冲区中的所述命令的执行,执行辅助命令缓冲区中的命令。

11.根据权利要求8所述的设备,其中所述一或多个处理器进一步经配置以响应于从在中央处理单元上执行的软件接收的抢占执行的请求而抢占所述命令的所述执行。

12.根据权利要求11所述的设备,其中所述软件包含图形驱动程序。

13.根据权利要求8所述的设备,其中所述读取-修改-写入存储器资源是帧缓冲区,且其中所述第一缓冲区是用于先前帧的所述帧缓冲区的副本且所述第二缓冲区是当前帧缓冲区。

14.根据权利要求8所述的设备,其中所述一或多个处理器进一步经配置以:跟踪所述命令缓冲区被抢占的次数;

在所述命令缓冲区被抢占的所述次数超过阈值的情况下拒绝抢占;及在所述命令缓冲区被抢占的所述次数低于所述阈值的情况下允许抢占。

15.一种经配置以用于图形处理的设备,所述设备包括:用于执行用于图形处理单元的命令缓冲区中的命令的装置,所述命令对读取-修改-写入存储器资源中的数据进行操作;

用于将所述读取-修改-写入存储器资源的原始数据存储在第一缓冲区中的装置;

用于将通过执行所述命令缓冲区中的所述命令而产生的任何经修改数据存储在第二缓冲区中的装置;

用于在完成所述命令缓冲区中的所有命令之前抢占所述命令缓冲区中的所述命令的执行的装置;及在抢占执行之后,用于使用所述第一缓冲区中的所述原始数据在所述命令缓冲区的开始处重新开始执行所述命令的装置。

16.根据权利要求15所述的设备,其进一步包括:用于跟踪所述命令缓冲区中的所述命令的完成的装置。

17.根据权利要求15所述的设备,其进一步包括:用于将所述命令缓冲区存储在存储器中的装置;及用于响应于抢占所述命令缓冲区中的所述命令的执行而执行辅助命令缓冲区中的命令的装置。

18.根据权利要求15所述的设备,其进一步包括用于响应于从在中央处理单元上执行的软件接收的抢占执行的请求而抢占所述命令的所述执行的装置。

19.根据权利要求18所述的设备,其中所述软件包含图形驱动程序。

20.根据权利要求15所述的设备,其中所述读取-修改-写入存储器资源是帧缓冲区,且其中所述第一缓冲区是用于先前帧的所述帧缓冲区的副本且所述第二缓冲区是当前帧缓冲区。

21.根据权利要求15所述的设备,其进一步包括:用于跟踪所述命令缓冲区被抢占的次数的装置;

用于在所述命令缓冲区被抢占的所述次数超过阈值的情况下拒绝抢占的装置;及用于在所述命令缓冲区被抢占的所述次数低于所述阈值的情况下允许抢占的装置。

22.一种图形处理单元,其经配置以:执行用于图形处理单元的命令缓冲区中的命令,所述命令对读取-修改-写入存储器资源中的数据进行操作;

将所述读取-修改-写入存储器资源的原始数据存储在第一缓冲区中;将通过执行所述命令缓冲区中的所述命令而产生的任何经修改数据存储在第二缓冲区中;

在完成所述命令缓冲区中的所有命令之前抢占所述命令缓冲区中的所述命令的执行;

在抢占执行之后,使用所述第一缓冲区中的所述原始数据在所述命令缓冲区的开始处重新开始执行所述命令。

23.根据权利要求22所述的图形处理单元,其进一步经配置以:跟踪所述命令缓冲区中的所述命令的完成。

24.根据权利要求22所述的图形处理单元,其进一步经配置以:将所述命令缓冲区存储在存储器中;及

响应于抢占所述命令缓冲区中的所述命令的执行,执行辅助命令缓冲区中的命令。

25.根据权利要求22所述的图形处理单元,其进一步经配置以响应于从在中央处理单元上执行的软件接收的抢占执行的请求而抢占所述命令的所述执行。

26.根据权利要求25所述的图形处理单元,其中所述软件包含图形驱动程序。

27.根据权利要求22所述的图形处理单元,其中所述读取-修改-写入存储器资源是帧缓冲区,且其中所述第一缓冲区是用于先前帧的所述帧缓冲区的副本且所述第二缓冲区是当前帧缓冲区。

28.根据权利要求22所述的图形处理单元,其进一步经配置以:跟踪所述命令缓冲区被抢占的次数;

在所述命令缓冲区被抢占的所述次数超过阈值的情况下拒绝抢占;及在所述命令缓冲区被抢占的所述次数低于所述阈值的情况下允许抢占。

说明书 :

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

技术领域

[0001] 本发明涉及用于图形处理的技术,且更明确地说涉及用于图形处理中的任意控制点处的抢占的技术。

背景技术

[0002] 用于显示的视觉内容(例如用于图形用户接口和视频游戏的内容)可由图形处理单元(GPU)产生。GPU可将二维或三维(3D)对象转换为可显示的二维(2D)像素表示。将关于3D对象的信息转换为可显示的位图被称为像素渲染,且需要相当大的存储器及处理能力。
在过去,3D图形能力仅在强大的工作站上可用。然而,现在3D图形加速器通常在个人计算机(PC)以及例如智能电话、平板计算机、便携式媒体播放器、便携式视频游戏控制台及类似者等移动装置中就能找到。通常,移动装置与常规的PC相比具有较小的计算能力及存储器能力。由此,在移动装置上实施3D图形渲染技术时所述技术中的增加的复杂度呈现难题。
[0003] 在许多系统中,利用用于抢占GPU上的命令的执行的技术,使得可执行要求GPU处理的较高优先级任务。所述抢占技术一般包含借以跟踪穿过一个命令流的GPU的进展的过程。以此方式,所述GPU可转变到较高优先级任务,且随后在GPU停止时返回到原始任务。

发明内容

[0004] 一般来说,本发明描述用于图形处理系统中的任意控制点处的抢占的技术。具体来说,本发明的技术允许在任一点处抢占GPU上的当前执行命令缓冲区,且允许GPU快速转变到较高优先级任务。在完成较高优先级任务之后,所述GPU返回到原始命令缓冲区,在起点处开始。为了促进此重新开始,本发明的技术提出对由命令缓冲区中的命令使用的任何读取-修改-写入存储器资源进行双重缓冲,使得可恢复所述读取-修改-写入资源的原始状态。
[0005] 在本发明的一个实例中,一种图形处理方法包括:执行用于图形处理单元的命令缓冲区中的命令,所述命令对读取-修改-写入存储器资源中的数据进行操作;将所述读取-修改-写入存储器资源的原始数据存储在第一缓冲区中;将由执行所述命令缓冲区中的所述命令所产生的任何修改的数据存储在第二缓冲区中;在完成所述命令缓冲区中的所有命令之前抢占所述命令缓冲区中的所述命令的执行;及在抢占执行之后,使用第一缓冲区中的原始数据在所述命令缓冲区的开始处重新开始执行所述命令。
[0006] 本发明的技术还在设备、图形处理单元及存储用于致使处理器执行所述技术的指令的计算机可读存储媒体的方面进行描述。附图及以下描述中陈述一或多个实例的细节。其它特征、目标和优点将从所述描述和图式以及权利要求书而显而易见。

附图说明

[0007] 图1是展示经配置以使用本发明的技术的实例计算装置的框图。
[0008] 图2是展示实例图形渲染系统的框图。
[0009] 图3是展示使用GPU的实例通用计算系统的框图。
[0010] 图4是展示抢占请求的概念图。
[0011] 图5是展示根据本发明的一或多个实例的抢占请求处置的概念图。
[0012] 图6是展示根据本发明的技术的实例方法的流程图。

具体实施方式

[0013] 本发明涉及用于图形处理的技术,且更具体来说涉及用于任意控制点处的抢占的技术。具体来说,本发明涉及用于计算系统中的输入/输出(I/O)装置的抢占机制的技术。具体来说,将在用于操作系统中以停止及恢复图形处理(例如,在图形处理单元(GPU)上执行的图形处理)的抢占机制方面描述本发明。
[0014] 简单来说,GPU上的抢占请求是由在图形处理系统的另一实体(例如,在中央处理单元(CPU)上执行的应用)作出的用以停止命令缓冲区的当前图形处理以支持需要GPU处理的另一较高优先级操作的请求。经常,此类抢占请求将源自操作系统。用于图形处理的抢占的常规技术依赖于使用所谓的“安全点”。即,如果GPU接收到抢占当前处理的请求,那么所述GPU继续处理直到特定点(例如,命令缓冲区中的特定点)且保存关于所述点处的处理的状态的信息。此信息可包含命令缓冲区中的处理曾被停止且应重新开始的点、接收GPU处理的输出的任何缓冲区的内容,及可用作所述命令中的所述点处的任何GPU处理的输入数据的一或多个缓冲区的内容。
[0015] 保存此状态信息允许GPU以正确的输入及输出数据在已知点处重新开始处理。然而,在接收抢占请求时处理直到安全点及保存状态信息要花费不确定的时间量。抢占请求可在由GPU执行的命令缓冲区中的异步点处发生,并且因此,可能不可能预测在到达安全点之前GPU可需要操作多长时间。在一些情形中,响应于抢占请求使GPU到达安全点、保存状态信息及开始处理新命令缓冲区的时间可能不合意地长。如果较高优先级图形任务不能够立即开始,那么一些应用可导致较差的用户体验。
[0016] 鉴于所述缺点,本发明呈现用于处理任意控制点处的抢占请求的技术。具体来说,本发明的技术包含对由GPU使用的读取-修改-写入资源进行双重缓冲以执行用于原始任务的命令缓冲区,使得可丢掉部分处理命令缓冲区的结果,且命令缓冲区可响应于执行较高优先级任务的抢占请求而从起点重新运行。以此方式,可立即处置抢占请求,同时仍维持重新开始处理原始任务的稳定状态。
[0017] 在一个实例中,用于图形处理的命令流可读取且随后修改先前渲染的帧缓冲区的内容以便渲染后续帧。如果在完成当前帧之前对所述帧的渲染被抢占,那么本发明的技术包含从开始重新开始执行命令缓冲区(即,从起点开始渲染所述帧)。在抢占期间,存储所述命令缓冲区的整个内容以用于在稍后点处重播。如果在抢占之前已修改先前帧缓冲区的部分,那么帧缓冲区的此些部分将不是当前处理的帧的正确输入。由此,本发明的技术还包含存储读取-修改-写入资源的副本(例如,先前帧的帧缓冲区的内容),直到处理整个命令缓冲区为止。对先前帧缓冲区的内容的任何修改存储在不同的缓冲区中(即,读取-修改-写入缓冲区被双重缓冲)。
[0018] 图1是说明可用于实施本发明的用于任意控制点处的抢占的技术的实例计算装置2的框图。计算装置2可包括(例如)个人计算机、桌上型计算机、膝上型计算机、平板计算机、计算机工作站、视频游戏平台或控制台、移动电话(例如蜂窝式或卫星电话,包含例如所谓的智能电话、陆线电话、因特网电话)、手持式装置(例如,便携式视频游戏装置或个人数字助理(PDA)、个人音乐播放器、视频播放器)、显示装置、电视、电视机顶盒、服务器、中间网络装置、主机计算机、任何移动装置或处理及/或显示图形数据的任何其它类型的装置。
[0019] 如图1的实例中所说明,计算装置2可包含用户输入接口4、中央处理单元(CPU)6、存储器控制器8、系统存储器10、图形处理单元(GPU)12、图形存储器14、显示接口16、显示器18以及总线20及22。应注意,在一些实例中,图形存储器14可与GPU 12“在芯片上”。在一些情况下,图1中展示的所有硬件元件可在(例如)系统芯片(SoC)设计中的芯片上。用户输入接口4、CPU 6、存储器控制器8、GPU 12及显示接口16可使用总线20彼此通信。存储器控制器
8及系统存储器10也可使用总线22彼此通信。总线20、22可为多种总线结构中的任一者,例如第三代总线(例如,HyperTransport总线或InfiniBand总线)、第二代总线(例如,高级图形端口总线、外围组件互连(PCI)高速总线,或高级eXentisible接口(AXI)总线)或另一类型的总线或装置互连件。应注意,图1中展示的不同组件之间的总线及通信接口的特定配置仅是示范性的,且具有相同或不同组件的计算装置及/或其它图形处理系统的其它配置可用于实施本发明的技术。
[0020] CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可提供对计算装置2的输入以致使CPU 6执行一或多个软件应用。在CPU 6上执行的软件应用可包含(例如)操作系统、字处理器应用、电子邮件应用、总分析表应用、媒体播放器应用、视频游戏应用、图形用户接口应用或另一程序。另外,CPU 6可执行用于控制GPU 12的操作的GPU驱动程序7。
用户可经由一或多个输入装置(未图示)(例如,键盘、鼠标、麦克风、触摸垫或经由用户输入接口4耦合到计算装置2的另一输入装置)将输入提供到计算装置2。
[0021] 在CPU 6上执行的软件应用可包含指令CPU 6以致使向显示器18渲染图形数据的一或多个图形渲染指令。在一些实例中,所述软件指令可符合图形应用编程接口(API),例如开放图形库 API、开放图形库嵌入系统(OpenGL ES)API、Direct3D API、X3D API、RenderMan API、WebGL API或任何其它公共或专有标准图形API。为了处理图形渲染指令,CPU 6可将一或多个图形渲染命令发布到GPU 12(例如,通过GPU驱动程序7)以致使GPU 12执行对图形数据的一些或所有渲染。在一些实例中,将渲染的图形数据可包含例如点、线、三角形、四边形、三角形带等图形基元的列表。
[0022] 存储器控制器8促进数据进出系统存储器10的传递。举例来说,存储器控制器8可接收存储器读取及写入命令,且服务关于系统存储器10的此类命令以便为计算装置2中的组件提供存储器服务。存储器控制器8经由存储器总线22通信地耦合到系统存储器10。虽然在图1中将存储器控制器8说明为与CPU 6及系统存储器10两者分开的处理模块,但在其它实例中,存储器控制器8的一些或全部功能性可实施在CPU 6及系统存储器10中的一者或两者上。
[0023] 系统存储器10可存储可由CPU 6存取以用于执行的程序模块及/或指令及/或由在CPU 6上执行的程序使用的数据。举例来说,系统存储器10可存储由CPU 6使用以在显示器18上呈现图形用户接口(GUI)的窗口管理器应用。另外,系统存储器10可存储与所述应用相关联的用户应用及应用表面数据。系统存储器10可另外存储由计算装置2的其它组件使用及/或产生的信息。举例来说,系统存储器10可充当用于GPU 12的装置存储器且可存储将在GPU 12上操作的数据以及由GPU 12执行的操作而产生的数据。例如,系统存储器10可存储纹理缓冲区、深度缓冲区、模板缓冲区、顶点缓冲区、帧缓冲区或类似者的任何组合。系统存储器10可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
[0024] GPU 12可经配置以执行图形操作以向显示器18渲染一或多个图形基元。因此,当在CPU 6上执行的软件应用中的一者需要图形处理时,CPU 6可向GPU 12提供图形命令及图形数据以用于向显示器18渲染。所述图形数据可包含(例如)绘制命令、状态信息、基元信息、纹理信息等。在一些情况下,GPU 12可内置有高度并行的结构,其提供比CPU 6对复杂图形相关操作的更有效的处理。举例来说,GPU 12可包含经配置而以并行方式对多个顶点或像素操作的多个处理元件。在一些情况下,GPU 12的高度并行性质允许GPU 12比使用CPU 6直接将场景绘制到显示器18更快速地将图形图像(例如,GUI及二维(2D)及/或三维(3D)图形场景)绘制到显示器18上。
[0025] 在其它实例中,GPU 12可经配置以执行通用“着色器程序”以便为除图形之外的应用执行计算。GPU的此用途有时被称作通用GPU(GPGPU)。归因于GPU处理元件的高度并行性质,GPU可比CPU更有效地执行一些类型的计算。
[0026] 在一些情况下,可将GPU 12集成到计算装置2的母板中。在其它情况下,GPU 12可存在于图形卡上,所述图形卡安装在计算装置2的母板中的端口中或可以其它方式并入经配置以与计算装置2互操作的外围装置内。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。
[0027] GPU 12可直接耦合到图形存储器14。因此,GPU 12可在不使用总线20的情况下从图形存储器14读取数据且将数据写入到图形存储器14。换句话说,GPU 12可使用本地存储装置而不是芯片外存储器在本地处理数据。此允许GPU 12通过消除GPU 12经由总线20读取及写入数据的需要而以更有效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU 12可不包含单独的存储器,而是经由总线20利用系统存储器10。图形存储器14可包含一或多个易失性或非易失性存储器或储存装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
[0028] CPU 6及/或GPU 12可将渲染的图像数据存储在帧缓冲区15中。帧缓冲区15可为独立的存储器或可被分配在系统存储器10内。显示接口16可从帧缓冲区15检索数据且配置显示器18以显示由渲染的图像数据表示的图像。在一些实例中,显示接口16可包含经配置以将从帧缓冲区检索的数字值转换为可由显示器18消耗的模拟信号的数/模转换器(DAC)。在其它实例中,显示接口16可将数字值直接传递到显示器18以供显示器18上的显示处理器进行处理。显示器18可包含监视器、电视、投影装置、液晶显示器(LCD)、等离子显示面板、发光二极管(LED)阵列(例如,有机LED(OLED)显示器)、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或另一种类型的显示单元。显示器18可集成在计算装置2内。举例来说,显示器18可为移动电话的屏幕。或者,显示器18可为经由有线或无线通信链路而耦合到计算装置2的独立装置。举例来说,显示器18可为经由电缆或无线链路而连接到个人计算机的计算机监视器或平板显示器。
[0029] 本发明的抢占技术可以用于GPU的任何应用,包含3D渲染、2D渲染、GPGPU应用或可由GPU执行的任何其它计算。图2及图3展示两个不同GPU应用的典型系统架构的两个实例。图2是说明图1的CPU 6、GPU 12及系统存储器10在2D及/或3D图形渲染应用中的实例实施方案的框图。CPU 6可包含至少一个软件应用24、图形API 26及GPU驱动程序7,其中的每一者可为在CPU 6上执行的一或多个软件应用或服务。GPU 12可包含图形处理管线30,所述图形处理管线包含一起操作以执行图形处理命令的多个图形处理级。GPU 12可经配置而以多种渲染模式执行图形处理管线30,包含分箱渲染模式及直接渲染模式。如图2中所展示,图形处理管线30可包含命令引擎32、几何处理级34、光栅化级36,及像素处理管线38。图形处理管线30中的组件中的每一者可实施为固定功能组件、可编程组件(例如,作为在可编程着色器单元上执行的着色器程序的部分),或实施为固定功能与可编程组件的组合。可用于CPU 
6及GPU 12的存储器可包含系统存储器10及帧缓冲区15。帧缓冲区15可为系统存储器10的一部分或可与系统存储器10分开。帧缓冲区15可存储渲染的图像数据。
[0030] 软件应用24可为利用GPU 12的功能性的任何应用。例如,软件应用24可为GUI应用、操作系统、便携式制图应用、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用,或使用2D或3D图形的另一种类型的软件应用。
[0031] 软件应用24可包含指令GPU 12渲染图形用户接口(GUI)及/或图形场景的一或多个绘图指令。例如,绘图指令可包含界定将由GPU 12渲染的一组一或多个图形图元的指令。在一些实例中,绘图指令可共同地界定用于GUI中的多个开窗表面的全部或部分。在额外实例中,所述绘图指令可共同地界定图形场景的全部或部分,所述图形场景包含在由应用界定的模型空间或世界空间内的一或多个图形对象。
[0032] 软件应用24可经由图形API 26调用GPU驱动程序7以将一或多个命令发布到GPU12,以用于将一或多个图形图元渲染为可显示的图形图像。例如,软件应用24可经由图形API 26调用GPU驱动程序7以将图元定义提供给GPU 12。在一些情况下,可以绘图图元(例如,三角形、矩形、三角扇、三角带等)的列表的形式将图元定义提供给GPU12。所述图元定义可包含指定与将要渲染的图元相关联的一或多个顶点的顶点规格。所述顶点规格可包含每一顶点的位置坐标,并且在一些情况下,包含与顶点相关联的其它属性,例如色彩坐标、法向量及纹理坐标。所述图元定义还可包含图元类型信息(例如,三角形、矩形、三角扇、三角带等)、缩放信息、旋转信息及类似者。基于由软件应用24发布到GPU驱动程序7的指令,GPU驱动程序7可制定指定供GPU 12执行的一或多个操作以便渲染图元的一或多个命令。在GPU 12从CPU 6接收命令时,图形处理管线30解码所述命令且配置图形处理管线30内的一或多个处理元件以执行所述命令中指定的操作。在执行指定操作之后,图形处理管线30将渲染的数据输出到与显示装置相关联的帧缓冲区40。图形管线30可经配置以在多个不同的渲染模式中的一者中执行,包含分箱渲染模式及直接渲染模式。下文将更详细地论述分箱渲染模式及直接渲染模式的操作。
[0033] GPU驱动程序7可进一步经配置以编译一或多个着色器程序,且将经编译的着色器程序下载到GPU 12内所包含的一或多个可编程着色器单元上。可以高级着色语言编写着色器程序,所述高级着色语言例如为OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形的C(Cg)着色语言等。经编译的着色器程序可包含控制GPU 12内的可编程着色器单元的操作的一或多个指令。例如,着色器程序可包含顶点着色器程序及/或像素着色器程序。顶点着色器程序可控制可编程顶点着色器单元或统一着色器单元的执行,且包含指定一或多个逐顶点操作的指令。像素着色器程序可包含控制可编程像素着色器单元或统一着色器单元的执行的像素着色器程序,且包含指定一或多个逐像素操作的指令。根据本发明的一些实例实施例,像素着色器程序还可包含选择性地致使基于源像素的对应目的地阿尔法值而检索源像素的纹理值的指令。
[0034] 如将在下文更详细地阐释,图形驱动程序7还可由软件应用24使用以向GPU 12发出抢占请求来停止其当前处理以支持另一工作。
[0035] 图形处理管线30可经配置以经由图形驱动程序28从CPU 6接收一或多个图形处理命令,且执行图形处理命令以产生可显示的图形图像。如上文所论述,图形处理管线30包含一起操作以执行图形处理命令的多个级。然而,应注意,所述级不需要一定实施在单独的硬件块中。例如,几何处理级34及像素处理管线38的部分可实施为统一着色器单元的部分。同样,图形管线30可经配置以在多个不同的渲染模式中的一者中执行,包含分箱渲染模式及直接渲染模式。
[0036] 命令引擎32可接收图形处理命令且配置图形处理管线30内的剩余的处理级以执行用于实行图形处理命令的各种操作。图形处理命令可包含(例如)绘图命令及图形状态命令。所述绘图命令可包含顶点规格命令,所述顶点规格命令指定一或多个顶点的位置坐标,并且在一些情况下,指定与所述顶点中的每一者相关联的其它属性值,例如色彩坐标、法向量、纹理坐标及雾坐标。所述图形状态命令可包含图元类型命令、变换命令、光照命令等。所述图元类型命令可指定将要渲染的图元的类型及/或顶点如何组合以形成图元。所述变换命令可指定对顶点执行的变换的类型。所述光照命令可指定图形场景内的不同光的类型、方向及/或布局。命令引擎32可致使几何处理级34相对于与一或多个所接收的命令相关联的顶点及/或图元而执行几何处理。
[0037] 几何处理级34可对一或多个顶点执行逐顶点操作及/或图元设置操作以便产生用于光栅化级36的图元数据。每一顶点可与一组属性(例如,位置坐标、色彩值、法向量及纹理坐标)相关联。几何处理级34根据各种逐顶点操作而修改这些属性中的一或多者。例如,几何处理级34可对顶点位置坐标执行一或多个变换以产生经修改的顶点位置坐标。几何处理级34可(例如)向顶点位置坐标应用模型化变换、观看变换、投影变换、ModelView变换、ModelViewProjection变换、视口变换及深度范围缩放变换中的一或多者以产生经修改的顶点位置坐标。在一些情况下,顶点位置坐标可为模型空间坐标,且经修改的顶点位置坐标可为屏幕空间坐标。可在所述模型化、观看、投影及视口变换的应用之后获得屏幕空间坐标。在一些情况下,几何处理级34还可对顶点执行逐顶点光照操作以产生顶点的经修改的色彩坐标。几何处理级34还可执行其它操作,包含(例如)正常变换、正常规格化操作、观看量修剪、均匀划分及/或隐面消除操作。
[0038] 几何处理级34可产生包含界定将被光栅化的图元的一组一或多个经修改的顶点的图元数据以及指定顶点如何组合以形成图元的数据。所述经修改的顶点中的每一者可包含(例如)与所述顶点相关联的经修改的顶点位置坐标及经处理的顶点属性值。所述图元数据可共同地对应于将由图形处理管线30的其它级光栅化的图元。在概念上,每一顶点可对应于图元的其中所述图元的两个边缘会合的隅角。几何处理级34可将图元数据提供到光栅化级36以用于进一步处理。
[0039] 在一些实例中,几何处理级34的全部或部分可由在一或多个着色器单元上执行的一或多个着色器程序实施。例如,在此些实例中,几何处理级34可由顶点着色器、几何着色器或其任何组合实施。在其它实例中,可将几何处理级34实施为固定功能硬件处理管线或实施为固定功能硬件与在一或多个着色器单元上执行的一或多个着色器程序的组合。
[0040] 光栅化级36经配置以从几何处理级34接收表示将被光栅化的图元的图元数据,且光栅化所述图元以产生对应于光栅化的图元的多个源像素。在一些实例中,光栅化级36可确定哪些屏幕像素位置由将被光栅化的图元覆盖,且产生用于被确定为由图元覆盖的每一屏幕像素位置的源像素。光栅化级36可通过使用所属领域的技术人员已知的技术(例如边缘行走技术、评估边缘等式等)来确定哪些屏幕像素位置由图元覆盖。光栅化级36可将所得的源像素提供到像素处理管线38以供进一步处理。
[0041] 由光栅化级36产生的源像素可对应于屏幕像素位置,例如目的地像素,且与一或多个色彩属性相关联。可称针对特定光栅化的图元所产生的所有源像素与光栅化的图元相关联。由光栅化级36确定的将由图元覆盖的像素可在概念上包含表示图元的顶点的像素、表示图元的边缘的像素及表示图元的内部的像素。
[0042] 像素处理管线38经配置以接收与光栅化的图元相关联的源像素,且对所述源像素执行一或多个逐像素操作。可由像素处理管线38执行的逐像素操作包含(例如)阿尔法测试、纹理映射、色彩计算、像素着色、逐像素光照、雾处理、混合、像素所有权测试、源阿尔法测试、模板测试、深度测试、剪刀测试及/或点刻操作。另外,像素处理管线38可执行一或多个像素着色器程序以执行一或多个逐像素操作。由像素处理管线38产生的所得数据可在本文中被称作目的地像素数据且存储在帧缓冲区15中。所述目的地像素数据可与帧缓冲区15中的具有与被处理的源像素相同的显示位置的目的地像素相关联。所述目的地像素数据可包含例如色彩值、目的地阿尔法值、深度值等数据。
[0043] 帧缓冲区15存储GPU 12的目的地像素。每一目的地像素可与唯一屏幕像素位置相关联。在一些实例中,帧缓冲区15可存储每一目的地像素的色彩分量及目的地阿尔法值。例如,帧缓冲区15可存储每一像素的红色、绿色、蓝色阿尔法(RGBA)分量,其中“RGB”分量对应于色彩值,且“A”分量对应于目的地阿尔法值。虽然帧缓冲区15及系统存储器10被说明为单独的存储器单元,但在其它实例中,帧缓冲区15可为系统存储器10的部分。
[0044] 图3是说明图1的CPU 6、GPU 12及系统存储器10在GPGPU应用中的实例实施方案的框图。应注意,可基于经加载以在GPU上运行的软件以及用于控制GPU的操作的驱动程序而选择性地驱动图1的系统的GPU 12以执行图形处理任务、GPGPU任务或适合于GPU的任何其它类型的任务。在图3的实例中,CPU 6可执行至少一个软件应用25及GPGPU驱动程序50,其中的每一者可为在CPU 6上执行的一或多个软件应用或服务。GPU 12可经配置以执行通用着色器52。通用着色器52可为适用于在GPU 12上执行的利用GPU 12的处理元件的并行性质来执行计算的任何应用。再者,CPU 6及GPU 12可用的存储器可包含系统存储器10。GPU 12还可利用更快的本地图形存储器14。
[0045] 软件应用25可为利用GPU 12的功能性的任何应用。例如,软件应用25可为需要GPU 12进行复杂计算的应用。
[0046] 软件应用25可调用GPGPU驱动程序50(例如)以向GPU 12发出一或多个命令以用于执行通用着色器52。如将在下文更详细地阐释,GPGPU驱动程序50可由软件应用25使用以向GPU 12发出抢占请求来停止其当前处理以支持另一工作。
[0047] 如上文所论述,本发明涉及用于图形处理的技术,且更具体来说涉及用于任意控制点处的抢占的技术。具体来说,本发明涉及用于计算系统中的I/O装置的抢占机制的技术。具体来说,将在用于操作系统中以停止及恢复图形处理操作(例如,在图形处理单元(GPU)上执行的图形处理)的抢占机制方面描述本发明。
[0048] 简单来说,GPU上的抢占请求是由在图形处理系统的另一实体(例如,在中央处理单元(CPU)上执行的应用)作出的用以停止命令缓冲区的当前图形处理以支持需要GPU处理的另一较高优先级操作的请求。通常,此类抢占请求将源自操作系统。由此,所述较高优先级操作可为操作系统在那时认为是较高优先级的可由GPU 12执行的任何操作。
[0049] 图4是说明实例抢占请求的框图。如图4中所展示,CPU 6向GPU 12发出抢占请求以停止执行当前任务。在一些实例中,所述抢占请求可通过GPU驱动程序7被传送到GPU 12。在图4的实例中,由GPU 12执行的当前任务是命令缓冲区68中的渲染命令流。命令缓冲区68描绘三角形基元A、B及C的绘制命令。CPU 6的抢占请求指令GPU 12停止当前任务且替代地开始处理不同的任务,例如,辅助命令缓冲区70中展示的渲染命令。再者,辅助命令缓冲区70中的命令是用于三角形基元的不同集合的不同绘制命令(例如,以渲染与当前通过命令缓冲区68渲染的帧或瓦片不同的帧或瓦片)。应注意,抢占请求不限于渲染命令流,而是可作出以抢占当前由GPU 12执行的任何种类的命令流以支持任何类型的命令流(渲染、一般计算或其它)。
[0050] 用于抢占图形处理的常规的技术依赖于使用所谓的“安全点”。即,如果GPU接收到抢占当前处理的请求,那么所述GPU继续处理直到特定点(例如,命令缓冲区中的特定点)且保存关于所述点处的处理的状态的信息。此信息可包含命令缓冲区中的处理曾被停止且应重新开始的点、接收GPU处理的输出的任何缓冲区的内容,及可用作所述命令中的所述点处的任何GPU处理的输入数据的一或多个缓冲区的内容。
[0051] 利用安全点的常规的抢占机制包含硬件及软件实施方案两者。一些软件解决方案使用直接存储器存取缓冲区的大小来确定在哪里定位安全点。其它软件解决方案使用绘制边界或分箱边界(即,所述帧的特定区)来确定在哪里定位安全点。用于抢占的其它技术可利用额外的硬件支持以影响分箱、三角形或像素水平处的更细粒度的。虽然产生操作比仅软件技术更快,但此些硬件技术要求更多的复杂度。
[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)。GPU 12可进一步经配置以将读取-修改-写入存储器资源的原始数据存储在第一缓冲区中(602),且将通过执行所述命令缓冲区中的命令而产生的任何经修改数据存储在第二缓冲区中(604)。在本发明的一个实例中,所述读取-修改-写入存储器资源是帧缓冲区,其中所述第一缓冲区是用于先前帧的帧缓冲区的副本且所述第二缓冲区是当前帧缓冲区。
[0064] GPU 12可进一步经配置以在完成命令缓冲区中的所有命令之前抢占所述命令缓冲区中的命令的执行(606)。在本发明的一个实例中,GPU 12可进一步经配置以跟踪所述命令缓冲区中的命令的完成以确定所有命令已经完成。在抢占执行之后,GPU 12可进一步经配置以使用第一缓冲区中的原始数据在所述命令缓冲区的开始处重新开始执行所述命令(608)。
[0065] 在本发明的另一实例中,GPU 12可经配置以将命令缓冲区存储在存储器中,且响应于抢占命令缓冲区中的命令的执行而执行辅助命令缓冲区中的命令。在本发明的一个实例中,GPU 12经配置以响应于从在中央处理单元上执行的软件接收的抢占执行的请求而抢占所述命令的执行。在一个实例中,所述软件包含图形驱动程序。
[0066] 在本发明的另一实例中,GPU 12可经配置以跟踪所述命令缓冲区被抢占的次数,在所述命令缓冲区被抢占的次数超过阈值的情况下拒绝抢占,且在所述命令缓冲区被抢占的次数低于阈值的情况下允许抢占。
[0067] 在一或多个实例中,上文所描述的功能可以硬件、软件、固件或其任何组合实施。如果以软件来实施,那么功能可作为一或多个指令或代码存储在包括非暂时性计算机可读媒体的制品上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可为可由一或多个计算机或一个或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码及/或数据结构的任何可用媒体。举例来说而非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器,或可用以携载或存储呈指令或数据结构的形式且可由计算机存取的所要程序代码的任何其它媒体。如本文所使用,磁盘及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式重现数据,而光盘用激光以光学方式重现数据。上述各者的组合也应包含在计算机可读媒体的范围内。
[0068] 代码可由一或多个处理器执行,所述一或多个处理器例如为一或多个DSP、通用微处理器、ASIC、FPGA,或其它等效集成或离散逻辑电路。另外,在一些方面中,可在专用硬件和/或软件模块内提供本文中所描述的功能性。并且,可将所述技术完全实施于一或多个电路或逻辑元件中。
[0069] 本发明的技术可实施在广泛多种装置或设备中,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示技术的装置的功能方面,但未必需要通过不同硬件单元实现。实际上,如上文所描述,各种单元可以结合合适的软件及/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
[0070] 已描述各种实例。这些及其它实例在所附权利要求书的范围内。