IP Library Granted Patent US 8,803,892
Granted Patent B2
US 8,803,892 · App. 12/797,788 · Granted Aug 12, 2014

Allocation of GPU resources across multiple clients

Inventor: Julian Michael Urbach (Sherman Oaks, CA)
Assignee: Otoy, Inc.
G06F9/5027G06F9/5016
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,803,892
App. No.
12/797,788
Granted
Aug 12, 2014
Kind
B2
Abstract

Methods, apparatuses and systems directed to hosting, on a computer system, a plurality of application instances, each application instance corresponding to a remote client application; maintaining a network connection to each of the remote client applications for which an application instance is hosted; allocating resources of a graphics processing unit of the computer system between at least two of the remote client applications; concurrently rendering, utilizing the resources of the graphics processing unit of the computer system, the graphical output of the application instances corresponding to the at least two of the remote client applications; and transmitting the rendered graphical output to the at least two of the remote client applications over the respective network connections.

Claims (55)

1. A method comprising

hosting, on a computer system, a plurality of application instances, each application instance corresponding to a remote client application;

maintaining, by the computer system, a network connection to each of the remote client applications for which an application instance is hosted;

determining, by the computer system, respective display capabilities associated with the remote client applications;

partitioning, by the computer system, a memory storage of a graphics processing unit of the computer system into a plurality of portions such that a size and dimension of a portion depends on size and dimensions of the memory storage and a number of the portions into which the memory storage is to be partitioned;

allocating, by the computer system, resources that comprise the portions of the memory storage that are currently available between each of at least two of the remote client applications such that a number of the portions allocated to each of the at least two of the remote client applications is based on respective display capabilities associated with each of the at least two of the remote client applications wherein a plurality of portions are assigned to at least one of the two remote client applications such that relative positions of the plurality of portions within the memory storage are based on a shape and dimensions of a respective display associated with the at least one of the at least two remote client application;

concurrently rendering, by the computer system utilizing the resources of the graphics processing unit, the graphical output of the application instances corresponding to the at least two of the remote client applications; and

transmitting, by the computer system, the rendered graphical output to the at least two of the remote client applications over the respective network connections.

2. The method recited in claim 1 , wherein each rendered graphical output is stored in the portion of the memory storage allocated to the corresponding remote client application.

3. The method recited in claim 1 , further comprising concurrently encoding, utilizing the resources of the graphics processing unit of the computer system, the rendered graphical output prior to transmission.

4. The method recited in claim 3 , wherein each of the rendered graphical output is encoded and transmitted to the corresponding remote client application in a video stream.

5. The method recited in claim 3 , wherein:

the graphical output of the application instances is rendered in a single rendering pass; and

the rendered graphical output of the application instances is encoded in a single encoding pass.

6. A method, comprising:

accessing, by a first computer system, a plurality sets of rendering parameters, wherein:

the first computer system is connected to a plurality of second computer systems;

each one of the plurality sets of rendering parameters corresponds to a particular one of the plurality of second computer systems;

the first computer system comprises a graphics processing unit comprising a rendering target for storing images;

determining, by the first computer system, respective display capabilities of the plurality of second computer systems;

partitioning, by the first computer system, the rendering target into a plurality of rendering-target units such that a size and dimensions of a rendering-target unit depend on size and dimensions of the rendering target and a number of the rendering-target units into which the rendering target is to be partitioned;

allocating, by the first computer system, to each one of the plurality of second computer systems, at least one of the plurality of rendering-target units that are currently available based on the respective display capabilities of each of the plurality of second computer systems such that relative positions of the plurality of portions within the memory storage are based on a shape and dimensions of a respective display associated with the at least one of the at least two remote client application;

concurrently rendering, by the first computer system, a plurality of images for the plurality of second computer systems based on the plurality sets of rendering parameters, wherein each one of the plurality of images is rendered for a particular one of the plurality of second computer systems, based on a particular one of the plurality sets of rendering parameters corresponding to the particular one of the plurality of second computer systems, and stored in the rendering target; and

