Home | History | Annotate | Download | only in specs
      1 Name
      2 
      3     MESA_ycbcr_texture
      4 
      5 Name Strings
      6 
      7     GL_MESA_ycbcr_texture
      8 
      9 Contact
     10 
     11     Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com)
     12     Keith Whitwell, Tungsten Graphics, Inc.  (keith 'at' tungstengraphics.com)
     13 
     14 Status
     15 
     16     Shipping (Mesa 4.0.4 and later)
     17 
     18 Version
     19 
     20     1.0
     21 
     22 Number
     23 
     24     TBD
     25 
     26 Dependencies
     27 
     28     OpenGL 1.0 or later is required
     29     This extension is written against the OpenGL 1.4 Specification.
     30     NV_texture_rectangle effects the definition of this extension.
     31 
     32 Overview
     33 
     34     This extension supports texture images stored in the YCbCr format.
     35     There is no support for converting YCbCr images to RGB or vice versa
     36     during pixel transfer.  The texture's YCbCr colors are converted to
     37     RGB during texture sampling, after-which, all the usual per-fragment
     38     operations take place.  Only 2D texture images are supported (not
     39     glDrawPixels, glReadPixels, etc).
     40 
     41     A YCbCr pixel (texel) is a 16-bit unsigned short with two components.
     42     The first component is luminance (Y).  For pixels in even-numbered
     43     image columns, the second component is Cb.  For pixels in odd-numbered
     44     image columns, the second component is Cr.  If one were to convert the
     45     data to RGB one would need to examine two pixels from columns N and N+1
     46     (where N is even) to deduce the RGB color.
     47 
     48 IP Status
     49 
     50     None
     51 
     52 Issues
     53 
     54     None
     55 
     56 New Procedures and Functions
     57 
     58     None
     59 
     60 New Tokens
     61 
     62     Accepted by the <internalFormat> and <format> parameters of
     63     TexImage2D and TexSubImage2D:
     64 
     65         YCBCR_MESA                   0x8757
     66 
     67     Accepted by the <type> parameter of TexImage2D and TexSubImage2D:
     68 
     69         UNSIGNED_SHORT_8_8_MESA      0x85BA /* same as Apple's */
     70         UNSIGNED_SHORT_8_8_REV_MESA  0x85BB /* same as Apple's */
     71 
     72 Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)
     73 
     74     None
     75 
     76 Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)
     77 
     78     In section 3.6.4, Rasterization of Pixel Rectangles, on page 101,
     79     add the following to Table 3.8 (Packed pixel formats):
     80     
     81     type Parameter                GL Data   Number of        Matching
     82      Token Name                    Type     Components     Pixel Formats
     83     --------------                -------   ----------     -------------
     84     UNSIGNED_SHORT_8_8_MESA       ushort         2         YCBCR_MESA
     85     UNSIGNED_SHORT_8_8_REV_MESA   ushort         2         YCBCR_MESA
     86 
     87 
     88     In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
     89     add the following to Table 3.10 (UNSIGNED_SHORT formats):
     90 
     91     UNSIGNED_SHORT_8_8_MESA:
     92 
     93       15  14  13  12  11  10  9   8   7   6   5   4   3   2   1   0
     94     +-------------------------------+-------------------------------+
     95     |              1st              |              2nd              |
     96     +-------------------------------+-------------------------------+
     97                         
     98     UNSIGNED_SHORT_8_8_REV_MESA:
     99 
    100       15  14  13  12  11  10  9   8   7   6   5   4   3   2   1   0
    101     +-------------------------------+-------------------------------+
    102     |              2nd              |              1st              |
    103     +-------------------------------+-------------------------------+
    104 
    105 
    106     In section 3.6.4, Rasterization of Pixel Rectangles, on page 104,
    107     add the following to Table 3.12 (Packed pixel field assignments):
    108 
    109                        First       Second     Third      Fourth
    110     Format             Element     Element    Element    Element
    111     ------             -------     -------    -------    -------
    112     YCBCR_MESA         luminance   chroma
    113 
    114 
    115     In section 3.8.1, Texture Image Specification, on page 125, add
    116     another item to the list of TexImage2D and TexImage3D equivalence
    117     exceptions:
    118 
    119     * The value of internalformat and format may be YCBCR_MESA to
    120       indicate that the image data is in YCbCr format.  type must
    121       be either UNSIGNED_SHORT_8_8_MESA or UNSIGNED_SHORT_8_8_REV_MESA
    122       as seen in tables 3.8 and 3.10.  Table 3.12 describes the mapping
    123       between Y and Cb/Cr to the components.
    124       If NV_texture_rectangle is supported target may also be
    125       TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV.
    126       All pixel transfer operations are bypassed.  The texture is stored as
    127       YCbCr, not RGB.  Queries of the texture's red, green and blue component
    128       sizes will return zero.  The YCbCr colors are converted to RGB during
    129       texture sampling using an implementation dependent conversion.
    130 
    131 
    132     In section 3.8.1, Texture Image Specification, on page 126, add
    133     another item to the list of TexImage1D and TexImage2D equivalence
    134     exceptions:
    135 
    136     * The value of internalformat and format can not be YCBCR_MESA.
    137 
    138 
    139     In section 3.8.2, Alternate Texture Image Specification Commands, on
    140     page 129, insert this paragraph after the first full paragraph on the
    141     page:
    142 
    143          "If the internal storage format of the image being updated by
    144     TexSubImage2D is YCBCR_MESA then format must be YCBCR_MESA.
    145     The error INVALID_OPERATION will be generated otherwise."
    146 
    147 
    148 Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
    149 Operations and the Frame Buffer)
    150 
    151     None
    152 
    153 Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)
    154 
    155     None
    156 
    157 Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
    158 State Requests)
    159 
    160     None
    161 
    162 Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)
    163 
    164     None
    165 
    166 Additions to the AGL/GLX/WGL Specifications
    167 
    168     None
    169 
    170 GLX Protocol
    171 
    172     None
    173 
    174 Errors
    175 
    176     INVALID_ENUM is generated by TexImage2D if <internalFormat> is
    177     MESA_YCBCR but <format> is not MESA_YCBCR.
    178 
    179     INVALID_ENUM is generated by TexImage2D if <format> is MESA_YCBCR but
    180     <internalFormat> is not MESA_YCBCR.
    181 
    182     INVALID_VALUE is generated by TexImage2D if <format> is MESA_YCBCR and
    183     <internalFormat> is MESA_YCBCR and <border> is not zero.
    184 
    185     INVALID_OPERATION is generated by TexSubImage2D if the internal image
    186     format is YCBCR_MESA and <format> is not YCBCR_MESA.
    187 
    188     INVALID_OPERATION is generated by CopyTexSubImage2D if the internal
    189     image is YCBCR_MESA.
    190     
    191 New State
    192 
    193     Edit table 6.16 on page 231: change the type of TEXTURE_INTERNAL_FORMAT
    194     from n x Z42 to n x Z43 to indicate that internal format may also be
    195     YCBCR_MESA.
    196 
    197 Revision History
    198 
    199     20 September 2002 - Initial draft
    200     29 April 2003 - minor updates
    201      3 September 2003 - further clarify when YCbCr->RGB conversion takes place
    202     19 September 2003 - a few more updates prior to submitting to extension
    203                         registry.
    204      3 April 2004 - fix assorted inaccuracies
    205