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
