掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本公开涉及计算系统体系结构,并且更特别地,涉及一种包括在生成游戏或其他交互式应用程序的视频帧时的资产感知部件的计算系统体系结构,所述资产感知部件包括中央处理单元和图形处理单元。

发明背景

视频游戏提供在虚拟化游戏世界中的玩游戏过程(gameplay)。可经由执行相应的游戏来创建游戏世界的不同场景。可以使用各种类型的资产(例如纹理和模型)来生成场景。由图形处理器使用这些资产来生成场景。这些资产太大而无法同时放入系统存储器中,因此资产通常存储在光学介质、硬盘驱动器或固态装置上并且在需要时加载到系统存储器。因此,用户在加载资产时可能会经历长延迟,并且管理资产到系统存储器的加载和释放系统存储器以接收附加资产可能会给游戏开发者形成巨大负担。因此,游戏开发者可能会减少场景的复杂性,以减少用户延迟和所需的资产管理,但是结果是玩家的沉浸式体验较少。

在这种情况下,出现了本公开的实施方案。

发明内容

本公开的实施方案涉及一种计算系统体系结构和所述计算系统体系结构的实现方法,所述计算系统体系结构包括被配置用于在经由图形流水线处理纹理、模型或其他资产时进行资产感知的中央处理单元和图形处理单元。资产感知提供对处理所需的资产的识别,并且用于跟踪那些资产的加载以供在图形流水线中使用。而且,资产感知可以知道何时已经由图形流水线加载了最少的资产(例如较低LOD)以进行处理,从而减少图形流水线的任何停顿的影响,尤其是在虚拟化游戏世界的场景之间转换时。

本公开的实施方案公开一种资产感知计算体系结构,所述资产感知计算体系结构被配置成在图形流水线需要资产时管理资产到系统存储器中的加载,并且在不再需要资产时释放系统存储器。所述计算体系结构包括资产存储区,所述资产存储区被配置成具有提供快速访问的存储器装置,从而允许将用于在视频帧中绘制的场景的资产在几毫秒或数十毫秒内加载到系统存储器。特别地,资产是使用绑定时间触发器从资产存储区加载到系统存储器。以此方式,当资产(例如,在绑定时间)绑定到相应绘制调用时并且当执行游戏的中央处理单元(CPU)使用图形应用程序编程接口(API)来为由实现图形流水线的图形处理单元(GPU)执行的绘制调用构造一个或多个命令缓冲器时,触发用于渲染视频帧的一个或多个绘制调用的资产的加载。因为计算体系结构是资产感知型的,所以GPU能够针对视频帧的一个或多个绘制调用使用最少的所需资产来执行,而无需等到所需资产完全加载才执行。资产存储区控制器被配置成控制对所述资产存储区中的资产的管理和资产在整个资产感知计算体系结构中的分发。在一个实施方案中,所述资产存储区控制器可以是在其他芯片上单元的帮助下在CPU上运行的软件。所述资产存储区控制器可以替代地为含协处理器(例如附加CPU)的芯片上复合体。CPU和GPU都可以被修改以与所述资产存储区控制器集成和/或对接。所述资产存储区包括游戏的纹理、模型和其他数据。所述资产存储区比系统存储器大得多。所述资产存储区知晓其内容,包括使用资产识别符(资产ID)识别和/或标记的资产,以及内容和/或资产的细节(例如,相应资产的细节层次)。所述资产存储区以各种方式以资产感知方式进行更新,例如何时在本地生成资产,或何时从机架内的大容量存储装置访问资产,或何时从数据中心内访问资产,或何时经由网络分发资产,等。常规地,在CPU上执行的游戏使用GPU API以将一个或多个资产(例如,纹理、细节层次-LOD、模型等)绑定到绘制调用,从而使得所述资产能够在通过绘制调用渲染的对象中使用。在所述资产感知计算体系结构中,GPU API从在CPU上执行的游戏接收附加信息。举例来说,对于每个绘制调用,附加资产感知数据(asset aware data;AAD)包括用于绘制调用的资产的资产ID、在绘制调用能够在图形流水线中执行之前必须为资产加载的最低LOD以及所述资产相对于绘制调用所使用的其他资产负载的加载优先级。GPU API被配置成针对相应绘制调用将至少一些AAD放入命令缓冲器中(例如,资产ID、最低LOD等)并且将至少一些(如果不是全部)AAD传递到所述资产存储区控制器。另外,GPU API还可以用于在渲染每个视频帧完成时通知所述资产存储区控制器,例如通过将命令放入命令缓冲器中。因此,在资产感知体系结构中,所述资产存储区控制器正在接收AAD流(例如具有优先级信息的为视频帧所需的至少所有资产)和对使用那些资产的渲染的结束的通知等。在接收到AAD后,所述资产存储区控制器开始将所述资产从所述资产存储区加载到系统存储器中。加载过程使用加载优先级。举例来说,可以为所有纹理和/或模型和/或其他资产加载“最低LOD”,然后可以基于资产的加载优先级信息来执行更高LOD的加载。在加载完成后,(例如,使用资产ID)向GPU通知资产已经加载或正在加载和资产加载的程度(例如,已经为资产加载了哪些LOD)。在一些实施方案中,如果渲染(例如,相应绘制调用在图形流水线中的执行)已经开始并且所述绘制调用所需的资产尚未加载,则可能存在资产的“紧急加载”。在其他实施方案中,命令缓冲器中的条件命令可以用于查询LOD数据的加载状态并且更改命令流,例如,如果最低LOD数据尚未加载,则完全跳过绘制调用(即为了避免GPU中的停顿),使用代理资产进行渲染或允许基于已加载的LOD进行定制渲染。在另外其他实施方案中,GPU可以使用AAD做出这些相同确定,例如,如果最低LOD数据尚未加载,则完全跳过绘制调用(即为了避免GPU中的停顿)。所述资产存储区控制器还被配置成释放不需要的存储器,例如当在渲染帧期间尚未使用资产并且因此可以释放存储所述资产的存储器空间时。GPU可以被修改为资产感知型的。举例来说,当渲染对象时,GPU辨识是否已经加载了资产的所需LOD。GPU能够针对所需的LOD发出“紧急加载”请求,然后暂停,直到所需的LOD被加载为止。另外,GPU辨识针对特定资产已经加载到存储器中的最高LOD,并且使用最多所述最高LOD但是不超过所述最高LOD来渲染相应视频帧。作为系统存储器的加载和释放的一部分,可能需要操纵页表、CPU高速缓存和GPU高速缓存,并且因此,所述资产存储区控制器、CPU和GPU可以被配置成加速这些操作。以此方式,从在CPU上执行的游戏的角度看,相应绘制调用所需的资产“神奇地”及时地在系统存储器中展示以供使用。也就是说,游戏只需要使用GPU API进行绘制调用,并且所需资产(例如,最低LOD)已经准备好在图形流水线中使用。

在一个实施方案中,公开一种用于由计算系统来执行游戏的方法,所述计算系统使用中央处理单元和图形处理单元来生成视频帧。所述方法包括由所述CPU为所述视频帧中的一个视频帧生成绘制调用。所述方法包括在绑定时间将用于所述绘制调用的一个或多个命令写入到命令缓冲器。所述方法包括在所述绑定时间使用GPU API将用于所述绘制调用的资产感知数据(AAD)写入到所述命令缓冲器,并且在所述绑定时间开始将一个或多个细节层次(LOD)数据从资产存储区加载到由所述计算系统使用的系统存储器。所述方法包括由所述GPU使用写入到所述系统存储器的LOD数据来执行针对所述帧的所述绘制调用,所述GPU基于所述AAD使用至少最低LOD数据。

在另一实施方案中,公开一种用于执行游戏以生成视频帧的计算系统。所述计算系统包括:中央处理单元,所述中央处理单元被配置用于执行所述游戏。所述CPU为所述视频帧中的一个帧生成绘制调用,其中所述绘制调用包括命令。所述计算系统包括命令缓冲器,所述命令缓冲器被配置用于存储资产感知数据和用于所述绘制调用的命令,所述AAD和所述命令是在绑定时间由所述CPU使用GPU API写入到所述命令缓冲器中。所述计算系统包括资产存储区,所述资产存储区被配置用于存储应用程序的多个资产,所述多个资产包括由所述绘制调用使用的资产的一个或多个细节层次。所述计算系统包括系统存储器,所述系统存储器被配置用于存储由所述绘制调用使用的一个或多个细节层次数据,所述LOD数据从所述资产存储区的加载是在所述绑定时由所述CPU触发,其中所述LOD数据在将所述AAD写入到所述命令缓冲器的同时开始加载到系统存储器。所述计算系统包括图形处理单元,所述图形处理单元被配置用于使用写入到所述系统存储器的LOD数据来执行针对所述帧的所述绘制调用的命令,所述GPU基于所述AAD使用至少最低LOD数据。

