blob: a2f2da8deacfdd375619b65b292523e005ed063d [file] [log] [blame]
Name
WGL_I3D_swap_frame_lock
Name Strings
WGL_I3D_swap_frame_lock
Version
Date: 9/23/1999 Revision: 1.2
Number
254
Dependencies
WGL_EXT_extensions_string is required.
WGL_EXT_swap_control affects this extension.
Overview
This extension allows an application to synchronize color buffer swaps
across multiple systems. Applications that run simultaneously on
multiple systems can use this extension to synchronize the buffer swap
across each of these systems.
The mechanism used to implement synchronization of multiple displays
depends on an external sync signal. This resource can only be used by a
single application at a time.
Each system running the application must have frame lock enabled in
order for their system to participate in the frame lock. If frame
lock for a system is not enabled, that system will have no affect on
other systems.
For each of the systems to swap at the correct position, it is
required that all of the systems genlock together. Genlock is
controlled through the Video Applet.
The frame lock extension can also be used in conjunction with the swap
control extension to control the swap rate. The interval rate of the
"master" system (i.e., the system at the start of the cabled systems)
controls the swap rate.
An implementation-dependent timeout is set when a swap is requested.
If the timeout expires before all systems are ready to swap, the swap
will occur. The prevents a system hang if the cable becomes
disconnected or an application hangs.
New Procedures and Functions
BOOL wglEnableFrameLockI3D(VOID)
BOOL wglDisableFrameLockI3D(VOID)
BOOL wglIsEnabledFrameLockI3D(BOOL *pFlag)
BOOL wglQueryFrameLockMasterI3D(BOOL *pFlag)
New Tokens
None
Additions to Chapter 2 of the 1.2 GL Specification (OpenGL Operation)
None
Additions to Chapter 3 of the 1.2 GL Specification (Rasterization)
None
Additions to Chapter 4 of the 1.2 GL Specification (Per-Fragment Operations
and the Framebuffer)
None
Additions to Chapter 5 of the 1.2 GL Specification (Special Functions)
None
Additions to Chapter 6 of the 1.2 GL Specification (State and State Requests)
None
Additions to the WGL Specification
wglEnableFrameLockI3D enables synchronization of buffer swaps to all
systems that are connected through the external sync cable and have
enabled frame lock. A value of TRUE is returned if the hardware
supports frame lock and the resource is currently available. A value
of FALSE is returned if the hardware cannot support frame lock or the
resource is in use.
Frame lock can be disabled with wglDisableFrameLockI3D. If frame
lock is disabled for a system, that system has no affect on other
systems that are synchronized to the external sync cable.
The current state of the frame lock enable can be obtained with
wglIsEnabledFrameLockI3D.
The "master" system controls the behavior of swap for all systems
that have frame lock enabled. wglQueryFrameLockMaster can be used
to determine if a system is the "master" system. The swap behavior
of the master system depends on the setting of the swap interval
using the WGL_EXT_swap_control extension.
The "master" system is forced to be synchronized to at least one
vertical blank if the swap interval is 0 or the Video Applet
setting for synchronizing to vertical blank is not set.
Dependencies on WGL_EXT_extensions_string
Because there is no way to extend wgl, these calls are defined in
the ICD and can be called by obtaining the address with
wglGetProcAddress. Because this extension is a WGL extension, it
is not included in the GL_EXTENSIONS string. Its existence can be
determined with the WGL_EXT_extensions_string extension.
Errors
If the function succeeds, the return value is TRUE. If the function
fails, the return value is FALSE. To get extended error information,
call GetLastError.
ERROR_DC_NOT_FOUND An RC was not current to the calling
thread; therefore, no DC could be
obtained.
ERROR_BUSY The resource used for obtaining usage
was currently in use by another
application.
New State
None
New Implementation Dependent State
None