Name WGL_I3D_genlock Name Strings WGL_I3D_genlock Contact Dale Kirkland, Intense3D (kirkland 'at' intense3d.com) Status Complete Version Date: 04/17/2000 Revision 1.0 Number 252 Dependencies The extension is written against the OpenGL 1.2.1 Specification although it should work on any previous OpenGL specification. The WGL_EXT_extensions_string extension is required. Overview The genlock extensions allows application control of the genlock features. Genlock is used to synchronize the refresh of the monitor to an external signal. There are five different parameters that can be used to control genlock: Enable/Disable Source Selection Source Sample Edge Source Sample Rate Source Delay IP Status None Issues None New Procedures and Functions BOOL wglEnableGenlockI3D(HDC hDC) BOOL wglDisableGenlockI3D(HDC hDC) BOOL wglIsEnabledGenlockI3D(HDC hDC, BOOL *pFlag) BOOL wglGenlockSourceI3D(HDC hDC, UINT uSource) BOOL wglGetGenlockSourceI3D(HDC hDC, UINT *uSource) BOOL wglGenlockSourceEdgeI3D(HDC hDC, UINT uEdge) BOOL wglGetGenlockSourceEdgeI3D(HDC hDC, UINT *uEdge) BOOL wglGenlockSampleRateI3D(HDC hDC, UINT uRate) BOOL wglGetGenlockSampleRateI3D(HDC hDC, UINT *uRate) BOOL wglGenlockSourceDelayI3D(HDC hDC, UINT uDelay) BOOL wglGetGenlockSourceDelayI3D(HDC hDC, UINT *uDelay) BOOL wglQueryGenlockMaxSourceDelayI3D(HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay) New Tokens Accepted by the parameter of wglGenlockSourceI3D: WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044 WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045 WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046 WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047 WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048 WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049 Accepted by the parameter of wglGenlockSourceEdgeI3D: WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C Additions to Chapter 2 of the OpenGL 1.2.1 Specification (OpenGL Operation) None Additions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization) None Additions to Chapter 4 of the OpenGL 1.2.1 Specification (Per-Fragment Operations and the Frame Buffer) None Additions to Chapter 5 of the OpenGL 1.2.1 Specification (Special Functions) None Additions to Chapter 6 of the OpenGL 1.2.1 Specification (State and State Requests) None Additions to Appendix A of the OpenGL 1.2.1 Specification (Invariance) None Additions to the WGL Specification The genlock trigger is used to synchronize the start of a frame with a trigger pulse. If field data is being displayed (e.g. frame-sequential stereo), the synchronization only occurs at the frame boundary, not each field boundary. The genlock trigger is derived from the genlock source. The genlock source can be selected from six different inputs to the system by calling wglGenlockSourceI3D. BOOL wglGenlockSourceI3D(HDC hDC, UINT uSource) is a device context for the graphics adapter or a window residing on the graphics adapter that supports genlock. There is only a single genlock source for each graphics adapter regardless of the number of monitors supported by the adapter. specifies one of the following sources: WGL_GENLOCK_SOURCE_MULTIVIEW_I3D Selects the multiview sync signal as the genlock source. WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D Selects the external genlock vertical sync component. WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D Selects the external genlock field component. WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D Selects the external genlock as a TTL-level signal. WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D Selects the digital genlock vertical sync component. WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D Selects the digital genlock field component. The current genlock source can be queried by calling wglGetGenlockSourceI3D. A genlock pulse is generated from the input source based on the rising, falling, or both edges of the source. The edge selection is set by calling wglGenlockSourceEdgeI3D. BOOL wglGenlockSourceEdgeI3D(HDC hDC, UINT uEdge) specifies one of the following source edges modes used to generate the genlock trigger. WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D Selects the falling edge of the source. WGL_GENLOCK_SOURCE_EDGE_RISING_I3D Selects the rising edge of the source. WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D Selects both edges of the source. The current genlock source edge mode can be queried with wglGetGenlockSourceEdgeI3D. The genlock trigger is generated by sampling the genlock pulses. The sample rate of the genlock pulses is controlled by calling wglGenlockSampleRateI3D. BOOL wglGenlockSampleRateI3D(HDC hDC, UINT uRate) specifies every nth pulse be used for the genlock trigger. For example, if were set to a value of 2, every other genlock pulse would generate a genlock trigger. The minimum value for is 1. The maximum value for is 6. The current genlock sample rate can be queried by calling wglGetGenlockSampleRateI3D. The genlock trigger can be delayed up to an entire frame by calling wglGenlockSourceDelayI3D. BOOL wglGenlockSourceDelayI3D(HDC hDC, UINT uDelay) specifies the delay (in pixels) that the trigger is delayed before being used to synchronize the screen refresh. must be in the range [0, ] where is the number of pixel clocks needed to display an entire frame. The maximum delay can be calculated by the following equation: = * where and can be queried by calling wglQueryGenlockMaxSourceDelayI3D. BOOL wglQueryGenlockMaxSourceDelayI3D(HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay) The current source delay can be queried by calling wglGetGenlockSourceDelayI3D. Genlock is enabled for each monitor by calling wglEnableGenlockI3D. BOOL wglEnableGenlockI3D(HDC hDC) Genlock is enabled for the monitor attached to the device with the device context of a window created on the monitor. Genlock can be disabled for a monitor by calling wglDisableGenlockI3D. BOOL wglDisableGenlockI3D(HDC hDC) The current genlock enable can be queried by calling wglIsEnabledGenlockI3D. In order to avoid synchronization to an incomplete genlock specification, genlock should be disabled while the genlock parameters are being changed. The exception to this is changing the genlock trigger delay with wglGenlockSourceDelayI3D. 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 any of the genlock functions succeed, a value of TRUE is returned. If a function fails, a value of FALSE is returned. To get extended error information, call GetLastError. ERROR_DC_NOT_FOUND The was not valid. ERROR_NO_SYSTEM_RESOURCES The genlock functionality is not supported. ERROR_INVALID_DATA is not one of the valid sources. ERROR_INVALID_DATA is not one of the valid source edge modes. ERROR_INVALID_DATA is less than a value of 1 or greater than a value of 6. ERROR_INVALID_DATA is greater than . New State None New Implementation Dependent State None Revision History 10/26/1999 0.1 First draft. 04/17/2000 1.0 Released driver to ISVs.