blob: 4300856d0208a9207363ff428f058053b2037162 [file] [log] [blame]
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 <uSource> 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 <uEdge> 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)
<hDC> 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.
<uSource> 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)
<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)
<uRate> specifies every nth pulse be used for the genlock trigger.
For example, if <uRate> were set to a value of 2, every other
genlock pulse would generate a genlock trigger. The minimum
value for <uRate> is 1. The maximum value for <uRate> 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)
<uDelay> specifies the delay (in pixels) that the trigger is
delayed before being used to synchronize the screen refresh.
<uDelay> must be in the range [0, <maxDelay>] where <maxDelay>
is the number of pixel clocks needed to display an entire frame.
The maximum delay <maxDelay> can be calculated by the following
equation:
<maxDelay> = <maxLineDelay> * <maxPixelDelay>
where <maxLineDelay> and <maxPixelDelay> 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 <hDC> 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 <hDC> was not valid.
ERROR_NO_SYSTEM_RESOURCES The genlock functionality is not
supported.
ERROR_INVALID_DATA <uSource> is not one of the valid
sources.
ERROR_INVALID_DATA <uEdge> is not one of the valid
source edge modes.
ERROR_INVALID_DATA <uRate> is less than a value of 1 or
greater than a value of 6.
ERROR_INVALID_DATA <uDelay> is greater than <maxDelay>.
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.