1Name 2 3 WGL_I3D_swap_frame_lock 4 5Name Strings 6 7 WGL_I3D_swap_frame_lock 8 9Version 10 11 Date: 9/23/1999 Revision: 1.2 12 13Number 14 15 254 16 17Dependencies 18 19 WGL_EXT_extensions_string is required. 20 WGL_EXT_swap_control affects this extension. 21 22Overview 23 24 This extension allows an application to synchronize color buffer swaps 25 across multiple systems. Applications that run simultaneously on 26 multiple systems can use this extension to synchronize the buffer swap 27 across each of these systems. 28 29 The mechanism used to implement synchronization of multiple displays 30 depends on an external sync signal. This resource can only be used by a 31 single application at a time. 32 33 Each system running the application must have frame lock enabled in 34 order for their system to participate in the frame lock. If frame 35 lock for a system is not enabled, that system will have no affect on 36 other systems. 37 38 For each of the systems to swap at the correct position, it is 39 required that all of the systems genlock together. Genlock is 40 controlled through the Video Applet. 41 42 The frame lock extension can also be used in conjunction with the swap 43 control extension to control the swap rate. The interval rate of the 44 "master" system (i.e., the system at the start of the cabled systems) 45 controls the swap rate. 46 47 An implementation-dependent timeout is set when a swap is requested. 48 If the timeout expires before all systems are ready to swap, the swap 49 will occur. The prevents a system hang if the cable becomes 50 disconnected or an application hangs. 51 52New Procedures and Functions 53 54 BOOL wglEnableFrameLockI3D(VOID) 55 56 BOOL wglDisableFrameLockI3D(VOID) 57 58 BOOL wglIsEnabledFrameLockI3D(BOOL *pFlag) 59 60 BOOL wglQueryFrameLockMasterI3D(BOOL *pFlag) 61 62New Tokens 63 64 None 65 66Additions to Chapter 2 of the 1.2 GL Specification (OpenGL Operation) 67 68 None 69 70Additions to Chapter 3 of the 1.2 GL Specification (Rasterization) 71 72 None 73 74Additions to Chapter 4 of the 1.2 GL Specification (Per-Fragment Operations 75and the Framebuffer) 76 77 None 78 79Additions to Chapter 5 of the 1.2 GL Specification (Special Functions) 80 81 None 82 83Additions to Chapter 6 of the 1.2 GL Specification (State and State Requests) 84 85 None 86 87Additions to the WGL Specification 88 89 wglEnableFrameLockI3D enables synchronization of buffer swaps to all 90 systems that are connected through the external sync cable and have 91 enabled frame lock. A value of TRUE is returned if the hardware 92 supports frame lock and the resource is currently available. A value 93 of FALSE is returned if the hardware cannot support frame lock or the 94 resource is in use. 95 96 Frame lock can be disabled with wglDisableFrameLockI3D. If frame 97 lock is disabled for a system, that system has no affect on other 98 systems that are synchronized to the external sync cable. 99 100 The current state of the frame lock enable can be obtained with 101 wglIsEnabledFrameLockI3D. 102 103 The "master" system controls the behavior of swap for all systems 104 that have frame lock enabled. wglQueryFrameLockMaster can be used 105 to determine if a system is the "master" system. The swap behavior 106 of the master system depends on the setting of the swap interval 107 using the WGL_EXT_swap_control extension. 108 109 The "master" system is forced to be synchronized to at least one 110 vertical blank if the swap interval is 0 or the Video Applet 111 setting for synchronizing to vertical blank is not set. 112 113Dependencies on WGL_EXT_extensions_string 114 115 Because there is no way to extend wgl, these calls are defined in 116 the ICD and can be called by obtaining the address with 117 wglGetProcAddress. Because this extension is a WGL extension, it 118 is not included in the GL_EXTENSIONS string. Its existence can be 119 determined with the WGL_EXT_extensions_string extension. 120 121Errors 122 123 If the function succeeds, the return value is TRUE. If the function 124 fails, the return value is FALSE. To get extended error information, 125 call GetLastError. 126 127 ERROR_DC_NOT_FOUND An RC was not current to the calling 128 thread; therefore, no DC could be 129 obtained. 130 131 ERROR_BUSY The resource used for obtaining usage 132 was currently in use by another 133 application. 134 135New State 136 137 None 138 139New Implementation Dependent State 140 141 None 142