18420ad94f28532a736f99607fb274466506b3bcaBrian PaulName 28420ad94f28532a736f99607fb274466506b3bcaBrian Paul 38420ad94f28532a736f99607fb274466506b3bcaBrian Paul MESA_ycbcr_texture 48420ad94f28532a736f99607fb274466506b3bcaBrian Paul 58420ad94f28532a736f99607fb274466506b3bcaBrian PaulName Strings 68420ad94f28532a736f99607fb274466506b3bcaBrian Paul 78420ad94f28532a736f99607fb274466506b3bcaBrian Paul GL_MESA_ycbcr_texture 88420ad94f28532a736f99607fb274466506b3bcaBrian Paul 98420ad94f28532a736f99607fb274466506b3bcaBrian PaulContact 108420ad94f28532a736f99607fb274466506b3bcaBrian Paul 11d3b09fe29b112ddf114d14849e917befafd8387aBrian Paul Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com) 128420ad94f28532a736f99607fb274466506b3bcaBrian Paul Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com) 138420ad94f28532a736f99607fb274466506b3bcaBrian Paul 148420ad94f28532a736f99607fb274466506b3bcaBrian PaulStatus 158420ad94f28532a736f99607fb274466506b3bcaBrian Paul 168420ad94f28532a736f99607fb274466506b3bcaBrian Paul Shipping (Mesa 4.0.4 and later) 178420ad94f28532a736f99607fb274466506b3bcaBrian Paul 188420ad94f28532a736f99607fb274466506b3bcaBrian PaulVersion 198420ad94f28532a736f99607fb274466506b3bcaBrian Paul 208420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1.0 218420ad94f28532a736f99607fb274466506b3bcaBrian Paul 228420ad94f28532a736f99607fb274466506b3bcaBrian PaulNumber 238420ad94f28532a736f99607fb274466506b3bcaBrian Paul 248420ad94f28532a736f99607fb274466506b3bcaBrian Paul TBD 258420ad94f28532a736f99607fb274466506b3bcaBrian Paul 268420ad94f28532a736f99607fb274466506b3bcaBrian PaulDependencies 278420ad94f28532a736f99607fb274466506b3bcaBrian Paul 288420ad94f28532a736f99607fb274466506b3bcaBrian Paul OpenGL 1.0 or later is required 29ae5776c41f12515bb73c07ee2a0aed56cdd1a1efNicolas Kaiser This extension is written against the OpenGL 1.4 Specification. 308420ad94f28532a736f99607fb274466506b3bcaBrian Paul NV_texture_rectangle effects the definition of this extension. 318420ad94f28532a736f99607fb274466506b3bcaBrian Paul 328420ad94f28532a736f99607fb274466506b3bcaBrian PaulOverview 338420ad94f28532a736f99607fb274466506b3bcaBrian Paul 34afc0428b5c5380fa5beaaa28c78faddd41da5284Brian Paul This extension supports texture images stored in the YCbCr format. 35afc0428b5c5380fa5beaaa28c78faddd41da5284Brian Paul There is no support for converting YCbCr images to RGB or vice versa 36afc0428b5c5380fa5beaaa28c78faddd41da5284Brian Paul during pixel transfer. The texture's YCbCr colors are converted to 37afc0428b5c5380fa5beaaa28c78faddd41da5284Brian Paul RGB during texture sampling, after-which, all the usual per-fragment 38afc0428b5c5380fa5beaaa28c78faddd41da5284Brian Paul operations take place. Only 2D texture images are supported (not 39afc0428b5c5380fa5beaaa28c78faddd41da5284Brian Paul glDrawPixels, glReadPixels, etc). 408420ad94f28532a736f99607fb274466506b3bcaBrian Paul 418420ad94f28532a736f99607fb274466506b3bcaBrian Paul A YCbCr pixel (texel) is a 16-bit unsigned short with two components. 428420ad94f28532a736f99607fb274466506b3bcaBrian Paul The first component is luminance (Y). For pixels in even-numbered 438420ad94f28532a736f99607fb274466506b3bcaBrian Paul image columns, the second component is Cb. For pixels in odd-numbered 448420ad94f28532a736f99607fb274466506b3bcaBrian Paul image columns, the second component is Cr. If one were to convert the 458420ad94f28532a736f99607fb274466506b3bcaBrian Paul data to RGB one would need to examine two pixels from columns N and N+1 468420ad94f28532a736f99607fb274466506b3bcaBrian Paul (where N is even) to deduce the RGB color. 478420ad94f28532a736f99607fb274466506b3bcaBrian Paul 488420ad94f28532a736f99607fb274466506b3bcaBrian PaulIP Status 498420ad94f28532a736f99607fb274466506b3bcaBrian Paul 508420ad94f28532a736f99607fb274466506b3bcaBrian Paul None 518420ad94f28532a736f99607fb274466506b3bcaBrian Paul 528420ad94f28532a736f99607fb274466506b3bcaBrian PaulIssues 538420ad94f28532a736f99607fb274466506b3bcaBrian Paul 548420ad94f28532a736f99607fb274466506b3bcaBrian Paul None 558420ad94f28532a736f99607fb274466506b3bcaBrian Paul 568420ad94f28532a736f99607fb274466506b3bcaBrian PaulNew Procedures and Functions 578420ad94f28532a736f99607fb274466506b3bcaBrian Paul 588420ad94f28532a736f99607fb274466506b3bcaBrian Paul None 598420ad94f28532a736f99607fb274466506b3bcaBrian Paul 608420ad94f28532a736f99607fb274466506b3bcaBrian PaulNew Tokens 618420ad94f28532a736f99607fb274466506b3bcaBrian Paul 628420ad94f28532a736f99607fb274466506b3bcaBrian Paul Accepted by the <internalFormat> and <format> parameters of 638420ad94f28532a736f99607fb274466506b3bcaBrian Paul TexImage2D and TexSubImage2D: 648420ad94f28532a736f99607fb274466506b3bcaBrian Paul 657357f20b1ee3ab0c58c7a20f44bf83fdfe0e256eBrian Paul YCBCR_MESA 0x8757 668420ad94f28532a736f99607fb274466506b3bcaBrian Paul 678420ad94f28532a736f99607fb274466506b3bcaBrian Paul Accepted by the <type> parameter of TexImage2D and TexSubImage2D: 688420ad94f28532a736f99607fb274466506b3bcaBrian Paul 697357f20b1ee3ab0c58c7a20f44bf83fdfe0e256eBrian Paul UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */ 707357f20b1ee3ab0c58c7a20f44bf83fdfe0e256eBrian Paul UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */ 718420ad94f28532a736f99607fb274466506b3bcaBrian Paul 728420ad94f28532a736f99607fb274466506b3bcaBrian PaulAdditions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation) 738420ad94f28532a736f99607fb274466506b3bcaBrian Paul 748420ad94f28532a736f99607fb274466506b3bcaBrian Paul None 758420ad94f28532a736f99607fb274466506b3bcaBrian Paul 768420ad94f28532a736f99607fb274466506b3bcaBrian PaulAdditions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization) 778420ad94f28532a736f99607fb274466506b3bcaBrian Paul 7829f0190be772bc46ba2ddb4032e112f49d384cf5Brian Paul In section 3.6.4, Rasterization of Pixel Rectangles, on page 101, 798420ad94f28532a736f99607fb274466506b3bcaBrian Paul add the following to Table 3.8 (Packed pixel formats): 808420ad94f28532a736f99607fb274466506b3bcaBrian Paul 818420ad94f28532a736f99607fb274466506b3bcaBrian Paul type Parameter GL Data Number of Matching 828420ad94f28532a736f99607fb274466506b3bcaBrian Paul Token Name Type Components Pixel Formats 838420ad94f28532a736f99607fb274466506b3bcaBrian Paul -------------- ------- ---------- ------------- 8429f0190be772bc46ba2ddb4032e112f49d384cf5Brian Paul UNSIGNED_SHORT_8_8_MESA ushort 2 YCBCR_MESA 8529f0190be772bc46ba2ddb4032e112f49d384cf5Brian Paul UNSIGNED_SHORT_8_8_REV_MESA ushort 2 YCBCR_MESA 868420ad94f28532a736f99607fb274466506b3bcaBrian Paul 878420ad94f28532a736f99607fb274466506b3bcaBrian Paul 888420ad94f28532a736f99607fb274466506b3bcaBrian Paul In section 3.6.4, Rasterization of Pixel Rectangles, on page 102, 898420ad94f28532a736f99607fb274466506b3bcaBrian Paul add the following to Table 3.10 (UNSIGNED_SHORT formats): 908420ad94f28532a736f99607fb274466506b3bcaBrian Paul 918420ad94f28532a736f99607fb274466506b3bcaBrian Paul UNSIGNED_SHORT_8_8_MESA: 928420ad94f28532a736f99607fb274466506b3bcaBrian Paul 938420ad94f28532a736f99607fb274466506b3bcaBrian Paul 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 948420ad94f28532a736f99607fb274466506b3bcaBrian Paul +-------------------------------+-------------------------------+ 958420ad94f28532a736f99607fb274466506b3bcaBrian Paul | 1st | 2nd | 968420ad94f28532a736f99607fb274466506b3bcaBrian Paul +-------------------------------+-------------------------------+ 978420ad94f28532a736f99607fb274466506b3bcaBrian Paul 988420ad94f28532a736f99607fb274466506b3bcaBrian Paul UNSIGNED_SHORT_8_8_REV_MESA: 998420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1008420ad94f28532a736f99607fb274466506b3bcaBrian Paul 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1018420ad94f28532a736f99607fb274466506b3bcaBrian Paul +-------------------------------+-------------------------------+ 1028420ad94f28532a736f99607fb274466506b3bcaBrian Paul | 2nd | 1st | 1038420ad94f28532a736f99607fb274466506b3bcaBrian Paul +-------------------------------+-------------------------------+ 1048420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1058420ad94f28532a736f99607fb274466506b3bcaBrian Paul 10629f0190be772bc46ba2ddb4032e112f49d384cf5Brian Paul In section 3.6.4, Rasterization of Pixel Rectangles, on page 104, 107ae5776c41f12515bb73c07ee2a0aed56cdd1a1efNicolas Kaiser add the following to Table 3.12 (Packed pixel field assignments): 1088420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1098420ad94f28532a736f99607fb274466506b3bcaBrian Paul First Second Third Fourth 1108420ad94f28532a736f99607fb274466506b3bcaBrian Paul Format Element Element Element Element 1118420ad94f28532a736f99607fb274466506b3bcaBrian Paul ------ ------- ------- ------- ------- 11229f0190be772bc46ba2ddb4032e112f49d384cf5Brian Paul YCBCR_MESA luminance chroma 1138420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1148420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1158420ad94f28532a736f99607fb274466506b3bcaBrian Paul In section 3.8.1, Texture Image Specification, on page 125, add 1168420ad94f28532a736f99607fb274466506b3bcaBrian Paul another item to the list of TexImage2D and TexImage3D equivalence 1178420ad94f28532a736f99607fb274466506b3bcaBrian Paul exceptions: 1188420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1198420ad94f28532a736f99607fb274466506b3bcaBrian Paul * The value of internalformat and format may be YCBCR_MESA to 1208420ad94f28532a736f99607fb274466506b3bcaBrian Paul indicate that the image data is in YCbCr format. type must 1218420ad94f28532a736f99607fb274466506b3bcaBrian Paul be either UNSIGNED_SHORT_8_8_MESA or UNSIGNED_SHORT_8_8_REV_MESA 1228420ad94f28532a736f99607fb274466506b3bcaBrian Paul as seen in tables 3.8 and 3.10. Table 3.12 describes the mapping 1238420ad94f28532a736f99607fb274466506b3bcaBrian Paul between Y and Cb/Cr to the components. 1248420ad94f28532a736f99607fb274466506b3bcaBrian Paul If NV_texture_rectangle is supported target may also be 1258420ad94f28532a736f99607fb274466506b3bcaBrian Paul TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV. 1268420ad94f28532a736f99607fb274466506b3bcaBrian Paul All pixel transfer operations are bypassed. The texture is stored as 1278420ad94f28532a736f99607fb274466506b3bcaBrian Paul YCbCr, not RGB. Queries of the texture's red, green and blue component 128361a9ac9663205b10ae78022ed777dfeda2a8ea4Brian Paul sizes will return zero. The YCbCr colors are converted to RGB during 129361a9ac9663205b10ae78022ed777dfeda2a8ea4Brian Paul texture sampling using an implementation dependent conversion. 1308420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1318420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1328420ad94f28532a736f99607fb274466506b3bcaBrian Paul In section 3.8.1, Texture Image Specification, on page 126, add 1338420ad94f28532a736f99607fb274466506b3bcaBrian Paul another item to the list of TexImage1D and TexImage2D equivalence 1348420ad94f28532a736f99607fb274466506b3bcaBrian Paul exceptions: 1358420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1368420ad94f28532a736f99607fb274466506b3bcaBrian Paul * The value of internalformat and format can not be YCBCR_MESA. 1378420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1388420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1398420ad94f28532a736f99607fb274466506b3bcaBrian Paul In section 3.8.2, Alternate Texture Image Specification Commands, on 1408420ad94f28532a736f99607fb274466506b3bcaBrian Paul page 129, insert this paragraph after the first full paragraph on the 1418420ad94f28532a736f99607fb274466506b3bcaBrian Paul page: 1428420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1438420ad94f28532a736f99607fb274466506b3bcaBrian Paul "If the internal storage format of the image being updated by 1448420ad94f28532a736f99607fb274466506b3bcaBrian Paul TexSubImage2D is YCBCR_MESA then format must be YCBCR_MESA. 1458420ad94f28532a736f99607fb274466506b3bcaBrian Paul The error INVALID_OPERATION will be generated otherwise." 1468420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1478420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1488420ad94f28532a736f99607fb274466506b3bcaBrian PaulAdditions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment 1498420ad94f28532a736f99607fb274466506b3bcaBrian PaulOperations and the Frame Buffer) 1508420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1518420ad94f28532a736f99607fb274466506b3bcaBrian Paul None 1528420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1538420ad94f28532a736f99607fb274466506b3bcaBrian PaulAdditions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions) 1548420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1558420ad94f28532a736f99607fb274466506b3bcaBrian Paul None 1568420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1578420ad94f28532a736f99607fb274466506b3bcaBrian PaulAdditions to Chapter 6 of the OpenGL 1.4 Specification (State and 1588420ad94f28532a736f99607fb274466506b3bcaBrian PaulState Requests) 1598420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1608420ad94f28532a736f99607fb274466506b3bcaBrian Paul None 1618420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1628420ad94f28532a736f99607fb274466506b3bcaBrian PaulAdditions to Appendix A of the OpenGL 1.4 Specification (Invariance) 1638420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1648420ad94f28532a736f99607fb274466506b3bcaBrian Paul None 1658420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1668420ad94f28532a736f99607fb274466506b3bcaBrian PaulAdditions to the AGL/GLX/WGL Specifications 1678420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1688420ad94f28532a736f99607fb274466506b3bcaBrian Paul None 1698420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1708420ad94f28532a736f99607fb274466506b3bcaBrian PaulGLX Protocol 1718420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1728420ad94f28532a736f99607fb274466506b3bcaBrian Paul None 1738420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1748420ad94f28532a736f99607fb274466506b3bcaBrian PaulErrors 1758420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1768420ad94f28532a736f99607fb274466506b3bcaBrian Paul INVALID_ENUM is generated by TexImage2D if <internalFormat> is 1778420ad94f28532a736f99607fb274466506b3bcaBrian Paul MESA_YCBCR but <format> is not MESA_YCBCR. 1788420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1798420ad94f28532a736f99607fb274466506b3bcaBrian Paul INVALID_ENUM is generated by TexImage2D if <format> is MESA_YCBCR but 1808420ad94f28532a736f99607fb274466506b3bcaBrian Paul <internalFormat> is not MESA_YCBCR. 1818420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1828420ad94f28532a736f99607fb274466506b3bcaBrian Paul INVALID_VALUE is generated by TexImage2D if <format> is MESA_YCBCR and 1838420ad94f28532a736f99607fb274466506b3bcaBrian Paul <internalFormat> is MESA_YCBCR and <border> is not zero. 1848420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1858420ad94f28532a736f99607fb274466506b3bcaBrian Paul INVALID_OPERATION is generated by TexSubImage2D if the internal image 1867357f20b1ee3ab0c58c7a20f44bf83fdfe0e256eBrian Paul format is YCBCR_MESA and <format> is not YCBCR_MESA. 1878420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1888420ad94f28532a736f99607fb274466506b3bcaBrian Paul INVALID_OPERATION is generated by CopyTexSubImage2D if the internal 1898420ad94f28532a736f99607fb274466506b3bcaBrian Paul image is YCBCR_MESA. 1908420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1918420ad94f28532a736f99607fb274466506b3bcaBrian PaulNew State 1928420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1938420ad94f28532a736f99607fb274466506b3bcaBrian Paul Edit table 6.16 on page 231: change the type of TEXTURE_INTERNAL_FORMAT 1948420ad94f28532a736f99607fb274466506b3bcaBrian Paul from n x Z42 to n x Z43 to indicate that internal format may also be 1958420ad94f28532a736f99607fb274466506b3bcaBrian Paul YCBCR_MESA. 1968420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1978420ad94f28532a736f99607fb274466506b3bcaBrian PaulRevision History 1988420ad94f28532a736f99607fb274466506b3bcaBrian Paul 1998420ad94f28532a736f99607fb274466506b3bcaBrian Paul 20 September 2002 - Initial draft 2007357f20b1ee3ab0c58c7a20f44bf83fdfe0e256eBrian Paul 29 April 2003 - minor updates 201afc0428b5c5380fa5beaaa28c78faddd41da5284Brian Paul 3 September 2003 - further clarify when YCbCr->RGB conversion takes place 202361a9ac9663205b10ae78022ed777dfeda2a8ea4Brian Paul 19 September 2003 - a few more updates prior to submitting to extension 203361a9ac9663205b10ae78022ed777dfeda2a8ea4Brian Paul registry. 204fbb60ede3d5005328cedc9c2fa587e14e6309ed6Brian Paul 3 April 2004 - fix assorted inaccuracies 205