CN103870674A - 在台式计算机上实现远程游戏服务器 - Google Patents
在台式计算机上实现远程游戏服务器 Download PDFInfo
- Publication number
- CN103870674A CN103870674A CN201310685186.4A CN201310685186A CN103870674A CN 103870674 A CN103870674 A CN 103870674A CN 201310685186 A CN201310685186 A CN 201310685186A CN 103870674 A CN103870674 A CN 103870674A
- Authority
- CN
- China
- Prior art keywords
- application program
- client device
- application
- execution environment
- image data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 78
- 230000004044 response Effects 0.000 claims abstract description 5
- 230000008569 process Effects 0.000 claims description 45
- 238000012545 processing Methods 0.000 claims description 36
- 230000015654 memory Effects 0.000 description 22
- 238000009877 rendering Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 16
- 238000003860 storage Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 229920002457 flexible plastic Polymers 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- 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/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/355—Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
-
- 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/50—Controlling the output signals based on the game progress
- A63F13/53—Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game
-
- 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/54—Interprogram communication
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/542—Intercept
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/16—Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- Optics & Photonics (AREA)
- General Engineering & Computer Science (AREA)
- User Interface Of Digital Computer (AREA)
- Digital Computer Display Output (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本发明的一个实施例阐述了一种方法,所述方法包括接收来自客户端设备的请求以启动用于在服务器设备上执行的应用程序,其中,所述应用程序配置为以全屏显示模式操作,和作为响应,创建用于所述应用程序的执行环境,所述执行环境禁用所述全屏显示模式。在所述执行环境内,所述应用程序配置为生成用于在所述客户端设备上显示的渲染图像数据。利用所公开的方法,配置为在应用服务器计算机系统上以全屏显示模式执行的应用程序可以通过包含配置为禁用所述全屏显示模式的中介层的执行环境而执行,并传送所述渲染图像数据到客户端设备,用于显示。
Description
技术领域
本发明概括地来说涉及的是服务器-客户端系统,更具体地,涉及的是在计算系统上实现远程游戏应用服务器。
背景技术
当游戏应用在常规的计算系统上执行时,所述游戏应用将所述显示设备配置为以全屏模式操作,以使仅有由所述游戏应用程序所渲染的图像帧对用户是可见的。
所述全屏模式的一个缺点是,当执行或显示所述游戏应用时,用户不能够看到由另一个应用程序所产生的输出图像。因此,玩游戏应用的用户不能够同时地操作在同一台计算机上运行的另一个应用程序或与之进行交互。在用户想在同一台计算机上玩游戏并操作非游戏应用程序的情况下,该用户将不能够看到由所述非游戏应用所产生的输出图像,因为所述游戏应用需要所述全屏模式。类似地,如果第二个用户想要在该计算机上玩游戏应用,同时该用户在相同的计算机上执行不同的(非游戏)应用,所述第二个用户将不能够看到由所述非游戏应用所产生的输出图像,因为所述游戏应用需要所述全屏模式。
因此,本领域所需要的是一种方法,该方法允许第一个用户玩由常规的计算系统所执行的游戏应用的同时,该同一个用户或第二个用户能够操作和看到由在所述常规计算系统上的非游戏应用程序所产生的输出图像。
发明内容
本发明的一个实施方案阐述了用于向客户端设备提供渲染图像数据的方法。所述方法包括接收来自客户端设备的请求以启动用于在服务器设备上执行的应用程序,其中,所述应用程序配置为以全屏显示模式操作,和作为响应,创建用于所述应用程序的执行环境,所述执行环境禁用(disable)所述全屏模式。在所述执行环境内,所述应用程序配置为生成所述用于显示在所述客户端设备的渲染图像。
所公开的方法的一个优势是,配置为在应用服务器计算机系统上以全屏显示模式执行的应用程序可以通过包含配置为禁用所述全屏显示模式的中介层(shim layer)的执行环境而执行,并传送所述渲染图像数据到客户端设备用于显示。为了在客户端设备显示渲染图像数据或传送命令到所述应用服务器计算机系统,使用所公开的方法,不需要对应用程序进行修改。
附图说明
因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其它等效的实施例。
图1A是示出了配置为实现本发明的一个或多个方面的计算机系统的框图;
图1B是示出了配置为实现本发明的一个或多个方面的服务器-客户端系统的框图;
图2是根据本发明的一个实施例的、图1B的应用服务器计算机系统的概念性图示;
图3是根据本发明的一个实施例的、所述客户端设备中的一个和图2中的所述应用服务器计算系统之间的交互的概念性示意图;
图4A是根据本发明的一个实施例的、用于生成用于在客户端设备上显示的渲染图像的方法步骤流程图;和
图4B是示出根据本发明的一个实施例的、图4A的特定步骤的流程图。
具体实施方式
在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。
本发明的一个实施例阐述了用于向客户端设备提供渲染图像数据的系统和方法。由设计为以全屏显示模式操作的应用程序所生成的渲染图像数据从执行所述应用程序的计算系统(应用服务器计算机)传送到所述客户端设备。由所述应用程序如游戏所使用的全屏显示模式,可以通过经中介层来执行所述应用程序而被禁用。更具体地,在加载所述用于在所述应用服务器计算机系统上执行的应用程序后,服务器进程设立所述中介层,所述中介层为所述应用程序提供执行环境,而不需要对所述应用程序本身进行任何修改。具体地,所述服务器进程改变所述应用程序的执行路径,以使所述应用程序调用用于包括DLLs的各种库函数的中介层。在运行时,非显示导向函数的调用从所述应用程序经所述中介层被传送到运行部件,用于执行。对于涉及到显示渲染图像的函数调用,所述函数调用从所述应用程序传送到所述中介层,且所述中介层执行那些函数调用。
当经所述中介层执行所述应用程序时,由所述应用程序所生成的渲染图像被传送到客户端设备,用于显示。第一个用户因此能够玩所述使用客户端设备的应用程序,其中所述应用程序通过第一计算系统执行,且第二个用户能够同时地操作和看到由在所述第一计算系统上的非游戏应用程序产生的输出图像。所述客户端设备由所述第一用户操作并传送命令到所述用于通过所述应用程序进行处理的计算机系统。
系统概述
图1A为示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。计算机系统100包括经由可以包括存储器桥105的互连路径通信的中央处理单元(CPU)102和系统存储器104。存储器桥105可以是例如北桥芯片,经由总线或其它通信路径106(例如超传输(HyperTransport)链路)连接到I/O(输入/输出)桥107。I/O桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108(例如键盘、鼠标)接收用户输入并且经由通信路径106和存储器桥105将该输入转发到CPU102。并行处理子系统112经由总线或第二通信路径113(例如外围部件互连(PCI)Express、加速图形端口或超传输链路)耦连到存储器桥105;在一个实施例中,并行处理子系统112是将像素传递到可以是任何常规的阴极射线管、液晶显示器、发光二极管显示器等显示设备110的图形子系统。系统盘114也连接到I/O桥107,且可以配置为存储用于通过CPU102和并行处理子系统112使用的内容和应用程序(applications)和数据。系统盘114为应用程序和数据提供非易失性存储,且可以包含固定的或可移动的硬盘驱动程序、闪速存储器设备和CD-ROM(压缩光盘只读存储器)、DVD-ROM(数字化通用磁盘-ROM)、蓝光(Blu-ray)、HD-DVD(高清DVD)或其它磁的、光学的或固态的存储器设备。
交换器116提供I/O桥107与诸如网络适配器118以及各种插卡120和121的其它部件之间的连接。其它部件(未明确示出),包括通用串行总线(USB)或其它端口连接、压缩光盘(CD)驱动器、数字通用磁盘(DVD)驱动器、胶片录制设备及类似部件,也可以连接到I/O桥107。图1所示的各种通信路径包括具体命名的通信路径106和113可以使用任何适合的协议实现,诸如PCI-Express、AGP(加速图形端口)、超传输或者任何其它总线或点到点通信协议,并且如本领域已知的,不同设备间的连接可使用不同协议。
在一个实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路,并且可以包含一个或多个的图形处理单元(GPU)。在另一个实施例中,并行处理子系统112包含经优化用于通用处理的电路,同时保留底层(underlying)的计算架构,本文将更详细地进行描述。在又一个实施例中,可以将并行处理子系统112与一个或多个的其它系统元件集成在单个子系统中,诸如结合存储器桥105、CPU102以及I/O桥107,以形成片上系统(SoC)。
应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、CPU102的数目以及并行处理子系统112的数目,可根据需要修改。例如,在一些实施例中,系统存储器104直接连接到CPU102而不是通过桥,并且其它设备经由存储器桥105和CPU102与系统存储器104通信。在其它替代性拓扑中,并行处理子系统112连接到I/O桥107或直接连接到CPU102,而不是连接到存储器桥105。而在其它实施例中,I/O桥107和存储器桥105可能被集成到单个芯片上而不是作为一个或多个分立设备存在。大型实施例可以包括两个或更多个CPU102和两个或更多个并行处理系统112。本文所示的特定部件是可选的;例如,任何数目的插卡或外围设备都可能得到支持。在一些实施例中,交换器116被去掉,网络适配器118和插卡120、121直接连接到I/O桥107。
在一个实施例中,并行处理子系统112包括一个或多个的GPU,所述GPU可使用一个或多个集成电路设备来实现,诸如可编程处理器、专用集成电路(ASIC)或存储器设备,或者以任何其它技术可行的方式来实现。在一些实施例中,并行处理子系统112中的一些或所有GPU具有渲染管线,其可以配置为实施与下述相关的各种操作:经由存储器桥105和第二通信路径113从CPU102和/或系统存储器104所供应的图形数据生成像素数据,与包含在处理子系统112中的本地并行处理存储器(可被用作图形存储器,包括例如常规帧缓冲区(buffer))交互以存储和更新像素数据,传递像素数据到显示设备110等等。在一些实施例中,并行处理子系统112还可以包括一个或多个的用于通用计算的其它处理单元。并行处理子系统112中的GPU或其它处理单元可以是同样的或不同的,并且每个这样GPU或处理单元的可以具有专用并行处理存储器设备或不具有专用并行处理存储器设备。在一些实施例中,并行处理子系统112中的一个或多个GPU可以输出数据到一个或多个的显示设备110。
在操作中,CPU102是计算机系统100的主处理器,控制和协调其它系统部件的操作。具体地,CPU102发出控制GPU的操作的命令。在一些实施例中,CPU102写入用于每个GPU的命令流到数据结构中(在图1A中未明确示出),该数据结构可位于系统存储器104、并行处理存储器、或CPU102和GPU都可访问的其它存储位置中。将指向每个数据结构的指针写到入栈缓冲区(pushbuffer)以发起对数据结构中的命令流的处理。GPU从一个或多个的入栈缓冲区读取命令流,然后相对于CPU102的操作异步地执行命令。可以经由设备驱动程序103由应用程序为每个入栈缓冲区指定执行优先级以控制对不同入栈缓冲区的调度。
并行处理子系统112中的GPU或其它处理单元经由连接到存储器桥105(或者,在一个替代性实施例中,直接连接到CPU102)的通信路径113与计算机系统100的其余部分通信。在一个实施例中,通信路径113是PCI Express链路,如本领域所知的,其中专用通道被分配到并行处理子系统112内的每个处理单元。也可以使用其它通信路径。并行处理子系统112到计算机系统100的其余部分的连接也可以变化。
在一些实施例中,并行处理子系统112可以实现为可插入到计算机系统100的扩展槽中的插卡。在其它实施例中,一个或多个GPU可以和诸如存储器桥105或I/O桥107等总线桥集成在单个芯片上。而在其它实施例中,并行处理子系统112的一些或所有元件包括一个或多个的GPU,可以和CPU102集成在单个芯片上,以形成片上系统(SoC)。包含一个或多个的GPU的系统可以以各种配置和形式因素来实现,包括台式电脑、笔记本电脑或手持式个人计算机、服务器、工作站、游戏控制台、嵌入式系统等等。
应用程序的服务器-客户端系统
图1B是示出了配置为实现本发明的一个或多个方面的服务器-客户端系统130的示意图。如图所示,服务器-客户端系统130包含应用服务器计算系统145、客户端设备140、客户端设备135和通信链路115。
客户端设备135和140可以各自配置为执行客户端进程,所述客户端进程经由通信链路115与由应用服务器计算系统所执行的应用服务器进程进行通信。所述客户端进程允许用户远程地连接到应用服务器计算系统145,以使由设计为在应用服务器计算系统145上以全屏模式操作的应用程序软件所渲染的任意图形被传送到客户端设备135和/或140并在客户端设备135和/或140上显示。
在操作中,当在应用服务器计算系统145上被初始化时,所述服务器进程一直等待,直到所述客户端进程对连接进行初始化。当初始化连接时,所述客户端进程可以传送附加信息,诸如耦合到客户端设备135和/或140的显示设备(未示出)的分辨率等。在响应来自所述客户端的连接时,所述服务器进程首先经由通信链路115传送可以由应用服务器计算系统145执行的应用程序的列表到所述客户端进程。当用户从所述列表中选择应用程序时,所述选择信息被传送到应用服务器计算系统145,然后应用服务器计算系统145开始收集被渲染的图形数据,用于在耦合到应用服务器计算系统145的显示设备上(未示出)显示。所述客户端进程从所述服务器进程接收图形数据,并在耦合到各自的客户端设备135和/或140的显示设备上显示所述图形数据。从所述服务器进程到所述客户端进程的传输一直持续,直到所述客户端进程终止所述服务器进程和所述客户端进程之间的连接。此外,所述客户端进程在客户端设备135和/或140收集诸如键盘键的敲击或鼠标输入等输入,并传送所述输入到所述服务器进程。所述服务器进程采集所接收到的输入并使所述输入产生(effect)在应用服务器计算系统145内执行的所选的应用程序的操作。
通信链路115包括多个诸如路由器和交换器等网络通信系统,所述网络通信系统配置为促进所述客户进程和所述服务器进程之间的数据通信。本领域技术人员应当认识到对于构建通信链路115,存在许多技术上可行的技术,包括在部署众所周知的因特网通信网络时所实施的技术。
应用服务器计算系统145和客户端设备135和140可以是任意类型的计算设备,包括但不限于台式个人计算机(PC)、笔记本电脑、平板PC、个人数字助理(PDA)、或手机等移动设备。在一个实施例中,应用服务器计算系统145是台式计算系统,且客户端设备135和140是位于诸如家或学校等同一建筑结构内的便携式设备。
多个客户端设备经由相应的客户端进程,能够同时地连接到应用服务器计算系统145。在一个实施例中,服务器-客户端系统130没有使用虚拟化,且允许几个用户同时地执行在单个应用服务器计算系统145上的不同的游戏应用程序。客户端设备135和140的用户与所述存储在应用服务器计算系统145上的游戏应用程序远程地连接和交互。设计为以全屏显示模式操作的一个或多个的游戏应用程序可以通过一个或多个的CPU和/或GPU内核的结合在应用服务器计算系统145上执行,渲染图像通过(over)通信链路115传送到客户端设备135和/或140。
图2是根据本发明的一个实施例的、图1B的应用服务器计算系统145的概念性图示。如所示的,应用服务器计算系统145包括但不限于服务器进程202、应用程序210、中介层200和运行部件220和系统部件240。附加的应用程序也以安装和存储在系统存储器104。运行部件220包括操作系统230,例如微软视窗(Microsoft Windows)、MacOS、Linux等。所述系统组件240包括诸如由OS230所提供的Microsoft D3D DLLs等DLLs(动态连接库)245。系统组件240还包括用户模式驱动程序250,用户模式驱动程序250被典型地提供以使OS230和一个或多个处理器如GPU之间的通信能够进行,所述GPU可以安装在应用服务器计算系统145中。在一个实施例中,用户模式驱动程序250是由辉达公司所提供的D3D用户模式驱动程序界面。
也如所示的,应用服务器计算系统145包括配置为生成可选择的应用列表260的客户端配置程序255。可选择的应用列表260包括可以被客户端设备135和/或140的用户选择的一个或多个的应用程序210。可选择的应用列表260可以基于从应用服务器计算系统145的用户所接收的输入而创建。在一个实施例中,所述用户可以指定针对不同的客户端设备135和140的特定的权限,以控制可以启动每个应用程序的客户端设备的数目或控制可以同时地连接到应用服务器计算系统145的客户端设备的总数目。也可以指定权限以控制可以启动可选择的列表260中的一个或多个的应用程序的客户端设备的类型。
最后,在所选的应用程序210加载在应用服务器计算机系统145用于执行之后,中介层200由服务器进程202设立。生成分开的中介层200用于每个所选的应用程序和客户端设备130。例如,当选择相同的应用程序用于客户端设备135和140时,两个不同的中介层200由用户模式驱动程序250生成。如本文所更详细描述的,所选的应用程序210通过中介层210执行,以使用来在应用服务器计算系统145上以全屏模式显示的渲染图像传送到客户端设备135或140。典型地,由所选的应用程序所生的渲染图像没有显示在直接耦合到应用服务器计算系统145的显示设备上。然而,在不同的实施例中,由所选的应用程序所生的渲染图像也可以显示在直接耦合到应用服务器计算系统145的显示设备上。在这样的实施例中,所述渲染图像可以用直接耦合到应用服务器计算机系统145的显示设备的显示器作为全屏图像或在更小的窗口中显示。
图3是根据本发明的一个实施例的、客户端设备135或140中的一个和图2中的应用服务器计算系统145之间的交互的概念性示意图。一旦客户端设备135或140连接到应用服务器计算系统145,在交互305,客户端设备135或140向应用服务器计算系统145请求所选择的应用列表260。当应用服务器计算系统145接收到所述请求时,在交互310,应用服务器计算系统145识别所述特定的客户端。在交互315,应用服务器计算系统145向所述客户端发送可选择的应用列表260。被发送的可选择的应用列表260可以特定于所识别的客户端设备,或可选择的应用列表260可以调整为用于所有的客户端设备。
在交互320,所述在客户端设备135或140上执行的客户端进程向所述用户呈现可选择的应用列表260。在交互325,客户端设备135的用户从可选择的应用列表260选择应用程序210,启动所选的应用程序的请求被传送到应用服务器计算系统145。
在交互330,在应用服务器计算系统145上执行的服务器进程202接收到启动所选的应用程序210的请求,然后转而加载所选的应用程序210用于在应用服务器计算机系统145上执行。服务器进程202也设立中介层200以为所选的应用程序210提供执行环境,所述执行环境包括中介层200和运行部件220。具体地,服务器进程202改变所选的应用程序210的执行路径(从“正常的”到“新的”执行路径),以使所选的应用程序210调用用于包括DLLs的各种库函数的中介层200。在运行时,非显示导向函数的调用从所选的应用程序210,通过中介层200传送到运行部件220用于执行。对于与显示渲染图像相关的函数调用,所述函数调用从所选的应用程序210传送到中介层200,然后中介层200执行那些函数调用。
在一个实施例中,中介层200是Microsoft DirectX包装器,所述Microsoft DirectX包装器配置为阻止所选的应用程序210输出数据到所述直接耦合到应用服务器计算系统145的显示设备。中介层200也阻止在应用服务器计算系统145的输入设备所接收到的用户输入控制所选的应用程序210的操作。
在操作中,中介层200覆盖由所选的应用程序210所指定的全屏显示模式。当所述全屏显示模式被禁用时,则使用复制显示(copy display)模式(缓冲区交换)。在全屏显示模式时,通过在存储器的两个不同的部分存储交替的帧和在存储器的两个不同的部分之间交替,在显示其它部分时,写存储器的一部分,来使用缓冲区交换以避免所述复制操作。因为所述渲染图像将不会显示在直接耦合到应用服务器计算系统145的显示设备上,所以不需要所述复制操作。因此,中介层200也设置标记以隐藏所述渲染图像被复制到的窗口。
通过在应用服务器计算系统145上的所选的应用程序210的执行所产生的渲染图像数据仅输出到缓冲区,然后传送到客户端设备135或140。最后,当客户端设备135或140的用户与客户端设备135或140的输入设备交互时,中介层200也创建执行线程以处理所生成的输入信号。所述输入信号从客户端设备135或140传送到应用服务器计算系统145以控制所选的应用程序210。表1示出了用于设计为以全屏显示模式操作的应用程序的伪代码的实例。
表1
创建新窗口
当前参数,全屏显示模式标记=假(FALSE);
创建设备(新窗口句柄、当前参数)
隐藏新窗口
渲染上下文…
渲染回路{…
}
呈现调用以显示
首先创建一个新的窗口,并返回指向对应于显示缓冲区的存储器中的位置的指针,例如新的窗口句柄。当前参数包括用于全屏显示模式的标记,设定所述标记以启用用于所述应用程序的全屏显示模式。在中介层200,所述用于全屏显示模式的标记是禁用的。呈现的参数也可以包括客户端设备135或140的显示分辨率。
用由中介层200所设定的当前参数创建用于新窗口的设备。然后设定新窗口以使所述新窗口是不可见的,以避免所述复制操作。一旦所述新窗口被设定为不可见的,可以进行渲染而不需要修改,且如上所述,中介层200配置为指导所选的应用程序210的执行。因此,与没有中介层200的执行相比,通过中介层200,所选的应用程序210的执行不需要任何修改,即,以全屏显示模式输出到直接耦合到应用计算服务器系统145的显示设备。
在交互335,所选的应用程序210在应用服务器计算系统145上通过所述包括中介层200和运行部件220的执行环境而执行。在交互340,存储在应用服务器计算系统145上的存储器中的渲染图像被传送到客户端设备135或140,并显示在客户端设备135或140的输出。在交互345,客户端设备135或140的用户生成输入信号以控制所选的应用程序,且所述输出信号传送到应用服务器计算系统145。在交互350,在应用服务器计算系统145上的线程执行处理输入信号,且附加的渲染图像被传送到客户端设备135或140。
所选的应用程序210的执行不会干扰应用服务器计算系统145的用户,所述用户可能正在完成完全不相关的任务,诸如网页浏览或音视频任务(看DVD)。如上所述,中介层200通过提供禁用所述全屏模式的执行环境,能够使所选的应用程序210被执行,而不需要对所述应用程序代码进行任何修改。所述执行环境也可以配置为特定于客户端设备135或140的显示分辨率。
图4是根据本发明的一个实施例的、用于生成用于显示在客户端设备上的渲染图像的方法步骤的流程图。尽管结合图1A、图1B和图2描述了所述方法步骤,本领域技术人员应当理解,配置为以任意顺序执行所述方法步骤的任意系统均在本发明的范围内。
如所示的,方法400开始于步骤405,其中可选择的应用列表260由在应用服务器计算系统145上执行的客户端配置程序255所配置,以包含客户端设备135和140可访问的安装在应用服务器计算系统145上的应用程序。在步骤410,在应用服务器计算系统145上执行的服务器进程202确定是否通过客户端进程请求可选择的应用列表260,且如果不请求,则服务器进程202一直等待请求。当接收到对可选择的应用列表260的请求,在步骤415,应用服务器计算系统145传送可选择的应用列表260到所述请求的客户端设备。
在步骤420,服务器进程202确定是否从客户端设备135或140接收到启动请求。如果没有接收到启动请求,那么方法400返回到步骤420。如果接收到启动请求,那么在步骤425,服务器进程202加载选自可选择的应用列表260应用程序210,用于在应用服务器计算系统145上执行,并设立如本文前面所述中介层200,以创建用于所选的应用程序210的执行环境,所述执行环境禁用所选的应用程序210所使用的全屏显示模式。应当注意的是,以下结合图4B阐述步骤425的更详细的描述。
在步骤460,在所述执行环境内执行所选的应用程序210,以生成所述渲染图像数据。更具体地,也正如本文前面所描述的,所述执行环境包含中介层200和运行部件220,所选的应用程序210通过中介层200,和根据需要通过运行部件220来执行。在步骤465,所选的应用程序210确定硬件编码器是在应用服务器计算系统145内是否是可用的。如果是的话,那么在步骤470,在应用服务器计算系统145内的GPU编码所述渲染图像数据,并将所编码的渲染图像数据写入系统存储器中的缓冲区。不然的话,则在步骤475,在应用服务器计算系统145内的CPU编码所述使用软件解码器的渲染图像数据,并将所编码的渲染图像数据写入系统存储器104中的缓冲区。所述软件或硬件编码器可以配置为将RGB格式的渲染图像数据转换成YUV格式。当硬件编码器可用时,所述渲染图像数据可以存储在图形存储器内的帧缓冲区,所述图形存储器与应用服务器计算机系统145内的GPU相关联。当硬件编码器不可用时,所述渲染图像数据存储在系统存储器。
在步骤480,所编码的渲染图像数据被传送到客户端设备135或140。在步骤485,所述执行线程确定是否接收到来自客户端设备135或140的输入信号。如果接收到,那么在步骤460,执行所选的应用程210以处理所述输入信号。不然的话,所述执行线程则等待来自客户端设备135或140的输入信号。
图4B是示出根据本发明的一个实施例的、图4A的步骤425的流程图。尽管结合图1A、图1B和图2描述了所述方法步骤,本领域技术人员应当理解,配置为以任意顺序执行所述方法步骤的任意系统均在本发明的范围内。
在步骤430,在加载用于在应用服务器计算机系统145上执行的所选的应用程序210后,服务器进程202在应用服务器计算机系统145内设立中介层200。在步骤432,所述服务器进程用到中介层200的路径改变所选的应用程序210的正常执行路径,以使所选的应用程序210用于包括DLLs的各种库函数的中介层200。在运行时,非显示导向函数的调用从所选的应用程序210,通过中介层200传送到运行部件220,用于执行。对于与显示渲染图像相关的函数调用,所述函数调用从所选的应用程序210传送到中介层200,然后中介层200执行那些函数调用。
在步骤434,中介层200禁用所选的应用程序210所使用的全屏显示模式。在步骤436,中介层200隐藏所述显示窗口,以使在应用服务器计算机系统145上执行所选的应用程序210时所生成的渲染图像不被复制到在应用服务器计算系统145上的显示缓冲区。
所公开的方法的一个优势是,配置为以全屏显示模式在应用服务器计算机系统上执行的应用程序可以通过包含配置为禁用所述全屏显示模式的中介层(shim layer)的执行环境而执行,并传送所述渲染图像数据到客户端设备,用于显示。为了在客户端设备显示渲染图像数据或传送命令到所述应用服务器计算机系统,使用所公开的方法,不需要对应用程序进行修改。
本发明的一个实施例可以作为用于和计算机系统一起使用的程序产品来实现。所述程序产品的程序限定实施例的功能(包括本文所描述的方法),可以包含在多种计算机可读的存储媒介。示例性的计算机可读的存储媒介包括但不限于:(i)非可写的存储媒介(例如,诸如CD-ROM驱动程序可读的压缩光盘只读存储器(CD-ROM)磁盘、闪速存储器、只读存储器(ROM)芯片或任意类型的固态非易失性半导体存储器等计算机内的只读存储器设备),在所述非可写的存储媒介上信息被永久地存储;和(ii)可写的存储媒介(例如,在软磁盘驱动程序或硬盘驱动程序内的软盘或任意类型的固态随机存取半导体存储器),在所述可写的存储媒介上存储可改变的信息。
以上已参照特定实施例对本发明进行了描述。然而,本领域普通技术人员应当理解的是,可对此做出各种修改和变化而不脱离如随附权利要求书中所阐述的本发明的较宽精神和范围。因此,前面的描述以及附图应被视为是例示性而非限制性的意义。
因此,在后面的权利要求中对本发明实施例的范围进行阐述。
Claims (10)
1.一种用于向客户端设备提供渲染图像数据的方法,所述方法包括:
接收来自客户端设备的请求以启动用于在服务器设备上执行的应用程序,其中,所述应用程序配置为以全屏显示模式操作;和
作为响应,创建用于所述应用程序的执行环境,所述执行环境禁用所述全屏模式,其中,在所述执行环境内,所述应用程序配置为生成用于在所述客户端设备上显示的渲染图像数据。
2.如权利要求1所述的方法,所述方法进一步包括确定是否已经收到对可选择的应用列表的请求,其中所述应用程序包含在所述可选择的应用列表中。
3.如权利要求2所述的方法,所述方法进一步包括加载所述用于在所述服务器设备上执行的应用程序。
4.如权利要求1所述的方法,其中,创建所述执行环境包括在所述服务器设备上设立中介层。
5.如权利要求4所述的方法,其中,创建所述执行环境进一步包括改变所述应用程序的执行路径。
6.如权利要求5所述的方法,其中,改变所述执行路径包括创建到所述中介层的路径,以使所述应用程序调用所述中介层用于库调用。
7.如权利要求4所述的方法,其中,创建所述执行环境包括禁用所述全屏模式,并在耦合到所述应用服务器计算机的显示设备上隐藏用于所述渲染图像数据的显示窗口。
8.如权利要求7所述的方法,其中,隐藏所述显示窗口阻止所述渲染图像数据被复制到在所述服务器设备内的显示缓冲区。
9.如权利要求1所述的方法,所述方法进一步包括以所述客户端设备所指定的显示分辨率生成所述渲染图像数据。
10.一种服务器计算机系统,包括:
处理单元;和
服务器进程,所述服务器进程配置为在所述处理单元上执行,且进一步配置为:
接收来自客户端设备的请求以启动用于在所述服务器计算机系统上执行的应用程序,其中所述应用程序配置为以全屏显示模式操作,和
作为响应,创建用于所述应用程序的执行环境,所述执行环境禁用所述全屏显示模式,其中,在所述执行环境内,所述应用程序配置为生成用于在所述客户端设备上显示的渲染图像数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/715,596 | 2012-12-14 | ||
US13/715,596 US10118095B2 (en) | 2012-12-14 | 2012-12-14 | Implementing a remote gaming server on a desktop computer |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103870674A true CN103870674A (zh) | 2014-06-18 |
Family
ID=50821483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310685186.4A Pending CN103870674A (zh) | 2012-12-14 | 2013-12-13 | 在台式计算机上实现远程游戏服务器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10118095B2 (zh) |
CN (1) | CN103870674A (zh) |
DE (1) | DE102013018137B4 (zh) |
TW (1) | TWI610709B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114077508A (zh) * | 2022-01-19 | 2022-02-22 | 维塔科技(北京)有限公司 | 一种远程图像渲染方法、装置、电子设备以及介质 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9253263B2 (en) * | 2012-12-29 | 2016-02-02 | Ricoh Company, Ltd. | Managing scope of network services |
US9398100B2 (en) | 2012-12-29 | 2016-07-19 | Ricoh Company, Ltd. | Managing access of network services |
US10387973B2 (en) | 2013-02-28 | 2019-08-20 | Sony Corporation | Trending stories in game activity feeds |
US9792778B2 (en) * | 2013-09-26 | 2017-10-17 | Bally Gaming, Inc. | Bundling assets for mobile devices |
US20150188765A1 (en) * | 2013-12-31 | 2015-07-02 | Microsoft Corporation | Multimode gaming server |
US10114431B2 (en) * | 2013-12-31 | 2018-10-30 | Microsoft Technology Licensing, Llc | Nonhomogeneous server arrangement |
US9694281B2 (en) | 2014-06-30 | 2017-07-04 | Microsoft Technology Licensing, Llc | Data center management of multimode servers |
US10343067B2 (en) * | 2014-12-23 | 2019-07-09 | King.Com Ltd. | Computer system and method for selecting and displaying in-gaming options based on user selection weight criteria |
US10572644B2 (en) * | 2017-01-26 | 2020-02-25 | Microsoft Technology Licensing, Llc | Interacting with a computing device via identity-bearing peripheral devices |
CN108415639B (zh) * | 2018-02-09 | 2022-02-25 | 腾讯科技(深圳)有限公司 | 视角调整方法、装置、电子装置及计算机可读存储介质 |
US11892983B2 (en) | 2021-04-29 | 2024-02-06 | EMC IP Holding Company LLC | Methods and systems for seamless tiering in a distributed storage system |
US11762682B2 (en) | 2021-10-27 | 2023-09-19 | EMC IP Holding Company LLC | Methods and systems for storing data in a distributed system using offload components with advanced data services |
US11922071B2 (en) | 2021-10-27 | 2024-03-05 | EMC IP Holding Company LLC | Methods and systems for storing data in a distributed system using offload components and a GPU module |
US20230126511A1 (en) * | 2021-10-27 | 2023-04-27 | EMC IP Holding Company LLC | Methods and systems for storing data in a distributed system using gpus |
US11677633B2 (en) | 2021-10-27 | 2023-06-13 | EMC IP Holding Company LLC | Methods and systems for distributing topology information to client nodes |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6421738B1 (en) * | 1997-07-15 | 2002-07-16 | Microsoft Corporation | Method and system for capturing and encoding full-screen video graphics |
US6802055B2 (en) * | 2001-06-27 | 2004-10-05 | Microsoft Corporation | Capturing graphics primitives associated with any display object rendered to a graphical user interface |
US20070043550A1 (en) * | 2005-08-16 | 2007-02-22 | Tzruya Yoav M | System and method for providing a remote user interface for an application executing on a computing device |
US20110157196A1 (en) * | 2005-08-16 | 2011-06-30 | Exent Technologies, Ltd. | Remote gaming features |
CN102662999A (zh) * | 2012-03-15 | 2012-09-12 | 北京视博云科技有限公司 | 一种多媒体应用数据提供方法、装置及系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203946B2 (en) * | 1999-10-11 | 2007-04-10 | Hewlett-Packard Development Company, L.P. | System and method for intercepting, instrumenting and characterizing usage of an application programming interface |
US7353507B2 (en) * | 2002-10-30 | 2008-04-01 | Hewlett-Packard Development, L.P. | Intercepting function cells |
US9138644B2 (en) * | 2002-12-10 | 2015-09-22 | Sony Computer Entertainment America Llc | System and method for accelerated machine switching |
KR101541048B1 (ko) * | 2005-09-26 | 2015-08-03 | 닐슨 미디어 리서치 인코퍼레이티드 | 컴퓨터-기반 미디어 프리젠테이션을 측정하기 위한 방법 및 장치 |
TW200943079A (en) | 2007-12-05 | 2009-10-16 | Onlive Inc | Method of combining linear content and interactive content compressed together as streaming interactive video |
US20130057561A1 (en) * | 2011-09-07 | 2013-03-07 | Exent Technologies, Ltd. | System and method for rendering graphics content associated with an application process to a display area managed by another process |
US9311169B2 (en) * | 2012-05-02 | 2016-04-12 | Nvidia Corporation | Server based graphics processing techniques |
US9817656B2 (en) * | 2012-08-24 | 2017-11-14 | Ca, Inc. | Hot rollback of updated agent |
-
2012
- 2012-12-14 US US13/715,596 patent/US10118095B2/en active Active
-
2013
- 2013-11-26 TW TW102143049A patent/TWI610709B/zh active
- 2013-12-04 DE DE102013018137.2A patent/DE102013018137B4/de active Active
- 2013-12-13 CN CN201310685186.4A patent/CN103870674A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6421738B1 (en) * | 1997-07-15 | 2002-07-16 | Microsoft Corporation | Method and system for capturing and encoding full-screen video graphics |
US6802055B2 (en) * | 2001-06-27 | 2004-10-05 | Microsoft Corporation | Capturing graphics primitives associated with any display object rendered to a graphical user interface |
US20070043550A1 (en) * | 2005-08-16 | 2007-02-22 | Tzruya Yoav M | System and method for providing a remote user interface for an application executing on a computing device |
US20110157196A1 (en) * | 2005-08-16 | 2011-06-30 | Exent Technologies, Ltd. | Remote gaming features |
CN102662999A (zh) * | 2012-03-15 | 2012-09-12 | 北京视博云科技有限公司 | 一种多媒体应用数据提供方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
A.JURGELIONIS 等: "Distributed video game streaming system for pervasive gaming", 《PROCEEDING OF 6TH STREAMING DAY》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114077508A (zh) * | 2022-01-19 | 2022-02-22 | 维塔科技(北京)有限公司 | 一种远程图像渲染方法、装置、电子设备以及介质 |
Also Published As
Publication number | Publication date |
---|---|
TW201434514A (zh) | 2014-09-16 |
DE102013018137A1 (de) | 2014-06-18 |
US20140171190A1 (en) | 2014-06-19 |
TWI610709B (zh) | 2018-01-11 |
US10118095B2 (en) | 2018-11-06 |
DE102013018137B4 (de) | 2022-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103870674A (zh) | 在台式计算机上实现远程游戏服务器 | |
US11055811B2 (en) | Graphics processing unit partitioning for virtualization | |
JP5506120B2 (ja) | ディスプレイ面を複数の仮想ディスプレイ区域に区分化するための装置及び方法 | |
CN109522070B (zh) | 显示处理方法和系统 | |
JP2021524094A (ja) | アプリケーションの仮想シーン認識及びインタラクションキーマッチング方法、並びに計算装置 | |
CN102695032A (zh) | 信息处理装置、信息共享方法、程序以及终端设备 | |
CN101896940A (zh) | 用于硬件资源的动态配置的框架 | |
CN110199271A (zh) | 现场可编程门阵列虚拟化 | |
JP2013546043A (ja) | 即時リモートレンダリング | |
CN105027039A (zh) | 减少墨水渲染时的等待时间 | |
CN105190701B (zh) | 基于原语的合成系统及方法 | |
US20160132346A1 (en) | Memory Space Mapping Techniques for Server Based Graphics Processing | |
CN102915232A (zh) | 一种3d控件的交互方法及通信终端 | |
CN104823220A (zh) | 用于图形处理的图形存储器加载掩模 | |
US20170185422A1 (en) | Method and system for generating and controlling composite user interface control | |
US20080167124A1 (en) | System and Method for Adding In-Game Functionality | |
JP6820160B2 (ja) | イメージをレンダリングするプログラムおよびシステム | |
US8448190B2 (en) | Methods, systems, and computer readable media for high reliability downloading of background assets using a manifest in a virtual world application | |
CN112799801B (zh) | 一种模拟鼠标指针绘制方法、装置、设备和介质 | |
US20150352442A1 (en) | Game having a Plurality of Engines | |
KR102213727B1 (ko) | 다수의 프리미티브들을 사용하는 그래픽 처리 | |
CN110941408B (zh) | 一种kvm虚拟机图形界面输出方法及装置 | |
CN106796557A (zh) | 供应商专用的外围设备类标识符 | |
CN102388376B (zh) | 远程usb环境中的混合或复合usb设备的划分 | |
US10678553B2 (en) | Pro-active GPU hardware bootup |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140618 |