IP Library Granted Patent US 9,904,969
Granted Patent B1
US 9,904,969 · App. 13/831,967 · Granted Feb 27, 2018

Multi-user multi-GPU render server apparatus and methods

Inventors: Malte Westerhoff (Berlin, DE); Detlev Stalling (Berlin, DE)
Assignee: PME IP PTY LTD
G06T1/20
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 9,904,969
App. No.
13/831,967
Granted
Feb 27, 2018
Kind
B1
Abstract

The invention provides, in some aspects, a system for rendering images, the system having one or more client digital data processors and a server digital data processor in communications coupling with the one or more client digital data processors, the server digital data processor having one or more graphics processing units. The system additionally comprises a render server module executing on the server digital data processor and in communications coupling with the graphics processing units, where the render server module issues a command in response to a request from a first client digital data processor. The graphics processing units on the server digital data processor simultaneously process image data in response to interleaved commands from (i) the render server module on behalf of the first client digital data processor, and (ii) one or more requests from (a) the render server module on behalf of any of the other client digital data processors, and (b) other functionality on the server digital data processor.

Claims (40)

1. A method for rendering images comprising:

A) executing a render server program on a server digital data processor;

B) responding to a first render request of a first data volume corresponding to a first digital image View from a client digital data processor in communication with the server digital data processor by breaking down the first data volume into two or more first sub-volumes;

C) executing two or more first render commands to render independently the two or more first sub-volumes;

D) sending in response to the first render request two or more first data sets corresponding to the two or more first sub-volumes to one or more graphics units on behalf of the client digital data processor, where the two or more first sub-volumes are rendered by the one or more graphics units on behalf of the client digital data processor;

E) storing in a first server side cache the rendered two or more first sub-volumes of step (D) at a first resolution;

F) sending the first digital image View to the client digital data processor;

G) responding to a second render request of a second data volume corresponding to a second digital image View from the client digital data processor in communication with the server digital data processor by breaking down the second data volume into two or more second sub-volumes;

H) sending in response to the second render request one or more second data sets corresponding to one or more second sub-volumes of the two or more second sub-volumes to one or more graphics units on behalf of the client digital data processor, where one of the two or more second sub-volumes corresponds with a first sub-volume of the first digital image View stored in the first server side cache at the first resolution, where the first sub-volume of the first digital image View is reused as the one of the two or more second sub-volumes;

I) executing one or more second render commands to render the one or more second sub-volumes; and

J) sending to the client digital data processor the rendered one or more second sub-volumes of step (I) in response to the second render request to modify the first digital image View and generate the second digital image View.

2. The method of claim 1 , where the first resolution is selected from a plurality of resolution levels.

3. The method of claim 2 , where the second digital image View is rendered at a second resolution selected from the plurality of resolution levels, where the first resolution is higher than the second resolution.

4. The method of claim 1 , where the second digital image View is a rotation of the first digital image View.

5. The method of claim 1 , where the first digital image View stored in the first server side cache is sufficient to construct a higher resolution level than shown in the first digital image View.

6. The method of claim 1 , where the first digital image View stored in the first server side cache is sufficient to construct a higher resolution level than shown in the second digital image View.

7. The method of claim 1 , where breaking down the first data volume into two or more sub-volumes improves efficiency of rendering images.

8. The method of claim 1 , where reusing the first sub-volume of the first digital image View as the one of the two or more second sub-volumes in step (H) improves efficiency of rendering images.

9. A method for rendering images comprising:

A) executing a render server program on a server digital data processor;

B) responding to a first render request of a first data volume corresponding to a first View from a client digital data processor in communication with the server digital data processor by breaking down the first data volume into two or more first sub-volumes;

C) executing two or more first render commands to render independently the two or more first sub-volumes;

D) sending in response to the first render request two or more first data sets corresponding to the two or more first sub-volumes to one or more graphics units on behalf of the client digital data processor where the two or more first sub-volumes are rendered by the one or more graphics units on behalf of the client digital data processor;

E) storing in a first server side cache the rendered two or more first sub-volumes corresponding to the first View at a first resolution;

F) sending the first View to the client digital data processor;

G) responding to a second render request of a second data volume corresponding to a second View from the client digital data processor in communication with the server digital data processor by breaking down the second data volume into two or more second sub-volumes;

H) sending in response to the second render request one or more second data sets corresponding to one or more second sub-volumes of the two or more second sub-volumes to one or more graphics units on behalf of the client digital data processor, where one of the two or more second sub-volumes corresponds with a first sub-volume of the first View stored in the first server side cache at the first resolution, where the first sub-volume of the first View is reused as the one of the two or more second sub-volumes;

I) executing one or more second render commands to render the one or more second sub-volumes not rendered in the first View; and

J) sending to the client digital data processor the rendered one or more second sub-volumes of step (I) in response to the second render request to modify the first View and generate the second View.

10. The method of claim 9 , where the first resolution is selected from a plurality of resolution levels.

11. The method of claim 10 , where the second View is rendered at a second resolution selected from the plurality of resolution levels, where the first resolution is higher than the second resolution.

12. The method of claim 9 , where the first View is sent to the client digital data processor at a lower resolution than the first resolution.

13. The method of claim 9 , where the second View is a rotation of the first View.

14. The method of claim 9 , where the second View is sent with full resolution when the mouse is released.

15. A system for rendering images comprising:

one or more client digital data processors;

a render server, executing on a server digital data processor, the render server responding to a first render request of a first data volume corresponding to a first View from the one or more client digital data processors by breaking down the first data volume into two or more first sub-volumes, executing two or more first render commands to render independently the two or more first sub-volumes, where the render server responds to the first render requests by sending to the client digital data processor two or more first data sets corresponding to the two or more first sub-volumes to one or more graphics units corresponding to the first View at a first resolution which is stored in a server side cache;

the render server responding to a second render request of a second data volume corresponding to a second View by breaking down the second data volume into two or more second sub-volumes, sending in response to the second render request one or more second data sets corresponding to one or more second sub-volumes of the two or more second sub-volumes to one or more graphics units on behalf of the one or more client digital data processor, where one of the two or more second sub-volumes corresponds with a first sub-volume of the first View stored in a first server side cache at the first resolution, where the first sub-volume of the first View is reused as the one of the two or more second sub-volumes; and

the render server executing one or more second render commands to render the one or more second sub-volumes not rendered in the first View, calculating and sending to the one or more client digital data processor the rendered one or more second sub-volumes in response to the second render request to modify the first View and generate the second View.

16. The system of claim 15 , where the second View is constructed from the first sub-volume of the first View corresponding to the one of the two or more second sub-volumes stored in the server side cache.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2016
From: PME IP AUSTRALIA PTY LTD
To: PME IP PTY LTD
Reel/Frame 037572/0017 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2013
From: WESTERHOFF, MALTE; STALLING, DETLEV
To: PME IP AUSTRALIA PTY LTD
Reel/Frame 031190/0737 →
Continuity (3)
Continuation In Part 13684464 · Nov 23, 2012
Continuation 12275421 · Nov 21, 2008
Provisional Application 60989881 · Nov 23, 2007