在又一实施方案中,公开一种存储计算机程序的非暂时性计算机可读介质,所述计算机程序用于由计算系统来执行游戏,所述计算系统使用中央处理单元和图形处理单元来生成视频帧。所述非暂时性计算机可读介质包括用于由所述CPU为所述视频帧中的一个视频帧生成绘制调用的程序指令。所述非暂时性计算机可读介质包括用于在绑定时间将用于所述绘制调用的一个或多个命令写入到命令缓冲器的程序指令。所述非暂时性计算机可读介质包括用于在所述绑定时间使用GPU API将用于所述绘制调用的资产感知数据(AAD)写入到所述命令缓冲器并且在所述绑定时间开始将一个或多个细节层次(LOD)数据从资产存储区加载到由所述计算系统使用的系统存储器的程序指令。所述非暂时性计算机可读介质包括用于由所述GPU使用写入到所述系统存储器的LOD数据来执行针对所述帧的所述绘制调用的程序指令,所述GPU基于所述AAD使用至少最低LOD数据。

本公开的其他方面将从结合附图以举例方式说明本公开的原理的以下详细描述变得显而易见。

附图说明

通过结合附图参考以下描述,可以最佳地理解本公开,在附图中:

图1A是根据本公开的一个实施方案的用于提供游戏的系统的图。

图1B是根据本公开的一个实施方案的用于提供具有提供支持服务的后端云游戏网络的游戏的系统的图。

图1C是根据本公开的一个实施方案的用于经由云游戏网络提供游戏的系统的图。

图2图示根据本公开的一个实施方案的包括中央处理单元和图形处理单元的计算系统,当CPU正执行游戏时,中央处理单元和图形处理单元在生成视频帧时感知资产。

图3图示根据本公开的一个实施方案的包括中央处理单元和图形处理单元的计算系统的渲染流水线,当CPU正执行游戏时,中央处理单元和图形处理单元在生成视频帧时感知资产。

图4图示根据本公开的一个实施方案的包括中央处理单元和图形处理单元的计算系统在CPU正执行游戏的同时生成视频帧时对资产感知数据的使用。

图5是根据本公开的一个实施方案的在为中央处理单元所执行的游戏生成视频帧时使用的相应资产的细节层次数据和在加载LOD数据期间实现负载钳(clamp)的图示。

图6A是根据本公开的一个实施方案的流程图,所述流程图说明用于由计算系统来执行游戏的方法,所述计算系统使用中央处理单元和图形处理单元来生成视频帧。

图6B是根据本公开的一个实施方案的流程图,所述流程图说明在执行相应绘制调用以生成视频帧时对资产的LOD数据的加载状态的考虑。

图7图示可以用于执行本公开的各种实施方案的多个方面的示例装置的部件。

具体实施方式

尽管以下详细描述出于说明目的而含有许多特定细节,但是本领域技术人员将了解,对以下细节的许多变化和更改在本公开的范围内。因此,下文描述的本公开的方面是在不失本说明所附的权利要求的一般性并且不对本说明所附的权利要求加以限制的情况下阐述。

一般来说,本公开的各种实施方案描述一种包括资产感知部件的计算系统体系结构以及其实现方法,所述资产感知部件例如经由图形流水线生成视频帧的中央处理单元和图形处理单元。由CPU和GPU进行的资产感知提供对图形流水线中所使用的资产的识别和跟踪,使得在生成相应视频帧时可以使用最少资产(例如,最低细节层次–LOD)用于经由图形流水线进行处理。特别地,在CPU上执行的游戏代码可以预期何时需要资产以便及时地将那些资产加载到系统存储器中。举例来说,资产可以是纹理和/或模型,所述纹理和/或模型经由图形流水线的着色器程序进行处理以生成经由显示器的像素显示的视频帧。举例来说,森林场景可以将经由图形流水线处理的树纹理作为输入。在可能没有足够时间将用于纹理和/或模型的大量LOD数据加载到系统存储器中以进行处理的情况下,为了避免使GPU停顿,本公开的实施方案提供资产感知,使得GPU被配置成跟踪所识别资产的加载并且使用资产的至少最低LOD来生成场景。最初,可以以低分辨率来渲染场景,但是在后续帧中,可以使用更完整的LOD数据来渲染场景。以此方式,可以经由图形流水线有效地生成虚拟化游戏世界的大型且复杂的场景,同时减少使GPU停顿以等待资产加载的可能。当在游戏中遇到场景切换(scene-cut)时,此特别有益,其中游戏在两个视频帧之间从一个场景过渡到另一场景(例如,按电影序列的场景变化,或在一系列菜单之后开始交互式玩游戏过程)。替代等待整个LOD数据加载以生成新场景,可以为每个必需资产加载最低LOD数据以经由图形流水线进行处理以生成相应视频帧。举例来说,通过即使在渲染复杂场景时也减少GPU停顿,可以极大地提高用户玩游戏的沉浸式体验。

根据对各种实施方案的以上一般理解,现在将参考各种图来描述实施方案的示例细节。

在整个说明书中,对“游戏”或“视频游戏”或“游戏应用程序”的提及意图表示经由执行输入命令而定向的任何类型的交互式应用程序。仅出于说明目的,交互式应用程序包括用于游戏、文字处理、视频处理、视频游戏处理等的应用程序。此外,以上介绍的术语是可互换的。

图1A是根据本公开的一个实施方案的用于提供游戏的系统100A的图。如图所示,游戏正在玩游戏的相应用户的客户端装置110(例如,游戏控制台)上在本地执行。特别地,游戏的实例由游戏标题处理引擎111来执行。客户端装置110可针对用户以单玩家模式操作。实现游戏的游戏逻辑115(例如,可执行代码)存储在客户端装置110上,并且用于执行游戏。出于说明目的,游戏逻辑115可以经由便携式介质(例如,光学介质)或经由网络(例如,经由互联网从游戏提供商下载)分发到客户端装置110。

在一个实施方案中,客户端装置110的游戏标题处理引擎111包括用于执行游戏的基本基于处理器的功能和与游戏应用程序相关联的服务。举例来说,基于处理器的功能包括2D或3D渲染、物理学、物理学模拟、脚本处理、音频、动画、图形处理、照明、着色、栅格化、光线跟踪、阴影处理、剔除、变换、人工智能等。另外,针对游戏应用程序的服务包括存储器管理、多线程管理、服务质量(quality of service;QoS)、带宽测试、社交网络、社交好友管理、与好友社交网络的交流、通信信道、文字处理、即时消息、聊天支持等。特别地,客户端装置110被配置成包括资产感知部件的计算系统体系结构,所述资产感知部件例如经由图形流水线生成视频帧的中央处理单元和图形处理单元。以此方式,计算系统体系结构被配置成在生成相应视频帧时识别、跟踪并且使用在图形流水线中使用(例如,执行绘制调用)的资产的至少最低LOD数据。

客户端装置110可以从各种类型的输入装置接收输入,所述输入装置例如游戏控制器、平板计算机、键盘、由摄像机捕捉到的手势、鼠标、触摸板等。客户端装置110可以是具有至少存储器和处理器模块的任何类型的计算装置,并且被配置用于生成由游戏标题处理引擎111执行的所渲染图像,并且用于在显示器(例如,显示器11,或包括头戴式显示器–HMD的显示器11等)上显示所渲染图像。举例来说,所渲染图像可以与在客户端装置110上在本地执行的游戏的实例相关联,以例如经由用于驱动玩游戏过程的输入命令来实现相应用户的玩游戏过程。客户端装置110的一些实例包括个人计算机(personal computer;PC)、游戏控制台、家庭影院装置、通用计算机、移动计算装置、平板计算机、电话或可执行游戏的实例的任何其他类型的计算装置。

图1B是根据本公开的一个实施方案的用于提供具有提供支持服务的后端云游戏网络的游戏的系统100B的图。如图所示,游戏正在玩游戏的相应用户的客户端装置110(例如,游戏控制台)上在本地执行,其中先前在图1A中介绍了客户端装置110。特别地,如前所述,游戏的实例由游戏标题处理引擎111来执行。也就是说,客户端装置110的游戏标题处理引擎111包括用于执行游戏的基本基于处理器的功能和与游戏应用程序相关联的服务。实现游戏的游戏逻辑115(例如,可执行代码)存储在客户端装置110上,并且用于执行游戏。如前所述,客户端装置110包括资产感知部件,例如经由图形流水线生成视频帧的中央处理单元和图形处理单元。以此方式,包括CPU和GPU的计算系统体系结构被配置成在生成相应视频帧时识别、跟踪并且使用在图形流水线中使用(例如,执行绘制调用)的资产的至少最低LOD数据。

游戏服务器160可以被配置成支持支持多个用户的一个或多个本地计算装置,其中每个本地计算装置可以例如以单玩家或多玩家模式执行相应游戏的实例。举例来说,在多玩家模式下,尽管游戏可以在本地执行,但是云游戏网络190经由网络150同时地从每个本地计算装置接收信息(如,游戏状态数据),并且相应地在本地计算装置中的一者或多者中分布所述信息,使得每个用户能够在多玩家游戏的虚拟化游戏世界中与其他用户进行交互(例如,经由游戏中的相应角色)。以此方式,云游戏网络190通过经由网络150传递信息来协调并且组合多玩家游戏环境中的每个用户的玩游戏过程。网络150可以包括一种或多种通信技术。在一些实施方案中,网络150可以包括具有先进无线通信系统的第5代(5G)网络技术。

