CN115350479A - 渲染处理方法、装置、设备及介质 - Google Patents
渲染处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115350479A CN115350479A CN202211293540.4A CN202211293540A CN115350479A CN 115350479 A CN115350479 A CN 115350479A CN 202211293540 A CN202211293540 A CN 202211293540A CN 115350479 A CN115350479 A CN 115350479A
- Authority
- CN
- China
- Prior art keywords
- resource
- target
- gpu
- cpu
- game
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 181
- 238000003672 processing method Methods 0.000 title claims abstract description 26
- 238000000034 method Methods 0.000 claims abstract description 111
- 230000008569 process Effects 0.000 claims abstract description 83
- 238000004364 calculation method Methods 0.000 claims abstract description 61
- 238000012545 processing Methods 0.000 claims description 86
- 230000009466 transformation Effects 0.000 claims description 64
- 238000013508 migration Methods 0.000 claims description 45
- 230000005012 migration Effects 0.000 claims description 45
- 238000004590 computer program Methods 0.000 claims description 22
- 238000005070 sampling Methods 0.000 claims description 18
- 238000006243 chemical reaction Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 description 48
- 230000001360 synchronised effect Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本申请实施例提供了一种渲染处理方法、装置、设备及介质,其中的方法包括:在GPU渲染目标游戏的过程中,确定GPU在渲染目标游戏时进行资源运算所需的目标资源;根据目标资源对CPU进行运算配置;使用配置好的CPU对目标资源进行运算,得到运算结果;将配置好的CPU中的运算结果同步至GPU,以使GPU在渲染目标游戏时使用运算结果。采用本申请实施例能够减小GPU的运行压力,从而提升游戏运行效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种渲染处理方法、装置、设备及介质。
背景技术
随着计算机技术的快速发展,各种类型的应用程序层出不穷;如应用程序为游戏类型的应用程序,可包括:游戏渲染和计算均在云端服务器的云游戏。
计算机设备主要是依赖于设备中部署的图形处理器(Graphics ProcessingUnit,GPU)和中央处理器(Central Processing Unit,CPU),来实现针对游戏应用程序的游戏画面渲染的。经实践发现,在游戏运行过程中,游戏渲染占用GPU资源的占用率往往高于CPU资源的占用率,如在GPU资源不足的时候,CPU往往相对空闲,导致GPU的运行压力较大,从而可能降低游戏的运行效率。因此,如何降低GPU的运行压力成为研究热点话题。
发明内容
本申请实施例提供一种渲染处理方法、装置、设备及介质,能够减小GPU的运行压力,从而提升游戏运行效率。
一方面,本申请实施例提供了一种渲染处理方法,该方法包括:
在GPU渲染目标游戏的过程中,确定GPU在渲染目标游戏时进行资源运算所需的目标资源;目标资源包括GPU中的计算着色器进行资源运算所需的资源;
根据目标资源对CPU进行运算配置;
使用配置好的CPU对目标资源进行运算,得到运算结果;
将配置好的CPU中的运算结果同步至GPU,以使GPU在渲染目标游戏时使用运算结果。
另一方面,本申请实施例提供了一种渲染处理装置,该装置包括:
获取单元,用于在GPU渲染目标游戏的过程中,确定GPU在渲染目标游戏时进行资源运算所需的目标资源;目标资源包括GPU中的计算着色器进行资源运算所需的资源;
处理单元,用于根据目标资源对CPU进行运算配置;
处理单元,还用于使用配置好的CPU对目标资源进行运算,得到运算结果;
处理单元,还用于将配置好的CPU中的运算结果同步至GPU,以使GPU在渲染目标游戏时使用运算结果。
在一种实现方式中,GPU中包含第一库文件,第一库文件用于指示在渲染目标游戏时通过GPU进行资源运算;处理单元,用于确定GPU在渲染目标游戏时进行资源运算所需的目标资源时,具体用于:
获取第二库文件,第二库文件用于指示在渲染目标游戏时通过CPU进行资源运算;
采用第二库文件替换GPU中的第一库文件;
通过GPU调用第二库文件,以确定GPU在渲染目标游戏时进行资源运算所需的目标资源。
在一种实现方式中,第一库文件中包括目标函数,第一库文件通过调用目标函数,获取GPU在渲染目标游戏时进行资源运算所需的目标资源;处理单元,用于采用第二库文件替换GPU中的第一库文件时,具体用于:
将第一库文件对目标函数的函数调用,替换为第二库文件对目标函数的函数调用;第二库文件通过调用目标函数,获取GPU在渲染目标游戏时进行资源运算所需的目标资源。
在一种实现方式中,处理单元,用于根据目标资源对CPU进行运算配置时,具体用于:
在CPU中创建图形变换装置,图形变换装置使用CPU进行渲染计算;
将目标资源配置到图形变换装置。
在一种实现方式中,目标资源属于第一资源类型,目标资源包括属于第一资源类型的目标数据;CPU不具有对属于第一资源类型的资源的读写权限,且CPU具有对属于第二资源类型的资源的读写权限;处理单元,用于将目标资源配置到图形变换装置时,具体用于:
在GPU中创建属于第二资源类型的第一参考资源,第一参考资源的资源容量与目标资源的资源容量相同;
在GPU中将目标数据拷贝至第一参考资源,得到更新后的第一参考资源;
从更新后的第一参考资源中,将目标数据拷贝至CPU中的图形变换装置。
在一种实现方式中,图形变换装置中包括属于第一资源类型的第二参考资源;处理单元,用于从更新后的第一参考资源中,将目标数据拷贝至CPU中的图形变换装置时,具体用于:
在图形变换装置中创建属于第二资源类型的第三参考资源;
将GPU中第一参考资源中的目标数据,拷贝至图形变换装置中的第三参考资源,得到更新后的第三参考资源;
将更新后的第三参考资源中的目标数据,拷贝至第二参考资源。
在一种实现方式中,处理单元,用于将GPU中第一参考资源中的目标数据,拷贝至图形变换装置中的第三参考资源,得到更新后的第三参考资源时,具体用于:
将GPU中第一参考资源中的目标数据的虚拟地址,拷贝至图形变换装置中的第三参考资源。
在一种实现方式中,若在渲染目标云游戏的第一游戏画面时,在GPU中创建了属于第二资源类型的第一参考资源,以及,在图形变换装置中创建了属于第二资源类型的第三参考资源,第一游戏画面是目标云游戏中的任一游戏画面,则处理单元,还用于:
若需要将渲染目标云游戏的第二游戏画面时进行资源运算所需的目标资源,转移至CPU进行资源运算,则在GPU中将目标资源包括的目标数据拷贝至已创建的第一参考资源,得到更新后的第一参考资源;第二游戏画面是目标云游戏中的任一游戏画面,且第二游戏画面与第一游戏画面不同;
从更新后的第一参考资源中,将目标数据拷贝至CPU中已创建的第三参考资源。
在一种实现方式中,目标资源包括目标资源视图对应的资源,目标资源视图至少包括着色器资源视图和无序访问视图,目标资源视图还包括以下至少一个:取样视图或着色器视图;
其中,图形变换装置具有对着色器资源视图、取样视图和着色器视图的读取权限,不具有对着色器资源视图、取样视图和着色器视图的写入权限;图形变换装置具有对无序访问视图的读写权限,读写权限包括:读取权限和写入权限;
运算结果包括:对无序访问视图对应的资源进行运算得到的资源结果;处理单元,用于将配置好的CPU中的运算结果同步至GPU时,具体用于:
将资源结果从图形变换装置,拷贝回GPU中。
在一种实现方式中,处理单元,还用于:
若检测到GPU和CPU满足计算迁移启动条件,则触发执行确定GPU在渲染目标游戏时进行资源运算所需的目标资源的步骤;GPU和CPU满足计算迁移启动条件包括:GPU的负载率大于第一负载阈值,且CPU的负载率小于第二负载阈值;
在采用CPU代替GPU进行资源运算的过程中,若检测到CPU满足计算迁移取消条件,则取消CPU进行的资源运算;CPU满足计算迁移取消条件包括:CPU的负载率大于第三负载阈值。
在一种实现方式中,目标游戏包括:本地游戏,或者,云游戏。
另一方面,本申请实施例提供一种计算机设备,该设备包括:
处理器,适于执行计算机程序;
计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时,实现如上述的渲染处理方法。
另一方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,计算机程序适于由处理器加载并执行如上述的渲染处理方法。
另一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的渲染处理方法。
本申请实施例中,在GPU渲染目标游戏的过程中,支持将GPU渲染目标游戏时进行资源运算所需的目标资源,拷贝至CPU中,具体是将GPU中的计算着色器进行资源运算时所需的目标资源拷贝至CPU;这样可采用CPU代替GPU,执行对目标资源运算得到运算结果;再由CPU将运算结果同步至GPU中,确保数据的一致性,以便于GPU基于运算结果继续进行目标游戏的渲染处理。通过上述描述的削峰填谷方式,即在GPU的负载率较高时,将目标资源转移至负载率较低的CPU进行处理的方式,在减小GPU的运行压力的同时,还能确保GPU和CPU均能以较高的吞吐进行游戏,从而在不增加硬件成本的情况下,提升游戏的运行效率,提高目标对象的游戏体验。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的一种渲染流程的示意图;
图2a是本申请一个示例性实施例提供的一种客户端游戏的游戏场景示意图;
图2b是本申请一个示例性实施例提供的一种云游戏的游戏场景示意图;
图3是本申请一个示例性实施例提供的一种渲染处理方法的流程示意图;
图4是本申请一个示例性实施例提供的一种根据目标资源对CPU进行运算配置的流程示意图;
图5是本申请一个示例性实施例提供的一种渲染处理方法的完整技术流程;
图6是本申请一个示例性实施例提供的另一种渲染处理方法的流程示意图;
图7是本申请一个示例性实施例提供的一种将纹理资源从GPU拷贝至CPU的示意图;
图8是本申请一个示例性实施例提供的一种渲染处理装置的结构示意图;
图9是本申请一个示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例涉及计算机图形学(Computer Graphics,CG)。计算机图形学是一种使用数学算法将二维或三维图像,转化为计算机显示器的栅格形式的科学;具体是研究如何在计算机中表示图像,以及利用计算机进行图像计算、处理和显示的相关原理和算法。计算机图形学涉及的一道重要工具是渲染技术;所谓渲染是指将计算机中抽象的模型转换为直观可见的图像的过程;渲染作为计算机图形学中的最后一道工具,可实现将模型转换为图像,并最终呈现在计算机屏幕上。其中,上述提及的模型可是指用语言或数据结构进行严格定义的三维物体或虚拟场景,可以包括但不限于:几何(如物体形状等)、视点(即图像中摄像机的光心)、纹理(如物理表面呈现凹凸不平的沟纹或图案等)及照明(如通过光线实现图像中的阴影效果等)等信息。
随着计算机图形学的不断深入发展,渲染技术的应用越来越广泛。例如,在计算机设备(如智能终端或智能电脑等设备)中运行目标应用程序时,往往需要将应用程序提供的服务页面渲染显示到显示屏幕上,以便于目标对象(如持有计算机设备的任一对象)能够直观获取服务页面中显示的内容。此处的目标应用程序是指为完成某项或多项特定工作的计算机程序;按照目标应用程序的功能可分为游戏类型的应用程序、文本类型的应用程序或通信类型的应用程序等;按照目标应用程序的运行方式可分为客户端、小程序、网页应用等;本申请实施例对目标应用程序的类型不作限定。为便于阐述,后续以目标应用程序为游戏类型的应用程序(可称为游戏应用程序),如待渲染显示的图像为游戏应用程序提供的目标游戏(如任一游戏)的游戏画面为例进行阐述,特在此说明。
在实际应用中,计算机设备依赖于其部署的硬件“中央处理器(CentralProcessing Unit,CPU)”和“图形处理器(Graphics Processing Unit,GPU)”,来实现渲染显示图像(或页面、画面(如游戏画面)等)。计算机设备依赖于CPU和GPU执行渲染处理的流程可至少包括:应用阶段→几何阶段→光栅化阶段。其中:①应用阶段由CPU主导,是开发者进行场景开发的阶段;在应用阶段可以设置图像中的摄像机以及灯光等,形成渲染图像所需的点、线、面以及纹理等数据(或信息)。在应用阶段得到渲染图像所需的数据后,可将数据从CPU转移至GPU,由GPU基于数据执行几何阶段。
②几何阶段是由GPU主导,GPU在几何阶段可将CPU在应用阶段发来的数据进行进一步处理。如图1所示,GPU中包含渲染管线,渲染管线是GPU中负责给图像配上颜色的一组通道;渲染管线可被划分为几个阶段,每个阶段会把前一个阶段的输出作为当前阶段的输入,使得渲染管线类似于流水线一样执行工作。由于渲染管线上各个阶段具有并行执行的特性,因此显卡(包含GPU的设备)中的小处理器可以在GPU上为每一个阶段运行各自的小程序,从而在渲染管线中快速处理数据,这些小程序可以叫做着色器(shader),不同着色器可实现不同功能;如图1所示的渲染管线中包括顶点着色器及几何着色器等,当前着色器的输入为前一个着色器的输出。具体地,在显卡上运行的小程序(即着色器)是由DirectX(DirecteXtension)提供的;DirectX是一种应用程序接口,可作为Windows(操作系统)下的渲染接口(Application Programming Interface,API),可包括但不限于:DirectX9、DirectX10、DirectX11或DirectX12,不同的DirectX对应不同的库文件(Dynamic-LinkLibraries,DLL)。
GPU中还包括独立于渲染管线中的单独管线,该单独管线包括计算着色器(Compute Shader)。计算着色器是运行在GPU中的通用计算逻辑,在渲染流程中可对渲染管线的任一阶段进行读取操作,以执行较为纯粹的渲染计算任务。GPU有了计算着色器的计算能力后,就不再是光栅化中的“模拟”计算了,而是专业级的计算能力,计算速度更快且更加的灵活,速度更快。
③光栅化阶段也是由GPU主导,在此阶段可接收上一阶段(即几何阶段)传输的数据,并基于接收到的数据产生屏幕上的像素,并渲染出最终的图像(或画面);光栅化阶段的主要任务是确定每个渲染图元(即图像中的元素)中的哪些像素应该被绘制在显示屏幕上,以实现将数据或信息渲染显示为终端屏幕中的图像。
通过上述描述的渲染流程不难发现,GPU在整个渲染流程中承担图像渲染的海量数学运算,然而CPU在整个渲染流程中只承担了应用阶段的数据准备。因而在很多图像渲染场景中,GPU的占用率(或使用率、负载率)往往高于CPU的占用率;GPU的占用率具体可是指GPU被使用资源(如内存空间)与总资源的比值,同理CPU的占用率可是指CPU被使用资源与总资源的比值;这导致GPU和CPU的资源使用不均衡,如GPU资源不足时,可能CPU处于较空闲状态。基于此,本申请实施例提出一种渲染处理方案,该方案支持将GPU所负责的部分工作转移至CPU,由CPU来代替GPU执行这部分工作;通过部分算力的转移,使得CPU承担部分GPU的工作,在一定程度上降低GPU的运行压力,从而使图像渲染得到更好的表现。
进一步的,参见前述描述的渲染流程可知,计算着色器在渲染流程中负责的是较为纯粹的计算任务,该计算任务可以在目标游戏运行的任意时间进行启动或停止,而不会影响目标游戏的运行逻辑。因此,本申请实施例支持将GPU包含的渲染管线拆分为两部分:计算着色器和正常管线(如顶点着色器或几何着色器等);然后,将GPU中计算着色器这部分算力转移至CPU,也就是说,从GPU中拆分出来的计算着色器可耗费CPU资源执行计算任务。在CPU执行完成计算着色器运算后,再将计算结果(或运算结果)返回至GPU中;计算结果拷贝至GPU后,具体是拷贝至GPU管线后,GPU就像计算着色器已经在GPU中执行完成一样,得到了期望结果,从而GPU可以在渲染目标游戏时使用该计算结果。
本申请实施例提供的渲染处理方案的主要原理可包括:在GPU渲染目标游戏的过程中,当检测到GPU负载率较大,而CPU负载率较小时,确定可以启动计算迁移,此时可截断目标游戏的计算着色器相关的调用,并确定GPU渲染目标游戏时进行资源运算所需的目标资源;该目标资源可包括GPU中任一着色器或其他装置进行资源运算所需的资源,具体可包括GPU中的计算着色器进行资源运算所需的资源(如纹理资源、几何资源及顶点资源等)。然后,根据该目标资源对CPU进行运算配置,如在CPU中创建用于进行计算着色器计算的渲染设备。再将计算着色器的相关资源(如目标资源)转移至CPU中创建的渲染设备等;并利用渲染设备在CPU中运行的特点,将渲染工作从GPU转移到CPU,即使用配置好的CPU对目标资源进行运算,得到运算结果。最后,在渲染设备的计算着色器渲染结束后,需将运算结果同步至GPU中,保证数据的一致性,以使GPU在渲染目标游戏时使用该运算结果。
通过本申请实施例提供的这种削峰填谷方式,即在GPU的负载率较高时,将目标资源转移至负载率较低的CPU进行处理的方式,在减小GPU的运行压力的同时,还能确保GPU和CPU均能以较高的吞吐进行游戏,从而在不增加硬件成本的情况下,提升游戏的运行效率,提高目标对象的游戏体验。
需要说明的是,本申请实施例是以迁移GPU中计算着色器这部分算力为例进行阐述的;但在实际场景中,若GPU中还包括其他可以迁移的算力,那么也可以迁移其他算力,本申请实施例对此不作限定。
本申请实施例提供的渲染处理方案可应用于游戏应用场景;根据目标游戏的运行方式不同,游戏应用场景并不相同。具体地,目标游戏可按照游戏运行方式进行分类,目标游戏可包括本地游戏(或称为客户端游戏)和云游戏。
在实际应用中,不管目标游戏是本地游戏还是云游戏,对于目标对象而言,只需在其持有的终端设备中部署集成了渲染处理方案的本地软件,就可以从本地软件拉起目标游戏,目标游戏就会自动判断是否需要启动计算着色器从GPU到CPU的计算迁移,即执行本申请实施例提供的计算迁移的方案。其中,该本地软件中集成了渲染处理方案的整体执行逻辑和数据库等信息;并且,该本地软件的打开和运行无需网络流量要求,目标对象可以在需要时随时使用该本地软件提供的计算迁移,在一定程度上提升渲染处理方案的普适性。
下面以目标游戏包括本地游戏和云游戏为例,对本申请实施例涉及的游戏应用场景进行示例性介绍,其中:
1)本地游戏可是指:通过下载游戏安装包至终端设备,并在终端设备的本地运行的游戏。本地游戏的游戏画面渲染过程是由计算机设备来执行的,也就是说,计算机设备不仅负责渲染本地游戏的游戏画面,还负责显示本地游戏的游戏画面。在目标游戏为本地游戏的游戏应用场景下,上述提及的执行渲染处理方案的计算机设备可包括与目标对象(如游戏玩家)进行交互的终端设备,终端设备可包括但不限于:智能手机(如部署安卓(Android)系统的智能手机,或部署互联网操作系统(Internetworking OperatingSystem,IOS)的智能手机)、平板电脑、便携式个人计算机、移动互联网设备(MobileInternet Devices,MID)、智能电视、车载设备、头戴设备等携带显示屏幕的智能终端。
如图2a所示,在目标游戏为终端设备201中部署的本地游戏的场景中,终端设备201通过与终端设备中部署的目标游戏对应的服务器202进行数据交互,以实现运行目标游戏;如终端设备201接收服务器202发送的游戏数据,并由终端设备201基于接收到的游戏数据进行游戏画面的渲染显示。此游戏应用场景中的服务器可以包括但不限于:数据处理服务器、全球广域网(World WideWeb,Web)服务器、应用服务器等等具有复杂计算能力的设备;或者,服务器可以是独立的物理服务器,也可以是由多个物理服务器构成的服务器集群或者分布式系统。
在目标游戏为本地游戏的由此场景下(如客户端独立运行目标游戏的模式下),通过本申请实施例提供的计算迁移过程,可在保持资源运算的计算量不减少的情况调整计算资源的组成,将计算着色器从GPU渲染管线中拆分出来使用CPU进行计算,从而降低对计算机设备(即终端设备)硬件配置的要求,实现使用较低配置的显卡就可以运行较高渲染质量的目标游戏,在一定程度上可提高终端设备运行大型游戏的速率,使得目标游戏的运行效果更好。
2)云游戏又可称为游戏点播(gaming on demand),是指在计算机设备中运行的游戏,此时的计算机设备包括云服务器(或称为云端服务器)。如图2b所示,在目标游戏为云游戏的游戏应用场景下,目标游戏可将外设设备发送的数据(如输入指令或信号)发送至云服务器,由云游戏服务器根据数据负责渲染游戏画面,并将渲染完毕的游戏画面压缩后,通过网络传送给操作对象所使用的终端设备,此时终端设备仅做显示游戏画面的操作。
云游戏的这种运行模式,使得游戏玩家持有的终端设备无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力(如显示游戏画面的能力)、人机交互能力(获取操作对象的输入操作的能力),以及数据传输能力(如发送指令给云服务器的能力)即可。
在目标游戏为云游戏的由此场景下(即纯服务端计算的云游戏模式),本申请实施例提供的渲染处理方案,相比于传统的云游戏渲染而言具有明显优势。具体地,在传统云游戏模式下,针对某个云游戏的运行CPU和GPU是合理配比的,两者的计算能力刚好匹配该云游戏;如果运行中的云游戏,由于更新修改CPU和GPU的配比模型,例如GPU占用忽然大幅度增大,就会导致运行该云游戏的云服务器可以运行的路数(即运行云游戏的数量)变低,而该云服务器的CPU资源就会被大量浪费。然而,通过本申请实施例提供的渲染处理方案(即计算迁移的方案),可实现在特定的硬件环境下,动态的调整CPU和GPU算力的分布,同一款硬件的CPU资源不会被大幅度浪费,会用来分担一部分GPU算力,使得服务端的硬件搭配更加灵活,从而可以达到更高的运行路数,节省硬件成本。并且,使得同一硬件配置可以支持多种不同需求的游戏计算需求,提高硬件方案的适应能力,如同一个硬件方案可以用于更多的游戏情况,提高硬件方案的寿命。
本申请实施例还需说明如下两点:①本申请实施例对终端设备中运行的目标游戏的具体类型不作限定;如目标游戏可以为本地游戏,此时执行渲染处理方案的计算机设备为目标对象持有的终端设备,即由终端设备执行渲染处理方案,前述提及的CPU和GPU均是指部署于终端设备中的装置。同理,如目标游戏为云游戏,此时执行渲染处理方案的计算机设备为云服务器,即由云服务器执行渲染处理方案,前述提及的CPU和GPU均是指部署于云服务器中的装置。②本申请实施例运用到具体的游戏产品或技术中时,如目标应用程序获取目标对象操作目标游戏时的游戏数据时,需要获得目标对象的许可或者同意;且相关数据的收集、使用和处理需要遵守相关地区的相关法律法规和标准,如目标应用程序提供的游戏装备需要遵循相关地区的相关法律法规和标准。③本申请实施例是以渲染处理方案的应用场景为游戏应用场景为例进行阐述;但在实际应用中,本申请实施例提供的渲染处理方案的应用场景并不仅限于游戏应用场景。例如,本申请实施例提供的渲染处理方案还支持应用于音视频应用场景;如在直播应用场景中,可以将GPU渲染直播画面的资源运算转移至CPU,由CPU代替GPU进行资源运算,从而使得直播设备使用较低配置的显卡,也能获得较高质量的直播画面,提升直播体验。
基于上述描述的渲染处理方案,本申请实施例提出更为详细的渲染处理方法,下面将结合附图对本申请实施例提出的渲染处理方法进行详细介绍。请参见图3,图3示出了本申请一个示例性实施例提供的一种渲染处理方法的流程示意图;该渲染处理方法可以由前述提及的计算机设备执行,该方法可包括步骤S301-S303:
S301,在GPU渲染目标游戏的过程中,确定GPU在渲染目标游戏时进行资源运算所需的目标资源。
目标资源可是指渲染目标游戏时渲染管线所需使用的资源,包括但不限于:纹理、网格模型、着色器常量(如入射光方向或入射光颜色等)、以及帧缓存等。正如前述所描述的,本申请实施例主要是将部分GPU算力迁移至CPU,由CPU代替GPU承担被迁移的部分算力,那么根据待迁移算力的不同,需要迁移的目标资源也不相同。考虑到计算着色器在渲染流程中负责的是较为纯粹的计算任务,该计算任务可以在目标游戏运行的任意时间进行启动或停止,而不会影响目标游戏的运行逻辑;因此,本申请实施例以待迁移算力为计算着色器的算力为例,也就是说,让计算着色器耗费CPU进行资源运算;此实现方式下,目标资源可包括:在GPU渲染目标游戏时,GPU中的计算着色器进行资源运算所需的资源,具体可包括缓冲区(如顶点、索引与常量)或纹理等类型的资源。
为实现算力直接从GPU移动至CPU,需要在计算迁移启动后,截断目标游戏对于计算着色器相关的调用,以避免继续通过GPU中的计算着色器执行资源运算的操作。其中,计算着色器相关的调用可是指:计算着色器执行资源运算所需条件的调用,包括但不限于:资源准备(为计算着色器执行资源运算准备资源)、管线分配(如设置计算着色器)和分发(如执行运算)等。本申请实施例支持采用库文件(Dynamic-Link Libraries,DLL)替换的方式,来实现上述提及的截断目标游戏对于计算着色器相关的调用的操作。其中,库文件是动态链接库文件,又称为应用程序扩展,是软件文件类型;在Windows中许多应用程序并不是完整的可执行文件,而是被分割为一些相互独立的DLL文件,放置于系统中;当执行某个程序时相应DLL文件就会被调用。换句话说,DLL文件是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源,即DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。
基于上述对库文件的相关介绍,采用库文件替换,实现截断目标游戏针对计算着色器相关的调用的具体实现过程可包括:
首先,获取本申请实施例提供的第二库文件,该第二库文件用于指示在渲染目标游戏时通过CPU进行资源运算;也就是说,该第二库文件中包含通过CPU执行资源运算所需的相关代码,通过运行该相关代码,可实现耗费CPU资源针对目标资源的资源运算。第二库文件可以是开发对象预先编写好,存放于本地软件中的;当需要采用库文件替换,实现截断目标游戏针对计算着色器相关的调用时,目标游戏可从本地软件中获取到该第二库文件。其中,关于本地软件的相关介绍可参见前述相关描述,在此不作赘述。
然后,采用第二库文件替换GPU中的原生库文件(在本申请实施例中可称为第一库文件),该第一库文件用于指示在渲染目标游戏时通过GPU进行资源运算,该第一库文件中包含有目标函数,第一库文件可调用该目标函数获取到GPU在渲染目标游戏时进行资源运算所需的目标资源。换而言之,本申请实施例通过将目标游戏运行所需要加载的第一库文件替换为第二库文件,可实现截断第一库文件对目标函数的函数调用,由替换后的第二库文件实现对目标函数的函数调用;也就是说,将第一库文件对目标函数的函数调用,替换为第二库文件对目标函数的函数调用。这样可由替换后的第二库文件调用函数执行后续处理,如GPU通过该第二库文件调用目标函数,获取GPU在渲染目标游戏时进行资源运算所需的目标资源,从而达到截断GPU通过原生库文件调用目标函数执行资源运算的操作。
最后,通过GPU调用第二库文件,以确定出GPU在渲染目标游戏时进行资源运算所需的目标资源;具体是通过第二库文件调用目标函数时,可获取到GPU在渲染目标游戏时进行资源运算所需的目标资源(如纹理资源及顶点资源等)。
通过上述描述的库文件替换的具体实施过程,可实现在GPU中截断原生库文件的函数调用,截断的内容由本申请实施例提供的第二库文件来处理,如由第二库文件执行函数调用,从而实现将原本的耗费GPU进行计算着色器的相关运算逻辑,迁移至CPU,即通过耗费CPU进行计算着色器的相关运算。通过这种库文件替换方式,可实现快速截断目标游戏对计算着色器相关的调用,且操作简单快捷。
S302,根据目标资源对CPU进行运算配置,并使用配置好的CPU对目标资源进行运算,得到运算结果。
由前述描述可知,本申请实施例支持将部分GPU算力迁移至CPU,如从GPU渲染管线中拆分出来的计算着色器,可耗费CPU进行计算;那么需要在CPU中创建渲染设备,以实现由CPU中创建的渲染设备承担与计算着色器相关的资源运算。其中,渲染设备是一种具备完整渲染功能的设备,本申请实施例提供的渲染设备可包括图形变换装置(warp设备)。warp设备(warpdevice)是一种高效的CPU渲染设备,可以模拟DirectX特性进行渲染处理;具体是使用CPU渲染的DirectX管线,从而实现使用CPU渲染完整的游戏渲染需求。当然,在实际应用中,在CPU中创建的渲染设备的类型可以发生变化,本申请实施例对此不作限定。
具体实现中,在CPU中创建使用CPU进行渲染计算的图形变换装置,该图形变换装置中包括上下文(或称为设备上下文),可用于记录图形变换装置中的渲染管线的管线状态(如绑定新的资源、绑定新的着色器、修改固定功能阶段设置等)。然后,将在GPU渲染目标游戏时进行资源运算所需的目标资源,配置到CPU中的图形变换装置,具体是配置到图形变换装置的上下文中,以实现根据目标资源对CPU进行的运算配置。
进一步的,在对CPU进行运算配置结束后,可通过配置好的CPU对目标资源进行运算,具体是通过在CPU中配置好的图形变换装置对目标资源进行运算,得到运算结果。需要说明的是,根据目标资源的类型不同,对目标资源执行的运算过程也不相同;例如,目标资源包括纹理资源,对纹理资源进行的运算可包括纹理模糊运算;本申请实施例对针对目标资源的运算的具体实施过程不作限定,特在此说明。
上述根据目标资源对CPU进行运算配置的流程示意图可参见图4;如图4所示,计算机设备中运行的目标游戏依赖于计算机设备中部署的CPU和GPU进行画面渲染显示。具体地,在GPU渲染目标游戏的过程中,若确定启动计算迁移(即算力从GPU转移至CPU),则可以确定GPU在渲染目标游戏时进行资源运算所需的目标资源,具体是与计算着色器相关的目标资源(或计算着色器进行资源运算所需的目标资源)。然后,在CPU中创建使用CPU进行渲染计算的图形变换装置。最后,将目标资源从GPU配置到CPU,具体是将目标资源配置到CPU中的图形变换装置管线中的上下文中,以便于配置有目标资源的图形变换装置代替GPU执行资源运算等相关处理。
还需说明的是,传统的Windows管线支持根据需要对计算着色器的运算结果进行缓存,这使得在DirectX的计算着色器是异步运行时,也不需要单独的flush和阻塞等待计算着色器的运算结果,只需根据需要从缓存中获取相应运算结果即可。其中,DirectX的计算着色器异步运算可简单理解为,计算着色器的计算是混杂在普通的渲染指令中的,如在普通执行任一个或多个普通渲染指令时,均可以执行计算着色器运行。但是,在本申请实施例涉及的拆分模式下,也就是将GPU中的计算着色器拆分至CPU进行资源运算的模式下,是期望GPU中计算着色器的运算结果可以立即同步到GPU中(具体是GPU上运行的管线中)。因此,在GPU渲染目标游戏的过程中,当检测到在GPU中调用计算着色器分发与目标游戏相关的资源运算时,就需要将上述GPU中的资源运算,截断为GPU调用warp设备(即图形变换装置)中的上下文进行分发计算着色器;此时,还需要对warp设备进行刷新(flush)和阻塞等待计算着色器的运算结果,以确保能够及时获取到计算着色器的运算结果,从而快捷的将GPU中计算着色器的运算结果同步至GPU中。
S303,将配置好的CPU中的运算结果同步至GPU,以使GPU在渲染目标游戏时使用运算结果。
基于前述步骤实现在CPU中对目标资源进行运算,得到运算结果后,还需将运算结果同步回GPU中,以保持CPU和GPU两端的数据一致性;使得GPU接收到该运算结果后类似于是GPU自身执行资源运算得到的运算结果,从而GPU可基于该运算结果执行后续渲染处理。
其中,DirectX在计算Compute Shader的过程中,需要用到的目标资源可包括目标资源视图对应的资源,目标资源视图是渲染管线工作过程中所使用的一类资源的视图。在某一个或一类资源需要配置到渲染管线的不同阶段时,如纹理资源需要配置到像素着色器,还需配置到片云着色器时,需要为资源创建资源视图;该资源视图中可保存该资源的显存地址,这样通过将资源视图配置到渲染管线上,渲染管线上相应阶段就可以通过资源视图(具体是资源视图中保存的资源的显存地址)间接访问该资源。
在本申请实施例中,需要从CPU拷贝至GPU的目标资源关联的目标资源视图可至少包括:着色器资源视图(ShaderResourceView)和无序访问视图(UnorderedAccessView)。其中:①着色器资源视图可引用缓冲区或纹理资源,绑定到计算着色器阶段。着色器资源视图对于计算着色器的执行过程是只读的,具体是图形变换装置只具有对着色器资源视图的读取权限,而不具有对着色器资源视图的写入权限;但考虑到每次调用计算着色器的时候,着色器资源视图对应的同一份资源的内容(即资源包含的子资源或数据)是可能发生改变的。基于此,本申请实施例仍然设计将着色器资源视图对应的资源,从GPU拷贝至CPU的流程;这种将着色器资源视图对应的资源拷贝至CPU的拷贝成本是可以接受的,因为计算着色器是计算密集型的,也就是说资源的拷贝比起计算的开销更小,在一定程度上可节省成本。②无序访问视图可引用缓冲区或纹理资源,绑定到计算着色器阶段或片元着色器阶段。无序访问资源视图对于计算着色器的执行过程是可读写的,具体是图形变换装置具有对无序访问资源视图的读写权限,读写权限包括:读取权限和写入权限。
在DirectX计算Compute Shader的过程中,还涉及的目标资源视图可包括以下至少一个:取样视图(Samplers)或着色器视图(Shader)。其中,取样视图和着色器视图对于计算着色器的执行过程是只读的,具体是图形变换装置只具有对着色器资源视图的读取权限,而不具有对着色器资源视图的写入权限。并且,取样视图对应的资源和着色器视图对应的资源是固定不变的小资源(即资源容量(如资源所能承载的最大数据量)较小),这样取样视图对应的资源和着色器视图对应的资源,可同时存在于CPU中和GPU中,且在CPU中和GPU中同时使用也是没有成本的。因此,在GPU中存在取样视图对应的资源和着色器视图对应的资源的情况下,取样视图对应的资源和着色器视图对应的资源,也可以不从GPU拷贝至CPU,此实现方式,需要从CPU拷贝至GPU的目标资源就包括:着色器资源视图对应的资源以及无序访问视图对应的资源,这在一定程度上可减少资源拷贝成本。
基于上述对目标资源以及目标资源视图的相关描述可知,在计算着色器的执行过程中,上述提及的四种目标资源视图中存在三种目标资源视图(着色器资源视图、取样视图以及着色器视图)均是只读的,只有一种目标资源视图(无序访问视图)是可读写的;这使得在Compute Shader下,上述四种目标资源视图中,只有无序访问资源视图对应的一个或多个资源可能被修改;换句话说,CPU执行完Compute Shader需要同步到GPU的结果只有无序资源视图对应的资源。基于此,采用配置好的GPU对目标资源进行运算后,待同步至GPU管线的运算结果包括:对无序访问视图对应的资源进行运算得到的资源结果;此时可将对无序访问视图对应的资源进行运算得到的资源结果,从CPU同步至GPU管线中;GPU在接收到该资源结果后,就像计算着色器已经在GPU中执行完成一样,得到了期望的资源结果,从而GPU可以在渲染目标游戏过程中使用该资源结果。
本申请实施例中,在GPU渲染目标游戏的过程中,支持将GPU渲染目标游戏时进行资源运算所需的目标资源,拷贝至CPU中;这样可采用CPU代替GPU,执行对目标资源运算得到运算结果;再由CPU将运算结果同步至GPU中,确保数据的一致性,以便于GPU基于运算结果继续进行目标游戏的渲染处理。通过上述描述的削峰填谷方式,即在GPU的负载率较高时,将目标资源转移至负载率较低的CPU进行处理的方式,在减小GPU的运行压力的同时,还能确保GPU和CPU均能以较高的吞吐进行游戏,从而在不增加硬件成本的情况下,提升游戏的运行效率,提高目标对象的游戏体验。另外,部分算力从GPU移动到CPU的方式,可通过增加CPU的开销来降低GPU的开销,从而在客户端游戏场景下可降低终端设备的显卡要求,以及,在纯服务器游戏场景下可合理化服务器的硬件配比(即CPU资源和GPU资源的配比)。
本申请实施例提供的渲染处理方法的完整技术流程可参见图5。如图5所示,在计算机设备运行目标游戏的过程中,目标游戏自动判断是否需要启动计算迁移,即启动计算着色器从GPU到CPU的计算迁移。若判断不要启动计算迁移,则可以按照GPU进行完整的目标游戏渲染,即由GPU执行计算着色器相关资源运算;若判断需要启动计算迁移,则截断目标游戏针对计算着色器相关的资源准备、管线分配和分发的调用。在截断针对计算着色器相关的调用后,将针对计算着色器相关的调用配置到CPU中,具体是配置到GPU中的warp设备。在CPU调用warp设备的上下文进行资源运算时,对warp设备进行flush和阻塞等待,并使用配置好的CPU对目标资源进行运算,得到运算结果。然后,可将运算结果从CPU中拷贝回GPU中,具体是拷贝回GPU中运行的管线上,以便于GPU使用该运算结果继续渲染目标游戏。
基于图5所示的完整的渲染处理方法的技术流程,下面结合图6对图5所示技术流程进行更为详细的阐述。图6示出了本申请一个示例性实施例提供的一种渲染处理方法的流程示意图;该渲染处理方法可以由前述提及的计算机设备执行,该方法可包括步骤S601-S605:
S601,检测GPU和CPU是否满足计算迁移启动条件。
正如前述所描述的,目标对象所持有的终端设备中部署有集成了渲染处理方案的本地软件,那么目标对象可以通过该本地软件拉起目标游戏;在目标游戏运行的过程中,目标游戏就可以通过调用本地软件所包含的库,自动判断是否需要启动计算着色器从GPU到CPU的计算迁移。通过目标游戏自动调用本地软件自动判断的方式,无需人工干预,不仅确保GPU和CPU均能以较高的吞吐进行游戏,而且可以提升游戏的运行效率,提高目标对象的游戏体验。
具体实现中,在目标游戏的运行过程中,可实时或轮询检测GPU和CPU是否满足计算迁移启动条件,具体是检测GPU的负载率(或称为占用率、使用率,是指GPU中被使用的资源(如内存空间或处理器等)与总资源的比值)和CPU的负载率是否满足计算迁移条件,以便于确定是否启动或取消计算迁移。其中,GPU和CPU满足计算迁移条件可包括:CPU的负载率大于第一负载阈值,且CPU的负载率小于第二负载率;第一负载阈值和第二负载阈值的具体取值可是根据经验或测试得到的,如第一负载阈值的取值可为90%,第二负载阈值的取值可为50%,本申请实施例对第一负载阈值和第二负载阈值的具体取值不作限定。
S602,若检测到GPU和CPU满足计算迁移启动条件,则确定GPU在渲染那目标游戏时进行资源运算所需的目标资源。
S603,根据目标资源对CPU进行运算配置,并使用配置好的CPU对目标资源进行运算,得到运算结果。
步骤S602-S603中,如果在运行目标游戏的过程中,检测到GPU的负载率大于第一负载阈值,且CPU的负载率小于第二负载阈值,表示当前GPU承担较大的运行压力,运算效率会有所下降,且CPU相对较为空闲,则可以启动计算迁移,以实现通过增加CPU的负载降低GPU的运行压力。其中,启动计算迁移后的部分操作,可包括步骤S602所示的截断目标游戏对计算着色器相关的调用,以及,步骤S603所示的目标资源从GPU到CPU的转移。需要说明的是,步骤S602-S603所示的具体实施过程,可参见前述图3所示的步骤S301-S302所示的具体实施过程的相关描述,在此不作赘述。
如前述图3所示实施例中步骤S302中描述的,根据目标资源对CPU进行运算配置的具体实施过程中包括:将目标资源从GPU配置到CPU中,具体是配置到CPU中的warp设备的上下文中。针对此步骤还需补充的是,考虑到需要配置到warp设备的上下文中的目标资源可能是位于GPU中的,如无序访问视图对应的资源,或着色器资源视图对应的资源均是位于CPU中的,而warp设备是在CPU中创建的,即warp设备是位于CPU中的;因此在计算迁移过程中,管线配置的过程(即前述提及的目标资源配置到warp设备的过程),会对应目标资源从GPU到CPU的拷贝的过程。也就是说,目标资源的配置过程(或称为管线配置的过程),其实质是对应目标资源从GPU到CPU的拷贝过程。
可以理解的是,CPU和GPU所能读写的资源并不完全相同,因此上述提及的资源拷贝过程并非是简单的直接拷贝,而是需要一个中间数据格式作为中转实现间隔的拷贝。下面以目标资源属于第一资源类型,且GPU具有针对第一资源类型的目标资源的读写权限,但CPU不具有针对第一资源类型的目标资源的读写权限,而具有针对第二资源类型的资源的读写权限,为例对目标资源从GPU到CPU的拷贝的具体实施过程进行介绍,其中,第一资源类型与第二资源类型不同。
具体实现中,考虑到GPU虽然具有对属于第一资源类型的目标资源的读写权限,具体是目标资源中包括有目标数据(或称为子资源),GPU具有对目标资源包括的目标数据的读写权限;但CPU不具有对属于第一资源类型的目标资源的读写权限,因此,属于第一资源类型的目标资源不能直接被CPU从GPU中读取到。基于此,需要先在GPU中创建能够被CPU读取的属于第二资源类型的第一参考资源,即CPU具有对属于第二资源类型的资源的读写权限;创建的属于第二资源类型的第一参考资源的大小(或称为资源容量)与目标资源的大小相同。然后,先在GPU中将目标资源所包含的目标数据,拷贝至第一参考资源中,得到更新后的第一参考资源,该更新后的第一参考资源包括目标数据。最后,由于第一参考资源属于第二资源类型,该第二资源类型能被CPU读取,因此,可实现从更新后的第一参考资源中,将目标数据拷贝至CPU中。
进一步的,虽然CPU具有对第二资源类型的目标资源的读取权限,但CPU中创建的图形变换装置所使用的接口仍然是DirectX的接口(API),即图形变换装置所能读写的资源的资源类型仍然是第一资源类型;基于此,还需在图形变换装置(具体是图形变换装置的上下文)中创建属于第二资源类型的第三参考资源。然后,将GPU中属于第二资源类型的第一参考资源中的目标数据,拷贝至图形变换装置中的第三参考资源中,得到更新后的第三参考资源,该更新后的第三参考资源中包括目标数据。最后,将更新后的第三参考资源中的目标数据,拷贝至第二参考资源,以实现将目标数据拷贝至CPU中的图形变换装置;其中,图形变换装置本身包含属于第一资源类型的第二参考资源。
为便于更好地理解上述给出的资源拷贝的过程,下面对上述描述的资源拷贝过程进行举例说明。如图7所示,以目标资源包括纹理资源为例,GPU使用的纹理资源的数据格式的类型为D3D11_USAGE_DEFAULT类型,D3D11_USAGE_DEFAULT类型的资源能够被CPU读写,但不能被CPU读写,因此要将属于D3D11_USAGE_DEFAULT类型的目标资源(具体是目标资源所包含的目标数据)从GPU拷贝至CPU时,需要在GPU中创建一个与目标资源大小相同,且能够被CPU读写的第二资源类型的第一参考资源,如能够被CPU读写的第二资源类型为D3D11_USAGE_STAGING类型。然后,先将目标资源所包含的目标数据拷贝至创建的D3D11_USAGE_STAGING类型的第一参考资源中;再从D3D11_USAGE_STAGING类型的第一参考资源中,将目标资源拷贝至CPU中,具体是拷贝至CPU中的warp设备。
同理,考虑到warp设备支持读写的资源类型为D3D11_USAGE_DEFAULT类型,即warp设备本身包含属于D3D11_USAGE_DEFAULT类型的第二参考资源,但CPU支持读取的资源类型为D3D11_USAGE_STAGING类型;因此,为了成功将目标资源包含的目标数据从GPU拷贝至CPU中的warp设备的上下文中,则还需warp设备中的上下文创建一个属于D3D11_USAGE_STAGING类型的第三参考资源,这样就可以将目标数据从第三参考资源中拷贝至第二参考资源,以实现warp设备从支持读取的D3D11_USAGE_DEFAULT类型的第二参考资源中读取到目标数据,从而根据目标数据执行资源运算等相关处理。
上述过程需特别说明的是,①考虑到D3D11_USAGE_STAGING类型的目标资源可以直接将虚拟地址(map)存储到内存中,那么就可以从GPU下的D3D11_USAGE_STAGING类型资源的虚拟地址,拷贝到CPU下的D3D11_USAGE_STAGING类型资源的虚拟地址。如图7所示,具体是将属于D3D11_USAGE_STAGING类型的第一参考资源包含的目标数据的虚拟地址存储至内存空间中,那么CPU可从内存空间中将该目标数据的虚拟地址拷贝至图形变换装置中属于D3D11_USAGE_STAGING类型的第三参考资源中;也就是说,可通过拷贝目标数据的虚拟地址的方式实现对目标数据的拷贝,这样根据虚拟地址即可获取到该虚拟地址指向的目标数据。
②上述拷贝过程中提到的属于第二资源类型(如D3D11_USAGE_STAGING)的第一参考资源和第三参考资源均支持资源复用。所谓资源复用可简单理解为在一次游戏画面渲染过程中,创建了第一参考资源和第三参考资源后,在后续渲染其他游戏画面也需进行目标资源转移时,可直接基于已创建的第一参考资源和第三资源进行资源转移,而无需重复创建;也就是说,D3D11_USAGE_STAGING类型的资源(如第一参考资源和第三参考资源)对每一个计算着色器用到的资源都只需要创建一次,在后续渲染过程中就可以直接复用已创建的资源;这样可避免每次资源拷贝过程中,重复创建多个资源,不仅避免了资源创建的浪费,还在一定程度上可提高资源拷贝速率,从而提升目标游戏的渲染速度和效果。
举例来说,若在渲染目标游戏的第一游戏画面时,检测到需要进行计算迁移,即将关于第一游戏画面的目标资源(如纹理资源)从GPU转移至CPU,那么需要在渲染第一游戏画面过程中,在GPU中创建属于第二资源类型的第一参考资源,以及在图形变换装置中创建属于第二资源类型的第三参考资源,以实现目标资源的转移;该第一游戏画面是目标游戏中的任一游戏画面。进一步的,若在渲染目标游戏中的第二游戏画面时,检测到也需要启动计算迁移,即需要将渲染第二游戏画面时进行资源运算所需的目标资源,转移至CPU进行资源运算,那么考虑到在渲染第一游戏画面时已创建计算着色器所需使用的目标资源的第一参考资源和第三参考资源,则可以直接在GPU中将目标资源包含的目标数据拷贝至已创建的第一参考资源,得到更新后的第一参考资源;其中,该第二游戏画面是目标游戏中的任一游戏画面,且第二游戏画面与第一游戏画面不同。同理,可继续从更新后的第一参考资源中,将目标数据直接拷贝至CPU中已创建的第三参考资源。通过对第一参考资源和第三参考资源的资源复用,可避免每次游戏画面渲染均进行相应资源的创建,在节省创建成本的情况下,还可以在一定程度上提升迁移速度,从而提高画面渲染效率。
③CPU能够读取的资源类型并不仅限于上述提及的D3D11_USAGE_DEFAULT类型,以及GPU能够读取的资源类型并不仅限于上述提及的D3D11_USAGE_STAGING类型;上述只是以D3D11_USAGE_DEFAULT类型和D3D11_USAGE_STAGING类型为例,对资源拷贝过程进行示例性介绍,并不会对本申请实施例产生限定,特在此说明。
S604,将配置好的CPU中的运算结果同步至GPU,以使GPU在渲染目标游戏时使用运算结果。
需要说明的是,采用配置好的CPU将运算结果同步至GPU的过程,就是将运算结果从CPU拷贝回GPU的过程,此处的运算结果可包括无序访问视图对应的资源。与前述步骤S603所示的,目标资源从GPU拷贝至CPU的拷贝过程类似的,将运算结果从CPU拷贝回GPU的拷贝过程并不是简单的直接拷贝,也是需要一个中间数据格式作为中转实现间接的拷贝。为避免赘述,本申请实施例在此对运算结果从CPU到GPU的拷贝过程不作详细描述,具体实施过程可参见前述步骤S603所示的具体实施过程的相关描述。
S605,在采用CPU代替GPU进行资源运算的过程中,若检测到CPU满足计算迁移取消条件,则取消CPU进行资源运算。
在执行上述步骤S602-S604中的任一步骤的过程中,即在启动了计算迁移后采用CPU代替GPU进行资源运算的过程中,若检测到CPU满足计算迁移取消条件,则可以取消采用CPU进行资源运算;也就是说,停止采用CPU代替GPU执行资源运算的操作,以确保不会影响CPU本身的功能,即利用相对空闲状态的CPU来帮助GPU承担部分工作,但在CPU的负载率较高的情况下,需及时停止CPU执行的资源运算,以保持CPU正常的工作。其中,CPU满足计算迁移取消条件可包括:CPU的负载率大于第三负载阈值;与前述描述第一负载阈值和第二负载阈值类似的,第三负载阈值的具体取值可以根据经验或测试得到的,如第三负载阈值的具体取值为90%,本申请实施例对第三负载阈值的具体取值不作限定,特在此说明。
本申请实施例中,在GPU渲染目标游戏的过程中,支持将GPU渲染目标游戏时进行资源运算所需的目标资源,拷贝至CPU中;这样可采用CPU代替GPU,执行对目标资源运算得到运算结果;再由CPU将运算结果同步至GPU中,确保数据的一致性,以便于GPU基于运算结果继续进行目标游戏的渲染处理。通过上述描述的削峰填谷方式,即在GPU的负载率较高时,将目标资源转移至负载率较低的CPU进行处理的方式,在减小GPU的运行压力的同时,还能确保GPU和CPU均能以较高的吞吐进行游戏,从而在不增加硬件成本的情况下,提升游戏的运行效率,提高目标对象的游戏体验。另外,部分算力从GPU移动到CPU的方式,可通过增加CPU的开销来降低GPU的开销,从而在客户端游戏场景下可降低终端设备的显卡要求,以及,在纯服务器游戏场景下可合理化服务器的硬件配比(即CPU资源和GPU资源的配比)。
上述详细阐述了本申请实施例的渲染处理方法,为了便于更好地实施本申请实施例的上述方案,相应地,下面提供了本申请实施例的装置。
图8示出了本申请一个示例性实施例提供的一种渲染处理装置的结构示意图;该渲染处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码);该渲染处理装置可以用于执行图3或图6所示的方法实施例中的部分或全部步骤。请参见图8,该渲染处理装置包括如下单元:
获取单元801,用于在GPU渲染目标游戏的过程中,确定GPU在渲染目标游戏时进行资源运算所需的目标资源;目标资源包括GPU中的计算着色器进行资源运算所需的资源;
处理单元802,用于根据目标资源对CPU进行运算配置;
处理单元802,还用于使用配置好的CPU对目标资源进行运算,得到运算结果;
处理单元802,还用于将配置好的CPU中的运算结果同步至GPU,以使GPU在渲染目标游戏时使用运算结果。
在一种实现方式中,GPU中包含第一库文件,第一库文件用于指示在渲染目标游戏时通过GPU进行资源运算;处理单元802,用于确定GPU在渲染目标游戏时进行资源运算所需的目标资源时,具体用于:
获取第二库文件,第二库文件用于指示在渲染目标游戏时通过CPU进行资源运算;
采用第二库文件替换GPU中的第一库文件;
通过GPU调用第二库文件,以确定GPU在渲染目标游戏时进行资源运算所需的目标资源。
在一种实现方式中,第一库文件中包括目标函数,第一库文件通过调用目标函数,获取GPU在渲染目标游戏时进行资源运算所需的目标资源;处理单元802,用于采用第二库文件替换GPU中的第一库文件时,具体用于:
将第一库文件对目标函数的函数调用,替换为第二库文件对目标函数的函数调用;第二库文件通过调用目标函数,获取GPU在渲染目标游戏时进行资源运算所需的目标资源。
在一种实现方式中,处理单元802,用于根据目标资源对CPU进行运算配置时,具体用于:
在CPU中创建图形变换装置,图形变换装置使用CPU进行渲染计算;
将目标资源配置到图形变换装置。
在一种实现方式中,目标资源属于第一资源类型,目标资源包括属于第一资源类型的目标数据;CPU不具有对属于第一资源类型的资源的读写权限,且CPU具有对属于第二资源类型的资源的读写权限;处理单元802,用于将目标资源配置到图形变换装置时,具体用于:
在GPU中创建属于第二资源类型的第一参考资源,第一参考资源的资源容量与目标资源的资源容量相同;
在GPU中将目标数据拷贝至第一参考资源,得到更新后的第一参考资源;
从更新后的第一参考资源中,将目标数据拷贝至CPU中的图形变换装置。
在一种实现方式中,图形变换装置中包括属于第一资源类型的第二参考资源;处理单元802,用于从更新后的第一参考资源中,将目标数据拷贝至CPU中的图形变换装置时,具体用于:
在图形变换装置中创建属于第二资源类型的第三参考资源;
将GPU中第一参考资源中的目标数据,拷贝至图形变换装置中的第三参考资源,得到更新后的第三参考资源;
将更新后的第三参考资源中的目标数据,拷贝至第二参考资源。
在一种实现方式中,处理单元802,用于将GPU中第一参考资源中的目标资源,拷贝至图形变换装置中的第三参考资源,得到更新后的第三参考资源时,具体用于:
将GPU中第一参考资源中的目标数据的虚拟地址,拷贝至图形变换装置中的第三参考资源。
在一种实现方式中,若在渲染目标云游戏的第一游戏画面时,在GPU中创建了属于第二资源类型的第一参考资源,以及,在图形变换装置中创建了属于第二资源类型的第三参考资源,第一游戏画面是目标云游戏中的任一游戏画面,则处理单元802,还用于:
若需要将渲染目标云游戏的第二游戏画面时进行资源运算所需的目标资源,转移至CPU进行资源运算,则在GPU中将目标资源包括的目标数据拷贝至已创建的第一参考资源,得到更新后的第一参考资源;第二游戏画面是目标云游戏中的任一游戏画面,且第二游戏画面与第一游戏画面不同;
从更新后的第一参考资源中,将目标数据拷贝至CPU中已创建的第三参考资源。
在一种实现方式中,目标资源包括目标资源视图对应的资源,目标资源视图至少包括着色器资源视图和无序访问视图,目标资源视图还包括以下至少一个:取样视图或着色器视图;
其中,图形变换装置具有对着色器资源视图、取样视图和着色器视图的读取权限,不具有对着色器资源视图、取样视图和着色器视图的写入权限;图形变换装置具有对无序访问视图的读写权限,读写权限包括:读取权限和写入权限;
运算结果包括:对无序访问视图对应的资源进行运算得到的资源结果;处理单元802,用于将配置好的CPU中的运算结果同步至GPU时,具体用于:
将资源结果从图形变换装置,拷贝回GPU中。
在一种实现方式中,处理单元802,还用于:
若检测到GPU和CPU满足计算迁移启动条件,则触发执行确定GPU在渲染目标游戏时进行资源运算所需的目标资源的步骤;GPU和CPU满足计算迁移启动条件包括:GPU的负载率大于第一负载阈值,且CPU的负载率小于第二负载阈值;
在采用CPU代替GPU进行资源运算的过程中,若检测到CPU满足计算迁移取消条件,则取消CPU进行的资源运算;CPU满足计算迁移取消条件包括:CPU的负载率大于第三负载阈值。
在一种实现方式中,目标游戏包括:本地游戏,或者,云游戏。
根据本申请的一个实施例,图8所示的渲染处理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,该渲染处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图3或图6所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图8中所示的渲染处理装置,以及来实现本申请实施例的渲染处理方法。计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
本申请实施例中,在GPU渲染目标游戏的过程中,支持将GPU渲染目标游戏时进行资源运算所需的目标资源,拷贝至CPU中;这样可采用CPU代替GPU,执行对目标资源运算得到运算结果;再由CPU将运算结果同步至GPU中,确保数据的一致性,以便于GPU基于运算结果继续进行目标游戏的渲染处理。通过上述描述的削峰填谷方式,即在GPU的负载率较高时,将目标资源转移至负载率较低的CPU进行处理的方式,在减小GPU的运行压力的同时,还能确保GPU和CPU均能以较高的吞吐进行游戏,从而在不增加硬件成本的情况下,提升游戏的运行效率,提高目标对象的游戏体验。另外,部分算力从GPU移动到CPU的方式,可通过增加CPU的开销来降低GPU的开销,从而在客户端游戏场景下可降低终端设备的显卡要求,以及,在纯服务器游戏场景下可合理化服务器的硬件配比(即CPU资源和GPU资源的配比)。
图9示出了本申请一个示例性实施例提供的一种计算机设备的结构示意图。请参见图9,该计算机设备,包括处理器901、通信接口902以及计算机可读存储介质903。其中,处理器901、通信接口902以及计算机可读存储介质903可通过总线或者其它方式连接。其中,通信接口902用于接收和发送数据。计算机可读存储介质903可以存储在计算机设备的存储器中,计算机可读存储介质903用于存储计算机程序,计算机程序包括程序指令,处理器901用于执行计算机可读存储介质903存储的程序指令。处理器901(或称CPU(CentralProcessing Unit,中央处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
本申请实施例还提供了一种计算机可读存储介质(Memory),计算机可读存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了计算机设备的处理系统。并且,在该存储空间中还存放了适于被处理器901加载并执行的一条或多条的指令,这些指令可以是一个或多个的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器的计算机可读存储介质。
在一个实施例中,该计算机设备可以是前述实施例提到的目标应用程序;该计算机可读存储介质中存储有一条或多条指令;由处理器901加载并执行计算机可读存储介质中存放的一条或多条指令,以实现上述渲染处理方法实施例中的相应步骤;具体实现中,计算机可读存储介质中的一条或多条指令由处理器901加载并执行如下步骤:
在GPU渲染目标游戏的过程中,确定GPU在渲染目标游戏时进行资源运算所需的目标资源;目标资源包括GPU中的计算着色器进行资源运算所需的资源;
根据目标资源对CPU进行运算配置;
使用配置好的CPU对目标资源进行运算,得到运算结果;
将配置好的CPU中的运算结果同步至GPU,以使GPU在渲染目标游戏时使用运算结果。
在一种实现方式中,GPU中包含第一库文件,第一库文件用于指示在渲染目标游戏时通过GPU进行资源运算;计算机可读存储介质中的一条或多条指令由处理器901加载并在执行,确定GPU在渲染目标游戏时进行资源运算所需的目标资源时,具体执行如下步骤:
获取第二库文件,第二库文件用于指示在渲染目标游戏时通过CPU进行资源运算;
采用第二库文件替换GPU中的第一库文件;
通过GPU调用第二库文件,以确定GPU在渲染目标游戏时进行资源运算所需的目标资源。
在一种实现方式中,第一库文件中包括目标函数,第一库文件通过调用目标函数,获取GPU在渲染目标游戏时进行资源运算所需的目标资源;计算机可读存储介质中的一条或多条指令由处理器901加载并在执行采用第二库文件替换GPU中的第一库文件时,具体执行如下步骤:
将第一库文件对目标函数的函数调用,替换为第二库文件对目标函数的函数调用;第二库文件通过调用目标函数,获取GPU在渲染目标游戏时进行资源运算所需的目标资源。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器901加载并在执行根据目标资源对CPU进行运算配置时,具体执行如下步骤:
在CPU中创建图形变换装置,图形变换装置使用CPU进行渲染计算;
将目标资源配置到图形变换装置。
在一种实现方式中,目标资源属于第一资源类型,目标资源包括属于第一资源类型的目标数据;CPU不具有对属于第一资源类型的资源的读写权限,且CPU具有对属于第二资源类型的资源的读写权限;计算机可读存储介质中的一条或多条指令由处理器901加载并在执行将目标资源配置到图形变换装置时,具体执行如下步骤:
在GPU中创建属于第二资源类型的第一参考资源,第一参考资源的资源容量与目标资源的资源容量相同;
在GPU中将目标数据拷贝至第一参考资源,得到更新后的第一参考资源;
从更新后的第一参考资源中,将目标数据拷贝至CPU中的图形变换装置。
在一种实现方式中,图形变换装置中包括属于第一资源类型的第二参考资源;计算机可读存储介质中的一条或多条指令由处理器901加载并在执行从更新后的第一参考资源中,将目标数据拷贝至CPU中的图形变换装置时,具体执行如下步骤:
在图形变换装置中创建属于第二资源类型的第三参考资源;
将GPU中第一参考资源中的目标数据,拷贝至图形变换装置中的第三参考资源,得到更新后的第三参考资源;
将更新后的第三参考资源中的目标数据,拷贝至第二参考资源。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器901加载并在执行将GPU中第一参考资源中的目标资源,拷贝至图形变换装置中的第三参考资源,得到更新后的第三参考资源时,具体执行如下步骤:
将GPU中第一参考资源中的目标数据的虚拟地址,拷贝至图形变换装置中的第三参考资源。
在一种实现方式中,若在渲染目标云游戏的第一游戏画面时,在GPU中创建了属于第二资源类型的第一参考资源,以及,在图形变换装置中创建了属于第二资源类型的第三参考资源,第一游戏画面是目标云游戏中的任一游戏画面,则计算机可读存储介质中的一条或多条指令由处理器901加载并还执行如下步骤:
若需要将渲染目标云游戏的第二游戏画面时进行资源运算所需的目标资源,转移至CPU进行资源运算,则在GPU中将目标资源包括的目标数据拷贝至已创建的第一参考资源,得到更新后的第一参考资源;第二游戏画面是目标云游戏中的任一游戏画面,且第二游戏画面与第一游戏画面不同;
从更新后的第一参考资源中,将目标数据拷贝至CPU中已创建的第三参考资源。
在一种实现方式中,目标资源包括目标资源视图对应的资源,目标资源视图至少包括着色器资源视图和无序访问视图,目标资源视图还包括以下至少一个:取样视图或着色器视图;
其中,图形变换装置具有对着色器资源视图、取样视图和着色器视图的读取权限,不具有对着色器资源视图、取样视图和着色器视图的写入权限;图形变换装置具有对无序访问视图的读写权限,读写权限包括:读取权限和写入权限;
运算结果包括:对无序访问视图对应的资源进行运算得到的资源结果;计算机可读存储介质中的一条或多条指令由处理器901加载并在执行将配置好的CPU中的运算结果同步至GPU时,具体执行如下步骤:
将资源结果从图形变换装置,拷贝回GPU中。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器901加载并还执行如下步骤:
若检测到GPU和CPU满足计算迁移启动条件,则触发执行确定GPU在渲染目标游戏时进行资源运算所需的目标资源的步骤;GPU和CPU满足计算迁移启动条件包括:GPU的负载率大于第一负载阈值,且CPU的负载率小于第二负载阈值;
在采用CPU代替GPU进行资源运算的过程中,若检测到CPU满足计算迁移取消条件,则取消CPU进行的资源运算;CPU满足计算迁移取消条件包括:CPU的负载率大于第三负载阈值。
在一种实现方式中,目标游戏包括:本地游戏,或者,云游戏。
本申请实施例中,在GPU渲染目标游戏的过程中,支持将GPU渲染目标游戏时进行资源运算所需的目标资源,拷贝至CPU中;这样可采用CPU代替GPU,执行对目标资源运算得到运算结果;再由CPU将运算结果同步至GPU中,确保数据的一致性,以便于GPU基于运算结果继续进行目标游戏的渲染处理。通过上述描述的削峰填谷方式,即在GPU的负载率较高时,将目标资源转移至负载率较低的CPU进行处理的方式,在减小GPU的运行压力的同时,还能确保GPU和CPU均能以较高的吞吐进行游戏,从而在不增加硬件成本的情况下,提升游戏的运行效率,提高目标对象的游戏体验。另外,部分算力从GPU移动到CPU的方式,可通过增加CPU的开销来降低GPU的开销,从而在客户端游戏场景下可降低终端设备的显卡要求,以及,在纯服务器游戏场景下可合理化服务器的硬件配比(即CPU资源和GPU资源的配比)。
本申请实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述渲染处理方法。
本领域普通技术人员可以意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用,使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程设备。计算机指令可以存储在计算机可读存储介质中,或者通过计算机可读存储介质进行传输。计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字用户线(DSL))或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
前述内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种渲染处理方法,其特征在于,包括:
在GPU渲染目标游戏的过程中,确定所述GPU在渲染所述目标游戏时进行资源运算所需的目标资源;所述目标资源包括所述GPU中的计算着色器进行资源运算所需的资源;
根据所述目标资源对CPU进行运算配置;
使用配置好的所述CPU对所述目标资源进行运算,得到运算结果;
将配置好的所述CPU中的所述运算结果同步至所述GPU,以使所述GPU在渲染所述目标游戏时使用所述运算结果。
2.如权利要求1所述的方法,其特征在于,所述GPU中包含第一库文件,所述第一库文件用于指示在渲染所述目标游戏时通过GPU进行资源运算;所述确定所述GPU在渲染所述目标游戏时进行资源运算所需的目标资源,包括:
获取第二库文件,所述第二库文件用于指示在渲染所述目标游戏时通过CPU进行资源运算;
采用所述第二库文件替换所述GPU中的所述第一库文件;
通过所述GPU调用所述第二库文件,以确定所述GPU在渲染所述目标游戏时进行资源运算所需的目标资源。
3.如权利要求2所述的方法,其特征在于,所述第一库文件中包括目标函数,所述第一库文件通过调用所述目标函数,获取所述GPU在渲染所述目标游戏时进行资源运算所需的目标资源;
所述采用所述第二库文件替换所述GPU中的所述第一库文件,包括:
将所述第一库文件对所述目标函数的函数调用,替换为所述第二库文件对所述目标函数的函数调用;所述第二库文件通过调用所述目标函数,获取所述GPU在渲染所述目标游戏时进行资源运算所需的目标资源。
4.如权利要求1所述的方法,其特征在于,所述根据所述目标资源对CPU进行运算配置,包括:
在CPU中创建图形变换装置,所述图形变换装置使用所述CPU进行渲染计算;
将所述目标资源配置到所述图形变换装置。
5.如权利要求4所述的方法,其特征在于,所述目标资源属于第一资源类型,所述目标资源包括属于所述第一资源类型的目标数据;所述CPU不具有对属于所述第一资源类型的资源的读写权限,且所述CPU具有对属于第二资源类型的资源的读写权限;所述将所述目标资源配置到所述图形变换装置,包括:
在所述GPU中创建属于所述第二资源类型的第一参考资源,所述第一参考资源的资源容量与所述目标资源的资源容量相同;
在所述GPU中将所述目标数据拷贝至所述第一参考资源,得到更新后的第一参考资源;
从更新后的第一参考资源中,将所述目标数据拷贝至所述CPU中的所述图形变换装置。
6.如权利要求5所述的方法,其特征在于,所述图形变换装置中包括属于所述第一资源类型的第二参考资源;所述从更新后的第一参考资源中,将所述目标数据拷贝至所述CPU中的所述图形变换装置,包括:
在所述图形变换装置中创建属于所述第二资源类型的第三参考资源;
将所述GPU中所述第一参考资源中的目标数据,拷贝至所述图形变换装置中的所述第三参考资源,得到更新后的第三参考资源;
将所述更新后的第三参考资源中的目标数据,拷贝至所述第二参考资源。
7.如权利要求6所述的方法,其特征在于,所述将所述GPU中所述第一参考资源中的目标数据,拷贝至所述图形变换装置中的所述第三参考资源,得到更新后的第三参考资源,包括:
将所述GPU中所述第一参考资源中的目标数据的虚拟地址,拷贝至所述图形变换装置中的所述第三参考资源。
8.如权利要求5-7任一项所述的方法,其特征在于,若在渲染所述目标游戏的第一游戏画面时,在GPU中创建了属于第二资源类型的第一参考资源,以及,在图形变换装置中创建了属于第二资源类型的第三参考资源,所述第一游戏画面是所述目标游戏中的任一游戏画面,则所述方法还包括:
若需要将渲染第二游戏画面时进行资源运算所需的目标资源,转移至所述CPU进行资源运算,则在所述GPU中将所述目标资源包括的目标数据,拷贝至已创建的所述第一参考资源,得到更新后的第一参考资源;所述第二游戏画面是所述目标游戏中的任一游戏画面,且所述第二游戏画面与所述第一游戏画面不同;
从更新后的第一参考资源中,将所述目标数据拷贝至所述CPU中已创建的所述第三参考资源。
9.如权利要求1所述的方法,其特征在于,所述目标资源包括目标资源视图对应的资源,所述目标资源视图至少包括着色器资源视图和无序访问视图,所述目标资源视图还包括以下至少一个:取样视图或着色器视图;
其中,图形变换装置具有对所述着色器资源视图、所述取样视图和所述着色器视图的读取权限,不具有对所述着色器资源视图、所述取样视图和所述着色器视图的写入权限;图形变换装置具有对所述无序访问视图的读写权限,所述读写权限包括:读取权限和写入权限;
所述运算结果包括:对所述无序访问视图对应的资源进行运算得到的资源结果;所述将配置好的所述CPU中的所述运算结果同步至所述GPU,包括:
将所述资源结果从所述图形变换装置,拷贝回所述GPU中。
10.如权利要求1所述的方法,其特征在于,所述方法还包括:
若检测到GPU和CPU满足计算迁移启动条件,则触发执行所述确定所述GPU在渲染所述目标游戏时进行资源运算所需的目标资源的步骤;所述GPU和所述CPU满足计算迁移启动条件包括:GPU的负载率大于第一负载阈值,且CPU的负载率小于第二负载阈值;
在采用所述CPU代替所述GPU进行资源运算的过程中,若检测到所述CPU满足计算迁移取消条件,则取消所述CPU进行的资源运算;所述CPU满足计算迁移取消条件包括:CPU的负载率大于第三负载阈值。
11.如权利要求1所述的方法,其特征在于,所述目标游戏包括:本地游戏,或者,云游戏。
12.一种渲染处理装置,其特征在于,包括:
获取单元,用于在GPU渲染目标游戏的过程中,确定所述GPU在渲染所述目标游戏时进行资源运算所需的目标资源;所述目标资源包括所述GPU中的计算着色器进行资源运算所需的资源;
处理单元,用于根据所述目标资源对CPU进行运算配置;
所述处理单元,还用于使用配置好的所述CPU对所述目标资源进行运算,得到运算结果;
所述处理单元,还用于将配置好的所述CPU中的所述运算结果同步至所述GPU,以使所述GPU在渲染所述目标游戏时使用所述运算结果。
13.一种计算机设备,其特征在于,包括:
处理器,适于执行计算机程序;
计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,实现如权利要求1-11任一项所述的渲染处理方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于由处理器加载并执行如权利要求1-11任一项所述的渲染处理方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211293540.4A CN115350479B (zh) | 2022-10-21 | 2022-10-21 | 渲染处理方法、装置、设备及介质 |
PCT/CN2023/118545 WO2024082878A1 (zh) | 2022-10-21 | 2023-09-13 | 渲染处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品 |
US18/587,625 US20240189720A1 (en) | 2022-10-21 | 2024-02-26 | Performing rendering processing by a graphics processing unit and a central processing unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211293540.4A CN115350479B (zh) | 2022-10-21 | 2022-10-21 | 渲染处理方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115350479A true CN115350479A (zh) | 2022-11-18 |
CN115350479B CN115350479B (zh) | 2023-01-31 |
Family
ID=84008230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211293540.4A Active CN115350479B (zh) | 2022-10-21 | 2022-10-21 | 渲染处理方法、装置、设备及介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240189720A1 (zh) |
CN (1) | CN115350479B (zh) |
WO (1) | WO2024082878A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116188698A (zh) * | 2023-04-23 | 2023-05-30 | 阿里巴巴达摩院(杭州)科技有限公司 | 对象的处理方法和电子设备 |
WO2024082878A1 (zh) * | 2022-10-21 | 2024-04-25 | 腾讯科技(深圳)有限公司 | 渲染处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104134230A (zh) * | 2014-01-22 | 2014-11-05 | 腾讯科技(深圳)有限公司 | 一种图像处理方法、装置及计算机设备 |
CN106952216A (zh) * | 2017-03-27 | 2017-07-14 | 成都航空职业技术学院 | 一种基于imx6图形处理器的直线检测方法 |
US9928637B1 (en) * | 2016-03-08 | 2018-03-27 | Amazon Technologies, Inc. | Managing rendering targets for graphics processing units |
CN109064538A (zh) * | 2018-08-01 | 2018-12-21 | Oppo广东移动通信有限公司 | 视图渲染方法、装置、存储介质及智能终端 |
CN109885464A (zh) * | 2019-01-24 | 2019-06-14 | 腾讯科技(深圳)有限公司 | 一种基于开放图形库的数据处理方法及系统 |
CN111754381A (zh) * | 2019-03-26 | 2020-10-09 | 华为技术有限公司 | 图形渲染方法、装置和计算机可读存储介质 |
CN112346935A (zh) * | 2020-11-12 | 2021-02-09 | 腾讯科技(北京)有限公司 | 渲染耗时的获取、显示方法、性能监控方法、装置及设备 |
TW202203003A (zh) * | 2020-06-23 | 2022-01-16 | 美商高通公司 | 對顯示器的圖像產生的功率需求減少 |
CN114387241A (zh) * | 2022-01-04 | 2022-04-22 | 腾讯科技(深圳)有限公司 | 动画效果检测方法、装置、电子设备和存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104157004B (zh) * | 2014-04-30 | 2017-03-29 | 常州赞云软件科技有限公司 | 一种融合gpu与cpu计算辐射度光照的方法 |
CN114529658A (zh) * | 2020-10-30 | 2022-05-24 | 华为技术有限公司 | 一种图形渲染方法及其相关设备 |
CN115350479B (zh) * | 2022-10-21 | 2023-01-31 | 腾讯科技(深圳)有限公司 | 渲染处理方法、装置、设备及介质 |
-
2022
- 2022-10-21 CN CN202211293540.4A patent/CN115350479B/zh active Active
-
2023
- 2023-09-13 WO PCT/CN2023/118545 patent/WO2024082878A1/zh unknown
-
2024
- 2024-02-26 US US18/587,625 patent/US20240189720A1/en active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104134230A (zh) * | 2014-01-22 | 2014-11-05 | 腾讯科技(深圳)有限公司 | 一种图像处理方法、装置及计算机设备 |
US9928637B1 (en) * | 2016-03-08 | 2018-03-27 | Amazon Technologies, Inc. | Managing rendering targets for graphics processing units |
CN106952216A (zh) * | 2017-03-27 | 2017-07-14 | 成都航空职业技术学院 | 一种基于imx6图形处理器的直线检测方法 |
CN109064538A (zh) * | 2018-08-01 | 2018-12-21 | Oppo广东移动通信有限公司 | 视图渲染方法、装置、存储介质及智能终端 |
CN109885464A (zh) * | 2019-01-24 | 2019-06-14 | 腾讯科技(深圳)有限公司 | 一种基于开放图形库的数据处理方法及系统 |
CN111754381A (zh) * | 2019-03-26 | 2020-10-09 | 华为技术有限公司 | 图形渲染方法、装置和计算机可读存储介质 |
TW202203003A (zh) * | 2020-06-23 | 2022-01-16 | 美商高通公司 | 對顯示器的圖像產生的功率需求減少 |
CN112346935A (zh) * | 2020-11-12 | 2021-02-09 | 腾讯科技(北京)有限公司 | 渲染耗时的获取、显示方法、性能监控方法、装置及设备 |
CN114387241A (zh) * | 2022-01-04 | 2022-04-22 | 腾讯科技(深圳)有限公司 | 动画效果检测方法、装置、电子设备和存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024082878A1 (zh) * | 2022-10-21 | 2024-04-25 | 腾讯科技(深圳)有限公司 | 渲染处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品 |
CN116188698A (zh) * | 2023-04-23 | 2023-05-30 | 阿里巴巴达摩院(杭州)科技有限公司 | 对象的处理方法和电子设备 |
CN116188698B (zh) * | 2023-04-23 | 2023-09-12 | 阿里巴巴达摩院(杭州)科技有限公司 | 对象的处理方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115350479B (zh) | 2023-01-31 |
US20240189720A1 (en) | 2024-06-13 |
WO2024082878A1 (zh) | 2024-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115350479B (zh) | 渲染处理方法、装置、设备及介质 | |
WO2022116759A1 (zh) | 图像渲染方法、装置、计算机设备和存储介质 | |
CN111818120B (zh) | 端云用户交互方法、系统及相应设备、存储介质 | |
CN110751712A (zh) | 基于云平台的在线三维渲染技术及系统 | |
KR101130407B1 (ko) | 향상된 그래픽 파이프라인을 제공하는 시스템 및 방법 | |
EP2791910B1 (en) | Graphics processing unit with command processor | |
US9928637B1 (en) | Managing rendering targets for graphics processing units | |
TWI469811B (zh) | 一種遊戲引擎載入資源檔的方法、裝置和電腦 | |
US8253732B2 (en) | Method and system for remote visualization client acceleration | |
CN113515396B (zh) | 图形渲染方法、装置、电子设备与存储介质 | |
KR101564859B1 (ko) | 그래픽 프로세싱을 위한 메모리 복사 엔진 | |
US20100060652A1 (en) | Graphics rendering system | |
EP3311565B1 (en) | Low latency application streaming using temporal frame transformation | |
MX2008015162A (es) | Rapida reconfiguracion de estado de tuberia de graficos. | |
CN111158866A (zh) | 一种引擎系统及其渲染方法 | |
US10558496B2 (en) | Techniques for accessing a graphical processing unit memory by an application | |
CN114741081B (zh) | 一种基于异构缓存访问的跨运行环境显示输出共享方法 | |
CN112316433A (zh) | 游戏画面渲染方法、装置、服务器和存储介质 | |
CN112001993A (zh) | 一种面向大场景的多gpu城市仿真系统 | |
CN114237916B (zh) | 一种数据处理方法及相关设备 | |
CN110245024B (zh) | 静态存储块的动态分配系统及其方法 | |
CN106775445B (zh) | 数据迁移方法及装置 | |
CN114827186B (zh) | 云应用处理方法和系统 | |
CN114247138B (zh) | 图像渲染方法、装置、设备及存储介质 | |
CN112218003B (zh) | 一种桌面图像采集方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |