blob: 5493159a160c5c993ae729e87bf09b1ac24f7f45 [file] [log] [blame]
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