US6191800B1 - Dynamic balancing of graphics workloads using a tiling strategy - Google Patents

Dynamic balancing of graphics workloads using a tiling strategy Download PDF

Info

Publication number
US6191800B1
US6191800B1 US09/132,856 US13285698A US6191800B1 US 6191800 B1 US6191800 B1 US 6191800B1 US 13285698 A US13285698 A US 13285698A US 6191800 B1 US6191800 B1 US 6191800B1
Authority
US
United States
Prior art keywords
rendering
tile
tiles
display device
frame
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.)
Expired - Lifetime
Application number
US09/132,856
Inventor
Robert Thomas Arenburg
Andrew Kent Taylor
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US09/132,856 priority Critical patent/US6191800B1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ARENBURG, ROBERT T., TAYLOR, ANDREW K.
Application granted granted Critical
Publication of US6191800B1 publication Critical patent/US6191800B1/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory

Definitions

  • the present invention generally relates to computer systems, and more particularly to the generation of computer graphics employing an improved method of balancing graphics workloads using multiple concurrent rendering processes to refresh the computer display, the method utilizing a novel tiling strategy.
  • Computer system 10 has at least one central processing unit (CPU) or processor 12 which is connected to several peripheral devices, including input/output devices 14 (such as a display monitor, keyboard, and graphical pointing device) for the user interface, a permanent memory device 16 (such as a hard disk) for storing the computer's operating system and user programs, and a temporary memory device 18 (such as random access memory or RAM) that is used by processor 12 to carry out program instructions.
  • processor 12 communicates with the peripheral devices by various means, including a bus 20 or a direct channel 22 .
  • Computer system 10 may have many additional components which are not shown, such as serial and parallel ports for connection to, e.g., modems or printers.
  • Computer system 10 also includes firmware 24 whose primary purpose is to seek out and load an operating system from one of the peripherals (usually permanent memory device 16 ) whenever the computer is first turned on.
  • GUI graphical user interface
  • a generic application program entitled “Document Manager” is presented by the GUI as a primary application window (parent window) 26 on a display device 28 (i.e., video monitor).
  • the application window has several secondary, enclosed windows (child windows) 30 , 32 and 34 which depict the contents of various files that are handled by the program.
  • the file depicted in window 32 is a video animation (moving images).
  • a menu bar 36 with a standard set of commands, a toolbar 38 , and a status bar 40 may be provided as part of the GUI, to simplify manipulation and control of the objects (e.g., text, charts and graphics) within the child windows, using a graphical pointer 42 which is controlled by a pointing device (mouse).
  • objects e.g., text, charts and graphics
  • a graphical pointer 42 which is controlled by a pointing device (mouse).
  • the present invention is directed to a method of handling graphics workloads which are used by the computer system to repaint the screen.
  • a computer program (including an operating system which is responsible for displaying a GUI) can be broken down into a collection of processes which are executed by the processor(s).
  • the smallest unit of operation to be performed within a process is referred to as a thread.
  • Threads allow multiple execution paths within a single address space (the process context) to run concurrently on a processor. This “multithreading” increases throughput in a multi-processor system, and provides modularity in a uni-processor system.
  • a “rendering process” refers to either a thread of an application or a distinct application.
  • “concurrent rendering processes” refers to two or more threads of an application, two or more applications on the same system, two or more applications on different systems, or a combination of these, all rendering portions of an image (concurrent rendering processes can be distributed among several processes in a cluster).
  • One possible way in which the work may be distributed among the available rendering processes is to subdivide the display into multiple rectangular regions, or tiles, and then assign one or more tiles to a process. While this simple technique does distribute the work to the available processes, it may not be optimal in the sense that each process may or may not perform an equal share of the work.
  • a window is divided vertically into right and left sides (only two tiles). If an object (image) is rendered in the center of the window, then the workload will be approximately equal between the two tiles, but if the object is located in the right tile then the process associated with this tile will do all the work leaving the process associated with the left tile with very little work to perform.
  • a common approach to solving this workload distribution problem is to simply subdivide the window into a large number of fixed size tiles, and then assign to each rendering process a set of several tiles which are distributed over the entire window.
  • the set of tiles is determined in a static manner (i.e., according to a predetermined function).
  • the expectation with this approach is that, no matter where an object is placed, the rendering workload will be distributed relatively equally among the rendering processes.
  • the workload will become more evenly distributed with this approach.
  • this strategy can be effective, it can also lead to a great deal of complexity in designing a graphics subsystem in which a single process can efficiently render multiple tiles, due to the additional burden of managing multiple tiles. This overhead burden can adversely affect graphics generation, wiping out any performance gains that might otherwise be achieved using tiling.
  • a method of generating graphic images on a display device of a computer system generally comprising the steps of dividing the viewable area of the display device into a plurality of tiles, assigning each of the tiles to a respective one of a plurality of rendering processes, rendering a frame on the display device using the respective rendering processes, and adjusting the sizes of at least two of the tiles in response to the rendering step.
  • the method then uses the adjusted tile sizes to render the next frame with the respective rendering processes. In certain situations, it may be desirable to constrain the tile areas from becoming too small, in which case they are assigned a predetermined minimum value.
  • the adjusted tile sizes may optionally be smoothed, such as by averaging in weighted sizes from previous frames.
  • the tile sizes are adjusted by measuring the rendering times required for each rendering process to complete a respective portion of the frame, and then resizing the tiles based on the measured rendering times.
  • FIG. 1 is a block diagram of a conventional computer system
  • FIG. 2 is an illustration of a computer display showing a conventional graphical user interface (GUI) having various windows for viewing different multimedia content, such as text, graphics, and video animation;
  • GUI graphical user interface
  • FIGS. 3A-3C are illustrations of a computer display showing how the viewable area of the display is divided into three vertical tiles to generate graphic images, and how the tiles are dynamically resized, in accordance with a simplified implementation of the present invention.
  • FIG. 4 is a chart depicting logic flow according to the method of the present invention for dynamically balancing graphics workloads using the tiling strategy illustrated in FIGS. 3A-3C.
  • the present invention is directed to a data processing system which speeds up generation of graphic images by utilizing multiple concurrent rendering processes to refresh a video display.
  • the invention is particularly advantageous when performing animation on a computer display.
  • the computer system's hardware may include the various components shown in FIG. 1, but the computer system is not necessarily conventional, i.e., it could include new hardware components as well, or have a novel interconnection architecture for existing components. Therefore, while the present invention may be understood with reference to FIG. 1, this reference should not be construed in a limiting sense.
  • the method of the present invention may further be adapted for use with existing operating systems such as OS/2 (a trademark of International Business Machines Corp.) or Windows 98 (a trademark of Microsoft Corp.).
  • the present invention introduces the concept of dynamically balancing graphics workloads among the available rendering processes, by subdividing the window or display into multiple rectangular regions or tiles, assigning a single tile to each rendering process, and then distributing the workload by adjusting the tile size so that each process gets approximately equal amounts of work to perform.
  • this technique is particularly advantageous for use in an application performing some type of animation sequence which requires high frame rates.
  • the illustrative embodiment assumes some degree of communication/collaboration between the rendering processes.
  • FIG. 3A depicts a graphical user interface (GUI) 50 which is generated using the novel tiling strategy of the present invention.
  • GUI 50 is presented on a display device 52 of the computer system, and may include standard features such as the menu bar 54 , toolbar 56 , status bar 58 , and graphical pointer 60 .
  • a preselected number of tiles are evenly arranged to construct the GUI.
  • three vertical tiles of generally equal size are shown by the dashed lines forming a grid in FIG. 3 A.
  • Each of the tiles is assigned to a respective rendering process.
  • FIG. 3A also depicts a champagne bottle which is being opened (uncorked) in a video animation window 62 . In this initial frame, the bottle is shown fully corked.
  • the cork of the champagne bottle has been moved to the lip of the bottle.
  • the sizes of the tiles have also been adjusted dynamically based on the amount of work that was performed in advancing to the second frame. Since the primary movement was the cork, the tile to the left of the cork has enlarged to include a portion of the cork, so as to divide up the job of rendering the cork motion between two tiles (the left and center tiles).
  • the tile to the right of graphical pointer 60 (which was also moved slightly by the user) has also been enlarged to include the graphical pointer. This adjustment of the tile sizes begins to balance out the workloads between the processes handling the respective tiles.
  • the cork of the champagne bottle has exited the bottle and champagne is splashing out.
  • the sizes of the tiles have again been adjusted, with the center tile shrinking even smaller to include the central portion of the splashing champagne, and the changing number in the elapsed time field.
  • FIGS. 3A-3C conceptually illustrate an overly simplified, specific example of how the present invention may be implemented. More generally, the technique may be applied to any number of tiles with more complicated restructuring of the tile sizes (and not necessarily limited to vertical tiles).
  • the method is accomplished by having each process update its tile geometry/size and measure the time required to render its portion of the image. Based on the current tile configurations and rendering times, new tile sizes are calculated.
  • the new tile configurations may be smoothed using a weighted average technique to minimize oscillations in the solution, as explained further below. Finally, the procedure is repeated as each process again updates its tile geometry/size, and measures the latest time required to render its portion of the new image.
  • the innovative feature of the proposed solution focuses on continuously updating the tile geometries so that the work is distributed equally among the processes and maximum scalability is achieved as additional processes are added. This requires solving the following problem.
  • a window of total area A The window is subdivided into a series of non-overlapping tiles a( 1 ), a( 2 ), a( 3 ), . . . , a(N), where N is some integer greater than 1. It is assumed for this implementation that each rendering process is assigned to only one tile.
  • the following expression for the total window area A is then obtained in terms of the individual tiles:
  • This condition describes the situation in which all of the rendering process are each performing an equal amount of work. To solve these equations a relationship is needed between the rendering times and the tile areas. This relationship is developed by utilizing the information from the last rendered frame in the animation sequence, as follows:
  • a_last(i) and t_last(i) are the tile area and the rendering time respectively for the i-th tile from the last rendered frame.
  • Eqs. 1-3 may require resorting to a numerical solution technique.
  • an approximate solution may be employed by first using Eq. 5 to obtain the initial unconstrained solution. If a tile is found with an area less than A_Minimum, then this tile area is set to A_Minimum, and in turn all the other tile areas are proportionately reduced so that Eq. 1 still applies. This procedure may have to be repeated numerous times as needed for any additional tiles which satisfy Eq. 6.
  • a_avg [ w ( 0 )* a ( j )]+[ w ( 1 )* a ( j ⁇ 1)]+[ w ( 2 )* a ( j ⁇ 2)]+ . . . +[ w ( M )* a ( j ⁇ M )] (Eq. 7)
  • a_avg is the averaged tile area
  • M is the number of previous frames used in the averaging
  • a(j) is the current solution for the i-th tile from Eq. 5
  • a(j ⁇ 1) is the i-th tile for at the j ⁇ 1 animation frame
  • a(j ⁇ 2) is the i-th tile for at the j ⁇ 2 animation frame
  • so on for the remaining animation frames.
  • each w(i) is a weighing factor.
  • a_avg W*a ( j )+[(1 ⁇ W )* a ( j ⁇ 1)] (Eq. 9)
  • FIG. 4 is a flow chart which summarizes the basic logic carried out the by present invention.
  • the first step is to initialize the tile settings ( 70 ). Suitable values for N (the total number of tiles) preferably range from 2 to 10. Each tile is updated one frame, and the various times that it takes for each tile to be rendered are measured ( 72 ). New tile sizes are then calculated, using Eqs. 5b and 5a, constrained by Eq. 6 ( 74 ). The new tile configurations are smoothed using the weighting of Eq. 7 ( 76 ). Once the final tile area values a(i) are known, the relative geometries are determined using standard topological techniques ( 78 ). The logic flow then returns to step 72 for repeated iterations.
  • the technique described herein provides a novel load balancing technique for use when a graphics animation sequence is rendering by multiple processes utilizing a tiling strategy for work division.
  • the unique aspect of the solution methodology consists of continuously monitoring the rendering times of each tile and then adjusting the tile size so the workload is distributed among the tiles into approximately equal amounts.
  • a set of algebraic equations are described which distribute the workload in a near optimal fashion. These equations yield a simple closed form solution, as shown in Eq. 5. Performance measurements indicate rendering speed-ups of approximately 20% over a similar statically tiled solution are possible.
  • the invention is particularly useful in rendering three-dimensional (3-D) graphic animation and when used in a multi-processor system where concurrent rendering processes can be distributed among several processes in a cluster.