而且,在单玩家或多玩家模式下,云游戏网络可以向客户端装置110提供附加服务。举例来说,云游戏网络190可以出于备份玩游戏过程的目的而存储用户的玩游戏过程中的一个或多个点的游戏状态,从而提供玩游戏过程的亮点,基于所记录的玩游戏过程而生成迷你游戏,提供与玩游戏过程有关的基于人工智能(artificial intelligence;AI)的信息(例如,对游戏的支持)等。

图1C是根据本公开的一个实施方案的用于经由云游戏网络190提供游戏的系统100C的图,其中游戏正在远离玩游戏的相应用户的客户端装置110’(例如,瘦客户端)而执行。系统100C可以向一个或多个用户提供游戏控制,所述一个或多个用户以单玩家或多玩家模式经由网络150经由云游戏网络190玩一个或多个游戏。在一些实施方案中,云游戏网络可以是包括在主机的超级管理程序(hypervisor)上运行的多个虚拟机(virtualmachine;VM)的云游戏网络190,其中一个或多个虚拟机被配置成利用主机的超级管理程序可用的硬件资源来执行游戏处理器模块。网络150可以包括一种或多种通信技术。在一些实施方案中,网络150可以包括具有先进无线通信系统的第5代(5G)网络技术。

如图所示,云游戏网络190包括提供对多个游戏的访问的游戏服务器160。游戏服务器160可以是在云中可用的任何类型的服务器计算装置,并且可以被配置成在一个或多个主机上执行的一个或多个虚拟机。举例来说,游戏服务器160可以管理支持为用户实例化游戏的实例的游戏处理器的虚拟机。因此,与多个虚拟机相关联的游戏服务器160的多个游戏处理器被配置成执行与多个用户的玩游戏过程相关联的一个或多个游戏的多个实例。以此方式,后端服务器支持会向多个相应用户提供多个游戏应用程序的玩游戏过程的媒体(例如,视频、音频等)的流式传输。也就是说,游戏服务器160被配置成经由网络150将数据(例如,相应玩游戏过程的所渲染图像和/或帧)流式传输回到相应的客户端装置110'。以此方式,计算上复杂的游戏应用程序可以响应于由客户端装置110'接收和转发的控制器输入而在后端服务器处执行。每个服务器能够渲染图像和/或帧,所述图像和/或帧接着经编码(例如,压缩)并且流式传输到相应的客户端装置以进行显示。