transmitting, by the first computer system, each one of the plurality of images to the particular one of the plurality of second computer systems for which the image has been rendered.

7. The method recited in claim 6 , wherein:

each one of the plurality of rendering-target units is for storing at least one pixel; and

each one of the plurality of images is rendered into the at least one of the plurality of rendering-target units allocated for the particular one of the plurality of second computer systems for which the image is rendered.

8. The method recited in claim 6 , further comprising concurrently encoding, by the first computer system, the plurality of images prior to transmission.

9. The method recited in claim 8 , wherein:

each one of the plurality of images is encoded as a current frame of a particular one of a plurality of video streams; and

each one of the plurality of video streams corresponds to a particular one of the plurality of second computer systems.

10. The method recited in claim 9 , wherein transmitting, by the first computer system, each one of the plurality of images to the particular one of the plurality of second computer systems for which the image has been rendered comprises transmitting, by the first computer system, each one of the plurality of video streams to the corresponding one of the plurality of second computer systems.

11. The method recited in claim 6 , further comprising updating, by the first computer system, the plurality sets of rendering parameters.

12. The method recited in claim 11 , wherein: an instance of a particular computer program executes on each one of the plurality of second computer systems; and

a current state of the instance of the particular computer program executing on each one of the plurality of second computer systems determines a particular one of the plurality sets of rendering parameters corresponding to the second computer system.

13. The method recited in claim 6 , wherein each one of the plurality sets of rendering parameters comprises at least one shader constant.

14. A system, comprising:

a memory comprising instructions executable by one or more processors;

a graphics processing unit; and

one or more processors coupled to the memory and operable to execute the instructions, the one or more processors being operable when executing the instructions to:

host a plurality of application instances, each application instance corresponding to a remote client application;

maintain a network connection to each of the remote client applications for which an application instance is hosted;

determine respective display capabilities associated with the remote client applications;

partition a memory storage of the graphics processing unit into a plurality of portions such that a size and dimensions of a portion depend on size and dimensions of the memory storage and a number of the portions into which the memory storage is to be partitioned;

allocate resources that comprise the portions of the memory storage of the graphics processing unit that are currently available between each of at least two of the remote client applications such that a number of the portions allocated to the at least two remote client applications is based on the respective display capabilities associated with each of the at least two remote client applications wherein a plurality of portions are assigned to at least one of the two remote client applications such that relative positions of the plurality of portions within the memory storage are based on a shape and dimensions of a respective display associated with the at least one of the at least two remote client application;

concurrently render, utilizing the resources of the graphics processing unit, the graphical output of the application instances corresponding to the at least two of the remote client applications; and

transmit the rendered graphical output to the at least two of the remote client applications over the respective network connections.

15. One or more computer-readable tangible storage media embodying software operable when executed by one or more computer systems to:

host a plurality of application instances, each application instance corresponding to a remote client application;

maintain a network connection to each of the remote client applications for which an application instance is hosted;

determine respective display capabilities associated with the remote client applications;

partition a memory storage of a graphics processing unit of the one or more computer systems into a plurality of portions such that a size and dimensions of a portion depends on size and dimensions of the memory storage and a number of the portions into which the memory storage is to be partitioned;

allocate resources that comprise the portions of the memory storage of the graphics processing unit that are currently available between each of at least two of the remote client applications such that a number of the portions allocated to the at least two remote client applications is based on the respective display capabilities associated with each of the at least two remote client applications wherein a plurality of portions are assigned to at least one of the two remote client applications such that relative positions of the plurality of portions within the memory storage are based on a shape and dimensions of a respective display associated with the at least one of the at least two remote client application;

concurrently render, utilizing the resources of the graphics processing unit, the graphical output of the application instances corresponding to the at least two of the remote client applications; and

transmit the rendered graphical output to the at least two of the remote client applications over the respective network connections.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 29, 2012
From: URBACH, JULIAN
To: OTOY, INC.
Reel/Frame 029375/0499 →
Continuity (1)
Related Publication 20110304634A1 · Dec 15, 2011