首页 > 运动玩具 专利正文
一种基于hook的通过DirectX接口使用显卡的显卡分配方法与流程

时间:2022-02-15 阅读: 作者:专利查询

一种基于hook的通过DirectX接口使用显卡的显卡分配方法与流程
一种基于hook的通过directx接口使用显卡的显卡分配方法
技术领域
1.本技术提供一种显卡分配技术,尤其涉及一种基于hook 的通过directx 接口使用显卡的显卡分配方法。本技术还涉及一种基于hook 的通过directx 接口使用显卡的显卡分配装置。


背景技术:

2.游戏当前成为人们生活中常见的娱乐项目。游戏开发者通常是使用directx接口渲染游戏画面、或者使用底层通过directx去实现渲染引擎的游戏引擎(例如unity3d、虚幻引擎等),这种情况下一般不会针对多gpu 场景做优化。
3.当游戏启动的时候只会使用同一个gpu的算力,并且即使启动多路游戏的时候依然只能使用同一个gpu。即,现有技术中存在多路游戏启动在同一个显卡上产生的算力不足以及其他显卡资源浪费等问题。因此,如何使游戏在多路同时运行时能够合理的分配在多张gpu上成为当前亟需解决的问题。


技术实现要素:

4.为解决多路游戏启动在同一个显卡上产生的算力不足以及其他显卡资源浪费等问题,本技术提供基于hook 的通过directx 接口使用显卡的显卡分配方法。本技术还涉及一种基于hook 的通过directx 接口使用显卡的显卡分配装置。
5.本技术提供一种基于hook 的通过directx 接口使用显卡的显卡分配方法,包括:基于游戏进程发送的分配显卡的请求信息,接管枚举显卡接口和引擎初始化接口;根据所述枚举显卡接口确定枚举结果;对所述枚举结果进行显卡分配逻辑处理,确定适用于所述游戏进程的指定显卡;对所述指定显卡进行初始化。
6.可选的,所述根据所述枚举显卡接口确定枚举结果,包括:根据所述枚举显卡接口确定可用显卡的数量信息。
7.可选的,所述显卡分配逻辑,包括:显卡的平均分配逻辑或者显卡的优先级分配逻辑。
8.可选的,所述显卡分配逻辑可以跨进程通信。
9.可选的,对所述指定显卡进行初始化,包括:通过显卡序号对所述指定显卡进行初始化。
10.本技术还提供一种基于hook 的通过directx 接口使用显卡的显卡分配装置,包括:接口接管单元,用于基于游戏进程发送的分配显卡的请求信息,接管枚举显卡接口和引擎初始化接口;枚举结果确定单元,用于根据所述枚举显卡接口确定枚举结果;
指定显卡确定单元,用于对所述枚举结果进行显卡分配逻辑处理,确定适用于所述游戏进程的指定显卡;初始化单元,用于对所述指定显卡进行初始化。
11.可选的,所述根据所述枚举显卡接口确定枚举结果,包括:根据所述枚举显卡接口确定可用显卡的数量信息。
12.可选的,所述显卡分配逻辑,包括:显卡的平均分配逻辑或者显卡的优先级分配逻辑。
13.可选的,所述显卡分配逻辑可以跨进程通信。
14.可选的,对所述指定显卡进行初始化,包括:通过显卡序号对所述指定显卡进行初始化。
15.本技术相对与现有技术的优点:本技术提供一种基于hook 的通过directx 接口使用显卡的显卡分配方法,包括:基于游戏进程发送的分配显卡的请求信息,接管枚举显卡接口和引擎初始化接口;根据所述枚举显卡接口确定枚举结果;对所述枚举结果进行显卡分配逻辑处理,确定适用于所述游戏进程的指定显卡;对所述指定显卡进行初始化。本技术基于hook的方法接管游戏进程申请显卡的操作,并在运行设置好的显卡分配逻辑后给游戏分配显卡设备,实现自动分配显卡的目的,不需要手动选择显卡设备,解决了多路游戏启动在同一个显卡上导致的算力不足和其他显卡资源浪费等问题。
附图说明
16.图1是本技术中基于hook 的通过directx 接口使用显卡的显卡分配的流程图。
17.图2是本技术中针对多路游戏进程的显卡分配流程图。
18.图3是本技术中基于hook 的通过directx 接口使用显卡的显卡分配装置示意图。
具体实施方式
19.在下面的描述中阐述了很多具体细节以便于充分理解本技术。但是本技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施的限制。
20.本技术提供一种基于hook 的通过directx 接口使用显卡的显卡分配方法,包括:基于游戏进程发送的分配显卡的请求信息,接管枚举显卡接口和引擎初始化接口;根据所述枚举显卡接口确定枚举结果;对所述枚举结果进行显卡分配逻辑处理,确定适用于所述游戏进程的指定显卡;对所述指定显卡进行初始化。本技术基于hook的方法接管游戏进程申请显卡的操作,并在运行设置好的显卡分配逻辑后给游戏分配显卡设备,实现自动分配显卡的目的,不需要手动选择显卡设备,解决了多路游戏启动在同一个显卡上导致的算力不足和其他显卡资源浪费等问题。
21.图1是是本技术中基于hook 的通过directx 接口使用显卡的显卡分配的流程图。
22.请参照图1所示,s101基于游戏进程发送的分配显卡的请求信息,接管枚举显卡接口和引擎初始化接口。
23.为便于更好地理解本技术,先介绍一下本技术中用到的概念。本技术中的hook技
术又叫做钩子函数,在操作系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。
24.本技术中的directx是direct extension的简写,简称dx。它是由微软公司创建的多媒体编程接口,是一种应用程序接口(api)。directx可以让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。directx已被广泛使用于microsoft windows、microsoft xbox、microsoft xbox 360和microsoft xbox one电子游戏开发。
25.需要说明的是,本技术中的基于hook 的通过directx 接口使用显卡的显卡分配方法,不仅适用于单路游戏进程,还适用于多路游戏进程。
26.以下先以单路游戏进程为例进行说明。单路游戏进程启动后,基于游戏进程发送的分配显卡的请求信息,先接管枚举显卡接口和引擎初始化接口。
27.请参照图1所示,s102根据所述枚举显卡接口确定枚举结果。
28.本步骤用于在引擎初始化之前枚举显卡获取枚举结果。本技术中的枚举结果优选为显卡设备数量信息。
29.请参照图1所示,s103对所述枚举结果进行显卡分配逻辑处理,确定适用于所述游戏进程的指定显卡。
30.本技术通过之前设置好的显卡分配逻辑对上述枚举结果进行处理,自动确定适合该单路游戏进程的指定显卡设备。
31.请参照图1所示,s104对所述指定显卡进行初始化。
32.对上述指定显卡设备进行初始化,初始化完成后使用该指定显卡继续运行即刻。优选的,本技术是通过指定显卡序号完成对所述指定显卡的初始化。
33.以上便是单路游戏进程显卡分配的全过程。但是,本技术也适用于多路游戏进程显卡分配,如图2所示。由于多路游戏进程显卡分配方法和单路游戏进程分配方法相似,所以下文只是针对两者的区别点进行描述。
34.图2是本技术中针对多路游戏进程的显卡分配流程图。
35.请参照图2所示,s201多路游戏进程启动,发送多条分配显卡的请求信息。
36.s202基于多条请求信息,通过hook显卡接口确定枚举结果。
37.s203对所述枚举结果进行显卡分配逻辑处理,获得显卡分配结果。
38.本技术中的所述显卡分配逻辑可以跨进程通信,并根据期望的分配逻辑来分配指定显卡,如平均分配或者按照优先级分配(在第一个显卡分配满之后再分配第二个)等等。
39.优选的,平均分配指定显卡的可根据各个显卡可承载的游戏进程数来计算,如以下公式:其中,x为分配给每个显卡的游戏进程平均数,x为承载相同游戏进程数的显卡数量,w为显卡可承载的游戏进程数。当然,平均分配显卡的方法还有很多,只要能实现均可,
在此不过多介绍。
40.综上,本技术提供一种基于hook 的通过directx 接口使用显卡的显卡分配方法,不仅可以实现自动分配显卡的功能,还可以适用于程序本身不支持修改的情况,只需改动显卡分配逻辑即可,如非自己开发的程序和应用,使得适用场景更广泛更通用。而且,在多个显卡的场景下还可以充分使用显卡算力并保证游戏进程能够获得足够的显卡算力,避免了多个游戏进程使用同一张显卡导致算力不足的情况。
41.本技术还提供一种基于hook 的通过directx 接口使用显卡的显卡分配装置。
42.图3是本技术中基于hook 的通过directx 接口使用显卡的显卡分配装置示意图。
43.请参照图3所示,接口接管单元301,用于基于游戏进程发送的分配显卡的请求信息,接管枚举显卡接口和引擎初始化接口。
44.为便于更好地理解本技术,先介绍一下本技术中用到的概念。本技术中的hook技术又叫做钩子函数,在操作系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。
45.本技术中的directx是direct extension的简写,简称dx。它是由微软公司创建的多媒体编程接口,是一种应用程序接口(api)。directx可以让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。directx已被广泛使用于microsoft windows、microsoft xbox、microsoft xbox 360和microsoft xbox one电子游戏开发。
46.需要说明的是,本技术中的基于hook 的通过directx 接口使用显卡的显卡分配方法,不仅适用于单路游戏进程,还适用于多路游戏进程。
47.以下先以单路游戏进程为例进行说明。单路游戏进程启动后,基于游戏进程发送的分配显卡的请求信息,先接管枚举显卡接口和引擎初始化接口。
48.请参照图3所示,枚举结果确定单元302,用于根据所述枚举显卡接口确定枚举结果。
49.本步骤用于在引擎初始化之前枚举显卡获取枚举结果。本技术中的枚举结果优选为显卡设备数量信息。
50.请参照图3所示,指定显卡确定单元303,用于对所述枚举结果进行显卡分配逻辑处理,确定适用于所述游戏进程的指定显卡。
51.本技术通过之前设置好的显卡分配逻辑对上述枚举结果进行处理,自动确定适合该单路游戏进程的指定显卡设备。
52.请参照图3所示,初始化单元304,用于对所述指定显卡进行初始化。
53.对上述指定显卡设备进行初始化,初始化完成后使用该指定显卡继续运行即刻。优选的,本技术是通过指定显卡序号完成对所述指定显卡的初始化。
54.以上便是单路游戏进程显卡分配的全过程。但是,本技术也适用于多路游戏进程显卡分配,如图2所示。由于多路游戏进程显卡分配方法和单路游戏进程分配方法相似,所以下文只是针对两者的区别点进行描述。
55.图2是本技术中针对多路游戏进程的显卡分配流程图。
56.请参照图2所示,s201多路游戏进程启动,发送多条分配显卡的请求信息。
57.s202基于多条请求信息,通过枚举显卡接口确定枚举结果。
58.s203对所述枚举结果进行显卡分配逻辑处理,获得显卡分配结果。
59.本技术中的所述显卡分配逻辑可以跨进程通信,并根据期望的分配逻辑来分配指定显卡,如平均分配或者按照优先级分配(在第一个显卡分配满之后再分配第二个)等等。
60.优选的,平均分配指定显卡的可根据各个显卡可承载的游戏进程数来计算,如以下公式:其中,x为分配给每个显卡的游戏进程平均数,x为承载相同游戏进程数的显卡数量,w为显卡可承载的游戏进程数。当然,平均分配显卡的方法还有很多,只要能实现均可,在此不过多介绍。
61.综上,本技术提供一种基于hook 的通过directx 接口使用显卡的显卡分配方法,不仅可以实现自动分配显卡的功能,还可以适用于程序本身不支持修改的情况,只需改动显卡分配逻辑即可,如非自己开发的程序和应用,使得适用场景更广泛更通用。而且,在多个显卡的场景下还可以充分使用显卡算力并保证游戏进程能够获得足够的显卡算力,避免了多个游戏进程使用同一张显卡导致算力不足的情况。