15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci EXT_422_pixels 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_EXT_422_pixels 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciVersion 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Date: 3/22/1998 Version 1.2 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciNumber 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci 178 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciDependencies 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ci None 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ciOverview 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ci This extension provides support for converting 422 pixels in host 245bd8deadSopenharmony_ci memory to 444 pixels as part of the pixel storage operation. 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ci The pixel unpack storage operation treats a 422 pixel as a 2 element 275bd8deadSopenharmony_ci format where the first element is C (chrominance) and the second 285bd8deadSopenharmony_ci element is L (luminance). Luminance is present on all pixels; a full 295bd8deadSopenharmony_ci chrominance value requires two pixels. 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ci The pixel pack storage operation converts RGB to a 422 pixel defined as 325bd8deadSopenharmony_ci a 2 element format where the first element stored is C (chrominance) 335bd8deadSopenharmony_ci and the second element stored is L (luminance). Luminance is present 345bd8deadSopenharmony_ci on all pixels; a full chrominance value requires two pixels. 355bd8deadSopenharmony_ci 365bd8deadSopenharmony_ci Both averaging and non-averaging is supported for green and blue 375bd8deadSopenharmony_ci assignments for pack and unpack operations. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ciNew Procedures and Functions 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci None 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ciNew Tokens 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ci Accepted by the <format> parameter of DrawPixels, ReadPixels, 465bd8deadSopenharmony_ci TexImage1D, TexImage2D, GetTexImage, TexImage3D, TexSubImage1D, 475bd8deadSopenharmony_ci TexSubImage2D, TexSubImage3D, GetHistogram, GetMinmax, 485bd8deadSopenharmony_ci ConvolutionFilter1D, ConvolutionFilter2D, ConvolutionFilter3D, 495bd8deadSopenharmony_ci GetConvolutionFilter, SeparableFilter2D, SeparableFilter3D, 505bd8deadSopenharmony_ci GetSeparableFilter, ColorTable, and GetColorTable. 515bd8deadSopenharmony_ci 525bd8deadSopenharmony_ci 422_EXT 0x80CC 535bd8deadSopenharmony_ci 422_REV_EXT 0x80CD 545bd8deadSopenharmony_ci 422_AVERAGE_EXT 0x80CE 555bd8deadSopenharmony_ci 422_REV_AVERAGE_EXT 0x80CF 565bd8deadSopenharmony_ci 575bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.2 Specification (OpenGL Operation) 585bd8deadSopenharmony_ci 595bd8deadSopenharmony_ci None 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.2 Specification (Rasterization) 625bd8deadSopenharmony_ci 635bd8deadSopenharmony_ci The four tokens defined by this extension are added to Table 3.6: 645bd8deadSopenharmony_ci 655bd8deadSopenharmony_ci Format Name Element Meaning and Order Target Buffer 665bd8deadSopenharmony_ci ------------------- ------------------------- -------------- 675bd8deadSopenharmony_ci 422_EXT C, L, C, L Color 685bd8deadSopenharmony_ci 422_REV_EXT L, C, L, C Color 695bd8deadSopenharmony_ci 422_AVERAGE_EXT C, L, C, L Color 705bd8deadSopenharmony_ci 422_REV_AVERAGE_EXT L, C, L, C Color 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ci Table 3.6: DrawPixels and ReadPixels formats. The second column 735bd8deadSopenharmony_ci gives a description of and the number and order of elements in a 745bd8deadSopenharmony_ci group. Unless specified as an index, formats yield components. 755bd8deadSopenharmony_ci 765bd8deadSopenharmony_ci 3.6.4 Rasterization of Pixel Rectangles 775bd8deadSopenharmony_ci 785bd8deadSopenharmony_ci [The new formats are added to the discussion of "Conversion to RGB"] 795bd8deadSopenharmony_ci 805bd8deadSopenharmony_ci This step is applied only if <format> is 422_EXT, 422_REV_EXT, 815bd8deadSopenharmony_ci 422_AVERAGE_EXT, or 422_AVERAGE_REV_EXT. For 422_EXT and 825bd8deadSopenharmony_ci 422_REV_EXT, the assignment of the elements in a group to 835bd8deadSopenharmony_ci R, G, and B are defined in the following equations: 845bd8deadSopenharmony_ci 855bd8deadSopenharmony_ci Even Pixel Odd Pixel 865bd8deadSopenharmony_ci ------------- ------------- 875bd8deadSopenharmony_ci R = L[n*2] R = L[n*2+1] 885bd8deadSopenharmony_ci G = C[n*2] G = C[n*2] 895bd8deadSopenharmony_ci B = C[n*2+1] B = C[n*2+1] 905bd8deadSopenharmony_ci 915bd8deadSopenharmony_ci where 0 < n < width/2. If the <width> of the image is odd, then 925bd8deadSopenharmony_ci the last column of pixels will have an undefined color value. 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ci For 422_AVERAGE_EXT and 422_AVERAGE_REV_EXT, the assignment of the 955bd8deadSopenharmony_ci elements in a group to R, G, and B are defined in the following 965bd8deadSopenharmony_ci equations: 975bd8deadSopenharmony_ci 985bd8deadSopenharmony_ci Even Pixel Odd Pixel (Averaged) 995bd8deadSopenharmony_ci ------------- ------------------------------ 1005bd8deadSopenharmony_ci R = L[n*2] R = L[n*2+1] 1015bd8deadSopenharmony_ci G = C[n*2] G = (C[n*2] + C[n*2+2]) / 2 1025bd8deadSopenharmony_ci B = C[n*2+1] B = (C[n*2+1] + C[n*2+3]) / 2 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ci where 0 < n < width/2. If the <width> of the image is odd, then the 1055bd8deadSopenharmony_ci last column of pixels will have an undefined color value. If the 1065bd8deadSopenharmony_ci pixels at [n*2+2] or [n*2+3] are not present, then the non-averaging 1075bd8deadSopenharmony_ci odd pixel equations are used for that pixel. 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations 1105bd8deadSopenharmony_ciand the Framebuffer) 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ci [The new formats are added to the discussion of "Obtaining Pixels 1135bd8deadSopenharmony_ci from the Framebuffer."] 1145bd8deadSopenharmony_ci 1155bd8deadSopenharmony_ci [A new section, "Conversion to 422," is added after the section 1165bd8deadSopenharmony_ci "Conversion to L."] 1175bd8deadSopenharmony_ci 1185bd8deadSopenharmony_ci This step applies only to RGBA component groups, and only if the 1195bd8deadSopenharmony_ci <format> is 422_EXT, 422_REV_EXT, 422_AVERAGE_EXT, or 1205bd8deadSopenharmony_ci 422_AVERAGE_REV_EXT. For 422_EXT, RGB is converted to a 422 pixel 1215bd8deadSopenharmony_ci defined as a 2 element format where the first element stored is 1225bd8deadSopenharmony_ci C (chrominance) and the second element stored is L (luminance). 1235bd8deadSopenharmony_ci For 422_REV_EXT, the first element stored is luminance and the 1245bd8deadSopenharmony_ci second element stored is chrominance. 1255bd8deadSopenharmony_ci 1265bd8deadSopenharmony_ci Luminance is present on all pixels; only one chrominance value is 1275bd8deadSopenharmony_ci present on each pixel. The conversion is performed according to the 1285bd8deadSopenharmony_ci following equations. 1295bd8deadSopenharmony_ci 1305bd8deadSopenharmony_ci Even Pixel Odd Pixel 1315bd8deadSopenharmony_ci ------------- ------------- 1325bd8deadSopenharmony_ci L = R[n*2] L = R[n*2+1] 1335bd8deadSopenharmony_ci C = G[n*2] C = B[n*2] 1345bd8deadSopenharmony_ci 1355bd8deadSopenharmony_ci where 0 < n < width/2. 1365bd8deadSopenharmony_ci 1375bd8deadSopenharmony_ci For 422_AVERAGE_EXT and 422_AVERAGE_REV_EXT, the calculation of 1385bd8deadSopenharmony_ci the chrominance is performed by averaging adjacent pixel components 1395bd8deadSopenharmony_ci according to the following equations: 1405bd8deadSopenharmony_ci 1415bd8deadSopenharmony_ci Even Pixel (Averaged) Odd Pixel (Averaged) 1425bd8deadSopenharmony_ci ------------------------------ ----------------------------- 1435bd8deadSopenharmony_ci L = R[n*2] L = R[n*2+1] 1445bd8deadSopenharmony_ci C = (G[n*2] + G[n*2+1]) / 2 C = (B[n*2] + B[n*2+1]) / 2 1455bd8deadSopenharmony_ci 1465bd8deadSopenharmony_ci where 0 < n < width/2. If the pixel at [n*2+1] is not present, then 1475bd8deadSopenharmony_ci the non-averaging pixel equations are used for that pixel. 1485bd8deadSopenharmony_ci 1495bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.2 Specification (Special Functions) 1505bd8deadSopenharmony_ci 1515bd8deadSopenharmony_ci None 1525bd8deadSopenharmony_ci 1535bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.2 Specification (State and State Requests) 1545bd8deadSopenharmony_ci 1555bd8deadSopenharmony_ci None 1565bd8deadSopenharmony_ci 1575bd8deadSopenharmony_ciAdditions to the GLX Specification 1585bd8deadSopenharmony_ci 1595bd8deadSopenharmony_ci None 1605bd8deadSopenharmony_ci 1615bd8deadSopenharmony_ciGLX Protocol 1625bd8deadSopenharmony_ci 1635bd8deadSopenharmony_ci None 1645bd8deadSopenharmony_ci 1655bd8deadSopenharmony_ciErrors 1665bd8deadSopenharmony_ci 1675bd8deadSopenharmony_ci None 1685bd8deadSopenharmony_ci 1695bd8deadSopenharmony_ciNew State 1705bd8deadSopenharmony_ci 1715bd8deadSopenharmony_ci None 1725bd8deadSopenharmony_ci 1735bd8deadSopenharmony_ciNew Implementation Dependent State 1745bd8deadSopenharmony_ci 1755bd8deadSopenharmony_ci None 176