|  | 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 <type> 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: | 
|  |  | 
|  | <type> 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 <type> 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 <type> 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 <type> 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 <type>, and must match the number of components per group as | 
|  | indicated by the <format> 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 <type> and <format> | 
|  | parameters to define the type and format of that data. | 
|  |  | 
|  | A new table is added to demonstrate bitfield locations <type> | 
|  | 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 <type>, | 
|  | 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] | 
|  |  | 
|  | <type>				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 <type> | 
|  | parameter is UNSIGNED_6BYTES_12_12_12_SGIX and its | 
|  | <format> parameter does not specify four components. | 
|  |  | 
|  | New State | 
|  |  | 
|  | None | 
|  |  | 
|  | New Implementation Dependent State | 
|  |  | 
|  | None |