Abstract

A method of generating graphic images on a display device of a computer system, by dividing the viewable area of the display device into a plurality of tiles, assigning each of the tiles to respective rendering processes, rendering a frame on the display device using the rendering processes, and adjusting the sizes of the tiles in response to the rendering step. The method then uses the adjusted tile sizes to render the next frame. The tile areas are preferably constrained from becoming too small. The adjusted tile sizes may optionally be smoothed, such as by averaging in weighted sizes from previous frames. The tile sizes are adjusted by measuring the rendering times required for each rendering process to complete a respective portion of the frame, and then resizing the tiles based on the measured rendering times.

Description

BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention generally relates to computer systems, and more particularly to the generation of computer graphics employing an improved method of balancing graphics workloads using multiple concurrent rendering processes to refresh the computer display, the method utilizing a novel tiling strategy.
2. Description of Related Art
The basic structure of a conventional computer system 10 is shown in FIG. 1. Computer system 10 has at least one central processing unit (CPU) or processor 12 which is connected to several peripheral devices, including input/output devices 14 (such as a display monitor, keyboard, and graphical pointing device) for the user interface, a permanent memory device 16 (such as a hard disk) for storing the computer's operating system and user programs, and a temporary memory device 18 (such as random access memory or RAM) that is used by processor 12 to carry out program instructions. Processor 12 communicates with the peripheral devices by various means, including a bus 20 or a direct channel 22. Computer system 10 may have many additional components which are not shown, such as serial and parallel ports for connection to, e.g., modems or printers. Those skilled in the art will further appreciate that there are other components that might be used in conjunction with those shown in the block diagram of FIG. 1; for example, a display adapter connected to processor 12 might be used to control a video display monitor, and a memory controller may be used as an interface between temporary memory device 18 and processor 12. Computer system 10 also includes firmware 24 whose primary purpose is to seek out and load an operating system from one of the peripherals (usually permanent memory device 16) whenever the computer is first turned on.
With further reference to FIG. 2, conventional computer systems often employ a graphical user interface (GUI) to present information in a graphical form to the user. In the example of FIG. 2, a generic application program entitled “Document Manager” is presented by the GUI as a primary application window (parent window) 26 on a display device 28 (i.e., video monitor). In this example, the application window has several secondary, enclosed windows (child windows) 30, 32 and 34 which depict the contents of various files that are handled by the program. The file depicted in window 32 is a video animation (moving images). A menu bar 36 with a standard set of commands, a toolbar 38, and a status bar 40 may be provided as part of the GUI, to simplify manipulation and control of the objects (e.g., text, charts and graphics) within the child windows, using a graphical pointer 42 which is controlled by a pointing device (mouse).
As computer systems have become more powerful, applications have been developed which present much more graphic-intensive data, including video animation. The presentation of such multimedia information can often strain the abilities of the computer system, since it may take a significant amount of time for the operating system and hardware to repaint (refresh) the display screen each time a change is to occur in the video output. The present invention is directed to a method of handling graphics workloads which are used by the computer system to repaint the screen.
One strategy for speeding up the generation of computer graphics consists of utilizing multiple concurrent rendering processes to perform animation. A computer program (including an operating system which is responsible for displaying a GUI) can be broken down into a collection of processes which are executed by the processor(s). The smallest unit of operation to be performed within a process is referred to as a thread. The use of threads in modern operating systems is well known. Threads allow multiple execution paths within a single address space (the process context) to run concurrently on a processor. This “multithreading” increases throughput in a multi-processor system, and provides modularity in a uni-processor system.
In this context, a “rendering process” refers to either a thread of an application or a distinct application. Additionally, “concurrent rendering processes” refers to two or more threads of an application, two or more applications on the same system, two or more applications on different systems, or a combination of these, all rendering portions of an image (concurrent rendering processes can be distributed among several processes in a cluster). Thus, by dividing up the task of rendering an image between multiple rendering processes, substantial performance gains may be obtained. The difficultly lies in dividing up the workload to be performed in an efficient manner.
One possible way in which the work may be distributed among the available rendering processes is to subdivide the display into multiple rectangular regions, or tiles, and then assign one or more tiles to a process. While this simple technique does distribute the work to the available processes, it may not be optimal in the sense that each process may or may not perform an equal share of the work. Consider the simple problem in which a window is divided vertically into right and left sides (only two tiles). If an object (image) is rendered in the center of the window, then the workload will be approximately equal between the two tiles, but if the object is located in the right tile then the process associated with this tile will do all the work leaving the process associated with the left tile with very little work to perform.
A common approach to solving this workload distribution problem is to simply subdivide the window into a large number of fixed size tiles, and then assign to each rendering process a set of several tiles which are distributed over the entire window. The set of tiles is determined in a static manner (i.e., according to a predetermined function). The expectation with this approach is that, no matter where an object is placed, the rendering workload will be distributed relatively equally among the rendering processes. Certainly, as the number of tiles increases, the workload will become more evenly distributed with this approach. Thus, while this strategy can be effective, it can also lead to a great deal of complexity in designing a graphics subsystem in which a single process can efficiently render multiple tiles, due to the additional burden of managing multiple tiles. This overhead burden can adversely affect graphics generation, wiping out any performance gains that might otherwise be achieved using tiling.
None of the prior art techniques for handling graphics workloads address the fundamental problem of how to optimally distribute the rendering workload among several processes. It would, therefore, be desirable to devise an improved method of balancing graphics workloads when a graphics animation sequence is rendered by multiple processes, which addresses this problem. It would be further advantageous if the method were easily scalable to any number of processes.
SUMMARY OF THE INVENTION
It is therefore one object of the present invention to provide improved generation of computer graphics for a computer system, wherein the system manages graphics workloads using multiple concurrent rendering processes.
It is another object of the present invention to provide such a method of generating computer graphics which dynamically balances graphics workloads using a tiling strategy.
It is yet another object of the present invention to provide such a method which more evenly distributes work to be performed among the tiles and, hence, among the processes, in order to speed up graphics generation.
The foregoing objects are achieved in a method of generating graphic images on a display device of a computer system, generally comprising the steps of dividing the viewable area of the display device into a plurality of tiles, assigning each of the tiles to a respective one of a plurality of rendering processes, rendering a frame on the display device using the respective rendering processes, and adjusting the sizes of at least two of the tiles in response to the rendering step. The method then uses the adjusted tile sizes to render the next frame with the respective rendering processes. In certain situations, it may be desirable to constrain the tile areas from becoming too small, in which case they are assigned a predetermined minimum value. The adjusted tile sizes may optionally be smoothed, such as by averaging in weighted sizes from previous frames. The tile sizes are adjusted by measuring the rendering times required for each rendering process to complete a respective portion of the frame, and then resizing the tiles based on the measured rendering times.
The above as well as additional objectives, features, and advantages of the present invention will become apparent in the following detailed written description.
BRIEF DESCRIPTION OF THE DRAWINGS
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives, and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
FIG. 1 is a block diagram of a conventional computer system;
FIG. 2 is an illustration of a computer display showing a conventional graphical user interface (GUI) having various windows for viewing different multimedia content, such as text, graphics, and video animation;
FIGS. 3A-3C are illustrations of a computer display showing how the viewable area of the display is divided into three vertical tiles to generate graphic images, and how the tiles are dynamically resized, in accordance with a simplified implementation of the present invention; and
FIG. 4 is a chart depicting logic flow according to the method of the present invention for dynamically balancing graphics workloads using the tiling strategy illustrated in FIGS. 3A-3C.
DESCRIPTION OF AN ILLUSTRATIVE EMBODIMENT
The present invention is directed to a data processing system which speeds up generation of graphic images by utilizing multiple concurrent rendering processes to refresh a video display. The invention is particularly advantageous when performing animation on a computer display. The computer system's hardware may include the various components shown in FIG. 1, but the computer system is not necessarily conventional, i.e., it could include new hardware components as well, or have a novel interconnection architecture for existing components. Therefore, while the present invention may be understood with reference to FIG. 1, this reference should not be construed in a limiting sense. The method of the present invention may further be adapted for use with existing operating systems such as OS/2 (a trademark of International Business Machines Corp.) or Windows 98 (a trademark of Microsoft Corp.).
With reference now to FIGS. 3A-3C, the present invention introduces the concept of dynamically balancing graphics workloads among the available rendering processes, by subdividing the window or display into multiple rectangular regions or tiles, assigning a single tile to each rendering process, and then distributing the workload by adjusting the tile size so that each process gets approximately equal amounts of work to perform. As will become apparent to those skilled in the art, this technique is particularly advantageous for use in an application performing some type of animation sequence which requires high frame rates. The illustrative embodiment assumes some degree of communication/collaboration between the rendering processes.
FIG. 3A depicts a graphical user interface (GUI) 50 which is generated using the novel tiling strategy of the present invention. GUI 50 is presented on a display device 52 of the computer system, and may include standard features such as the menu bar 54, toolbar 56, status bar 58, and graphical pointer 60. For the initial frame, a preselected number of tiles are evenly arranged to construct the GUI. In the depicted example, three vertical tiles of generally equal size are shown by the dashed lines forming a grid in FIG. 3A. Each of the tiles is assigned to a respective rendering process. FIG. 3A also depicts a champagne bottle which is being opened (uncorked) in a video animation window 62. In this initial frame, the bottle is shown fully corked.
In the second frame, shown in FIG. 3B, the cork of the champagne bottle has been moved to the lip of the bottle. The sizes of the tiles have also been adjusted dynamically based on the amount of work that was performed in advancing to the second frame. Since the primary movement was the cork, the tile to the left of the cork has enlarged to include a portion of the cork, so as to divide up the job of rendering the cork motion between two tiles (the left and center tiles). The tile to the right of graphical pointer 60 (which was also moved slightly by the user) has also been enlarged to include the graphical pointer. This adjustment of the tile sizes begins to balance out the workloads between the processes handling the respective tiles.
In the third frame, shown in FIG. 3C, the cork of the champagne bottle has exited the bottle and champagne is splashing out. The sizes of the tiles have again been adjusted, with the center tile shrinking even smaller to include the central portion of the splashing champagne, and the changing number in the elapsed time field. By further adjusting the size of the tiles around the animated portions of the video display, the overall workload is dynamically redistributed in a more even fashion.
FIGS. 3A-3C conceptually illustrate an overly simplified, specific example of how the present invention may be implemented. More generally, the technique may be applied to any number of tiles with more complicated restructuring of the tile sizes (and not necessarily limited to vertical tiles). The method is accomplished by having each process update its tile geometry/size and measure the time required to render its portion of the image. Based on the current tile configurations and rendering times, new tile sizes are calculated. Optionally, the new tile configurations may be smoothed using a weighted average technique to minimize oscillations in the solution, as explained further below. Finally, the procedure is repeated as each process again updates its tile geometry/size, and measures the latest time required to render its portion of the new image.
The innovative feature of the proposed solution focuses on continuously updating the tile geometries so that the work is distributed equally among the processes and maximum scalability is achieved as additional processes are added. This requires solving the following problem. Consider a window of total area A. The window is subdivided into a series of non-overlapping tiles a(1), a(2), a(3), . . . , a(N), where N is some integer greater than 1. It is assumed for this implementation that each rendering process is assigned to only one tile. The following expression for the total window area A is then obtained in terms of the individual tiles:
A=a(1)+a(2)+a(3)+ . . . +a(N)  (Eq. 1).
If the time required to render a given tile a(i) is t(i), then the optimal rendering would require:
t(1)=t(2)=t(3)= . . . =t(N)  (Eq. 2).
This condition describes the situation in which all of the rendering process are each performing an equal amount of work. To solve these equations a relationship is needed between the rendering times and the tile areas. This relationship is developed by utilizing the information from the last rendered frame in the animation sequence, as follows:
t(i)=c(i)*a(i) fori=1, 2, 3, . . . , N  (Eq. 3)
where
c(i)=t_last( i)/a_last( i).
In the above expression, a_last(i) and t_last(i) are the tile area and the rendering time respectively for the i-th tile from the last rendered frame.
Equation 2 really contains N−1 independent equations. Consider the first of these which states t(1)=t(2). By substituting Eq. 3 into this equation, the following is obtained:
a(2)=[c(1)/c(2)]*a(1)  (Eq. 4a).
Considering now the next equation from Eq. 2, t(2)=t(3) and again substituting in Eq. 3 into this yields:
a(3)=[c(2)/c(3)]*a(2)  (Eq. 4b).
If Eq. 4a is then used to eliminate a(2) from Eq. 4b, the following expression is obtained:
a(3)=[c(1)/c(3)]*a(1)  (Eq. 4c).
This process can be repeated for the remaining equations in expression Eq. 2 to produce the following general statement:
a(i)=C(i)*a(1) for i=2, 3, 4, . . . , N  (Eq. 5a)
where
C(i)=c(1)/c(i) for i=2, 3, 4, . . . , N.
By substituting Eq. 5a into Eq. 1 the solution for a(1) is obtained as:
a(1)=A/[1+C(2)+C(3)+C(4)+ . . . +C(N)]  (Eq. 5b).
Thus, the general solution for the optimal tile sizes is obtained by first solving Eq. 5b for a(1), and then iterating through the series of expressions presented in Eq. 5a for the remaining tile areas.
To begin the sequence, initial conditions for Eq. 3 are needed. A simple strategy is to assign all the tile sizes to the same value, i.e., a_last(i)=A/N, and to set the times to some common value, t_last(i)=1.
The solution presented in Eq. 4 has proven to be simple to calculate, robust and well-behaved. However, in certain extreme situations it may be desirable to constrain the tile areas from becoming too small, or simply stated:
a(i)>A_Minimum for i=1, 2, 3, . . . , N  (Eq. 6).
These constraints may be incorporated in the solution of Eqs. 1-3 directly which may require resorting to a numerical solution technique. Alternatively, an approximate solution may be employed by first using Eq. 5 to obtain the initial unconstrained solution. If a tile is found with an area less than A_Minimum, then this tile area is set to A_Minimum, and in turn all the other tile areas are proportionately reduced so that Eq. 1 still applies. This procedure may have to be repeated numerous times as needed for any additional tiles which satisfy Eq. 6.
After new tile sizes are calculated, they may be subjected to an optional smoothing operation. Since Eq. 3 is only a simple linear approximation of the behavior of the system, the solution obtained in Eq. 5 is approximate, and experience indicates that this solution oscillates around the true solution. To damp out these oscillations, the solutions from several previous steps may be averaged together using a simple weighted averaging technique. Consider the i-th tile at the j-th animation frame:
a_avg=[ w(0)*a(j)]+[w(1)*a(j−1)]+[w(2)*a(j−2)]+ . . . +[w(M)*a(j−M)]  (Eq. 7)
where a_avg is the averaged tile area, M is the number of previous frames used in the averaging, a(j) is the current solution for the i-th tile from Eq. 5, a(j−1) is the i-th tile for at the j−1 animation frame, a(j−2) is the i-th tile for at the j−2 animation frame, and so on for the remaining animation frames. In Eq. 7, each w(i) is a weighing factor. These factors are simply constants which must sum to 1, in other words:
w(0)+w(1)+w(2)+ . . . +w(M)=1  (Eq. 8).
Since Eq. 7 is for a typical tile, this expression is applied to all N tiles which compose the window to be repainted.
The weighted average described in Eq. 7 is very general. Consider the case where M=1. By letting w(0)=W and w(1)=1−W, then Eq. 7 becomes:
a_avg= W*a(j)+[(1−W)*a(j−1)]  (Eq. 9)
Very good damping of the oscillations have been achieved by using values of W in the range of 0.3 to 0.1.
FIG. 4 is a flow chart which summarizes the basic logic carried out the by present invention. The first step is to initialize the tile settings (70). Suitable values for N (the total number of tiles) preferably range from 2 to 10. Each tile is updated one frame, and the various times that it takes for each tile to be rendered are measured (72). New tile sizes are then calculated, using Eqs. 5b and 5a, constrained by Eq. 6 (74). The new tile configurations are smoothed using the weighting of Eq. 7 (76). Once the final tile area values a(i) are known, the relative geometries are determined using standard topological techniques (78). The logic flow then returns to step 72 for repeated iterations.
The technique described herein provides a novel load balancing technique for use when a graphics animation sequence is rendering by multiple processes utilizing a tiling strategy for work division. The unique aspect of the solution methodology consists of continuously monitoring the rendering times of each tile and then adjusting the tile size so the workload is distributed among the tiles into approximately equal amounts. A set of algebraic equations are described which distribute the workload in a near optimal fashion. These equations yield a simple closed form solution, as shown in Eq. 5. Performance measurements indicate rendering speed-ups of approximately 20% over a similar statically tiled solution are possible. The invention is particularly useful in rendering three-dimensional (3-D) graphic animation and when used in a multi-processor system where concurrent rendering processes can be distributed among several processes in a cluster.
Although the invention has been described with reference to specific embodiments, this description is not meant to be construed in a limiting sense. Various modifications of the disclosed embodiments, as well as alternative embodiments of the invention, will become apparent to persons skilled in the art upon reference to the description of the invention. For example, the invention is not limited to personal computers, as it is also applicable to other computer systems such as limited purpose video games. It is therefore contemplated that such modifications can be made without departing from the spirit or scope of the present invention as defined in the appended claims.

