WO1999040518A1 - Method and apparatus to synchronize graphics rendering and display - Google Patents

Method and apparatus to synchronize graphics rendering and display Download PDF

Info

Publication number
WO1999040518A1
WO1999040518A1 PCT/US1999/002149 US9902149W WO9940518A1 WO 1999040518 A1 WO1999040518 A1 WO 1999040518A1 US 9902149 W US9902149 W US 9902149W WO 9940518 A1 WO9940518 A1 WO 9940518A1
Authority
WO
WIPO (PCT)
Prior art keywords
image
buffer
display
control command
memory
Prior art date
Application number
PCT/US1999/002149
Other languages
French (fr)
Inventor
Peter L. Doyle
Original Assignee
Intel Corporation
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 Intel Corporation filed Critical Intel Corporation
Priority to AU23524/99A priority Critical patent/AU2352499A/en
Publication of WO1999040518A1 publication Critical patent/WO1999040518A1/en

Links

Classifications

    • 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/399Control of the bit-mapped memory using two or more bit-mapped memories, the operations of which are switched in time, e.g. ping-pong buffers

Definitions

  • the present invention relates generally to the field of computer graphics, and more specifically, to a system for efficiently performing a display flip operation between buffered image data.
  • Many present graphics processors employ a technique known as "double buffering" to provide the appearance of smooth animation in three-dimensional graphic sequences.
  • This technique utilizes two image buffers. One image buffer is used to display a first image frame on the display screen while a second buffer is used to generate the next image frame. Once the second image frame is complete, the display output is switched to display the image from the second buffer, thus freeing the first image buffer for the generation of the next image frame.
  • the process of switching between successive images in an image sequence is referred to as a "display flip".
  • a graphics driver for the graphics device provides information for the next frame to be displayed to the graphics device after a display flip occurs.
  • the display flip operation is typically performed by the display device hardware during the video vertical blank period.
  • a currently displayed image buffer does not become available for image generation until the display flip operation has completed.
  • Image generation is presently performed by software processes in which a host processor issues drawing commands to appropriate graphics hardware.
  • Drawing command processing typically occurs asynchronously with video output.
  • the host processor is therefore required to request the graphics hardware to perform a display flip operation during the next vertical blank period and synchronize rendering of the new image with the completion of the display flip operation.
  • Present known systems typically use a direct (unbuffered) graphics hardware command to request the display flip.
  • a software driver is used to poll graphics hardware registers for a notification of the completion of image generation, as well as a notification of the completion of the display flip operation.
  • the request for the generation of the next image is postponed until the software determines that the display flip has occurred.
  • the processor is therefore required to initiate numerous read operations to the graphics device for display flip status.
  • This polling technique thus imposes software overhead that requires both processor and bus time. In certain applications, these polling operations may significantly degrade system performance as they consume processor and bus cycles that could otherwise be applied to image generation and other applications.
  • a method and apparatus for synchronizing the generation and display of graphics images in a graphics processing system.
  • Data comprising a first image is stored in a first buffer of a plurality of memory buffers.
  • a first control command causes the first image to be displayed on a display device, and a second buffer to be made available for storing data comprising a second image.
  • a second control command causes subsequent commands to be suspended if the first control command has not completed execution.
  • Figure 1 is a block diagram of one embodiment of a digital processing system of the present invention.
  • FIG. 2 is a block diagram of one embodiment of a graphics controller included in the digital processing system of Figure 1.
  • Figure 3 is a state diagram for a double buffered system during a display flip operation.
  • Figure 4 is flow chart illustrating the steps of synchronizing graphics generation and display according to one embodiment of the present invention.
  • Figure 5 is a state diagram for a triple buffered system during a display flip operation.
  • Figure 6 is flow chart illustrating the steps of synchronizing graphics rendering and display according to an alternative embodiment of the present invention.
  • control and image generation commands are stored in a memory buffer for later execution by a graphics processor.
  • a first control command requests a display flip operation, and a second command causes the graphics processor to suspend execution of subsequent instructions if a display flip operation has been requested but has not yet completed.
  • FIG. 1 is a block diagram of a digital processing system including a graphics processor according to one embodiment of the present invention.
  • Digital processing system 100 includes a processor 102 coupled through a bus 101 to a random access memory (RAM) 108, a read only memory (ROM) 106, and a mass storage device 104.
  • Mass storage device 104 may be a disk or tape drive for storing data and instructions.
  • input/output controller 105 is also coupled to processor 102 through bus 101 .
  • Input/output controller 105 provides an interface to various input /output devices such as a keyboard, mouse, or similar cursor control devices.
  • Graphics controller 103 provides the physical and logical connections between processor 102 and various display devices, such as display monitor 110. Graphics controller 103 can also be used to control display output through a television 114 through television encoder 112. It should be noted that the architecture of Figure 1 is provided only for purposes of illustration, and a host computer used in conjunction with the present invention is not limited to the specific architecture shown.
  • Graphics controller 103 in digital processing system 100 is controlled by a graphics driver that may be stored in memory, such as RAM 108, ROM 106, or mass storage device 104.
  • the memory devices e.g., RAM 108, are also used to buffer certain commands for later execution by graphics controller 103 or processor 102.
  • graphics controller 103 also includes its own internal local memory 107, which may be implemented as Video RAM (VRAM) devices.
  • VRAM Video RAM
  • FIG. 2 is a block diagram of a graphics controller according to one embodiment of the present invention.
  • Graphics controller 103 includes Video RAM 107.
  • RAM 107 is used to temporarily store data used by graphics controller 103 for the generation of images on a display device.
  • RAM 107 may also be used to cache certain instructions or data structures frequently used by graphics driver 202.
  • RAM 107 contains a plurality of data buffers 206-210. These buffers store pixel information for graphics images to be displayed on the display device. In general, each buffer stores data sufficient for display engine 204 to generate a single image frame on the display device.
  • Graphics controller 103 also includes display engine 204.
  • Display engine 204 outputs the signals comprising the pixel data stored in RAM 107.
  • Display engine 204 receives commands from graphics driver 202.
  • Graphics driver 202 includes software instructions that control various aspects of the display operations of digital processing system 100, such as generating graphics instructions and data, processing starting addresses of graphics data, and processing various display status information.
  • Graphics driver 202 also stores certain drawing and control commands that control the display flip and wait operations that are used to synchronize the generation and display of graphics images.
  • graphics driver 202 is stored in RAM 108 and transmits drawing and control commands to display engine 204 in graphics processor 103 over bus 101.
  • the drawing, flip, and wait control commands are stored in a command buffer 212 contained in RAM 108 for subsequent execution by display engine 204 in graphics controller 103.
  • the buffers 206-210 in RAM 107 are used by the digital processing system to store sequential image frames for processing and display on a display device, such as display monitor 110.
  • the buffers are used in conjunction with control commands that synchronize the rendering of the image data in the graphics processor with the display of image data on the display device.
  • One graphics control command is a "Display Flip” control command that requests the graphics processor to perform a display flip operation.
  • a second graphics control command is a "Wait While Flip Pending" control command that causes the graphics processor to pause if a display flip operation has been requested but has not yet been completed. Double Buffer System
  • the Display Flip and Wait While Flip Pending commands are used in a graphics processing system that employs a double buffering technique.
  • a double buffer system two buffers are used to sequentially render and store image frames. The image data in one buffer is displayed while the next image is generated in the second buffer. Once the next image is completely generated, the display output is flipped to display from the second buffer, thus freeing the previously-displayed image buffer for the generation of a new image.
  • the first buffer is denoted buffer A and the second buffer is denoted buffer B.
  • the buffers are implemented in RAM devices included within graphics controller 103 in Figure 2.
  • buffer A corresponds to buffer 206 and buffer B corresponds to buffer 208.
  • the two buffers could be implemented in other memory devices, such as, for example, RAM 108.
  • Figure 3 is a generalized state diagram illustrating the execution of a display flip operation using double buffers A and B, and the state of the buffers before and after completion of a flip operation sequencing the state.
  • Buffer A, 302 first contains image i and provides the data for image i for display 312.
  • graphics controller 103 reads and executes drawing commands 310 to generate image i+1 stored in buffer B, 304.
  • the Display Flip command 308 is then read and executed.
  • buffer B, 304 provides the data for image i+1 for display 322.
  • graphics controller 103 reads and executes drawing commands 320 to generate image i+2 stored in buffer A, 302.
  • a processor In present double buffered graphics systems, a processor is required to poll the status of the drawing command operations and the display flip operation before causing execution of the next command. Without this polling procedure, synchronization between image generation and display between the two buffers would be lost, resulting in possible image tearing effects. In one embodiment of the present invention, however, synchronization between image generation and display is provided through the storage of display control commands in memory and the use of a Wait While Flip Pending command prior to image generation. This control command mechanism provides adequate synchronization without requiring costly polling operations to be performed by the processor.
  • FIG. 4 is a flow chart which illustrates the steps of performing a display flip operation using stored commands in a double buffer system, according to one embodiment of the present invention.
  • the image data (corresponding to image frame i-1) in buffer A is currently being displayed and that buffer B is available for the generation of the next image.
  • commands to generate image i in buffer B are stored in memory.
  • a first Display Flip command is stored in memory. The first Display Flip command will cause image i in buffer B to be displayed, making buffer A available for new image data (corresponding to the next image, i+1) when the flip operation completes.
  • a Wait While Flip Pending command is stored in memory, step 406. This command causes the generation of image i+1 to be postponed until buffer A is available.
  • step 408 commands to generate image i+1 in buffer A are stored in memory.
  • step 410 a second Display Flip command is stored in memory. This second Display Flip command will cause image i+1 in buffer A to be displayed, making image buffer B available for a new image (corresponding to image i+2) when the flip operation completes.
  • a Wait While Flip Pending command is stored in memory, step 412. This command causes the generation of image i+2 to be postponed until buffer B is available.
  • the steps of the above process are repeated for subsequent frames of the graphics sequence until all of the frames are processed.
  • the image generation, Display Flip, and Wait While Flip Pending commands are stored in command buffer 212 in RAM 108. After being buffered in RAM 108, these commands are executed by display engine 204 in graphics controller 103.
  • the Display Flip and Wait While Flip Pending commands are used in a triple buffer graphics processing system.
  • a triple buffer system three buffers are used to sequentially render and store image frames. The image data in one buffer is displayed while the next image is generated in the second buffer. The third buffer is used to generate a new image during the period between the request for a display flip and the completion of the display flip operation.
  • a triple buffer system improves performance over a double buffer system by reducing the time spent polling for display flip completion notification.
  • present triple buffer systems still require some degree of software polling to be performed by a processor, thus imposing a certain processor bandwidth overhead.
  • the first buffer is denoted buffer A
  • the second buffer is denoted buffer B
  • the third buffer is denoted buffer C.
  • the buffers are implemented in RAM devices included within graphics controller 103 in Figure 2. Again, however, it should be noted that the three buffers could be implemented in other memory devices, such as, for example, RAM 108.
  • Figure 5 is a generalized state diagram illustrating the execution of display flip operations using triple buffers A, B, and C, and the states of the buffers before and after completion of flip operations that sequence the states.
  • Buffer A, 502 first contains image i-2.
  • Buffer B, 504 first contains data for image i-1 and provides the data for image i-1 for display, 512.
  • graphics controller 103 reads and executes drawing commands 510 to generate image i stored in buffer C, 506.
  • the first Display Flip command 508 is then read and executed.
  • buffer C, 506 provides the data for image i for display 522.
  • graphics controller 103 reads and executes drawing commands 520 to generate image i+1 stored in buffer A, 502.
  • buffer B, 504 still contains data for image i-1.
  • a second Display Flip command 518 is then read and executed.
  • buffer A 502
  • graphics controller 103 reads and executes drawing commands 530 to generate images i+2 stored in buffer B, 504.
  • buffer C, 506, still contains data for image i.
  • present triple buffered graphics systems require a processor to poll the status of the drawing command operations and the display flip operations before executing the next command.
  • synchronization between image generation and display is provided through the storage of display control commands in memory and the use ⁇ of a Wait While Flip Pending command prior to image generation. This control command mechanism provides adequate synchronization without requiring polling operations.
  • Figure 6 is a flow chart which illustrates the steps of performing a display flip operation using stored commands in a triple buffer system according to one embodiment of the present invention.
  • the three buffers are assumed to be in the following states: the image data (corresponding to image frame i-2) in buffer A is currently being displayed, the next image (corresponding to frame i-1) has been generated in buffer B, a Display Flip command has been stored to cause buffer B to be displayed, and buffer C is available for the generation of the next image.
  • step 602 commands to generate image i in buffer C are stored in memory.
  • step 604 a Wait While Flip Pending command is stored in memory. This command causes the execution of subsequent commands to be postponed until the preceding display flip operation has completed, thus ensuring that buffer A is no longer being displayed and is available for new image generation.
  • step 606 a first Display Flip command is stored in memory. The first Display Flip command will cause image i in buffer C to be displayed, making buffer B available for new image data when the flip operation completes.
  • step 608 commands to generate image i+1 in buffer A are stored in memory.
  • step 610 a Wait While Flip Pending command is stored in memory. This command causes the execution of subsequent commands to be postponed until the preceding display flip operation has completed, thus ensuring that buffer B is no longer being displayed and is available for new image generation.
  • step 612 a second Display Flip command is stored in memory. This second Display Flip command will cause image i+1 in buffer A to be displayed, making buffer C available for new image data when the flip operation completes.
  • step 614 commands to generate image i+2 in buffer B are stored in memory.
  • step 616 a Wait While Flip Pending command is stored in memory. This command causes the execution of subsequent commands to be postponed until the preceding display flip operation has completed, thus ensuring that buffer C is no longer being displayed and is available for new image generation.
  • step 618 a third Display Flip command is stored in memory. This third Display Flip command will cause image i+2 in buffer B to be displayed, making buffer A available for new image data when the flip operation completes. The steps of the above process are repeated for subsequent frames of the graphics sequence until all of the frames are processed.
  • the image generation, Display Flip, and Wait While Flip Pending commands are stored in command buffer 212 in RAM 108. After being buffered in RAM 108, these commands are executed by display engine 204 in graphics controller 103.

