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