Claims (10)

What is claimed is:
1. A method of generating graphic images on a display device of a computer system, comprising the steps of:
dividing the viewable area of the display device into a plurality of tiles;
assigning each of the tiles to a respective one of a plurality of rendering processes;
rendering a frame on the display device using the respective rendering processes;
adjusting the sizes of at least two of the tiles in response to said rendering step, and
smoothing at least two of the adjusted tile sizes, by calculating a smooth tile size a_avg according to the formula:
a_avg=[ w(0)*a(j)]+[w(1)*a(j−1)]+[w(2)*a(j−2)]+ . . . +[w(M)*a(j−M)]
where a(j) is the size of a tile for the j-th frame rendered, M is an integer less than j, and w(i) is a weighing factor subject to the further formula
w(0)+w(1)+w(2)+ . . . +w(M)=1.
2. The method of claim 1 comprising the further step of rendering a second frame on the display device using the respective rendering processes, after said adjusting step.
3. The method of claim 1 wherein said adjusting step constrains at least one of the adjusted tile sizes to a minimum value.
4. The method of claim 1 wherein the rendering processes are carried out by two or more processors in a processor cluster.
5. A computer system comprising:
a display device;
a pointing device; and
processor means for generating graphic images on said display device by (i) dividing the viewable area of the display device into a plurality of tiles, (ii) assigning each of the tiles to a respective one of a plurality of rendering processes, (iii) rendering a frame on the display device using the respective rendering processes, (iv) adjusting the sizes of at least two of the tiles in response to said rendering step, (v) smoothing at least two of the adjusted tile sizes by calculating a smooth tile size a_vg according to the formula;
a_avg=[ w(0)*a(j)]+[w(1)*a(j−1)]+[w(2)*a(j−2)]+ . . . +[w(M)*a(j−M)]
where a(j) is the size of a tile for the j-th frame rendered, M is an integer less than j, and w(i) is a weighing factor subject to the further formula
w(0)+w(1)+w(2)+ . . . +w(M)=1.
6. The computer system of claim 5 wherein said processor means generates the graphic images by further rendering a second frame on the display device using the respective rendering processes, after said adjusting of the tile sizes.
7. The computer system of claim 5 wherein said processor means further constrains at least one of the adjusted tile sizes to a minimum value.
8. The computer system of claim 5 wherein said processor means includes a processor cluster, and the rendering processes are carried out by at least two processors in the processor cluster.
9. A method of generating graphic images on a display device of a computer system, comprising the steps of:
dividing the viewable area of the display device into a plurality of tiles;
assigning each of the tiles to a respective one of a plurality of rendering processes;
rendering a frame on the display device using the respective rendering processes; and
adjusting the sizes of at least two of the tiles in response to said rendering step,
wherein said adjusting step includes the step of measuring the rendering times required for each rendering process to complete a respective portion of the frame, and adjusts the tile sizes based on the measured rendering times according to the formulae:
a(1)=A/[1+C(2)+C(3)+C(4)+ . . . +C(N)],
and
a(i)=C(i)*a(1) for i=2, 3, 4, . . . , N
where
a(i) is the size of the i-th tile for the current frame,
N is the number of tiles,
A is the total viewable area of the display device,
C(i)=c(1)/c(i) for i=2, 3, 4, . . . , N,
c(i)=t_last(i)/a_last(i),
a_last(i) is the tile area for the i-th tile from the last rendered frame, and
t_last(i) is the rendering time for the i-th tile from the last rendered frame.
10. A computer system comprising:
a display device;
a pointing device; and
processor means for generating graphic images on said display device by (i) dividing the viewable area of the display device into a plurality of tiles, (ii) assigning each of the tiles to a respective one of a plurality of rendering processes, (iii) rendering a frame on the display device using the respective rendering processes, (iv) adjusting the sizes of at least two of the tiles in response to said rendering step, and (v) measuring the rendering times required for each rendering process to complete a respective portion of the frame, wherein said processor means adjusts the tile sizes based on the measured rendering times according to the formulae:
a(1)=A/[1+C(2)+C(3)+C(4)+. . . +C(N)],
and
a(i)=C(i)*a(1) for i=2, 3, 4, . . . , N
where
a(i) is the size of the i-th tile for the current frame,
N is the number of tiles,
A is the total viewable area of the display device,
C(i)=c(1)/c(i) for i=2, 3, 4, . . . , N,
c(i)=t_last(i)/a_last(i),
a_last(i) is the tile area for the i-th tile from the last rendered frame, and
t_last(i) is the rendering time for the i-th tile from the last rendered frame.
US09/132,856 1998-08-11 1998-08-11 Dynamic balancing of graphics workloads using a tiling strategy Expired - Lifetime US6191800B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/132,856 US6191800B1 (en) 1998-08-11 1998-08-11 Dynamic balancing of graphics workloads using a tiling strategy

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/132,856 US6191800B1 (en) 1998-08-11 1998-08-11 Dynamic balancing of graphics workloads using a tiling strategy

