Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  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.