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