Publications (1)

Publication Number Publication Date
US6191800B1 true US6191800B1 (en) 2001-02-20

Family

ID=22455910

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/132,856 Expired - Lifetime US6191800B1 (en) 1998-08-11 1998-08-11 Dynamic balancing of graphics workloads using a tiling strategy

Country Status (1)

Country Link
US (1) US6191800B1 (en)

Cited By (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020145612A1 (en) * 2001-01-29 2002-10-10 Blythe David R. Method and system for minimizing an amount of data needed to test data against subarea boundaries in spatially composited digital video
US6567092B1 (en) * 1999-02-10 2003-05-20 Microsoft Corporation Method for interfacing to ultra-high resolution output devices
US20030169269A1 (en) * 2002-03-11 2003-09-11 Nobuo Sasaki System and method of optimizing graphics processing
US20030195735A1 (en) * 2002-04-11 2003-10-16 Rosedale Philip E. Distributed simulation
US20040025112A1 (en) * 2002-08-01 2004-02-05 Chasen Jeffrey Martin Method and apparatus for resizing video content displayed within a graphical user interface
US20040104913A1 (en) * 2001-12-21 2004-06-03 Walls Jeffrey J. System and method for automatically configuring graphics pipelines by tracking a region of interest in a computer graphical display system
US20040125111A1 (en) * 2002-12-30 2004-07-01 Silicon Graphics, Inc. System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
US20040196283A1 (en) * 2000-05-01 2004-10-07 Lewis Michael C. Method and system for reducing overflows in a computer graphics system
US20040222994A1 (en) * 2003-05-05 2004-11-11 Silicon Graphics, Inc. Method, system, and computer program product for determining a structure of a graphics compositor tree
US20050041031A1 (en) * 2003-08-18 2005-02-24 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US20050183017A1 (en) * 2001-01-31 2005-08-18 Microsoft Corporation Seekbar in taskbar player visualization mode
US20050190190A1 (en) * 2004-02-27 2005-09-01 Nvidia Corporation Graphics device clustering with PCI-express
US20050282538A1 (en) * 2004-05-28 2005-12-22 Marc Balon Method and system for improving mobile radio communications
US7027072B1 (en) 2000-10-13 2006-04-11 Silicon Graphics, Inc. Method and system for spatially compositing digital video images with a tile pattern library
EP1687732A2 (en) * 2003-11-19 2006-08-09 Lucid Information Technology Ltd. Method and system for multiple 3-d graphic pipeline over a pc bus
US7092983B1 (en) 2000-04-19 2006-08-15 Silicon Graphics, Inc. Method and system for secure remote distributed rendering
US7117136B1 (en) 2000-08-18 2006-10-03 Linden Research, Inc. Input and feedback system
US20060232590A1 (en) * 2004-01-28 2006-10-19 Reuven Bakalash Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction
US20060267991A1 (en) * 2005-05-27 2006-11-30 Preetham Arcot J Antialiasing system and method
US20060267993A1 (en) * 2005-05-27 2006-11-30 James Hunkins Compositing in multiple video processing unit (VPU) systems
US20060267988A1 (en) * 2005-05-27 2006-11-30 Hussain Syed A Synchronizing multiple cards in multiple video processing unit (VPU) systems
US20060271717A1 (en) * 2005-05-27 2006-11-30 Raja Koduri Frame synchronization in multiple video processing unit (VPU) systems
WO2006126092A2 (en) * 2005-05-27 2006-11-30 Ati Technologies, Inc. Dynamic load balancing in multiple video processing unit (vpu) systems
US20060267990A1 (en) * 2005-05-27 2006-11-30 Rogers Philip J Multiple video processor unit (VPU) memory mapping
US20060274073A1 (en) * 2004-11-17 2006-12-07 Johnson Philip B Multiple graphics adapter connection systems
US7219308B2 (en) 2002-06-21 2007-05-15 Microsoft Corporation User interface for media player program
US20070245021A1 (en) * 2006-03-29 2007-10-18 Casio Computer Co., Ltd. Server apparatus and server control method in computer system
US7340547B1 (en) 2003-12-02 2008-03-04 Nvidia Corporation Servicing of multiple interrupts using a deferred procedure call in a multiprocessor system
US20080088630A1 (en) * 2003-11-19 2008-04-17 Reuven Bakalash Multi-mode parallel graphics rendering and display subsystem employing a graphics hub device (GHD) for interconnecting CPU memory space and multple graphics processing pipelines (GPPLs) employed with said system
US7372465B1 (en) 2004-12-17 2008-05-13 Nvidia Corporation Scalable graphics processing for remote display
US20080117217A1 (en) * 2003-11-19 2008-05-22 Reuven Bakalash Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US7383412B1 (en) 2005-02-28 2008-06-03 Nvidia Corporation On-demand memory synchronization for peripheral systems with multiple parallel processors
US20080158236A1 (en) * 2006-12-31 2008-07-03 Reuven Bakalash Parallel graphics system employing multiple graphics pipelines wtih multiple graphics processing units (GPUs) and supporting the object division mode of parallel graphics rendering using pixel processing resources provided therewithin
US20080284677A1 (en) * 2005-12-06 2008-11-20 Dolby Laboratories Licensing Corporation Modular Electronic Displays
US7456833B1 (en) 2005-06-15 2008-11-25 Nvidia Corporation Graphical representation of load balancing and overlap
US7477256B1 (en) 2004-11-17 2009-01-13 Nvidia Corporation Connecting graphics adapters for scalable performance
US20090027402A1 (en) * 2003-11-19 2009-01-29 Lucid Information Technology, Ltd. Method of controlling the mode of parallel operation of a multi-mode parallel graphics processing system (MMPGPS) embodied within a host comuting system
US20090096798A1 (en) * 2005-01-25 2009-04-16 Reuven Bakalash Graphics Processing and Display System Employing Multiple Graphics Cores on a Silicon Chip of Monolithic Construction
US7522167B1 (en) 2004-12-16 2009-04-21 Nvidia Corporation Coherence of displayed images for split-frame rendering in multi-processor graphics system
US7525549B1 (en) 2004-12-16 2009-04-28 Nvidia Corporation Display balance/metering
US7525547B1 (en) 2003-08-12 2009-04-28 Nvidia Corporation Programming multiple chips from a command buffer to process multiple images
US20090128550A1 (en) * 2003-11-19 2009-05-21 Reuven Bakalash Computing system supporting parallel 3D graphics processes based on the division of objects in 3D scenes
US20090141033A1 (en) * 2007-11-30 2009-06-04 Qualcomm Incorporated System and method for using a secondary processor in a graphics system
US7545380B1 (en) 2004-12-16 2009-06-09 Nvidia Corporation Sequencing of displayed images for alternate frame rendering in a multi-processor graphics system
US7576745B1 (en) 2004-11-17 2009-08-18 Nvidia Corporation Connecting graphics adapters
US20090208098A1 (en) * 2008-02-15 2009-08-20 Microsoft Corporation Tiling and merging framework for segmenting large images
US7602395B1 (en) 2005-04-22 2009-10-13 Nvidia Corporation Programming multiple chips from a command buffer for stereo image generation
US7616207B1 (en) 2005-04-25 2009-11-10 Nvidia Corporation Graphics processing system including at least three bus devices
US7629978B1 (en) 2005-10-31 2009-12-08 Nvidia Corporation Multichip rendering with state control
US20100110084A1 (en) * 2002-11-27 2010-05-06 Ati Technologies Ulc Parallel pipeline graphics system
US7721118B1 (en) 2004-09-27 2010-05-18 Nvidia Corporation Optimizing power and performance for multi-processor graphics processing
US20100153842A1 (en) * 2008-12-12 2010-06-17 Microsoft Corporation Rendering source content for display
US7783695B1 (en) * 2000-04-19 2010-08-24 Graphics Properties Holdings, Inc. Method and system for distributed rendering
US20100251175A1 (en) * 2009-03-24 2010-09-30 International Business Machines Corporation Auto-positioning a context menu on a gui
US20100269043A1 (en) * 2003-06-25 2010-10-21 Microsoft Corporation Taskbar media player
US20100289803A1 (en) * 2009-05-13 2010-11-18 International Business Machines Corporation Managing graphics load balancing strategies
US8054314B2 (en) 2005-05-27 2011-11-08 Ati Technologies, Inc. Applying non-homogeneous properties to multiple video processing units (VPUs)
US8134568B1 (en) 2004-12-15 2012-03-13 Nvidia Corporation Frame buffer region redirection for multiple graphics adapters
US8212831B1 (en) 2004-12-15 2012-07-03 Nvidia Corporation Broadcast aperture remapping for multiple graphics adapters
US8453056B2 (en) 2003-06-25 2013-05-28 Microsoft Corporation Switching of media presentation
WO2013068498A3 (en) * 2011-11-08 2013-08-15 Telefonaktiebolaget L M Ericsson (Publ) Tile size in video coding
US20130222395A1 (en) * 2012-02-29 2013-08-29 Joaquin Cruz Blas, JR. Dynamic Splitting of Content
EP2674939A1 (en) * 2012-06-11 2013-12-18 QNX Software Systems Limited Cell-based composited windowing system
US8994750B2 (en) 2012-06-11 2015-03-31 2236008 Ontario Inc. Cell-based composited windowing system
US9704212B2 (en) 2013-02-07 2017-07-11 Nvidia Corporation System and method for image processing
US10026140B2 (en) 2005-06-10 2018-07-17 Nvidia Corporation Using a scalable graphics system to enable a general-purpose multi-user computer system
GB2558885A (en) * 2017-01-12 2018-07-25 Imagination Tech Ltd Graphics processing units and methods for subdividing a set of one or more tiles of a rendering space for rendering
US10937119B2 (en) * 2018-03-15 2021-03-02 Intel Corporation Apparatus and method for virtualized scheduling of multiple duplicate graphics engines
US20230106345A1 (en) * 2021-10-01 2023-04-06 Sap Se Printing electronic documents from large html screens

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5757385A (en) * 1994-07-21 1998-05-26 International Business Machines Corporation Method and apparatus for managing multiprocessor graphical workload distribution
US5798770A (en) * 1995-03-24 1998-08-25 3Dlabs Inc. Ltd. Graphics rendering system with reconfigurable pipeline sequence
US5818469A (en) * 1997-04-10 1998-10-06 International Business Machines Corporation Graphics interface processing methodology in symmetric multiprocessing or distributed network environments
US5852443A (en) * 1995-08-04 1998-12-22 Microsoft Corporation Method and system for memory decomposition in a graphics rendering system
US6046752A (en) * 1995-12-06 2000-04-04 Intergraph Corporation Peer-to-peer parallel processing graphics accelerator
US6052125A (en) * 1998-01-07 2000-04-18 Evans & Sutherland Computer Corporation Method for reducing the rendering load for high depth complexity scenes on a computer graphics display

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5757385A (en) * 1994-07-21 1998-05-26 International Business Machines Corporation Method and apparatus for managing multiprocessor graphical workload distribution
US5798770A (en) * 1995-03-24 1998-08-25 3Dlabs Inc. Ltd. Graphics rendering system with reconfigurable pipeline sequence
US5852443A (en) * 1995-08-04 1998-12-22 Microsoft Corporation Method and system for memory decomposition in a graphics rendering system
US6046752A (en) * 1995-12-06 2000-04-04 Intergraph Corporation Peer-to-peer parallel processing graphics accelerator
US5818469A (en) * 1997-04-10 1998-10-06 International Business Machines Corporation Graphics interface processing methodology in symmetric multiprocessing or distributed network environments
US6052125A (en) * 1998-01-07 2000-04-18 Evans & Sutherland Computer Corporation Method for reducing the rendering load for high depth complexity scenes on a computer graphics display

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
A. Rockwood, K. Heaton, T. Davis, "Real-Time Rendering of Trimmed Surfaces", Computer Graphics, vol. 23, No. 3, Jul. 1989, pp. 107-116. *
R. Samanta et al., "Load Balancing for Multi-Project Rendering Systems", Proceedings 1999 Eurographics/SIGGRAPH Workshop on Graphics Hardware, 1999, pp. 107-116. *
S. Whitman, "A Task Adaptive Parallel Graphics Renderer", Proceedings of the 1993 Symposium on Parallel Rendering, 1993, pp. 27-34. *
T. Nguyen, & J. Zahorjan, "Scheduling Policies to Support Distributed 3D Multimedia Applications", Joint Intl Conf on Measurement & Modeling of Computer Sys, 1998, pp. 244-253. *

Cited By (170)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567092B1 (en) * 1999-02-10 2003-05-20 Microsoft Corporation Method for interfacing to ultra-high resolution output devices
US7783695B1 (en) * 2000-04-19 2010-08-24 Graphics Properties Holdings, Inc. Method and system for distributed rendering
US7092983B1 (en) 2000-04-19 2006-08-15 Silicon Graphics, Inc. Method and system for secure remote distributed rendering
US20040196283A1 (en) * 2000-05-01 2004-10-07 Lewis Michael C. Method and system for reducing overflows in a computer graphics system
US7117136B1 (en) 2000-08-18 2006-10-03 Linden Research, Inc. Input and feedback system
US7027072B1 (en) 2000-10-13 2006-04-11 Silicon Graphics, Inc. Method and system for spatially compositing digital video images with a tile pattern library
US20020145612A1 (en) * 2001-01-29 2002-10-10 Blythe David R. Method and system for minimizing an amount of data needed to test data against subarea boundaries in spatially composited digital video
US7737982B2 (en) 2001-01-29 2010-06-15 Graphics Properties Holdings, Inc. Method and system for minimizing an amount of data needed to test data against subarea boundaries in spatially composited digital video
US20080211805A1 (en) * 2001-01-29 2008-09-04 Silicon Graphics, Inc. Method and System for Minimizing an Amount of Data Needed to Test Data Against Subarea Boundaries in Spatially Composited Digital Video
US7358974B2 (en) 2001-01-29 2008-04-15 Silicon Graphics, Inc. Method and system for minimizing an amount of data needed to test data against subarea boundaries in spatially composited digital video
US7924287B2 (en) 2001-01-29 2011-04-12 Graphics Properties Holdings, Inc. Method and system for minimizing an amount of data needed to test data against subarea boundaries in spatially composited digital video
US20050183017A1 (en) * 2001-01-31 2005-08-18 Microsoft Corporation Seekbar in taskbar player visualization mode
US20040104913A1 (en) * 2001-12-21 2004-06-03 Walls Jeffrey J. System and method for automatically configuring graphics pipelines by tracking a region of interest in a computer graphical display system
CN1317682C (en) * 2002-03-11 2007-05-23 索尼计算机娱乐公司 System and method of optimizing graphics processing
US6919896B2 (en) 2002-03-11 2005-07-19 Sony Computer Entertainment Inc. System and method of optimizing graphics processing
US20030169269A1 (en) * 2002-03-11 2003-09-11 Nobuo Sasaki System and method of optimizing graphics processing
WO2003077120A2 (en) * 2002-03-11 2003-09-18 Sony Computer Entertainment Inc. System and method of optimizing graphics processing
WO2003077120A3 (en) * 2002-03-11 2004-11-25 Sony Computer Entertainment Inc System and method of optimizing graphics processing
EP1662441A1 (en) * 2002-03-11 2006-05-31 Sony Computer Entertainment Inc. System and method of optimizing graphics processing using tessellation
US8612196B2 (en) 2002-04-11 2013-12-17 Linden Research, Inc. System and method for distributed simulation in which different simulation servers simulate different regions of a simulation space
US20030195735A1 (en) * 2002-04-11 2003-10-16 Rosedale Philip E. Distributed simulation
US7219308B2 (en) 2002-06-21 2007-05-15 Microsoft Corporation User interface for media player program
US20040025112A1 (en) * 2002-08-01 2004-02-05 Chasen Jeffrey Martin Method and apparatus for resizing video content displayed within a graphical user interface
US7549127B2 (en) * 2002-08-01 2009-06-16 Realnetworks, Inc. Method and apparatus for resizing video content displayed within a graphical user interface
US20100110084A1 (en) * 2002-11-27 2010-05-06 Ati Technologies Ulc Parallel pipeline graphics system
EP1581908A4 (en) * 2002-12-30 2008-05-28 Silicon Graphics Inc System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
EP1581908A2 (en) * 2002-12-30 2005-10-05 Silicon Graphics, Inc. System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
US20040125111A1 (en) * 2002-12-30 2004-07-01 Silicon Graphics, Inc. System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
US6885376B2 (en) * 2002-12-30 2005-04-26 Silicon Graphics, Inc. System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
US20040222994A1 (en) * 2003-05-05 2004-11-11 Silicon Graphics, Inc. Method, system, and computer program product for determining a structure of a graphics compositor tree
US7034837B2 (en) 2003-05-05 2006-04-25 Silicon Graphics, Inc. Method, system, and computer program product for determining a structure of a graphics compositor tree
US20100269043A1 (en) * 2003-06-25 2010-10-21 Microsoft Corporation Taskbar media player
US10261665B2 (en) 2003-06-25 2019-04-16 Microsoft Technology Licensing, Llc Taskbar media player
US9275673B2 (en) 2003-06-25 2016-03-01 Microsoft Technology Licensing, Llc Taskbar media player
US8453056B2 (en) 2003-06-25 2013-05-28 Microsoft Corporation Switching of media presentation
US8214759B2 (en) 2003-06-25 2012-07-03 Microsoft Corporation Taskbar media player
US7525547B1 (en) 2003-08-12 2009-04-28 Nvidia Corporation Programming multiple chips from a command buffer to process multiple images
US20050041031A1 (en) * 2003-08-18 2005-02-24 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
JP2007503059A (en) * 2003-08-18 2007-02-15 エヌビディア・コーポレーション Adaptive load balancing for multiprocessor graphics processing systems
JP4691493B2 (en) * 2003-08-18 2011-06-01 エヌヴィディア コーポレイション Adaptive load balancing for multiprocessor graphics processing systems
US20100271375A1 (en) * 2003-08-18 2010-10-28 Nvidia Corporation Adaptive load balancing in a multi processor graphics processing system
US20060221087A1 (en) * 2003-08-18 2006-10-05 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US20060221086A1 (en) * 2003-08-18 2006-10-05 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US7075541B2 (en) 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US8077181B2 (en) 2003-08-18 2011-12-13 Nvidia Corporation Adaptive load balancing in a multi processor graphics processing system
WO2005020157A1 (en) * 2003-08-18 2005-03-03 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US20070279411A1 (en) * 2003-11-19 2007-12-06 Reuven Bakalash Method and System for Multiple 3-D Graphic Pipeline Over a Pc Bus
US20110072056A1 (en) * 2003-11-19 2011-03-24 Reuven Bakalash Internet-based graphics application profile management system for updating graphic application profiles stored within the multi-gpu graphics rendering subsystems of client machines running graphics-based applications
US20080100629A1 (en) * 2003-11-19 2008-05-01 Reuven Bakalash Computing system capable of parallelizing the operation of multiple graphics processing units (GPUS) supported on a CPU/GPU fusion-type chip and/or multiple GPUS supported on an external graphics card
US8085273B2 (en) 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US20080117217A1 (en) * 2003-11-19 2008-05-22 Reuven Bakalash Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US20080117219A1 (en) * 2003-11-19 2008-05-22 Reuven Bakalash PC-based computing system employing a silicon chip of monolithic construction having a routing unit, a control unit and a profiling unit for parallelizing the operation of multiple GPU-driven pipeline cores according to the object division mode of parallel operation
EP1687732A2 (en) * 2003-11-19 2006-08-09 Lucid Information Technology Ltd. Method and system for multiple 3-d graphic pipeline over a pc bus
US20080122851A1 (en) * 2003-11-19 2008-05-29 Reuven Bakalash PC-based computing systems employing a bridge chip having a routing unit for distributing geometrical data and graphics commands to parallelized GPU-driven pipeline cores during the running of a graphics application
US7777748B2 (en) 2003-11-19 2010-08-17 Lucid Information Technology, Ltd. PC-level computing system with a multi-mode parallel graphics rendering subsystem employing an automatic mode controller, responsive to performance data collected during the run-time of graphics applications
US7796129B2 (en) 2003-11-19 2010-09-14 Lucid Information Technology, Ltd. Multi-GPU graphics processing subsystem for installation in a PC-based computing system having a central processing unit (CPU) and a PC bus
US7796130B2 (en) 2003-11-19 2010-09-14 Lucid Information Technology, Ltd. PC-based computing system employing multiple graphics processing units (GPUS) interfaced with the central processing unit (CPU) using a PC bus and a hardware hub, and parallelized according to the object division mode of parallel operation
US20080136825A1 (en) * 2003-11-19 2008-06-12 Reuven Bakalash PC-based computing system employing a multi-GPU graphics pipeline architecture supporting multiple modes of GPU parallelization dymamically controlled while running a graphics application
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US20080165197A1 (en) * 2003-11-19 2008-07-10 Reuven Bakalash Multi-GPU graphics processing subsystem for installation in a PC-based computing system having a central processing unit (CPU) and a PC bus
US20080165198A1 (en) * 2003-11-19 2008-07-10 Reuven Bakalash Method of providing a PC-based computing system with parallel graphics processing capabilities
US8125487B2 (en) 2003-11-19 2012-02-28 Lucid Information Technology, Ltd Game console system capable of paralleling the operation of multiple graphic processing units (GPUS) employing a graphics hub device supported on a game console board
US20080238917A1 (en) * 2003-11-19 2008-10-02 Lucid Information Technology, Ltd. Graphics hub subsystem for interfacing parallalized graphics processing units (GPUS) with the central processing unit (CPU) of a PC-based computing system having an CPU interface module and a PC bus
EP1687732A4 (en) * 2003-11-19 2008-11-19 Lucid Information Technology Ltd Method and system for multiple 3-d graphic pipeline over a pc bus
US8134563B2 (en) 2003-11-19 2012-03-13 Lucid Information Technology, Ltd Computing system having multi-mode parallel graphics rendering subsystem (MMPGRS) employing real-time automatic scene profiling and mode control
US7944450B2 (en) 2003-11-19 2011-05-17 Lucid Information Technology, Ltd. Computing system having a hybrid CPU/GPU fusion-type graphics processing pipeline (GPPL) architecture
US7940274B2 (en) 2003-11-19 2011-05-10 Lucid Information Technology, Ltd Computing system having a multiple graphics processing pipeline (GPPL) architecture supported on multiple external graphics cards connected to an integrated graphics device (IGD) embodied within a bridge circuit
US20090027402A1 (en) * 2003-11-19 2009-01-29 Lucid Information Technology, Ltd. Method of controlling the mode of parallel operation of a multi-mode parallel graphics processing system (MMPGPS) embodied within a host comuting system
US7800611B2 (en) 2003-11-19 2010-09-21 Lucid Information Technology, Ltd. Graphics hub subsystem for interfacing parallalized graphics processing units (GPUs) with the central processing unit (CPU) of a PC-based computing system having an CPU interface module and a PC bus
US20080088630A1 (en) * 2003-11-19 2008-04-17 Reuven Bakalash Multi-mode parallel graphics rendering and display subsystem employing a graphics hub device (GHD) for interconnecting CPU memory space and multple graphics processing pipelines (GPPLs) employed with said system
US7843457B2 (en) 2003-11-19 2010-11-30 Lucid Information Technology, Ltd. PC-based computing systems employing a bridge chip having a routing unit for distributing geometrical data and graphics commands to parallelized GPU-driven pipeline cores supported on a plurality of graphics cards and said bridge chip during the running of a graphics application
US8284207B2 (en) 2003-11-19 2012-10-09 Lucid Information Technology, Ltd. Method of generating digital images of objects in 3D scenes while eliminating object overdrawing within the multiple graphics processing pipeline (GPPLS) of a parallel graphics processing system generating partial color-based complementary-type images along the viewing direction using black pixel rendering and subsequent recompositing operations
US20090128550A1 (en) * 2003-11-19 2009-05-21 Reuven Bakalash Computing system supporting parallel 3D graphics processes based on the division of objects in 3D scenes
US7800610B2 (en) 2003-11-19 2010-09-21 Lucid Information Technology, Ltd. PC-based computing system employing a multi-GPU graphics pipeline architecture supporting multiple modes of GPU parallelization dymamically controlled while running a graphics application
US8754894B2 (en) 2003-11-19 2014-06-17 Lucidlogix Software Solutions, Ltd. Internet-based graphics application profile management system for updating graphic application profiles stored within the multi-GPU graphics rendering subsystems of client machines running graphics-based applications
US7800619B2 (en) 2003-11-19 2010-09-21 Lucid Information Technology, Ltd. Method of providing a PC-based computing system with parallel graphics processing capabilities
US20090179894A1 (en) * 2003-11-19 2009-07-16 Reuven Bakalash Computing system capable of parallelizing the operation of multiple graphics processing pipelines (GPPLS)
US9584592B2 (en) 2003-11-19 2017-02-28 Lucidlogix Technologies Ltd. Internet-based graphics application profile management system for updating graphic application profiles stored within the multi-GPU graphics rendering subsystems of client machines running graphics-based applications
US7812846B2 (en) 2003-11-19 2010-10-12 Lucid Information Technology, Ltd PC-based computing system employing a silicon chip of monolithic construction having a routing unit, a control unit and a profiling unit for parallelizing the operation of multiple GPU-driven pipeline cores according to the object division mode of parallel operation
US7808499B2 (en) 2003-11-19 2010-10-05 Lucid Information Technology, Ltd. PC-based computing system employing parallelized graphics processing units (GPUS) interfaced with the central processing unit (CPU) using a PC bus and a hardware graphics hub having a router
US7340547B1 (en) 2003-12-02 2008-03-04 Nvidia Corporation Servicing of multiple interrupts using a deferred procedure call in a multiprocessor system
US7812845B2 (en) 2004-01-28 2010-10-12 Lucid Information Technology, Ltd. PC-based computing system employing a silicon chip implementing parallelized GPU-driven pipelines cores supporting multiple modes of parallelization dynamically controlled while running a graphics application
US7808504B2 (en) 2004-01-28 2010-10-05 Lucid Information Technology, Ltd. PC-based computing system having an integrated graphics subsystem supporting parallel graphics processing operations across a plurality of different graphics processing units (GPUS) from the same or different vendors, in a manner transparent to graphics applications
US7812844B2 (en) 2004-01-28 2010-10-12 Lucid Information Technology, Ltd. PC-based computing system employing a silicon chip having a routing unit and a control unit for parallelizing multiple GPU-driven pipeline cores according to the object division mode of parallel operation during the running of a graphics application
US8754897B2 (en) 2004-01-28 2014-06-17 Lucidlogix Software Solutions, Ltd. Silicon chip of a monolithic construction for use in implementing multiple graphic cores in a graphics processing and display subsystem
US7834880B2 (en) 2004-01-28 2010-11-16 Lucid Information Technology, Ltd. Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction
US20060279577A1 (en) * 2004-01-28 2006-12-14 Reuven Bakalash Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction
US20080129745A1 (en) * 2004-01-28 2008-06-05 Lucid Information Technology, Ltd. Graphics subsytem for integation in a PC-based computing system and providing multiple GPU-driven pipeline cores supporting multiple modes of parallelization dynamically controlled while running a graphics application
US20060232590A1 (en) * 2004-01-28 2006-10-19 Reuven Bakalash Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction
US20080129744A1 (en) * 2004-01-28 2008-06-05 Lucid Information Technology, Ltd. PC-based computing system employing a silicon chip implementing parallelized GPU-driven pipelines cores supporting multiple modes of parallelization dynamically controlled while running a graphics application
US9659340B2 (en) 2004-01-28 2017-05-23 Lucidlogix Technologies Ltd Silicon chip of a monolithic construction for use in implementing multiple graphic cores in a graphics processing and display subsystem
US7289125B2 (en) 2004-02-27 2007-10-30 Nvidia Corporation Graphics device clustering with PCI-express
US20050190190A1 (en) * 2004-02-27 2005-09-01 Nvidia Corporation Graphics device clustering with PCI-express
US20050282538A1 (en) * 2004-05-28 2005-12-22 Marc Balon Method and system for improving mobile radio communications
US7721118B1 (en) 2004-09-27 2010-05-18 Nvidia Corporation Optimizing power and performance for multi-processor graphics processing
US8066515B2 (en) 2004-11-17 2011-11-29 Nvidia Corporation Multiple graphics adapter connection systems
US7477256B1 (en) 2004-11-17 2009-01-13 Nvidia Corporation Connecting graphics adapters for scalable performance
US7576745B1 (en) 2004-11-17 2009-08-18 Nvidia Corporation Connecting graphics adapters
US20060274073A1 (en) * 2004-11-17 2006-12-07 Johnson Philip B Multiple graphics adapter connection systems
US8134568B1 (en) 2004-12-15 2012-03-13 Nvidia Corporation Frame buffer region redirection for multiple graphics adapters
US8212831B1 (en) 2004-12-15 2012-07-03 Nvidia Corporation Broadcast aperture remapping for multiple graphics adapters
US7525549B1 (en) 2004-12-16 2009-04-28 Nvidia Corporation Display balance/metering
US7545380B1 (en) 2004-12-16 2009-06-09 Nvidia Corporation Sequencing of displayed images for alternate frame rendering in a multi-processor graphics system
US7796135B1 (en) 2004-12-16 2010-09-14 Nvidia Corporation Coherence of displayed images for split-frame rendering in multi-processor graphics system
US7522167B1 (en) 2004-12-16 2009-04-21 Nvidia Corporation Coherence of displayed images for split-frame rendering in multi-processor graphics system
US7372465B1 (en) 2004-12-17 2008-05-13 Nvidia Corporation Scalable graphics processing for remote display
US20090096798A1 (en) * 2005-01-25 2009-04-16 Reuven Bakalash Graphics Processing and Display System Employing Multiple Graphics Cores on a Silicon Chip of Monolithic Construction
US10614545B2 (en) 2005-01-25 2020-04-07 Google Llc System on chip having processing and graphics units
US10867364B2 (en) 2005-01-25 2020-12-15 Google Llc System on chip having processing and graphics units
US11341602B2 (en) 2005-01-25 2022-05-24 Google Llc System on chip having processing and graphics units
US7383412B1 (en) 2005-02-28 2008-06-03 Nvidia Corporation On-demand memory synchronization for peripheral systems with multiple parallel processors
US7602395B1 (en) 2005-04-22 2009-10-13 Nvidia Corporation Programming multiple chips from a command buffer for stereo image generation
US8035645B2 (en) 2005-04-25 2011-10-11 Nvidia Corporation Graphics processing system including at least three bus devices
US20100053177A1 (en) * 2005-04-25 2010-03-04 Nvidia Corporation Graphics processing system including at least three bus devices
US7616207B1 (en) 2005-04-25 2009-11-10 Nvidia Corporation Graphics processing system including at least three bus devices
US20060267990A1 (en) * 2005-05-27 2006-11-30 Rogers Philip J Multiple video processor unit (VPU) memory mapping
US8654133B2 (en) 2005-05-27 2014-02-18 Ati Technologies Ulc Dynamic load balancing in multiple video processing unit (VPU) systems
US20100085365A1 (en) * 2005-05-27 2010-04-08 Ati Technologies, Inc. Dynamic Load Balancing in Multiple Video Processing Unit (VPU) Systems
US8054314B2 (en) 2005-05-27 2011-11-08 Ati Technologies, Inc. Applying non-homogeneous properties to multiple video processing units (VPUs)
US7663635B2 (en) 2005-05-27 2010-02-16 Ati Technologies, Inc. Multiple video processor unit (VPU) memory mapping
US7649537B2 (en) 2005-05-27 2010-01-19 Ati Technologies, Inc. Dynamic load balancing in multiple video processing unit (VPU) systems
US20060267991A1 (en) * 2005-05-27 2006-11-30 Preetham Arcot J Antialiasing system and method
US20060267993A1 (en) * 2005-05-27 2006-11-30 James Hunkins Compositing in multiple video processing unit (VPU) systems
US8781260B2 (en) 2005-05-27 2014-07-15 Ati Technologies Ulc Compositing in multiple video processing unit (VPU) systems
US20060267988A1 (en) * 2005-05-27 2006-11-30 Hussain Syed A Synchronizing multiple cards in multiple video processing unit (VPU) systems
US20060271717A1 (en) * 2005-05-27 2006-11-30 Raja Koduri Frame synchronization in multiple video processing unit (VPU) systems
WO2006126092A3 (en) * 2005-05-27 2007-04-26 Ati Technologies Inc Dynamic load balancing in multiple video processing unit (vpu) systems
US8681160B2 (en) 2005-05-27 2014-03-25 Ati Technologies, Inc. Synchronizing multiple cards in multiple video processing unit (VPU) systems
US7613346B2 (en) 2005-05-27 2009-11-03 Ati Technologies, Inc. Compositing in multiple video processing unit (VPU) systems
WO2006126092A2 (en) * 2005-05-27 2006-11-30 Ati Technologies, Inc. Dynamic load balancing in multiple video processing unit (vpu) systems
US8212838B2 (en) 2005-05-27 2012-07-03 Ati Technologies, Inc. Antialiasing system and method
US20060267989A1 (en) * 2005-05-27 2006-11-30 Campbell Jonathan L Dynamic load balancing in multiple video processing unit (VPU) systems
EP2390835A3 (en) * 2005-05-27 2012-10-10 ATI Technologies Inc. Dynamic load balancing in multiple video processing (VPU) systems
US8400457B2 (en) 2005-05-27 2013-03-19 Ati Technologies, Inc. Dynamic load balancing in multiple video processing unit (VPU) systems
US8427486B2 (en) 2005-05-27 2013-04-23 Ati Technologies Ulc Applying non-homogeneous properties to multiple video processing units (VPUs)
US8452128B2 (en) 2005-05-27 2013-05-28 Ati Technologies Ulc Compositing in multiple video processing unit (VPU) systems
US10026140B2 (en) 2005-06-10 2018-07-17 Nvidia Corporation Using a scalable graphics system to enable a general-purpose multi-user computer system
US8106913B1 (en) 2005-06-15 2012-01-31 Nvidia Corporation Graphical representation of load balancing and overlap
US7456833B1 (en) 2005-06-15 2008-11-25 Nvidia Corporation Graphical representation of load balancing and overlap
US7629978B1 (en) 2005-10-31 2009-12-08 Nvidia Corporation Multichip rendering with state control
US9324174B2 (en) 2005-10-31 2016-04-26 Nvidia Corporation Multi-chip rendering with state control
US20080284677A1 (en) * 2005-12-06 2008-11-20 Dolby Laboratories Licensing Corporation Modular Electronic Displays
US9324253B2 (en) * 2005-12-06 2016-04-26 Dolby Laboratories Licensing Corporation Modular electronic displays
US8004532B2 (en) * 2006-03-29 2011-08-23 Casio Computer Co., Ltd Server apparatus and server control method in computer system
US20070245021A1 (en) * 2006-03-29 2007-10-18 Casio Computer Co., Ltd. Server apparatus and server control method in computer system
US20080158236A1 (en) * 2006-12-31 2008-07-03 Reuven Bakalash Parallel graphics system employing multiple graphics pipelines wtih multiple graphics processing units (GPUs) and supporting the object division mode of parallel graphics rendering using pixel processing resources provided therewithin
US8497865B2 (en) 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
US20090141033A1 (en) * 2007-11-30 2009-06-04 Qualcomm Incorporated System and method for using a secondary processor in a graphics system
US8922565B2 (en) * 2007-11-30 2014-12-30 Qualcomm Incorporated System and method for using a secondary processor in a graphics system
US20090208098A1 (en) * 2008-02-15 2009-08-20 Microsoft Corporation Tiling and merging framework for segmenting large images
US8086037B2 (en) * 2008-02-15 2011-12-27 Microsoft Corporation Tiling and merging framework for segmenting large images
US20100153842A1 (en) * 2008-12-12 2010-06-17 Microsoft Corporation Rendering source content for display
US8587610B2 (en) * 2008-12-12 2013-11-19 Microsoft Corporation Rendering source content for display
US8214763B2 (en) * 2009-03-24 2012-07-03 International Business Machines Corporation Auto-positioning a context menu on a GUI
US20100251175A1 (en) * 2009-03-24 2010-09-30 International Business Machines Corporation Auto-positioning a context menu on a gui
US9479358B2 (en) 2009-05-13 2016-10-25 International Business Machines Corporation Managing graphics load balancing strategies
US20100289803A1 (en) * 2009-05-13 2010-11-18 International Business Machines Corporation Managing graphics load balancing strategies
WO2013068498A3 (en) * 2011-11-08 2013-08-15 Telefonaktiebolaget L M Ericsson (Publ) Tile size in video coding
US20130222395A1 (en) * 2012-02-29 2013-08-29 Joaquin Cruz Blas, JR. Dynamic Splitting of Content
US9269176B2 (en) 2012-02-29 2016-02-23 Adobe Systems Incorporated Dynamic splitting of content
US9153058B2 (en) * 2012-02-29 2015-10-06 Adobe Systems Incorporated Dynamic splitting of content
EP2674939A1 (en) * 2012-06-11 2013-12-18 QNX Software Systems Limited Cell-based composited windowing system
US8994750B2 (en) 2012-06-11 2015-03-31 2236008 Ontario Inc. Cell-based composited windowing system
US9292950B2 (en) 2012-06-11 2016-03-22 2236008 Ontario, Inc. Cell-based composited windowing system
US9704212B2 (en) 2013-02-07 2017-07-11 Nvidia Corporation System and method for image processing
GB2558885A (en) * 2017-01-12 2018-07-25 Imagination Tech Ltd Graphics processing units and methods for subdividing a set of one or more tiles of a rendering space for rendering
US10387990B2 (en) 2017-01-12 2019-08-20 Imagination Technologies Limited Graphics processing units and methods for subdividing a set of one or more tiles of a rendering space for rendering
GB2558885B (en) * 2017-01-12 2021-04-07 Imagination Tech Ltd Graphics processing units and methods for subdividing a set of one or more tiles of a rendering space for rendering
US10937119B2 (en) * 2018-03-15 2021-03-02 Intel Corporation Apparatus and method for virtualized scheduling of multiple duplicate graphics engines
US20230106345A1 (en) * 2021-10-01 2023-04-06 Sap Se Printing electronic documents from large html screens

Similar Documents

Publication Publication Date Title
US6191800B1 (en) Dynamic balancing of graphics workloads using a tiling strategy
US7800610B2 (en) PC-based computing system employing a multi-GPU graphics pipeline architecture supporting multiple modes of GPU parallelization dymamically controlled while running a graphics application
US7590947B1 (en) Intelligent automatic window sizing
US5289574A (en) Multiple virtual screens on an "X windows" terminal
KR101930565B1 (en) Customization of an immersive environment
US20090322760A1 (en) Dynamic animation scheduling
WO2004061598A2 (en) System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
JP2003167659A (en) Information processor and method for displaying information object
JP2005018613A (en) Information processor, method for controlling window display and program
Ban et al. Adaptively stepped SPH for fluid animation based on asynchronous time integration
Dong et al. Screen Partitioning Load Balancing for Parallel Rendering on a Multi-GPU Multi-Display Workstation.
CN106547505B (en) Method and system for real-time sliding display of scanned image
KR20130106556A (en) Apparatus and method for drawing vector image
US7203359B1 (en) Split screen technique for improving bandwidth utilization when transferring changing images
JP2947984B2 (en) Figure Drawing Method in Multiprocessor System
Krogh et al. Parallel sphere rendering
Peek et al. Using integrated GPUs to perform image warping for HMDs
Carlbom et al. Quantitative analysis of vector graphics system performance
Ma et al. SPIDER: An Effective, Efficient and Robust Load Scheduler for Real-time Split Frame Rendering
Nam et al. Multiuser-centered resource scheduling for collaborative display wall environments
KR20220032736A (en) Distributed rendering method based on multiple graphic processing units and apparatus therefor
Kawanabe et al. Showing Ultra-High-Resolution Images in VDA-Based Scalable Displays
JP2887807B2 (en) Document creation device
Kontio 51074C
Eilemann Recent Advances in the Equalizer Parallel Rendering Framework

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ARENBURG, ROBERT T.;TAYLOR, ANDREW K.;REEL/FRAME:009385/0897

Effective date: 19980730

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

REMI Maintenance fee reminder mailed
FPAY Fee payment

Year of fee payment: 4

SULP Surcharge for late payment
FPAY Fee payment

Year of fee payment: 8

REMI Maintenance fee reminder mailed
FPAY Fee payment

Year of fee payment: 12

SULP Surcharge for late payment

Year of fee payment: 11