| Name |
| |
| SGI_video_sync |
| |
| Name Strings |
| |
| GLX_SGI_video_sync |
| |
| Version |
| |
| $Date: 1995/09/15 01:22:58 $ $Revision: 1.8 $ |
| |
| Number |
| |
| 41 |
| |
| Dependencies |
| |
| None |
| |
| Overview |
| |
| This extension provides a means for synchronization with the video |
| frame rate of a monitor. (In the case of an interlaced monitor, |
| this is typically the rate of displaying both the even and odd |
| fields of a frame.) The kernel maintains a video sync counter for |
| each physical hardware pipe in a system; the counter is incremented |
| upon the completion of the display of each full frame of video data. An |
| OpenGL context always corresponds to a pipe. When an OpenGL process |
| has a current context, it can put itself to sleep until the counter of |
| that pipe reaches a desired value. The process can also query the |
| value of the counter. |
| |
| The counter runs as long as the graphics subsystem is running; it is |
| initialized via the /usr/gfx/gfxinit command. However, a process can |
| query or sleep on the counter only when a direct context is current. |
| Each of the procedures described below will fail and return an error |
| code if the current context is not a direct one. |
| |
| The counter is an unsigned 32-bit integer. |
| |
| Issues |
| |
| Should glXWaitVideoSyncSGI return GLX_BAD_VALUE if <remainder> is |
| greater than or equal to <divisor>? (No.) |
| |
| New Procedures and Functions |
| |
| int glXGetVideoSyncSGI(uint *count); |
| |
| int glXWaitVideoSyncSGI(int divisor, |
| int remainder, |
| unsigned int *count); |
| |
| New Tokens |
| |
| None |
| |
| Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) |
| |
| None |
| |
| Additions to Chapter 3 of the 1.0 Specification (Rasterization) |
| |
| None |
| |
| Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations and |
| the Framebuffer) |
| |
| None |
| |
| Additions to Chapter 5 of the 1.0 Specification (Special Functions) |
| |
| None |
| |
| Additions to Chapter 6 of the 1.0 Specification (State and State Requests) |
| |
| None |
| |
| Additions to the GLX Specification |
| |
| [Add to Section 3.2.5 of the 1.0 GLX Specification (Synchronization |
| Primititives)] |
| |
| In addition to its current functions, /usr/gfx/gfxinit also initializes |
| the video sync counter to zero. After that time the video sync counter |
| is incremented by one at the completion of the display of each full |
| frame of video data. The counter value wraps to zero after it reaches |
| its maximum value. The single video sync counter is shared by all |
| GLXContexts. |
| |
| glXGetVideoSyncSGI returns the value of the video sync counter in |
| <count>. Zero is returned if the call is successful. |
| |
| glXWaitVideoSyncSGI puts the calling process to sleep until |
| |
| (C mod D) = R |
| |
| where C is the video sync counter, D is specified by the <divisor> |
| parameter of glXWaitVideoSyncSGI, and R is specified by the <remainder> |
| parameter of glXWaitVideoSyncSGI. glXWaitVideoSyncSGI returns the |
| current video sync counter value in <count>. Zero is returned by |
| glXWaitVideoSyncSGI if it is successful. |
| |
| glXWaitVideoSyncSGI is supported only by direct GLXContexts. |
| |
| Errors |
| |
| glXGetVideoSyncSGI returns GLX_BAD_CONTEXT if there is no current |
| GLXContext. |
| |
| glXWaitVideoSyncSGI returns GLX_BAD_CONTEXT if the current context is |
| not direct, or if there is no current context. |
| |
| glXWaitVideoSyncSGI returns GLX_BAD_VALUE if parameter <divisor> is less |
| than or equal to zero, or if parameter <remainder> is less than zero. |
| |
| New State |
| |
| Get Value Get Command Type Initial Value |
| --------- ----------- ---- ------------- |
| [video sync counter] glXGetVideoSyncSGI Z+ unknown |
| |
| New Implementation Dependent State |
| |
| None |