• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    OML_interlace
4
5Name Strings
6
7    GL_OML_interlace
8
9Contact
10
11    Jon Leech, Silicon Graphics (ljp 'at' sgi.com)
12
13Status
14
15    Complete. Approved by the Khronos SIG on July 19, 2001.
16
17Version
18
19    Last Modified Date: 07/23/2001
20    Author Revision: $Header: //depot/main/doc/registry/extensions/OML/interlace.spec#5 $
21
22Number
23
24    239
25
26Dependencies
27
28    None.
29
30Overview
31
32    This extension provides a way to interlace rows of pixels when
33    drawing, reading, or copying pixel rectangles or texture images. In
34    this context, interlacing means skiping over rows of pixels or
35    texels in the destination. This is useful for dealing with video
36    data since a single frame of video is typically composed from two
37    images or fields: one image specifying the data for even rows of the
38    frame and the other image specifying the data for odd rows of the
39    frame.
40
41    The functionality provided by this extension is a combination
42    of the older SGIX_interlace and INGR_interlace_read extensions,
43    with  changes applying interlacing to texture image queries.
44
45Issues
46
47  * Should there be a single enumerant controlling both draw and read
48    operations? For the moment, we continue using separate enums, for
49    backwards compatibility with SGIX_interlace and INGR_interlace_read.
50
51  * Can we use the same enum values as the older extensions? Possibly,
52    depending on the resolution of issues of exactly which operations
53    interlacing is applied to. For the moment we assume the same
54    values cannot be used.
55
56  * Are there any GLX protocol issues relating to the actual vs.
57    specified size of the image being transferred? Probably not, since
58    unlike the effects of convolution, the image being transferred over
59    the wire is always the specified size; all that changes is where the
60    pixels are positioned in the frame buffer.
61
62  * Discreet requested that INTERLACE_READ_OML apply to GetTexImage. The
63    extension does not support this because there's no easy way to
64    support it with any generality: with only the binary
65    INTERLACE_READ_OML setting available, the implementation could
66    return only the even rows, but would have no way of indicating that
67    only the odd rows should be returned. This is non-orthogonal
68    probably more frustrating than useful; a generic solution would
69    require creation of a GetTexSubImage call.
70
71  * We may need to be more precise about exactly which operations
72    interlacing is and is not applied to. Currently it must be inferred
73    from other parts of the OpenGL Specification, and different
74    implementations are likely to disagree on this. Some language has
75    been added to section 6.1.4 to deal explicitly with GetTexImage, but
76    may be needed elsewhere as well.
77
78IP Status
79
80    No known issues.
81
82New Procedures and Functions
83
84    None.
85
86New Tokens
87
88    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled,
89    and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
90    and GetDoublev:
91
92	INTERLACE_OML				0x8980
93	INTERLACE_READ_OML			0x8981
94
95Additions to Chapter 2 of the OpenGL 1.2.1 Specification (OpenGL Operation)
96
97    None.
98
99Additions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization)
100
101  - (3.6.4, p. 99) Insert the following subsection between "Pixel
102    Transfer Operations" and "Final Conversion"
103
104    Interlacing
105
106    This step applies only if INTERLACE_OML is enabled. All of the
107    groups which belong to a row m in the source image are treated as if
108    they belonged to the row 2 * m. If the source image has a height of
109    h rows, this effectively expands the height of the image to 2 * h -
110    1 rows. After interlacing, only every other row of the image is
111    defined. If the interlaced pixel rectangle is rasterized to the
112    framebuffer, then only these rows are converted to fragments. If the
113    interlaced pixel rectangle is a texture image, then only these rows
114    are written to texure memory.
115
116    In cases where errors can result from the specification of invalid
117    image dimensions, it is the resulting dimensions that are tested,
118    not the dimensions of the source image. (A specific example is
119    TexImage2D, which specifies constraints for image dimensions. Even
120    if TexImage2D is called with a null pixel pointer, the dimensions of
121    the resulting texture image are those that would result from the
122    effective expansion of the specified image due to interlacing.)
123
124Additions to Chapter 4 of the OpenGL 1.2.1 Specification (Per-Fragment
125Operations and the Frame Buffer)
126
127  - (4.3.2, p. 157) Modify the 5th paragraph of "Obtaining Pixels from
128    the Framebuffer" to read
129
130    If INTERLACE_READ_OML is disabled, then ReadPixels obtains values
131    from the selected buffer for each pixel with lower left hand corner
132    at (x+i, y+j) for 0 <= i < width and 0 <= j < height; this pixel is
133    said to be the ith pixel in the jth row.
134
135    If INTERLACE_READ_OML is enabled, then ReadPixels obtains values
136    from the selected buffer for each pixel with lower left hand corner
137    at (x+i, y+(j*2)) for 0 <= i < width and 0 <= j < height; this pixel
138    is said to be the ith pixel in the jth row.
139
140    If any of these pixels lies outside of the window...
141
142
143Additions to Chapter 5 of the OpenGL 1.2.1 Specification (Special Functions)
144
145    None.
146
147Additions to Chapter 6 of the OpenGL 1.2.1 Specification (State and State Requests)
148
149  - (6.1.4, p. 184) Insert in the second paragraph, following "... and
150    from the first image to the last for three-dimensional textures."
151
152    The value of INTERLACE_READ_OML has no effect on the operation of
153    GetTexImage.
154
155Additions to the GLX 1.3 Specification
156
157    None.
158
159Errors
160
161    See above.
162
163New State
164
165    Get Value		Type Get Command Initial Value Attribute
166    ---------		---- ----------- ------------- ---------
167    INTERLACE_OML	B    IsEnabled	 False	       pixel/enable
168    INTERLACE_READ_OML	B    IsEnabled	 False	       pixel/enable
169
170New Implementation Dependent State
171
172    None.
173
174Revision History
175
176  * Revision 5, 07/24/2001 - Finalized Status for OpenML 1.0.
177  * Revision 4, 07/11/2001 - Assign enum values and extension number
178    for the registry.
179  * Revision 3 - formatting changes for OpenML Specification
180  * Revision 2 - expanded description of why GetTexImage doesn't support
181    interlaced readbacks.
182  * Revision 1 - derived from SGIX_interlace and INGR_interlace_read.
183