System for optimizing graphics operations
First Claim
Patent Images
1. A method of creating an image utilizing a central processing unit (CPU) and a graphics processing unit (GPU), the method comprising the steps of:
- representing, in memory, an image by an image graph wherein the image graph comprises one or more GPU programs represented as nodes in the image graph, inputs to the one or more GPU programs and outputs from the one or more GPU programs wherein the inputs and outputs are represented as links in the image graph;
optimizing said image graph by running software on said CPU wherein optimizing comprises consolidating multiple GPU programs into one GPU program to create an optimized image graph;
wherein optimizing said image graph further comprises;
under control of said CPU, starting with the root GPU program, calling the following groups of objects for each GPU program that must be run in order that the root GPU program may run to render said image graph of GPU programs;
one or more objects for analyzing whether two GPU programs may be combined, and performing a combination if said analysis is positive wherein analyzing comprises analysis of inputs to the two GPU programs and outputs from the two GPU programs;
one or more objects for performing region of interest (ROI) and domain of definition (DOD) optimization, wherein the DOD comprises all places in an image that are explicitly defined and not transparent and the ROI comprises the portion of the input image that is necessary to compute the given output DOD; and
using the CPU to determine if GPU programs may be combined;
compiling said optimized image graph by running software on said CPU to create a compiled image graph; and
rendering said image graph by running said compiled image graph on a GPU, yielding a rendered image.
2 Assignments
0 Petitions
Accused Products
Abstract
Disclosed is a system for producing images including techniques for reducing the memory and processing power required for such operations. The system provides techniques for programmatically representing a graphics problem. The system further provides techniques for reducing and optimizing graphics problems for rendering with consideration of the system resources, such as the availability of a compatible GPU.
-
Citations
34 Claims
-
1. A method of creating an image utilizing a central processing unit (CPU) and a graphics processing unit (GPU), the method comprising the steps of:
-
representing, in memory, an image by an image graph wherein the image graph comprises one or more GPU programs represented as nodes in the image graph, inputs to the one or more GPU programs and outputs from the one or more GPU programs wherein the inputs and outputs are represented as links in the image graph; optimizing said image graph by running software on said CPU wherein optimizing comprises consolidating multiple GPU programs into one GPU program to create an optimized image graph; wherein optimizing said image graph further comprises; under control of said CPU, starting with the root GPU program, calling the following groups of objects for each GPU program that must be run in order that the root GPU program may run to render said image graph of GPU programs; one or more objects for analyzing whether two GPU programs may be combined, and performing a combination if said analysis is positive wherein analyzing comprises analysis of inputs to the two GPU programs and outputs from the two GPU programs; one or more objects for performing region of interest (ROI) and domain of definition (DOD) optimization, wherein the DOD comprises all places in an image that are explicitly defined and not transparent and the ROI comprises the portion of the input image that is necessary to compute the given output DOD; and using the CPU to determine if GPU programs may be combined; compiling said optimized image graph by running software on said CPU to create a compiled image graph; and rendering said image graph by running said compiled image graph on a GPU, yielding a rendered image. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A method for creating a rendered polygon using an image graph based representation of graphics processing unit (GPU) programs, the method comprising the steps of:
-
under control of a CPU, receiving a request to render a polygon; under control of said CPU, creating an image graph based representation of GPU programs to create said rendered polygon, the image graph based representation comprising a root GPU program and its relationship with other GPU programs, wherein said GPU programs are represented as nodes with their inputs and outputs represented as links; under control of said CPU, starting with the root GPU program, calling the following groups of objects for each GPU program that must be run in order that the root GPU program may run to render said polygon; one or more objects for analyzing whether two GPU programs may be combined, and performing a combination if said analysis is positive wherein analyzing comprises analysis of inputs to the two GPU programs and outputs from the two GPU programs; one or more objects for performing region of interest (ROI) and domain of definition (DOD) optimization, wherein the DOD comprises all places in an image that are explicitly defined and not transparent and the ROI comprises the portion of the input image that is necessary to compute the given output DOD; and one or more objects for creating a buffer and causing a GPU to render an image to that buffer by running a GPU program. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A method for creating a rendered image using an image graph based relationship of graphics processing unit (‘
- GPU) programs, the method comprising the steps of;
under control of said CPU, creating an image graph representing said rendered image wherein said image graph comprises a representation of one or more GPU programs as nodes in the graph; inputs to the one or more GPU programs and outputs from the one or more GPU programs as links in the image graph; under control of said CPU, starting with a root node in said graph, calling the following groups of objects for each node that must be calculated in order that the root node may be calculated; one or more objects for analyzing whether two GPU programs may be combined, and performing a combination if said analysis is positive wherein analyzing comprises analysis of inputs to the two GPU programs and outputs from the two GPU programs; one or more domain of definition (DOD) and/or region of interest (ROI) objects for performing DOD/ROI optimization, wherein the DOD comprises all places in an image that are explicitly defined and not transparent and the ROI comprises the portion of the input image that is necessary to compute the given output DOD; and one or more objects for creating a buffer and causing a GPU to render an image to that buffer by running a GPU program. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34)
- GPU) programs, the method comprising the steps of;
Specification