A graphics rendering system is provided for controlling the rendering of images to manage expected errors. The graphics rendering system receives a specification of a render task to be performed to render an image of a graphics scene and then identifies computing devices that each have a graphics processing unit. The graphics rendering system directs each of the identified computing devices to render the image specified by the render task such that each identified computing device renders the same image. When the graphics rendering system detects that a computing device has completed the render task successfully, it provides the image rendered by that computing device as the rendered image of the render task such that any other image rendered by another of the computing devices is not needed.
Legal claims defining the scope of protection, as filed with the USPTO.
1. One or more computer-readable storage mediums storing computer-executable instructions for controlling the rendering of images, the computer-executable instructions comprising instructions that: receive a specification of a render task to be performed to render an image of a graphics scene; identify computing devices that each have a graphics processing unit, the computing devices comprising at least a first computing device and a second computing device; direct each of the computing devices to render the image specified by the render task such that each computing device renders the same image; receive an indication that the first computing device has completed the render task as directed to produce a first rendered image of the graphics scene; receive an indication that the second computing device has completed the render task to produce a second rendered image of the graphics scene; provide the first rendered image rendered by the first computing device such that any other image rendered by another of the computing devices is not needed; and discard the second rendered image rendered by the second computing device.
2. The one or more computer-readable storage mediums of claim 1 wherein the render task is performed by a virtual machine executing on an identified computing device.
3. The one or more computer-readable storage mediums of claim 2 wherein a virtual machine accesses a virtual graphics processing unit.
4. The one or more computer-readable storage mediums of claim 1 wherein the graphics processing units are commodity graphics processing units.
5. The one or more computer-readable storage mediums of claim 1 wherein the instructions notify a computing device that is rendering an image when the image has been rendered successfully by another computing device.
6. The one or more computer-readable storage mediums of claim 1 wherein the instructions that provide the image also provide the image rendered by the first computing device that was successful in rendering the image.
7. The one or more computer-readable storage mediums of claim 1 wherein the image is rendered as part of a game program and wherein the computing devices are identified from a pool of computing devices executing virtual machines allocated to an instance of the game program.
8. The one or more computer-readable storage mediums of claim 1 including instructions that, when the render task specifies to render the image in multiple resolutions, directs multiple identified computing devices to render the image in each of the multiple resolutions.
9. The one or more computer-readable storage mediums of claim 1 including instructions that, when the render task specifies to render the image in multiple languages, directs multiple identified computing devices to render the image in each of the multiple languages.
10. The one or more computer-readable storage mediums of claim 1 including instructions that divide the render task into render subtasks; for each of the render subtasks, direct multiple computing devices to perform that render subtask; and combine results for the subtasks into a rendered image.
11. A method for rendering of images in a cloud computing platform having graphics processing unit (“GPU”) servers with commodity graphics processing units, the method comprising: allocating to a program a pool of virtual machines for executing on the GPU servers, the virtual machines interfacing with a virtual graphics processing unit; receiving from the program a specification of a render task to be performed to render an image; identifying virtual machines from the pool of virtual machines to perform the render task, the identified virtual machines executing on different GPU servers with commodity graphics processing units; for each of the identified virtual machines, directing that virtual machine to render the image as specified by the render task such that each identified virtual machine is directed to render the same image; upon first detecting that a first virtual machine has successfully rendered the image to produce a rendered image, provide to the program the rendered image rendered by the first virtual machine; and upon first detecting that the first virtual machine has successfully rendered the image, provide an instruction to stop rendering the image to a second virtual machine from the identified virtual machines.
12. The method of claim 11 , wherein the program is a game program with a server-side component executing on one or more servers of the cloud platform that interface with client-side components of the game program executing on devices of players of the game program.
13. The method of claim 11 wherein when the render task specifies to render the image in multiple resolutions, multiple identified virtual machines are directed to render the image in each of the multiple resolutions.
14. The method of claim 11 wherein when the render task specifies to render the image in multiple languages, multiple identified virtual machines are directed to render the image in each of the multiple languages.
15. The method of claim 11 , further comprising: dividing the render task into render subtasks for rendering sub-images; for each of the render subtasks, directing multiple virtual machines to perform that render subtask; and combining a rendered sub-image rendered for each of the subtasks into a rendered image.
16. A method performed by a computer system for rendering images, the method comprising: receiving a specification of a render task to be performed to render an image; identifying computing devices that each have a graphics processing unit; directing each of the identified computing devices to render the image specified by the render task such that each identified computing device starts rendering the image; when a first computing device successfully completes the render task to produce a first rendered image, providing the first rendered image rendered by the first computing device as a rendered image of the render task such that any other image rendered by another of the identified computing devices is not needed; and discarding a second successfully rendered image by a second computing device.
17. The method of claim 16 wherein the image is rendered as part of a game program and wherein the computing devices are identified from a pool of computing devices executing virtual machines allocated to an instance of the game program.
18. The method of claim 16 further comprising when the render task specifies to render the image in multiple resolutions, directing multiple identified computing devices to render the image in each of the multiple resolutions.
19. The method of claim 16 further comprising when the render task specifies to render the image in multiple languages, directing multiple identified computing devices to render the image in each of the multiple languages.
20. The method of claim 16 further comprising: dividing the render task into render subtasks; for each of the render subtasks, directing multiple computing devices to perform that render subtask; and combining results for the subtasks into a rendered image.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
October 14, 2013
September 3, 2019
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.