Abstract

A method and apparatus for synchronizing the generation and display of image frame data in a graphics processing system (200) is disclosed. Image frame data is stored in a plurality of memory buffers (107). A first command causes an image stored in a first buffer (206) to be displayed and a second buffer (208) to be made available for storing data for a next image. A second control command causes subsequent commands to be suspended until the first command is completely executed to prevent an incomplete image from being displayed.

Description

METHOD AND APPARATUS TO SYNCHRONIZE GRAPHICS RENDERING AND DISPLAY
FIELD OF THE INVENTION
The present invention relates generally to the field of computer graphics, and more specifically, to a system for efficiently performing a display flip operation between buffered image data.
BACKGROUND OF THE INVENTION
The delivery of smooth motion computer graphics, such as in three dimensional animation, requires timely rendering and display of successive image frames comprising the graphics sequence. Many present graphics processors employ a technique known as "double buffering" to provide the appearance of smooth animation in three-dimensional graphic sequences. This technique utilizes two image buffers. One image buffer is used to display a first image frame on the display screen while a second buffer is used to generate the next image frame. Once the second image frame is complete, the display output is switched to display the image from the second buffer, thus freeing the first image buffer for the generation of the next image frame. The process of switching between successive images in an image sequence is referred to as a "display flip". Using this technique, a graphics driver for the graphics device provides information for the next frame to be displayed to the graphics device after a display flip occurs.
In order to avoid image tearing artifacts, such as may be caused by the display of incompletely formed image frames, the display flip operation is typically performed by the display device hardware during the video vertical blank period. In present systems, a currently displayed image buffer does not become available for image generation until the display flip operation has completed.
Image generation is presently performed by software processes in which a host processor issues drawing commands to appropriate graphics hardware. Drawing command processing typically occurs asynchronously with video output. The host processor is therefore required to request the graphics hardware to perform a display flip operation during the next vertical blank period and synchronize rendering of the new image with the completion of the display flip operation.
Present known systems typically use a direct (unbuffered) graphics hardware command to request the display flip. A software driver is used to poll graphics hardware registers for a notification of the completion of image generation, as well as a notification of the completion of the display flip operation. The request for the generation of the next image is postponed until the software determines that the display flip has occurred. The processor is therefore required to initiate numerous read operations to the graphics device for display flip status. This polling technique thus imposes software overhead that requires both processor and bus time. In certain applications, these polling operations may significantly degrade system performance as they consume processor and bus cycles that could otherwise be applied to image generation and other applications.
SUMMARY OF THE INVENTION
A method and apparatus is disclosed for synchronizing the generation and display of graphics images in a graphics processing system. Data comprising a first image is stored in a first buffer of a plurality of memory buffers. A first control command causes the first image to be displayed on a display device, and a second buffer to be made available for storing data comprising a second image. A second control command causes subsequent commands to be suspended if the first control command has not completed execution.
Other features and advantages of the present invention will be apparent from the accompanying drawings and from the detailed description that follows.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements, and in which:
Figure 1 is a block diagram of one embodiment of a digital processing system of the present invention.
Figure 2 is a block diagram of one embodiment of a graphics controller included in the digital processing system of Figure 1.
Figure 3 is a state diagram for a double buffered system during a display flip operation.
Figure 4 is flow chart illustrating the steps of synchronizing graphics generation and display according to one embodiment of the present invention. Figure 5 is a state diagram for a triple buffered system during a display flip operation.
Figure 6 is flow chart illustrating the steps of synchronizing graphics rendering and display according to an alternative embodiment of the present invention.
DETAILED DESCRIPTION
A mechanism for synchronizing the rendering and display of graphics images is described. In one embodiment of the present invention, control and image generation commands are stored in a memory buffer for later execution by a graphics processor. A first control command requests a display flip operation, and a second command causes the graphics processor to suspend execution of subsequent instructions if a display flip operation has been requested but has not yet completed.
It is an intended advantage of embodiments of the invention to provide a mechanism that supports multi-buffered image generation without requiring software synchronization between a host processor and a graphics processor. It is a further intended advantage of embodiments of the invention to provide a computer graphics system that features reduced processor bandwidth for smooth display of graphics sequences. Hardware Overview
Figure 1 is a block diagram of a digital processing system including a graphics processor according to one embodiment of the present invention. Digital processing system 100 includes a processor 102 coupled through a bus 101 to a random access memory (RAM) 108, a read only memory (ROM) 106, and a mass storage device 104. Mass storage device 104 may be a disk or tape drive for storing data and instructions. Also coupled to processor 102 through bus 101 is input/output controller 105. Input/output controller 105 provides an interface to various input /output devices such as a keyboard, mouse, or similar cursor control devices.
Further coupled to processor 102 through bus 101 is a graphics controller 103. Graphics controller 103 provides the physical and logical connections between processor 102 and various display devices, such as display monitor 110. Graphics controller 103 can also be used to control display output through a television 114 through television encoder 112. It should be noted that the architecture of Figure 1 is provided only for purposes of illustration, and a host computer used in conjunction with the present invention is not limited to the specific architecture shown.
Graphics controller 103 in digital processing system 100 is controlled by a graphics driver that may be stored in memory, such as RAM 108, ROM 106, or mass storage device 104. The memory devices (e.g., RAM 108) are also used to buffer certain commands for later execution by graphics controller 103 or processor 102. In one embodiment of the present invention, graphics controller 103 also includes its own internal local memory 107, which may be implemented as Video RAM (VRAM) devices.
Figure 2 is a block diagram of a graphics controller according to one embodiment of the present invention. Graphics controller 103 includes Video RAM 107. RAM 107 is used to temporarily store data used by graphics controller 103 for the generation of images on a display device. RAM 107 may also be used to cache certain instructions or data structures frequently used by graphics driver 202. In one embodiment of the present invention, RAM 107 contains a plurality of data buffers 206-210. These buffers store pixel information for graphics images to be displayed on the display device. In general, each buffer stores data sufficient for display engine 204 to generate a single image frame on the display device.
Graphics controller 103 also includes display engine 204. Display engine 204 outputs the signals comprising the pixel data stored in RAM 107. Display engine 204 receives commands from graphics driver 202. Graphics driver 202 includes software instructions that control various aspects of the display operations of digital processing system 100, such as generating graphics instructions and data, processing starting addresses of graphics data, and processing various display status information.
Graphics driver 202 also stores certain drawing and control commands that control the display flip and wait operations that are used to synchronize the generation and display of graphics images. In one embodiment of the present invention, graphics driver 202 is stored in RAM 108 and transmits drawing and control commands to display engine 204 in graphics processor 103 over bus 101. The drawing, flip, and wait control commands are stored in a command buffer 212 contained in RAM 108 for subsequent execution by display engine 204 in graphics controller 103.
In one embodiment of the present invention, the buffers 206-210 in RAM 107 are used by the digital processing system to store sequential image frames for processing and display on a display device, such as display monitor 110. The buffers are used in conjunction with control commands that synchronize the rendering of the image data in the graphics processor with the display of image data on the display device. One graphics control command is a "Display Flip" control command that requests the graphics processor to perform a display flip operation. A second graphics control command is a "Wait While Flip Pending" control command that causes the graphics processor to pause if a display flip operation has been requested but has not yet been completed. Double Buffer System
In one embodiment of present invention, the Display Flip and Wait While Flip Pending commands are used in a graphics processing system that employs a double buffering technique. In a double buffer system, two buffers are used to sequentially render and store image frames. The image data in one buffer is displayed while the next image is generated in the second buffer. Once the next image is completely generated, the display output is flipped to display from the second buffer, thus freeing the previously-displayed image buffer for the generation of a new image.
In the double buffer system of the following description, the first buffer is denoted buffer A and the second buffer is denoted buffer B. In one embodiment of the present invention, the buffers are implemented in RAM devices included within graphics controller 103 in Figure 2. In this exemplary embodiment, buffer A corresponds to buffer 206 and buffer B corresponds to buffer 208. It should be noted, however, that the two buffers could be implemented in other memory devices, such as, for example, RAM 108.
Figure 3 is a generalized state diagram illustrating the execution of a display flip operation using double buffers A and B, and the state of the buffers before and after completion of a flip operation sequencing the state. Buffer A, 302, first contains image i and provides the data for image i for display 312. Concurrently, graphics controller 103 reads and executes drawing commands 310 to generate image i+1 stored in buffer B, 304. The Display Flip command 308 is then read and executed. When the Display Flip operation completes, buffer B, 304, provides the data for image i+1 for display 322. Concurrently, graphics controller 103 reads and executes drawing commands 320 to generate image i+2 stored in buffer A, 302.
In present double buffered graphics systems, a processor is required to poll the status of the drawing command operations and the display flip operation before causing execution of the next command. Without this polling procedure, synchronization between image generation and display between the two buffers would be lost, resulting in possible image tearing effects. In one embodiment of the present invention, however, synchronization between image generation and display is provided through the storage of display control commands in memory and the use of a Wait While Flip Pending command prior to image generation. This control command mechanism provides adequate synchronization without requiring costly polling operations to be performed by the processor.
Figure 4 is a flow chart which illustrates the steps of performing a display flip operation using stored commands in a double buffer system, according to one embodiment of the present invention. At the start of the steps in the flow chart of Figure 4, it is assumed that the image data (corresponding to image frame i-1) in buffer A is currently being displayed and that buffer B is available for the generation of the next image. In step 402, commands to generate image i in buffer B are stored in memory. In step 404, a first Display Flip command is stored in memory. The first Display Flip command will cause image i in buffer B to be displayed, making buffer A available for new image data (corresponding to the next image, i+1) when the flip operation completes.
Prior to the generation of image i+1, a Wait While Flip Pending command is stored in memory, step 406. This command causes the generation of image i+1 to be postponed until buffer A is available.
In step 408, commands to generate image i+1 in buffer A are stored in memory. In step 410, a second Display Flip command is stored in memory. This second Display Flip command will cause image i+1 in buffer A to be displayed, making image buffer B available for a new image (corresponding to image i+2) when the flip operation completes.
Prior to the generation of image i+2, a Wait While Flip Pending command is stored in memory, step 412. This command causes the generation of image i+2 to be postponed until buffer B is available.
The steps of the above process are repeated for subsequent frames of the graphics sequence until all of the frames are processed. In one embodiment of the present invention, the image generation, Display Flip, and Wait While Flip Pending commands are stored in command buffer 212 in RAM 108. After being buffered in RAM 108, these commands are executed by display engine 204 in graphics controller 103. Triple Buffer System
In an alternative embodiment of present invention, the Display Flip and Wait While Flip Pending commands are used in a triple buffer graphics processing system. In a triple buffer system, three buffers are used to sequentially render and store image frames. The image data in one buffer is displayed while the next image is generated in the second buffer. The third buffer is used to generate a new image during the period between the request for a display flip and the completion of the display flip operation. A triple buffer system improves performance over a double buffer system by reducing the time spent polling for display flip completion notification. However, present triple buffer systems still require some degree of software polling to be performed by a processor, thus imposing a certain processor bandwidth overhead.
In the triple buffer system of the following description, the first buffer is denoted buffer A, the second buffer is denoted buffer B, and the third buffer is denoted buffer C. In an exemplary embodiment of the present invention, the buffers are implemented in RAM devices included within graphics controller 103 in Figure 2. Again, however, it should be noted that the three buffers could be implemented in other memory devices, such as, for example, RAM 108.
Figure 5 is a generalized state diagram illustrating the execution of display flip operations using triple buffers A, B, and C, and the states of the buffers before and after completion of flip operations that sequence the states. Buffer A, 502, first contains image i-2. Buffer B, 504, first contains data for image i-1 and provides the data for image i-1 for display, 512. Concurrently, graphics controller 103 reads and executes drawing commands 510 to generate image i stored in buffer C, 506. The first Display Flip command 508 is then read and executed. When this first Display Flip command completes, buffer C, 506, provides the data for image i for display 522. Concurrently, graphics controller 103 reads and executes drawing commands 520 to generate image i+1 stored in buffer A, 502. During this time, buffer B, 504, still contains data for image i-1.
A second Display Flip command 518 is then read and executed. When this second Display Flip command completes, buffer A, 502, provides the data for image i+1 for display 532. Concurrently, graphics controller 103 reads and executes drawing commands 530 to generate images i+2 stored in buffer B, 504. During this time, buffer C, 506, still contains data for image i.
As with present double buffered systems, present triple buffered graphics systems require a processor to poll the status of the drawing command operations and the display flip operations before executing the next command. In one embodiment of the present invention, however, synchronization between image generation and display is provided through the storage of display control commands in memory and the use~of a Wait While Flip Pending command prior to image generation. This control command mechanism provides adequate synchronization without requiring polling operations.
Figure 6 is a flow chart which illustrates the steps of performing a display flip operation using stored commands in a triple buffer system according to one embodiment of the present invention. At the start of the steps in the flow chart of Figure 6, the three buffers are assumed to be in the following states: the image data (corresponding to image frame i-2) in buffer A is currently being displayed, the next image (corresponding to frame i-1) has been generated in buffer B, a Display Flip command has been stored to cause buffer B to be displayed, and buffer C is available for the generation of the next image.
In step 602, commands to generate image i in buffer C are stored in memory. In step 604, a Wait While Flip Pending command is stored in memory. This command causes the execution of subsequent commands to be postponed until the preceding display flip operation has completed, thus ensuring that buffer A is no longer being displayed and is available for new image generation. In step 606, a first Display Flip command is stored in memory. The first Display Flip command will cause image i in buffer C to be displayed, making buffer B available for new image data when the flip operation completes.
In step 608, commands to generate image i+1 in buffer A are stored in memory. In step 610, a Wait While Flip Pending command is stored in memory. This command causes the execution of subsequent commands to be postponed until the preceding display flip operation has completed, thus ensuring that buffer B is no longer being displayed and is available for new image generation. In step 612, a second Display Flip command is stored in memory. This second Display Flip command will cause image i+1 in buffer A to be displayed, making buffer C available for new image data when the flip operation completes.
In step 614, commands to generate image i+2 in buffer B are stored in memory. In step 616, a Wait While Flip Pending command is stored in memory. This command causes the execution of subsequent commands to be postponed until the preceding display flip operation has completed, thus ensuring that buffer C is no longer being displayed and is available for new image generation. In step 618, a third Display Flip command is stored in memory. This third Display Flip command will cause image i+2 in buffer B to be displayed, making buffer A available for new image data when the flip operation completes. The steps of the above process are repeated for subsequent frames of the graphics sequence until all of the frames are processed. In one embodiment of the present invention, the image generation, Display Flip, and Wait While Flip Pending commands are stored in command buffer 212 in RAM 108. After being buffered in RAM 108, these commands are executed by display engine 204 in graphics controller 103.
In the foregoing, a system has been described for efficiently synchronizing the rendering and display of graphic image sequences. Although the present invention has been described with reference to specific exemplary embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention as set forth in the claims. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.