举例来说,多个用户可以使用相应的客户端装置110'经由网络150访问云游戏网络190,其中客户端装置110'可以类似于图1A到图1B的客户端装置110而配置(例如,包括游戏执行引擎111等),或可以被配置成提供与后端服务器对接的瘦客户端,所述后端服务器被配置用于提供计算功能性(例如,包括游戏标题处理引擎111')。

为了易于说明,在图1C中示出支持相应用户的单一客户端装置110’。特别地,相应用户(未示出)的客户端装置110'被配置用于请求经由例如互联网的网络150来访问游戏,和用于渲染由游戏服务器160执行并且传递到与相应用户相关联的显示器装置的游戏的实例。举例来说,用户可能正在经由客户端装置110'与在游戏服务器160的游戏处理器上执行的游戏的实例进行交互。更特别地,游戏的实例由游戏标题处理引擎111’来执行。实现游戏应用程序的相应游戏逻辑(例如,可执行代码)115'被存储并且可以经由数据存储区(未示出)访问,并且用于执行游戏。游戏标题处理引擎111'能够使用多个游戏逻辑来支持多个游戏,所述多个游戏逻辑中的每一个可以由用户选择。

举例来说,客户端装置110'被配置成与相应用户的玩游戏过程相关联地与游戏标题处理引擎111'进行交互,例如经由用于驱动玩游戏过程的输入命令。特别地,客户端装置110'可以从各种类型的输入装置接收输入,所述输入装置例如游戏控制器、平板计算机、键盘、由摄像机捕捉到的手势、鼠标、触摸板等。客户端装置110'可以是具有至少存储器和处理器模块的任何类型的计算装置,所述计算装置能够经由网络150连接到游戏服务器160。后端游戏标题处理引擎111'被配置用于生成所渲染图像,所渲染图像将经由网络150分发以与客户端装置110'相关联地在相应显示器上显示。举例来说,经由基于云的服务,所渲染图像可以通过在游戏服务器160的游戏执行引擎111'上执行的相应游戏的实例来分发。也就是说,客户端装置110'被配置用于接收所渲染图像,和用于在显示器11上显示所渲染图像。在一个实施方案中,显示器11包括HMD(例如,显示VR内容)。在一些实施方案中,所渲染图像可以用无线方式或有线方式直接从基于云的服务或经由客户端装置110’(例如,

在一个实施方案中,游戏服务器160和/或游戏标题处理引擎111’包括用于执行游戏的基本基于处理器的功能和与游戏应用程序相关联的服务。举例来说,基于处理器的功能包括2D或3D渲染、物理学、物理学模拟、脚本处理、音频、动画、图形处理、照明、着色、栅格化、光线跟踪、阴影处理、剔除、变换、人工智能等。另外,游戏应用程序的服务包括存储器管理、多线程管理、服务质量(QoS)、带宽测试、社交网络、社交好友管理、与好友社交网络的交流、通信信道、文字处理、即时消息、聊天支持等。特别地,游戏服务器160和/或游戏标题处理引擎111’被配置成包括资产感知部件的计算系统体系结构,所述资产感知部件例如经由图形流水线生成视频帧的中央处理单元和图形处理单元。以此方式,计算系统体系结构被配置成在生成相应视频帧时识别、跟踪并且使用在图形流水线中使用(例如,执行绘制调用)的资产的至少最低LOD数据。

在一个实施方案中,云游戏网络160是分布式游戏服务器系统和/或体系结构。特别地,执行游戏逻辑的分布式游戏引擎被配置成相应游戏的相应实例。通常,分布式游戏引擎采用游戏引擎的功能中的每一个,并且分布那些功能以由多个处理实体执行。个别功能可以进一步跨一个或多个处理实体分布。所述处理实体可以不同配置来配置,包括物理硬件,和/或配置成虚拟部件或虚拟机,和/或配置成虚拟容器,其中容器不同于虚拟机,因为虚拟机将在虚拟化操作系统上运行的游戏应用程序的实例虚拟化。所述处理实体可以利用和/或依赖于云游戏网络190的一个或多个服务器(计算节点)上的服务器和所述服务器的底层硬件,其中服务器可以位于一个或多个机架上。那些功能到各种处理实体的执行的协调、指派和管理是由分布同步层执行。以此方式,那些功能的执行由分布同步层来控制以响应于玩家的控制器输入而使得能够为游戏应用程序生成媒体(例如,视频帧、音频等)。分布同步层能够跨分布式处理实体有效地执行(例如,经由负载平衡)那些功能,使得关键的游戏引擎部件/功能被分布并且重组以进行更高效的处理。

在一个实施方案中,图1A到图1C的游戏标题处理引擎111和111'包括被配置成执行多租户GPU功能性的CPU与GPU组,其中一个CPU与GPU组可以实现多个游戏的图形和/或渲染流水线。也就是说,CPU与GPU组在正在执行的多个游戏之间共享。CPU与GPU组可以被配置成一个或多个处理装置。在另一实施方案中,多个GPU装置被组合以针对在相应CPU上执行的单一应用程序执行图形处理。

图2图示根据本公开的一个实施方案的包括例如中央处理单元702和图形处理单元716的资产感知部件的计算体系结构200,当CPU正执行游戏时,所述资产感知部件在生成视频帧时感知资产。特别地,视频帧是使用如由GPU 716实现并且由CPU 702控制的图形流水线生成。由CPU 702和GPU 716进行的资产感知提供对图形流水线中所使用的资产的识别和跟踪,使得在生成相应视频帧时可以使用最少资产(例如,最低细节层次–LOD)用于经由图形流水线进行处理。计算体系结构200可以在图1A到图1C的客户端装置110和/或云游戏网络190中(例如,在游戏服务器160和/或游戏标题处理引擎111和111'中)实现。

计算体系结构200包括CPU 702,所述CPU被配置用于执行游戏。特别地,CPU 702为所述视频帧中的帧生成绘制调用,所述绘制调用包括指令。此外,在图形流水线中执行期间,绘制调用的指令可能需要资产。对于特定的视频帧,可能存在由CPU 702生成并且由GPU716执行的多个绘制调用。随着处理能力提高,游戏被设计成在玩游戏过程期间渲染更复杂的场景。结果,游戏为每个视频帧推送越来越多的绘制调用以生成在游戏的玩游戏过程期间使用的场景(例如,森林场景、海洋场景等)。在CPU 702上执行的游戏代码预测何时需要资产(例如,通过针对视频帧的一个或多个绘制调用),并且在实际使用之前协调资产到系统存储器220中的加载,使得所述资产可供GPU 716使用以用于在适当时间经由图形流水线渲染场景。

GPU API 250可以用于在部件之间或在计算体系结构200的部件上运行的应用程序之间通信。举例来说,GPU API 250可以在CPU 702上运行或由CPU 702调用以与另一部件通信,所述另一部件例如图形处理单元、系统存储器、命令缓冲器、资产存储区等。GPU API250可能正在资产存储区控制器230或GPU 716内的处理器上运行,以与其他部件通信;在一些实施方案中,出于此通信目的,GPU API 250可以部分地实现为固定功能硬件(而不是通用CPU)。

为了进行资产感知,在CPU 702上执行的游戏生成关于用于每个绘制调用的资产的附加信息。举例来说,此资产感知数据(AAD)可以包括相应资产的识别符(例如,资产ID)、在相应绘制调用能够在图形流水线中执行之前必须加载到系统存储器中的最低LOD和所述资产的加载与在其他绘制调用中或在此绘制调用内使用的其他资产的加载相比的优先级。用于绘制调用的AAD中的至少一些(例如,资产ID)是使用GPU API 250从在CPU 702上执行的游戏分发到保存用于所述绘制调用的命令的相应命令缓冲器。另外,用于绘制调用的ADD中的至少一些(如果不是全部)可以使用GPU API 250从在CPU 702上执行的游戏分发到资产存储区控制器230,以便针对所述绘制调用协调在图形流水线中使用的资产的加载。在一些实施方案中,所有AAD全部被分发到资产存储区控制器230。

计算体系结构200包括GPU 716,所述GPU被配置用于实现图形流水线。举例来说,图形流水线可以由GPU 716实现,以对场景内的对象的顶点执行着色器程序以生成显示器的像素的纹理值,其中为了效率,经由GPU 716并行地执行操作。通常,图形流水线接收输入几何形状(例如,游戏世界内的对象的顶点)。顶点着色器构建构成场景内的对象的多边形或图元。顶点着色器或其他着色器程序可以为多边形执行照明、着色、阴影处理和其他操作。顶点着色器或其他着色器程序可以执行深度或z缓冲以确定在从相应视点渲染的场景中哪些对象可见。执行栅格化以将三维世界中的对象投影到由视点限定的二维平面。为对象生成像素大小的片段,其中一个或多个片段在显示图像时可能有助于相应像素的色彩。所述片段经合并和/或混合以确定像素中的每一个的组合色彩,所述片段被存储在帧缓冲器中以用于显示。

另外,游戏可以使用不同类型的资产用于图形处理,如由执行游戏的CPU 702所控制。这些资产可由GPU 716在图形流水线中使用以用于生成游戏中的场景,例如森林场景可以将经由图形流水线处理的树纹理和树模型作为输入。随着游戏发展,经由执行相应游戏而创建的虚拟化游戏世界将变得更复杂,并且可能需要对场景中的对象或模型的数目不断增加的顶点和/或纹理执行着色器程序的操作。

更特别地,计算体系结构200的GPU 716被配置用于执行绘制调用命令以使用LOD数据生成视频帧。更确切地说,GPU 716基于资产感知计算体系结构200的部件知晓的资产感知数据而使用至少最低LOD数据。如前所述,视频帧可能需要执行一个或多个绘制调用,其中每个绘制调用可能需要一个或多个资产(例如,纹理、模型等)。如果这些资产要加载到系统存储器220中,但是这些资产太大而无法全部同时放入系统存储器220中,因此将所述资产存储在系统存储器外部,例如存储在硬盘驱动器或固态装置(solid state device;SSD)上,则所述资产只能由GPU 716使用。在CPU 702执行游戏期间,在CPU 702上执行的游戏代码预测何时需要资产(例如,通过针对视频帧的一个或多个绘制调用),并且在实际使用之前使用GPU API协调资产到系统存储器220中的加载,使得所述资产可以供GPU 716使用以用于在适当时间经由图形流水线渲染场景。随着场景变得越来越复杂,需要越来越大的纹理数据,完全加载所需资产的时间可增加。因此,图形流水线可以在资产完全加载之前尝试使用资产。

在本公开的实施方案中,资产感知计算体系结构200允许资产变得可用于在图形流水线中进行处理而不会使GPU 716停顿等待资产被完全加载到系统存储器220。当为了渲染场景而提供的输入(例如纹理)太多时,在传统计算体系结构中尤其可能出现停顿。举例来说,在相应绘制调用由图形流水线执行之前,用于视频帧的纹理或模型资产数据可能未完全加载。当在游戏中遇到场景切换时,更是如此,其中游戏在两个视频帧之间从一个场景过渡到另一场景(例如,按电影序列的场景变化,或在一系列菜单之后开始交互式游戏)。在传统计算体系结构中,图形流水线将停顿以等待资产完全加载,之后再继续执行。另一方面,本公开实施方案的资产感知计算体系结构200被配置成即使资产(例如,纹理和/或模型)尚未完全加载仍开始执行图形流水线。特别地,所有游戏(如由CPU执行)必须做的是调用GPU API 250(基本上和往常一样)以用于绘制调用。因为资产感知计算体系结构200能够及时加载可用资产,所以游戏开发者无需专注于定制游戏的场景(例如,使所述场景不那么复杂)以便在更传统的计算体系结构上执行,所述更传统的计算体系结构尤其在渲染复杂场景或在场景切换中切换场景时可能较慢或或功能不佳。

资产感知计算体系结构200包括资产存储区210,所述资产存储区被配置用于存储游戏的多个资产。在一些实施方案中,资产存储区210可以被配置成硬盘驱动器,或使用SSD。随着存储器技术发展,其他存储器装置可以用于提供更快访问的资产存储区210。以此方式,用于渲染场景的所有资产可以在几毫秒或几十毫秒内或甚至更快地从资产存储区210加载。

在实施方案中,各种通信和/或总线接口可以用于与资产存储区210通信。举例来说,快速外围部件互连(PCI Express;PCIe)可以用于访问资产存储区210。在一个实施方案中,快速非易失性存储器或快速NVM(non-volatile memory express;NVMe)定义用于访问经由PCIe总线附接的非易失性存储介质的开放式逻辑装置接口规范,其中对资产存储区210的访问是经由NVMe实现,以提高访问资产存储区210中的存储器装置的性能。

资产可以在加载游戏以执行时加载到资产存储区210中。特别地,资产存储区210保存用于相应绘制调用的LOD数据290,并且保存用于所有绘制调用的所有LOD数据。每个资产包括可由相应绘制调用使用之一个或多个LOD。举例来说,纹理资产可以由具有一个或多个LOD的mip映射或纹理映射链来表示,其中每个纹理映射(LOD)或mip映射(LOD)提供纹理的不同分辨率或表示。举例来说,纹理映射或mip映射可以是映射到对象或多边形的表面的图像。纹理映射可以用于减少用于需要渲染的对象的多边形的数目。另外,模型资产可以表示对象。资产可以包括分辨率不同的一个或多个模型(例如,LOD)以表示所述对象。以此方式,可以选择具有针对资产的适当分辨率的所需模型以经由图形流水线进行渲染。

另外,资产存储区210包括每个资产的资产感知数据(asset aware data;AAD),全部或一些AAD也将驻留在系统存储器290中。举例来说,每个资产可以通过相应识别符(例如,资产ID)来标记,所述识别符可以与相应资产相关联地存储在资产存储区210中。而且,每个资产可以包括提供资产的细节的其他数据。举例来说,每个资产的AAD可以包括描述所述资产的LOD集合的信息。这一代表性信息可以与相应资产相关联地存储在资产存储区中。AAD数据可以用各种方式以资产感知方式更新,例如当资产由CPU 702或GPU 716在本地生成或从机架内的大容量存储装置访问或从数据中心内访问或经由网络访问时。也就是说,资产存储区210可以用资产感知方式从机架或数据中心中的其他地方或经由网络或从游戏更新。

资产感知计算体系结构200包括系统存储器220,所述系统存储器被配置用于存储由相应绘制调用使用的一个或多个LOD数据290。另外,对于用于生成相应视频帧的每个绘制调用,系统存储器220加载有LOD数据。特别地,在一个实施方案中,当在CPU 702上执行的游戏在绑定时间使用GPU API 250将资产(例如,纹理、LOD数据、最低LOD数据等)绑定到相应绘制调用时,CPU 702还向资产存储区控制器230请求将LOD数据290从资产存储区210加载到系统存储器220。将LOD数据加载到系统存储器220中的此请求可以实现为GPU API 250的扩展,或通过单独的API来实现。

系统存储器220可以包括多个命令缓冲器240。每个命令缓冲器被配置用于存储AAD 260和相应绘制调用命令,其中AAD和所述命令是在绑定时间存储。当访问命令缓冲器以执行相应命令时,可以使GPU 716知晓AAD 260。特别地,CPU 702使用GPU API 250将AAD和绘制调用的命令写入到相应的命令缓冲器。如图2所示,命令缓冲器240a用于生成视频帧F0(例如,帧0)。命令缓冲器240a包括绘制调用命令241(例如,命令241a到241n)和用于相应绘制调用的AAD。如前所述,相应资产的资产感知数据可以包括用于所需资产(例如,纹理、模型等)的一个或多个资产ID 261,并且还可以包括指向资产存储区210和/或系统存储器220中的资产ID 261的指针262、所需资产ID(和相应资产)的最低LOD 263、资产ID的加载状态264以及资产ID中的每一个的加载优先级265(例如,资产相对于相应绘制调用或其他绘制调用所需的其他资产的加载优先级)。举例来说,在靠近相机的对象中使用的资产可以具有高或最高优先级。后续视频帧是使用类似配置的命令缓冲器来渲染。举例来说,命令缓冲器240b用于生成视频帧F1(例如,帧1)......,并且命令缓冲器240n用于生成视频帧Fn(例如,帧n)。

另外,命令可由CPU 702生成并且包括在命令缓冲器中以在相应帧已渲染时提供通知。在一个实施方案中,在视频帧的相应资产已渲染时提供通知。因此,通知是由GPU 716在图形流水线中执行绘制调用命令生成,并且使用GPU API 250分发到资产存储区控制器230。

资产感知计算体系结构200包括资产存储区控制器230,所述资产存储区控制器被配置成管理资产存储区210中的资产的存储和访问,并且更特别地管理整个计算体系结构200中的资产感知信息流。在一个实施方案中,资产存储区控制器230被配置成“芯片上复合体”或单元,所述“芯片上复合体”或单元包括一个或多个协处理器。在另一实施方案中,资产存储区控制器230被配置成在其他芯片上单元的帮助下在CPU 702上运行的应用程序。

如前所述,资产存储区控制器230被配置成针对用于生成视频帧的一个或多个绘制调用使用GPU API 250或使用单独的API从CPU 702接收AAD信息流。举例来说,AAD包括绘制和/或渲染相应视频帧所需的所有资产(例如,资产ID)的标识,和那些资产中的每一个的加载优先级。举例来说,相较于所述绘制调用所需的其他资产的加载而给出资产的加载的优先级。在图形流水线中执行绘制调用时,资产存储区控制器可另外优先处理资产所需的最低LOD。

在接收到资产信息时,资产存储区控制器230基于AAD(例如,资产的加载优先级)开始将用于绘制调用的一个或多个资产(例如,LOD数据)从资产存储区210加载到系统存储器220中。特别地,在一个实施方案中,对加载用于绘制调用的资产的LOD数据的请求基本上在将用于绘制调用的命令和用于绘制调用的AAD写入到命令缓冲器的同时发生。也就是说,对加载用于绘制调用的资产的LOD数据的请求在绑定时间发生。通过在绑定一个或多个资产时触发用于绘制调用的一个或多个资产的LOD数据的加载,可以加载至少最低LOD,以便由GPU 716在图形流水线中及时地执行绘制调用。此外,绘制调用所需的资产的至少最低LOD的加载的绑定时间触发减少GPU停顿的发生,在GPU停顿时,GPU 716等待所需资产加载。对加载LOD数据的请求不一定在绑定时间发生;在另一实施方案中,将AAD和绘制调用命令一起写入到命令缓冲器,并且分别地,在另一时间,将AAD发送到资产存储区控制器230以请求资产的加载。

在一个实施方案中,加载将根据优先级进行。举例来说,基于优先级信息,首先加载所有纹理的“最低LOD”,然后加载更高LOD。而且,一些资产就加载来说优先级高于其他资产,以使得较高优先级的资产(例如,最低LOD或更高LOD)优先于较低优先级的资产(例如,所述资产之最低LOD或更高LOD)加载。在一个实施方案中,在一个或多个资产的加载完成时,(使用资产ID)向GPU 716通知相应资产已加载和所述资产已加载到什么程度(例如,相应LOD的加载状态)。在另一实施方案中,GPU 716被配置成例如在绘制命令由GPU 716执行时访问加载状态。

加载状态可以由资产存储区控制器230来确定,所述资产存储区控制器被配置成请求并且跟踪相应资产的LOD的加载。以此方式,相应资产的加载状态可以例如直接使用GPU API 250、经由命令缓冲器或经由GPU 716对加载状态的提取而从资产存储区控制器230传达到GPU 916。因为AAD包括与特定资产的最低LOD和可能的LOD集合有关的信息,以及资产到系统存储器220中的加载状态,所以GPU 716被配置成使用给定资产的至少最低LOD来开始执行绘制调用。更特别地,GPU 716可以基于AAD(例如,加载状态)来确定针对用于相应绘制调用的特定资产已加载的最高LOD。因此,GPU 716可以使用已加载的最高LOD而不是任何更高LOD(例如,尚未加载的LOD)来执行绘制调用。

此外,因为资产感知包括用于绘制调用的相应资产的加载状态,所以GPU 716被配置成确定相应资产的所需LOD(例如,最低LOD)是否已经加载到系统存储器。如果最低LOD尚未加载,则GPU可发出“紧急加载”请求,例如加载最低LOD或代理资产(如果代理资产尚未在系统存储器中)。GPU可能停顿,直到最低LOD或代理资产已加载为止。紧急确定可以在执行绘制调用之前或同时做出。举例来说,资产存储区控制器230和/或GPU 716可以在先前绘制调用正在图形流水线中执行时或任何绘制调用已经由GPU 716针对包括资产的使用的视频帧执行之前做出所述确定。如果最低LOD尚未加载,则资产存储区控制器230或GPU 716可以在那时发出“紧急加载”请求。

资产存储区控制器230还被配置成重新分配系统存储器。特别地,如前所述,通知可以在视频帧的渲染结束已经完成时生成。另外,AAD可以包括来自命令缓冲器的关于特定资产的渲染结束的通知。所述通知可以使用GPU API 250从执行命令缓冲器中的绘制调用命令的GPU分发到资产存储区控制器230,其中命令缓冲器可以包括用于生成和分发所述通知的命令。以此方式,可以将用于所述视频帧的资产作为目标,以使得可以释放存储那些资产的存储器空间。另外,资产存储区控制器被配置成跟踪加载到系统存储器的资产的使用情况(例如,跟踪LOD数据的使用情况,包括例如读取纹理的次数)。因此,可以将尚未用于渲染视频帧的资产作为目标,以使得可以释放存储那些资产的存储器空间。资产可以被完全释放(所有LOD),或可以只释放LOD的子集。为了帮助做出这些确定,在一些实施方案中,GPU716被配置成跟踪资产的使用情况,例如对于纹理来说,所使用的最低和最高LOD和总访问次数或每个LOD的访问次数,对于绘制调用来说,由于调用而写入的像素的数目和绘制调用的执行或缺少(可预测一些调用),对于模型来说,所使用的LOD和所生成的顶点计数。在一些实施方案中,可以使用部分加载的资产的已加载LOD的使用情况来优先加载这些资产的最高LOD,例如,如果尚未为两个资产加载LOD 0,并且可以看到实质使用了一个资产而不是另一资产的LOD 1,则具有实质LOD 1使用的资产的LOD 0应当优先。

作为系统存储器的加载和释放的一部分,可能需要操纵页表、CPU高速缓存和GPU高速缓存,并且因此,所述资产存储区控制器、CPU和GPU可以被配置成加速这些操作。举例来说,GPU 716可以被配置成加速资产存储区控制器230对系统存储器220的加载和释放。资产存储区控制器230对存储器的加载和释放需要操纵页表和GPU高速缓存718,并且因此GPU716可以被修改以加速这些过程。另外,CPU 702可以被配置成加速资产存储区控制器230对系统存储器220的加载和释放。资产存储区控制器230对存储器的加载和释放需要操纵页表和CPU高速缓存(未示出),并且因此,CPU 702可以被修改以加速这些过程。

在一个实施方案中,CPU 702被配置成关于以下内容查询资产存储区控制器230:哪些资产目前处于系统存储器220中,或哪些资产被用于图形的特定帧。CPU 702还被配置成就资产存储区的内容来查询资产存储区控制器230。

在另一实施方案中,CPU 702被配置成向资产存储区控制器230提供关于加载相应资产的提示。所述提示不一定与正在生成的任何特定绘制调用相关。举例来说,所述提示可以被配置成以特定优先级加载资产的LOD数据的请求,其中LOD数据可以用于预测的绘制调用。

图3图示根据本公开的一个实施方案的包括CPU 702和GPU 716的计算系统的渲染流水线,当CPU 702在执行游戏时,所述CPU和所述GPU在生成视频帧时感知资产。帧更新将针对预定的帧渲染速率及时地执行。举例来说,本公开的实施方案可以每秒60帧来执行帧渲染。其他实施方案适合于以较慢或较快的速率执行帧渲染。如前所述,渲染流水线301可以单独地或组合地在客户端装置110和云游戏网络190内实现。

特别地,渲染流水线包括CPU 702、GPU 716和所述两者皆可访问的存储器(例如,资产存储区210、系统存储器220、共享存储器、顶点缓冲器、索引缓冲器、深度或Z缓冲器、用于存储待分发到显示器的所渲染视频帧的帧缓冲器,等)。渲染流水线(或图形流水线)说明用于渲染图像的一般过程,例如当使用3D(三维)多边形渲染过程时。举例来说,用于所渲染图像的渲染流水线301输出显示器中的像素中的每一个的相应色彩信息,其中色彩信息可以表示纹理和着色(例如,色彩、阴影处理等)。

CPU 702通常可以被配置成对在CPU 702上执行的游戏的视频帧执行场景生成和/或对象动画。CPU 702接收对应于3D虚拟环境内的对象的输入几何形状。所述输入几何形状可以表示为3D虚拟环境内的顶点,和对应于所述顶点中的每一个的信息。举例来说,3D虚拟环境内的对象可以表示为由顶点限定的多边形(例如,三角形),其中相应多边形的表面接着经由渲染流水线301处理以实现最终效果(例如,色彩、纹理等)。而且,纹理和模型信息可以作为图形流水线中的输入提供。CPU 702的操作是众所周知的,并且在本文中进行大体描述。通常,CPU 702逐帧地实现对象动画,所述对象动画可以是手绘动画、从人类演员捕捉到的和/或根据施加于对象的力和/或由对象施加的力(例如,例如重力的外力,和对象引起运动的内力)进行模拟。举例来说,CPU 702执行3D虚拟环境内的对象和/或其他功能的物理学模拟。CPU 702接着发出针对多边形顶点的绘制调用,所述绘制调用由GPU 716来执行。

特别地,由CPU 702生成的动画结果可以存储到随后由GPU 716访问的顶点缓冲器,GPU 716被配置成出于渲染多边形顶点的目的而执行将多边形顶点投影到所投影的多边形的显示或镶嵌上。也就是说,GPU 716可以被配置成进一步建立构成3D虚拟环境内的对象的多边形和/或图元,以包括针对多边形执行照明、阴影处理和着色计算,此取决于场景的照明。可以执行附加操作,所述附加操作例如剪辑以识别并且忽略在视锥(viewingfrustum)外的图元,和栅格化以用于将场景中的对象投影到显示器上(例如,将对象投影到与用户的视点相关联的图像平面)。在简化层次上,栅格化包括查看每个图元,和确定哪些像素受所述图元影响。图元的片段化可以用于将图元分解为像素大小的片段,其中每个片段对应于显示器中的像素和/或与渲染视点相关联的参考平面。当在显示器上渲染帧时,一个或多个图元的一个或多个片段可能有助于像素的色彩。举例来说,对于给定像素,将3D虚拟环境中的所有图元的片段组合成用于显示的像素。也就是说,组合相应像素的整体纹理和着色信息以输出所述像素的最终色彩值。这些色彩值可以存储在帧缓冲器中,当逐帧地显示场景的相应图像时,将这些色彩值扫描到相应像素。

如图3所示,渲染流水线示出为包括由CPU 702、GPU 716和光栅引擎依序执行的操作,所述操作用于将所渲染帧扫描输出到显示器710。为了说明,展示渲染流水线序列391至395以用于渲染帧F0到F4。由于空间限制,未展示其他流水线序列,例如针对F4以外的帧的序列。在图3所示的实例中,渲染流水线301的部件中的每一个可以相同的帧生成频率操作。举例来说,CPU 702和GPU 716可以相同的帧生成频率操作以经由渲染流水线以预定义的帧速率来渲染帧。

举例来说,在标记为时间t-0的第一帧周期中,CPU 702对对象执行物理学和其他模拟,并且将多边形图元与针对视频帧(例如,F0)的一个或多个绘制调用一起分发到GPU716。在以时间t-1标记的第二帧周期中,GPU 716执行图元组装和其他任务以生成所渲染帧(F0)。在由时间t-2标记的第三帧周期中,扫描输出帧F0。类似地,流水线序列392在第二和第三帧周期中渲染帧F1,并且在由时间t-3标记的第四帧周期中扫描输出帧F1。而且,流水线序列393在第三和第四帧周期中渲染帧F2,并且在由时间t-4标记的第五帧周期中扫描输出帧F2。类似地,流水线序列394在第四和第五帧周期中渲染帧F3,并且在由时间t-5标记的第六帧周期中扫描输出帧F3。而且,流水线序列395在第五和第六帧周期中渲染帧F4,并且在由时间t-6标记的第七帧周期中扫描输出帧F4。

图4图示根据本公开的一个实施方案的包括CPU和GPU的计算系统在CPU正执行游戏的同时生成视频帧时对资产感知数据的使用。特别地,渲染和/或图形流水线的一部分展示为用于渲染视频帧,并且包括由CPU 702和GPU 716依序执行的操作。如图所示,渲染流水线参考时间线490。展示绘制时间402;所述绘制时间跨越从GPU 716开始执行绘制调用到GPU 716完成对绘制调用的处理的时间段。绘制时间402将帧周期1与帧周期2分开。

在帧周期1内和/或在帧周期1之前开始,在操作410,CPU 702经由执行游戏来处理视频帧1。特别地,针对视频帧生成一个或多个绘制调用,其中所述绘制调用由GPU 716来执行。在绑定时间401,CPU 702绑定一个或多个绘制调用所需的资产以用于渲染视频帧的一部分。更确切地说,在绑定时间401,CPU 702将每个绘制调用的命令241(白框)写入到相应命令缓冲器(例如240)。如图所示,在操作415,CPU 702从绑定时间401开始使用GPU API250将用于绘制调用的命令241和AAD 260(黑框)写入到命令缓冲器240。命令241和AAD 260彼此可以用有序方式(例如,顺序地)或用无序方式(例如,交错地)写入。

另外,渲染视频帧需要的一个或多个绘制调用所需的资产417是在绑定时间401开始加载到系统存储器220。资产417包括一个或多个LOD数据290,LOD数据290包括当相应资产用于渲染视频帧时可以使用的最低LOD。LOD数据290到系统存储器220的加载无需等待CPU 702完成生成视频帧所需的所有命令到命令缓冲器240的写入即可开始,但是如果资产存储区控制器230正忙于执行其他加载操作,例如较高优先级LOD数据,则在资产417的LOD数据加载到系统存储器220中之前可能存在延迟。系统存储器的重新分配411可能需要在加载资产417的LOD数据290之前执行。

如前所述,在包括CPU 702和GPU 716的资产感知计算体系结构中,可以跟踪LOD数据的加载。以此方式,GPU 716和/或资产控制器230可以被配置成确定是否已经为相应资产加载了最低LOD。如果已加载,则GPU 716可以继续使用相应资产的最低LOD来渲染视频帧。如果未加载,则GPU 716和/或资产控制器可以发出对最低LOD数据的紧急加载的请求。对加载状态的确定和对紧急加载的请求可以在绘制时间402、在先前绘制调用的执行期间、在操作420中所示的GPU对帧1的处理开始时或在另一时间进行。如前所述,资产存储区控制器可以向GPU通知用于相应绘制调用的资产的加载状态,或GPU可以被配置成从资产存储区控制器查询和/或提取加载状态。在一些实施方案中,命令缓冲器中的条件命令可以用于查询资产417的LOD数据的加载状态并且更改命令流,例如如果最低LOD数据尚未加载,则完全跳过绘制调用(即为了避免GPU中的停顿),以使用代理资产进行渲染或允许基于已加载的LOD进行定制渲染。在另外其他实施方案中,GPU可以使用AAD做出这些相同确定,例如,如果最低LOD数据尚未加载,则完全跳过绘制调用(即为了避免GPU中的停顿)。

LOD数据的使用还可以使用LOD钳403来控制。为了使GPU 716不尝试使用尚未加载到系统存储器中的LOD数据,在绘制时间402或更早的时间,GPU缓存已加载的若干最高LOD(例如,LOD钳),并且仅使用在绘制调用开始之前经确定处于系统存储器中的LOD数据,即在LOD钳403处钳制对LOD数据的访问。举例来说,可以在绘制时间402、在执行一个或多个先前绘制调用期间或在渲染的整个帧开始处缓存LOD钳。

在帧周期2内和/或在帧周期2之前开始,在操作420,GPU 716渲染视频帧(例如,帧1)。如前所述,在操作420a处可能存在由GPU 716进行的任选早期处理,以甚至在发出绘制调用之前,基于AAD和对所述资产的加载的跟踪来确定是否已为用于相应绘制调用的特定资产加载了最低LOD。

图5是根据本公开的一个实施方案的在为中央处理单元所执行的游戏生成视频帧时使用的相应资产的细节层次数据和在加载LOD数据期间实现负载钳(clamp)的图示。术语LOD数据和LOD可以互换地使用,例如对应于一资产和/或多个资产的LOD数据和LOD。特别地,展示出相应资产的LOD数据。如前所述,LOD数据可以包括不同分辨率的LOD 0、LOD 1、LOD 2和LOD 3,其中根据约定,LOD 0具有最高细节,而LOD 1、2和3具有逐渐降低的细节。举例来说,对于纹理资产,LOD数据可以是纹理的mip映射链。对于资产,最低LOD被定义为LOD2,其中最低LOD可以在图形流水线中执行的绘制调用期间用于资产,即绘制调用可以在没有更高LOD 1或LOD 0的情况下继续进行,但是不能在系统存储器中没有LOD 3和LOD 2的情况下继续进行。

可以实现LOD钳以确保GPU 716不尝试使用尚未加载到系统存储器中的LOD数据。在绘制时间402或更早时间,GPU缓存代表已加载的最高LOD的数字。LOD钳的缓存值由GPU在执行绘制调用时使用,使得GPU将其对相应资产的LOD数据(例如,纹理和/或模型)的访问钳制到LOD钳的此缓存值,以便不超出所述缓存值并且不尝试访问不在存储器中的内容。也就是说,LOD钳用于确保在执行绘制调用时,GPU不尝试使用(例如,在绘制时间402)尚未加载的LOD。另外,LOD钳用于确保在绘制调用的执行中使用LOD数据的同一集合,使得在绘制时间402之后(例如,在绘制调用执行期间)到达而加载到系统存储器中的LOD数据不用于执行绘制调用。

在图5中,LOD钳的一个实例由线403a示出。在这个实例中,在绘制时间402,LOD 3和LOD 2已完全加载,但是LOD 1仅部分地加载,因此将LOD钳设置为LOD值2(代表LOD 2)。GPU 716被配置成使得所述GPU将不使用高于LOD钳的LOD值。举例来说,即使使用纹理的图元靠近相机并且通常使用LOD 1或LOD 0进行渲染,如果LOD钳被设置为2,则将不使用这些更高LOD。

仍在图5中,LOD钳的另一实例由线403b示出。在这个实例中,在绘制时间402,LOD1已完全加载,并且因此将LOD钳设置为LOD值1,并且LOD 1将由GPU 716在执行绘制调用时使用。在一些实施方案中,LOD钳是在绘制时间设置;在其他实施方案中,LOD钳是在GPU对帧的处理420内更早地设置,或在另外更早时间(例如GPU对帧的处理420开始时)设置。

利用对图1A到图1C和图2的各种客户端装置110和/或云游戏网络190(例如,在游戏服务器160和/或游戏标题处理引擎111和111'中)的详细描述,图6A的流程图600A图示根据本公开的一个实施方案的由资产感知计算系统执行游戏的方法,所述资产感知计算系统使用中央处理单元和图形处理单元来生成视频帧。

在610,所述方法包括由CPU为视频帧中的一个视频帧生成绘制调用。绘制调用由CPU在游戏执行期间生成。如前所述,可以与渲染视频帧相关联地生成一个或多个绘制调用。

举例来说,绘制调用是在定义前一场景与新场景之间的过渡的过场动画(cut-scene)期间生成。绘制新场景可能需要将许多资产加载到系统存储器中。然而,资产感知计算体系结构能够使用最低LOD数据来渲染新场景,从而减少GPU停顿的可能。

在620,所述方法包括在绑定时间将用于绘制调用的命令写入到命令缓冲器。特别地,在CPU上执行的游戏使用GPU API以在经由图形流水线进行处理时在绑定时间绑定绘制调用所需的一个或多个资产,即,游戏使用GPU API以将与资产有关的命令写入到命令缓冲器。

在630,所述方法包括将用于绘制调用的资产感知数据(AAD)写入到命令缓冲器,并且也开始将一个或多个LOD数据从资产存储区加载到系统存储器。特别地,可以在针对每个绘制调用在CPU上执行游戏时生成或访问和/或确定AAD。举例来说,AAD可以包括相应绘制调用所需的每个资产的识别符(例如,资产ID)、可以用于呈现绘制调用的每个资产的最低LOD和每个资产相对于相应绘制调用所需的其他资产的优先级来说加载到系统存储器的优先级。

当CPU(使用GPU API)将绘制调用命令和AAD写入到命令缓冲器时,CPU还请求资产存储区控制器将用于绘制调用的一个或多个LOD数据加载到由计算系统使用的系统存储器中。在向资产存储区控制器发出请求时,LOD数据开始加载,但是一个或多个LOD数据的实际加载可能未必已经发生。举例来说,资产的第一多个LOD数据开始加载于系统存储器中,其中资产将在处理绘制调用时使用,并且其中所述第一多个LOD数据包括最低LOD。特别地,资产存储区控制器被配置成接收信息流,所述信息流包括绘制调用所需的一个或多个资产的AAD。AAD包括绘制视频帧所需的资产的识别符、资产加载优先级和使用那些资产的视频帧渲染结束的通知。LOD数据由资产存储区控制器从资产存储区加载到系统存储器。如前所述,CPU可在绑定时间使用GPU API向资产存储区控制器发出请求以加载LOD数据,在一个实施方案中,例如随AAD发送请求。而且,在另一实施方案中,当AAD由资产存储区控制器接收时,AAD可以用于请求LOD数据,使得AAD的接收触发一个或多个LOD数据从资产存储区到系统存储器的加载。

资产存储区控制器被配置成协调资产到系统存储器中的加载,并且还通过一些手段向GPU通知加载状态,例如在一个实施方案中,将加载状态写入到命令缓冲器中的AAD中。而且,可以将条件命令放置到命令缓冲器中以供执行,使得GPU从资产存储区控制器查询和/或提取在绘制调用中使用的资产(例如,LOD数据)的加载状态。

另外,资产存储区控制器被配置成管理系统存储器的重新分配。特别地,由GPU向CPU和/或资产存储区控制器通知绘制调用已执行。举例来说,可以将命令放置到绘制调用的命令缓冲器中以生成指示绘制调用已完成渲染视频帧的通知,并且将所述通知分发到CPU和/或资产存储区控制器。以此方式,可以释放存储由绘制调用使用的一个或多个资产的存储器空间。在另一实施方案中,资产存储区控制器可以跟踪存储在系统存储器中的资产的使用。当资产尚未用于在图形流水线中渲染当前视频帧时,资产存储区控制器能确定不再需要资产来处理绘制调用,并且能够释放相应的存储器空间。

在640,所述方法包括由GPU使用写入到系统存储器的LOD数据来执行针对帧的绘制调用。CPU向GPU发出绘制调用以在下一个绘制时间(例如,在当前帧周期中)执行,其中绘制调用由CPU在前一帧周期中生成。以此方式,能够及时地渲染视频帧以在下一个帧周期中扫描输出。GPU基于AAD使用至少最低LOD数据来执行绘制调用。举例来说,每个资产具有可以用于处理需要相应资产的相应绘制调用的最低LOD。因为资产感知计算体系结构(例如,与GPU结合运行的CPU和/或资产存储区控制器)能够跟踪资产的加载(例如,确定每个资产的加载状态),所以GPU能够确定哪个LOD在执行需要所述资产的绘制调用时用于相应资产。举例来说,对于上文介绍的资产,由CPU和/或资产存储区控制器来跟踪第一多个LOD数据到系统存储器中的加载。以此方式,进行跟踪的CPU和/或资产存储区控制器能够调用GPU API或以其他方式向GPU通知那个资产的加载状态(例如,第一多个LOD数据已加载的程度)。而且,GPU知晓与资产相关联的第一多个LOD数据。在一个实施方案中,使用加载到系统存储器的最大或最高LOD数据的缓存值来确保更高LOD仅在加载到系统存储器中时才使用,如下文关于图6B更充分地描述。

图6B是根据本公开的一个实施方案的流程图600B,所述流程图说明在执行相应绘制调用以生成视频帧时对资产的LOD数据的加载状态的考虑。如前所述,用于绘制调用的LOD数据已加载到系统存储器中。特别地,在650,根据基于AAD的优先级来加载LOD数据。举例来说,可以优先处理相应资产的LOD数据以按特定次序加载LOD数据,例如首先按基于AAD中的优先级的次序从所有资产的多个LOD数据加载最低LOD数据,随后,再次以基于AAD中的优先级的次序从最低细节到最高细节加载剩余LOD数据。

如下所述,GPU和/或命令缓冲器可以取决于加载状态而执行不同动作中的一个动作。也就是说,GPU和/或命令缓冲器可以具有允许GPU和/或命令缓冲器基于LOD加载状态来执行不同动作的预测。特别地,可以基于LOD加载状态来预测相应绘制调用内的一些调用和/或命令。举例来说,命令缓冲器可以具有分支指令或分支指令的等效指令,所述指令在执行时基于LOD加载状态执行不同动作;例如,可以使用这些分支指令检查LOD加载状态,并且如果一些LOD已加载,则执行一组命令;然而,如果一些LOD未加载,则执行另一组命令。

在决策步骤655,基于AAD在已加载到系统存储器中的最高LOD数据与相应资产所需的最低LOD数据之间进行比较。如前所述,这一比较可以在绘制时间或更早时间进行。举例来说,所述比较可以在执行一个或多个先前绘制调用期间或在渲染的整个帧的开始处等进行。

GPU被配置成使用资产的至少最低LOD,并且在处理绘制调用以渲染相应视频帧时可以使用已加载的最高LOD,所述最高LOD也高于最低LOD。对于高于最低LOD的LOD使用,GPU利用“LOD钳”,LOD钳是在执行绘制调用时(例如,在绘制时间)或之前的时间已完全加载于系统存储器中的最高LOD的缓存值。在此情况下,GPU被配置成确保最低LOD数据就位并且存储到系统存储器。而且,使用LOD钳来确保更高LOD(例如高于最低LOD数据)仅在加载到系统存储器中时才使用,也就是说,GPU使用LOD钳来确保在确定LOD钳时未加载的更高LOD数据在执行相应绘制调用期间不被访问。举例来说,在656,将LOD钳设置为表示已加载的最高LOD数据的值,即,LOD钳是捕获的LOD加载状态。以此方式,GPU避免尝试访问尚未加载到系统存储器中的LOD数据。因此,在657,由GPU使用钳制到LOD钳的LOD数据(例如,使用加载的最高LOD数据)来执行针对帧的绘制调用。

另一方面,如果在决策步骤655,加载的最高LOD数据低于相应资产的最低LOD,则可以在660执行各种操作。如果GPU确定最低LOD尚未加载到系统存储器中,则GPU和/或资产存储区控制器可以请求在661将默认(即代理)资产加载到系统存储器中以在处理相应绘制调用时使用,所述资产应尚未处于系统存储器中。默认资产在662执行绘制调用时由GPU使用。或者,可以在663执行最低LOD数据的紧急加载,其中GPU停顿,直到最低LOD数据已成功加载为止。在一些实施方案中,紧急加载可以更早地被触发,例如在先前绘制调用期间、在帧渲染开始时等。最低LOD数据在664执行绘制调用时由GPU使用。或者,如前所述,GPU可以确定在665跳过绘制调用的执行(即以避免GPU中的停顿)。

图7图示可以用于执行本公开的各种实施方案的方面的示例装置700的部件。举例来说,图7图示根据本公开的一个实施方案的适合由资产感知计算系统执行游戏的示例性硬件系统,所述资产感知计算系统使用中央处理单元和图形处理单元来生成视频帧,使得可以使用绘制调用所需的一个或多个资产的最低LOD数据来渲染视频帧。这个框图图示装置700,所述装置能够并入有或可以是个人计算机、服务器计算机、游戏控制台、移动装置或其他数字装置,前述装置中的每一个适合实践本公开的实施方案。装置700包括中央处理单元(CPU)702,所述CPU用于运行软件应用程序和任选地运行操作系统。CPU 702可以由一个或多个同质或异质处理核组成。

根据各种实施方案,CPU 702是具有一个或多个处理核的一个或多个通用微处理器。其他实施方案可以使用具有微处理器体系结构的一个或多个CPU来实现,所述微处理器体系结构特别适于被配置用于在游戏执行期间进行图形处理的应用程序的高度并行并且计算上密集的应用,例如介质和交互式娱乐应用程序。资产存储区控制器230可以作为独立单元存在,或所述控制器的功能可以由CPU 702执行。

存储器704存储供CPU 702、资产存储区控制器230和GPU 716使用的应用程序和数据。存储装置706为应用程序和数据提供非易失性存储装置和其他计算机可读介质,并且可以包括固定磁盘驱动器、可移动磁盘驱动器、闪存装置和CD-ROM、DVD-ROM、蓝光、HD-DVD或其他光学存储装置,以及信号传输和存储介质。用户输入装置708将来自一个或多个用户的用户输入传达到装置700,用户输入装置的实例可以包括键盘、鼠标、操纵杆、触摸板、触摸屏、静态或视频记录器/相机和/或传声器。网络接口714允许装置700经由电子通信网络与其他计算机系统通信,并且可以包括经由局域网和例如互联网的广域网的有线或无线通信。音频处理器712适于根据由CPU 702、存储器704和/或存储装置706提供的指令和/或数据生成模拟或数字音频输出。装置700的部件是经由一个或多个数据总线722连接,所述部件包括:CPU 702;包括GPU 716和GPU高速缓存718的图形子系统;资产存储区控制器230;资产存储区210;存储器704;系统存储器220;数据存储装置706;用户输入装置708;网络接口710;和音频处理器712。

举例来说,还可以包括资产存储区210以存储在渲染场景时游戏所需的资产。资产存储区可以是存储器704和/或存储装置706的部分。系统存储器220存储例如在游戏执行期间在渲染场景时在绘制调用中使用的资产。

图形子系统714进一步与数据总线722和装置700的部件连接。图形子系统714包括图形处理单元(GPU)716和图形存储器718。图形存储器718包括用于存储输出图像的每个像素的像素数据的显示存储器(例如,帧缓冲器)。图形存储器718能够与GPU 716集成在同一装置中,作为单独的装置与GPU 716连接,和/或在存储器704内实现。像素数据能够直接从CPU 702提供到图形存储器718。或者,CPU 702向GPU 716提供定义期望输出图像的数据和/或指令,GPU 716根据所述数据和/或指令生成一个或多个输出图像的像素数据。定义期望输出图像的数据和/或指令能够存储在存储器704和/或图形存储器718中。在一实施方案中,GPU 716包括3D渲染功能,以用于根据定义场景的几何形状、照明、着色、纹理处理、运动和/或相机参数的指令和数据生成输出图像的像素数据。GPU 716还可以包括能够执行着色器程序的一个或多个可编程执行单元。

图形子系统714从图形存储器718周期性地输出图像的像素数据,以在显示装置710上显示或由投影系统740投影。显示装置710可以是能够响应于来自装置700的信号而显示视觉信息的任何装置,包括CRT、LCD、等离子和OLED显示器。举例来说,装置700可向显示装置710提供模拟或数字信号。

用于优化图形子系统714的其他实施方案可以包括GPU实例在多个应用程序之间共享的多租户GPU操作,和支持单个游戏的分布式GPU。图形子系统714可被配置成一个或多个处理装置。

举例来说,在一个实施方案中,图形子系统714可以被配置成执行多租户GPU功能性,其中一个图形子系统可实现用于多个游戏的图形和/或渲染流水线。也就是说,图形子系统714在正执行的多个游戏之间共享。

在其他实施方案中,图形子系统714包括多个GPU装置,所述GPU装置经组合以针对正在相应CPU上执行的单一应用程序执行图形处理。举例来说,多个GPU可以执行交替形式的帧渲染,其中在顺序帧周期中,GPU 1渲染第一帧,且GPU 2渲染第二帧,依次类推,直至到达最后的GPU,然后初始GPU渲染下一个视频帧(例如,如果只有两个GPU,则GPU 1渲染第三帧)。也就是说,GPU在渲染帧时轮流进行。渲染操作可以重叠,其中GPU 2可以在GPU 1完成渲染第一帧之前开始渲染第二帧。在另一实现方式中,多个GPU装置可以在渲染和/或图形流水线中被指派不同的着色器操作。主GPU正在执行主要渲染和合成。举例来说,在包括三个GPU的组中,主GPU 1可执行对来自从属GPU 2和从属GPU 3的输出的主要渲染(例如,第一着色器操作)和合成,其中从属GPU 2可执行第二着色器(例如,例如河流的流体效果)操作,从属GPU 3可执行第三次着色器(例如,颗粒烟雾)操作,其中主GPU 1对来自GPU 1、GPU 2和GPU 3中的每一个的结果进行合成。以此方式,不同GPU可经指派以执行不同着色器操作(例如,挥旗、风、冒烟、火等)以渲染视频帧。在又一实施方案中,三个GPU中的每一个可被指派给对应于视频帧的场景的不同对象和/或部分。在以上实施方案和实现方式中,这些操作可在同一帧周期中(同时并行地)执行,或在不同帧周期中(顺序并行地)执行。

因此,在各种实施方案中,本公开描述一种包括资产感知部件的计算系统体系结构及其实现方法,所述资产感知部件例如经由图形流水线生成视频帧的中央处理单元和图形处理单元。由CPU和GPU进行的资产感知提供对图形流水线中所使用的资产的识别和跟踪,使得在生成相应视频帧时能够使用最少资产(例如,最低细节层次–LOD)来经由图形流水线处理资产。

应当理解,本文中定义的各种实施方案可以使用本文中公开的各种特征组合或组装成特定实现方式。因此,提供的实例仅是一些可能的实例,而不限于通过组合各种元件以定义更多实现方式而可能的各种实现方式。在一些实例中,一些实现方式可以包括更少元件,而不脱离所公开或等效的实现方式的精神。

本公开的实施方案可以利用各种计算机系统配置来实践,所述计算机系统配置包括手持式装置、微处理器系统、基于微处理器或可编程的消费型电子产品、小型计算机、大型计算机等。本公开的实施方案还可以在分布式计算环境中实践,在分布式计算环境中,任务由经由基于有线或无线网络链接的远程处理装置执行。

考虑到以上实施方案,应当理解,本公开的实施方案可以使用涉及存储在计算机系统中的数据的各种计算机实现的操作。这些操作是需要对物理量进行物理操纵的操作。形成本公开的实施方案的一部分的本文中所描述的任何操作是有用的机器操作。本公开的实施方案还涉及用于执行这些操作的装置或设备。所述设备能够针对所需目的而特殊地构造,或所述设备可以是由存储在计算机中的计算机程序选择性地激活或配置的通用计算机。特别地,各种通用机器可以与根据本文中的教导编写的计算机程序一起使用,或构造更专门的设备来执行所需操作可能更方便。

本公开还可以体现为计算机可读介质上的计算机可读代码。计算机可读介质是能够存储数据的任何数据存储装置,所述数据随后可由计算机系统读取。计算机可读介质的实例包括硬盘驱动器、网络附接存储(network attached storage;NAS)、只读存储器、随机存取存储器、CD-ROM、CD-R、CD-RW、磁带和其他光学和非光学数据存储装置。计算机可读介质可以包括分布在网络耦合的计算机系统上的计算机可读有形介质,使得计算机可读代码以分布式方式存储和执行。

尽管方法操作是按特定次序描述,但是应当理解,其他内务处理操作可以在操作之间执行,或可以调整操作,使得所述操作在稍微不同的时间发生,或可以分布在允许处理操作以与处理相关联的各种间隔发生的系统中,只要重叠操作的处理以期望方式执行即可。

尽管先前公开内容已出于清楚理解的目的加以详细描述,但是将明了,可以在随附权利要求的范围内进行特定改变和修改。因此,本公开实施方案应被视为说明性的而非限制性的,并且本公开的实施方案不限于本文中给出的细节,而是可以在随附权利要求的范围和等效物内加以修改。

相关技术
  • 用于图形处理的资产感知计算体系结构
  • 用于资产价值的合规性感知代币化和控制的方法、装置和计算机可读介质
技术分类

06120112160921