15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    OML_interlace
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_OML_interlace
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Jon Leech, Silicon Graphics (ljp 'at' sgi.com)
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciStatus
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    Complete. Approved by the Khronos SIG on July 19, 2001.
165bd8deadSopenharmony_ci
175bd8deadSopenharmony_ciVersion
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ci    Last Modified Date: 07/23/2001
205bd8deadSopenharmony_ci    Author Revision: $Header: //depot/main/doc/registry/extensions/OML/interlace.spec#5 $
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ciNumber
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ci    239
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ciDependencies
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ci    None.
295bd8deadSopenharmony_ci
305bd8deadSopenharmony_ciOverview
315bd8deadSopenharmony_ci
325bd8deadSopenharmony_ci    This extension provides a way to interlace rows of pixels when
335bd8deadSopenharmony_ci    drawing, reading, or copying pixel rectangles or texture images. In
345bd8deadSopenharmony_ci    this context, interlacing means skiping over rows of pixels or
355bd8deadSopenharmony_ci    texels in the destination. This is useful for dealing with video
365bd8deadSopenharmony_ci    data since a single frame of video is typically composed from two
375bd8deadSopenharmony_ci    images or fields: one image specifying the data for even rows of the
385bd8deadSopenharmony_ci    frame and the other image specifying the data for odd rows of the
395bd8deadSopenharmony_ci    frame.
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    The functionality provided by this extension is a combination
425bd8deadSopenharmony_ci    of the older SGIX_interlace and INGR_interlace_read extensions,
435bd8deadSopenharmony_ci    with  changes applying interlacing to texture image queries.
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ciIssues
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci  * Should there be a single enumerant controlling both draw and read
485bd8deadSopenharmony_ci    operations? For the moment, we continue using separate enums, for
495bd8deadSopenharmony_ci    backwards compatibility with SGIX_interlace and INGR_interlace_read.
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ci  * Can we use the same enum values as the older extensions? Possibly,
525bd8deadSopenharmony_ci    depending on the resolution of issues of exactly which operations
535bd8deadSopenharmony_ci    interlacing is applied to. For the moment we assume the same
545bd8deadSopenharmony_ci    values cannot be used.
555bd8deadSopenharmony_ci
565bd8deadSopenharmony_ci  * Are there any GLX protocol issues relating to the actual vs.
575bd8deadSopenharmony_ci    specified size of the image being transferred? Probably not, since
585bd8deadSopenharmony_ci    unlike the effects of convolution, the image being transferred over
595bd8deadSopenharmony_ci    the wire is always the specified size; all that changes is where the
605bd8deadSopenharmony_ci    pixels are positioned in the frame buffer.
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ci  * Discreet requested that INTERLACE_READ_OML apply to GetTexImage. The
635bd8deadSopenharmony_ci    extension does not support this because there's no easy way to
645bd8deadSopenharmony_ci    support it with any generality: with only the binary
655bd8deadSopenharmony_ci    INTERLACE_READ_OML setting available, the implementation could
665bd8deadSopenharmony_ci    return only the even rows, but would have no way of indicating that
675bd8deadSopenharmony_ci    only the odd rows should be returned. This is non-orthogonal
685bd8deadSopenharmony_ci    probably more frustrating than useful; a generic solution would
695bd8deadSopenharmony_ci    require creation of a GetTexSubImage call.
705bd8deadSopenharmony_ci
715bd8deadSopenharmony_ci  * We may need to be more precise about exactly which operations
725bd8deadSopenharmony_ci    interlacing is and is not applied to. Currently it must be inferred
735bd8deadSopenharmony_ci    from other parts of the OpenGL Specification, and different
745bd8deadSopenharmony_ci    implementations are likely to disagree on this. Some language has
755bd8deadSopenharmony_ci    been added to section 6.1.4 to deal explicitly with GetTexImage, but
765bd8deadSopenharmony_ci    may be needed elsewhere as well.
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ciIP Status
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ci    No known issues.
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ciNew Procedures and Functions
835bd8deadSopenharmony_ci
845bd8deadSopenharmony_ci    None.
855bd8deadSopenharmony_ci
865bd8deadSopenharmony_ciNew Tokens
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ci    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled,
895bd8deadSopenharmony_ci    and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
905bd8deadSopenharmony_ci    and GetDoublev:
915bd8deadSopenharmony_ci
925bd8deadSopenharmony_ci	INTERLACE_OML				0x8980
935bd8deadSopenharmony_ci	INTERLACE_READ_OML			0x8981
945bd8deadSopenharmony_ci
955bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 1.2.1 Specification (OpenGL Operation)
965bd8deadSopenharmony_ci
975bd8deadSopenharmony_ci    None.
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization)
1005bd8deadSopenharmony_ci
1015bd8deadSopenharmony_ci  - (3.6.4, p. 99) Insert the following subsection between "Pixel
1025bd8deadSopenharmony_ci    Transfer Operations" and "Final Conversion"
1035bd8deadSopenharmony_ci
1045bd8deadSopenharmony_ci    Interlacing
1055bd8deadSopenharmony_ci
1065bd8deadSopenharmony_ci    This step applies only if INTERLACE_OML is enabled. All of the
1075bd8deadSopenharmony_ci    groups which belong to a row m in the source image are treated as if
1085bd8deadSopenharmony_ci    they belonged to the row 2 * m. If the source image has a height of
1095bd8deadSopenharmony_ci    h rows, this effectively expands the height of the image to 2 * h -
1105bd8deadSopenharmony_ci    1 rows. After interlacing, only every other row of the image is
1115bd8deadSopenharmony_ci    defined. If the interlaced pixel rectangle is rasterized to the
1125bd8deadSopenharmony_ci    framebuffer, then only these rows are converted to fragments. If the
1135bd8deadSopenharmony_ci    interlaced pixel rectangle is a texture image, then only these rows
1145bd8deadSopenharmony_ci    are written to texure memory.
1155bd8deadSopenharmony_ci
1165bd8deadSopenharmony_ci    In cases where errors can result from the specification of invalid
1175bd8deadSopenharmony_ci    image dimensions, it is the resulting dimensions that are tested,
1185bd8deadSopenharmony_ci    not the dimensions of the source image. (A specific example is
1195bd8deadSopenharmony_ci    TexImage2D, which specifies constraints for image dimensions. Even
1205bd8deadSopenharmony_ci    if TexImage2D is called with a null pixel pointer, the dimensions of
1215bd8deadSopenharmony_ci    the resulting texture image are those that would result from the
1225bd8deadSopenharmony_ci    effective expansion of the specified image due to interlacing.)
1235bd8deadSopenharmony_ci
1245bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 1.2.1 Specification (Per-Fragment
1255bd8deadSopenharmony_ciOperations and the Frame Buffer)
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ci  - (4.3.2, p. 157) Modify the 5th paragraph of "Obtaining Pixels from
1285bd8deadSopenharmony_ci    the Framebuffer" to read
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ci    If INTERLACE_READ_OML is disabled, then ReadPixels obtains values
1315bd8deadSopenharmony_ci    from the selected buffer for each pixel with lower left hand corner
1325bd8deadSopenharmony_ci    at (x+i, y+j) for 0 <= i < width and 0 <= j < height; this pixel is
1335bd8deadSopenharmony_ci    said to be the ith pixel in the jth row.
1345bd8deadSopenharmony_ci
1355bd8deadSopenharmony_ci    If INTERLACE_READ_OML is enabled, then ReadPixels obtains values
1365bd8deadSopenharmony_ci    from the selected buffer for each pixel with lower left hand corner
1375bd8deadSopenharmony_ci    at (x+i, y+(j*2)) for 0 <= i < width and 0 <= j < height; this pixel
1385bd8deadSopenharmony_ci    is said to be the ith pixel in the jth row.
1395bd8deadSopenharmony_ci
1405bd8deadSopenharmony_ci    If any of these pixels lies outside of the window...
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ci
1435bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 1.2.1 Specification (Special Functions)
1445bd8deadSopenharmony_ci
1455bd8deadSopenharmony_ci    None.
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 1.2.1 Specification (State and State Requests)
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci  - (6.1.4, p. 184) Insert in the second paragraph, following "... and
1505bd8deadSopenharmony_ci    from the first image to the last for three-dimensional textures."
1515bd8deadSopenharmony_ci
1525bd8deadSopenharmony_ci    The value of INTERLACE_READ_OML has no effect on the operation of
1535bd8deadSopenharmony_ci    GetTexImage.
1545bd8deadSopenharmony_ci
1555bd8deadSopenharmony_ciAdditions to the GLX 1.3 Specification
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci    None.
1585bd8deadSopenharmony_ci
1595bd8deadSopenharmony_ciErrors
1605bd8deadSopenharmony_ci
1615bd8deadSopenharmony_ci    See above.
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ciNew State
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ci    Get Value		Type Get Command Initial Value Attribute
1665bd8deadSopenharmony_ci    ---------		---- ----------- ------------- ---------
1675bd8deadSopenharmony_ci    INTERLACE_OML	B    IsEnabled	 False	       pixel/enable
1685bd8deadSopenharmony_ci    INTERLACE_READ_OML	B    IsEnabled	 False	       pixel/enable
1695bd8deadSopenharmony_ci
1705bd8deadSopenharmony_ciNew Implementation Dependent State
1715bd8deadSopenharmony_ci
1725bd8deadSopenharmony_ci    None.
1735bd8deadSopenharmony_ci
1745bd8deadSopenharmony_ciRevision History
1755bd8deadSopenharmony_ci
1765bd8deadSopenharmony_ci  * Revision 5, 07/24/2001 - Finalized Status for OpenML 1.0.
1775bd8deadSopenharmony_ci  * Revision 4, 07/11/2001 - Assign enum values and extension number
1785bd8deadSopenharmony_ci    for the registry.
1795bd8deadSopenharmony_ci  * Revision 3 - formatting changes for OpenML Specification
1805bd8deadSopenharmony_ci  * Revision 2 - expanded description of why GetTexImage doesn't support
1815bd8deadSopenharmony_ci    interlaced readbacks.
1825bd8deadSopenharmony_ci  * Revision 1 - derived from SGIX_interlace and INGR_interlace_read.
183