Claims

CLAIMSWhat is claimed is:
1. A method of synchronizing the generation and display of image frames on a display device, said method comprising the steps of: storing data comprising a first image in one of a plurality of memory buffers; executing a first control command operable to cause said first image to be displayed on said display device and to cause a second buffer of said plurality of buffers to be available for storing data comprising a second image; and executing a second control command operable to cause subsequent commands to be suspended if said first control command has not completed execution.
2. The method of claim 1 further comprising the step of storing said first control command and said second control command in memory prior to execution of said first control command and said second control command.
3. The method of claim 2 wherein said first control command and said second control command are executed by a graphics processor coupled to said display device.
4. The method of claim 3 wherein said plurality of memory buffers comprises two memory buffers, and said graphics processor implements a double buffer scheme of performing a display flip operation between said first image and said second image.
5. The method of claim 3 wherein said plurality of memory buffers comprises three memory buffers, and said graphics processor implements a triple buffer scheme of performing a display flip operation between said first image and said second image.
6. A method comprising the steps of: generating image data for a first image frame in a first buffer of a plurality of buffers; storing a first command in a memory, said first command operable to cause said first image frame to be displayed on a display device and to further cause a second buffer of said plurality of buffers to be made available to store image data for a second image frame; storing a second command in said memory, said second command operable to cause any subsequent command causing a display of said second image frame to be suspended until said second buffer is available to store said image data for said second image frame.
7. The method of claim 6 wherein said first command and said second command are executed by a graphics processor coupled to said display device.
8. The method of claim 7 wherein said plurality of memory buffers comprises two memory buffers, and said graphics processor implements a double buffer scheme of performing a display flip operation between said first image frame and said second image frame.
9. The method of claim 7 wherein said plurality of memory buffers comprises three memory buffers, and said graphics processor implements a triple buffer scheme of performing a display flip operation between said first image frame and said second image frame.
10. An apparatus comprising: a bus; a digital processor coupled to said bus; a display device coupled to said digital processor; and a first memory coupled to said digital processor, said memory comprising a plurality of buffers, each buffer of said plurality of buffers operable to store data comprising an image for display on said display device; and wherein said digital processor is operable to execute a first control command causing a first buffer of said plurality of buffers to be made available for storing image data, and to execute a second control command causing subsequent commands to be suspended until said first buffer is available.
11. The apparatus of claim 10 wherein said first control command and said second control command are stored in a second memory coupled to said bus prior to execution by said processor.
12. The method of claim 11 wherein said plurality of memory buffers comprises two memory buffers, and said digital processor implements a double buffer scheme of performing a display flip operation between a first image and a second image.
13. The method of claim 11 wherein said plurality of memory buffers comprises three memory buffers, and said digital processor implements a triple buffer scheme of performing a display flip operation between a first image and a second image.
14. The method of claim 11 wherein said first memory comprises a random access memory contained within said processor.
15. A computer readable medium having stored thereon sequences of instructions which are executable by a digital processing system, and which, when executed by said digital processing system, cause said digital processing system to perform the steps of: storing data comprising a first image in one of a plurality of memory buffers; executing a first control command operable to cause said first image to be displayed on a display device and to cause a second buffer of said plurality of buffers to be available for storing data comprising a second image; and executing a second control command operable to cause subsequent commands to be suspended if said first control command has not completed execution.
16. The computer readable medium of claim 15 having further stored thereon sequences of instructions which cause said digital processing system to perform the step of storing said first control command and said second control command in memory prior to execution of said first control command and said second control command.
PCT/US1999/002149 1998-02-10 1999-02-01 Method and apparatus to synchronize graphics rendering and display WO1999040518A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU23524/99A AU2352499A (en) 1998-02-10 1999-02-01 Method and apparatus to synchronize graphics rendering and display

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US2162698A 1998-02-10 1998-02-10
US09/021,626 1998-02-10

