Name SGIX_packed_6bytes Name Strings GL_SGIX_packed_6bytes Version $Date: 1999/04/03 08:41:01 $ $Revision: 1.3 $ Number 162 Dependencies EXT_abgr affects the definition of this extension Histogram affects the definition of this extension Convolution affects the definition of this extension Color_table affects the definition of this extension SGIS_texture4D affects the definition of this extension Overview This extension provides support for packing four component pixels into a 6-byte field, where each component is represented by 12 bits. Since the pixel is represented by 6 unsigned bytes it is inferred that the fields or components of the pixel are not proper machine types. However, since the pixel as a whole can be resepresented as an integral number of bytes, the pixel storage modes, including PACK_SKIP_PIXELS, PACK_ROW_LENGTH, PACK_SKIP_ROWS, PACK_IMAGE_HEIGHT_EXT, PACK_SKIP_IMAGES_EXT, PACK_SWAP_BYTES, PACK_ALIGNMENT, and their unpacking counterparts all work correctly. New Procedures and Functions None New Tokens Accepted by the parameter of DrawPixels, ReadPixels, TexImage1D, TexImage2D, GetTexImage, TexImage3D, TexSubImage1D, TexSubImage2D, TexSubImage3D, GetHistogram, GetMinmax, ConvolutionFilter1D, ConvolutionFilter2D, ConvolutionFilter3D, GetConvolutionFilter, SeparableFilter2D, SeparableFilter3D, GetSeparableFilter, ColorTable, GetColorTable, TexImage4DSGIS, and TexSubImage4DSGIS: 6BYTES_12_12_12_12_SGIX 0x???? Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation) None Additions to Chapter 3 of the 1.2 Specification (Rasterization) The token defined by this extension is added to Table 3.5: Parameter Corresponding Special Token Value GL Data Type Interpretation ---------------- ------------- -------------- UNSIGNED_BYTE ubyte No BITMAP ubyte Yes BYTE byte No UNSIGNED_SHORT ushort No SHORT short No UNSIGNED_INT uint No INT int No FLOAT float No BITMAP ubyte Yes UNSIGNED_BYTE_3_3_2 ubyte Yes UNSIGNED_BYTE_3_3_2_REV ubyte Yes UNSIGNED_SHORT_5_6_5 ushort Yes UNSIGNED_SHORT_5_6_5_REV ushort Yes UNSIGNED_SHORT_4_4_4_4 ushort Yes UNSIGNED_SHORT_4_4_4_4_REV ushort Yes UNSIGNED_SHORT_5_5_5_1 ushort Yes UNSIGNED_SHORT_5_5_5_1_REV ushort Yes UNSIGNED_INT_8_8_8_8 uint Yes UNSIGNED_INT_8_8_8_8_REV uint Yes UNSIGNED_INT_10_10_10_2 uint Yes UNSIGNED_INT_10_10_10_2_REV uint Yes UNSIGNED_6BYTES_12_12_12_12_SGIX 6*ubyte Yes Table 3.5: DrawPixels and ReadPixels parameter values and the corresponding GL data types. Refer to table 2.2 for definitions of GL data types. Special interpretations are described near the end of section 3.6.4. [Additions to Section 3.6.4 of the GL Specification (Rasterization of Pixel Rectangles) is made as follows:] 3.6.4 Rasterization of Pixel Rectangles Unpacking --------- [Modify fourth paragraph to read:] Calling DrawPixels with a of UNSIGNED_BYTE_3_3_2, UNSIGNED_BYTE_3_3_2_REV, UNSIGNED_SHORT_5_6_5, UNSIGNED_SHORT_5_6_5_REV, UNSIGNED_SHORT_4_4_4_4, UNSIGNED_SHORT_4_4_4_4_REV, UNSIGNED_SHORT_5_5_5_1, UNSIGNED_SHORT_5_5_5_1_REV, UNSIGNED_INT_8_8_8_8, UNSIGNED_INT_8_8_8_8_REV, UNSIGNED_INT_10_10_10_2, or UNSIGNED_INT_10_10_10_2_REV is a special case in which all the components of each group are packed into a single unsigned byte, unsigned short, or unsigned int, depending on the type. Additionally, calling DrawPixels with a of UNSIGNED_6BYTES_12_12_12_12_SGIX is a special case in which all the components of each group are is packed into 6 bytes. The number of components per packed pixel is fixed by the , and must match the number of components per group as indicated by the parameter, as listed in table 3.8. The error INVALID_OPERATION is generated if a mismatch occurs. This constraint also holds for all other functions that accept or return pixel data using and parameters to define the type and format of that data. A new table is added to demonstrate bitfield locations UNSIGNED_6BYTES_12_12_12_12_SGIX. The bitfield locations for the first, second, third and fourth component for this pixel type is shown in Table 3.12. 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 +--------------------------------+--------------------------------------+ | | | +--------------------------------+--------------------------------------+ first second element element 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +--------------------------------+--------------------------------------+ | | | +--------------------------------+--------------------------------------+ third fourth element element Table 3.12 UNSIGNED_6BYTES_12_12_12_SGIX format [Add to the paragraph describing byte swapping:] If byte swapping is enabled with UNSIGNED_6BYTES_12_12_12_SGIX as the , the byte swapping is performed as follows: given the 6byte ordering as b5 b4 b3 b2 b1 b0 where b# represents the byte index or order, then byte swapping yields b4 b5 b2 b3 b0 b1 Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations and the Framebuffer) [Make the following addition to Table 4.7] GL Data Component Parameter Type Conversion Formula --------- ------- ------------------ UNSIGNED_INT_10_10_10_2_EXT uint c = ((2**N)-1)*f Table 4.7: Reversed component conversions - used when component data are being returned to client memory. Color, normal, and depth components are converted from the internal floating-point representation (f) to a datum of the specified GL data type (c) using the equations in this table. All arithmetic is done in the internal floating point format. These conversions apply to component data returned by GL query commands and to components of pixel data returned to client memory. The equations remain the same even if the implemented ranges of the GL data types are greater than the minimum required ranges. (Refer to table 2.2.) Equations with N as the exponent are performed for each bitfield of the packed data type, with N set to the number of bits in the bitfield. Additions to Chapter 5 of the 1.0 Specification (Special Functions) None Additions to Chapter 6 of the 1.0 Specification (State and State Requests) None Additions to the GLX Specification None GLX Protocol None Dependencies on EXT_abgr If EXT_abgr is not implemented, then the references to ABGR_EXT in this file are invalid, and should be ignored. Dependencies on Histogram If EXT_histogram is not implemented, then the references to GetHistogramEXT and GetMinmaxEXT in this file are invalid, and should be ignored. Dependencies on Convolution If EXT_convolution is not implemented, then the references to ConvolutionFilter1DEXT, ConvolutionFilter2DEXT, ConvolutionFilter3DEXT, GetConvolutionFilterEXT, SeparableFilter2DEXT, SeparableFilter3DEXT, and GetSeparableFilterEXT in this file are invalid, and should be ignored. Dependencies on Color_table If Color_table is not implemented, then the references to ColorTableSGI and GetColorTableSGI in this file are invalid, and should be ignored. Dependencies on SGIS_texture4D If SGIS_texture4D is not implemented, then the references to TexImage4DSGIS and TexSubImage4DSGIS in this file are invalid, and should be ignored. Errors INVALID_OPERATION is generated by GenericPixelFunction if its parameter is UNSIGNED_6BYTES_12_12_12_SGIX and its parameter does not specify four components. New State None New Implementation Dependent State None