Publications (1)

Publication Number Publication Date
WO1999040518A1 true WO1999040518A1 (en) 1999-08-12

Family

ID=21805265

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1999/002149 WO1999040518A1 (en) 1998-02-10 1999-02-01 Method and apparatus to synchronize graphics rendering and display

Country Status (2)

Country Link
AU (1) AU2352499A (en)
WO (1) WO1999040518A1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1143331A2 (en) * 2000-04-07 2001-10-10 Sony Corporation Image procesing apparatus and method of the same, and display apparatus using the image processing apparatus
US6970851B1 (en) * 2001-09-28 2005-11-29 Ncr Corporation System and method of configuring value cards
FR2920631A1 (en) * 2007-08-30 2009-03-06 Alstom Transport Sa Video signal processing system for infotainment system embarked in train, has pointing units pointing reading units for controlling reading of following outgoing image in following buffer if following buffer is other than current buffer
EP3525203A1 (en) * 2017-07-06 2019-08-14 Channel One Holdings Inc. Display buffering methods and systems
US10929946B2 (en) 2018-06-01 2021-02-23 Channel One Holdings Inc. Display buffering methods and systems
US11164496B2 (en) 2019-01-04 2021-11-02 Channel One Holdings Inc. Interrupt-free multiple buffering methods and systems

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5543824A (en) * 1991-06-17 1996-08-06 Sun Microsystems, Inc. Apparatus for selecting frame buffers for display in a double buffered display system
US5657478A (en) * 1995-08-22 1997-08-12 Rendition, Inc. Method and apparatus for batchable frame switch and synchronization operations
US5801717A (en) * 1996-04-25 1998-09-01 Microsoft Corporation Method and system in display device interface for managing surface memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5543824A (en) * 1991-06-17 1996-08-06 Sun Microsystems, Inc. Apparatus for selecting frame buffers for display in a double buffered display system
US5657478A (en) * 1995-08-22 1997-08-12 Rendition, Inc. Method and apparatus for batchable frame switch and synchronization operations
US5801717A (en) * 1996-04-25 1998-09-01 Microsoft Corporation Method and system in display device interface for managing surface memory

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1143331A2 (en) * 2000-04-07 2001-10-10 Sony Corporation Image procesing apparatus and method of the same, and display apparatus using the image processing apparatus
EP1143331A3 (en) * 2000-04-07 2006-12-20 Sony Corporation Image procesing apparatus and method of the same, and display apparatus using the image processing apparatus
US6970851B1 (en) * 2001-09-28 2005-11-29 Ncr Corporation System and method of configuring value cards
FR2920631A1 (en) * 2007-08-30 2009-03-06 Alstom Transport Sa Video signal processing system for infotainment system embarked in train, has pointing units pointing reading units for controlling reading of following outgoing image in following buffer if following buffer is other than current buffer
EP3525203A1 (en) * 2017-07-06 2019-08-14 Channel One Holdings Inc. Display buffering methods and systems
US11049211B2 (en) 2017-07-06 2021-06-29 Channel One Holdings Inc. Methods and system for asynchronously buffering rendering by a graphics processing unit
US10929946B2 (en) 2018-06-01 2021-02-23 Channel One Holdings Inc. Display buffering methods and systems
US11164496B2 (en) 2019-01-04 2021-11-02 Channel One Holdings Inc. Interrupt-free multiple buffering methods and systems

Also Published As

Publication number Publication date
AU2352499A (en) 1999-08-23

Similar Documents

Publication Publication Date Title
JP4383853B2 (en) Apparatus, method and system using graphic rendering engine with temporal allocator
US5657478A (en) Method and apparatus for batchable frame switch and synchronization operations
WO2020207251A1 (en) Image update method and apparatus, and terminal and storage medium
EP1092192B1 (en) Double buffered graphics and video accelerator having a write blocking memory interface and method of blocking write in the memory
US6331854B1 (en) Method and apparatus for accelerating animation in a video graphics system
US7868848B2 (en) Method of synchronizing images on multiple display devices with different refresh rates
US6100906A (en) Method and apparatus for improved double buffering
KR100668002B1 (en) Apparatus, method and system with a graphics-rendering engine having a graphics context manager
US6252600B1 (en) Computer graphics system with dual FIFO interface
US11164496B2 (en) Interrupt-free multiple buffering methods and systems
JP2004280125A (en) Video/graphic memory system
US6952217B1 (en) Graphics processing unit self-programming
TW200821984A (en) Work based clock management for display sub-system
JPH0237393A (en) Picture drawing system
JPH07271344A (en) Graphic display device
WO1999040518A1 (en) Method and apparatus to synchronize graphics rendering and display
WO2007055067A1 (en) Information processing device, graphic processor, control processor, and information processing method
US20060082580A1 (en) Method and apparatus for triggering frame updates
JPH0150950B2 (en)
JP2810609B2 (en) Graphic display method and apparatus
JP3826942B2 (en) Image transfer using drawing command hook
JPH1153528A (en) Digital image processor and digital image processing method
JPH05224866A (en) Graphic-information processing system
JPH06118919A (en) Animation reproducing device
JP2829051B2 (en) Character display method

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AL AM AT AT AU AZ BA BB BG BR BY CA CH CN CU CZ CZ DE DE DK DK EE EE ES FI FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SK SL TJ TM TR TT UA UG US UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
NENP Non-entry into the national phase

Ref country code: KR

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase