15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci NV_sRGB_formats 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_NV_sRGB_formats 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContributors 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Contributors to ARB_framebuffer_sRGB and EXT_texture_sRGB 125bd8deadSopenharmony_ci Mathias Heyer, NVIDIA 135bd8deadSopenharmony_ci Jussi Rasanen, NVIDIA 145bd8deadSopenharmony_ci Greg Roth, NVIDIA 155bd8deadSopenharmony_ci 165bd8deadSopenharmony_ciContact 175bd8deadSopenharmony_ci 185bd8deadSopenharmony_ci Greg Roth, NVIDIA (groth 'at' nvidia.com) 195bd8deadSopenharmony_ci 205bd8deadSopenharmony_ciStatus 215bd8deadSopenharmony_ci 225bd8deadSopenharmony_ci Complete 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ciVersion 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ci Date: 17 Jan, 2013 275bd8deadSopenharmony_ci Revision: 5 285bd8deadSopenharmony_ci 295bd8deadSopenharmony_ciNumber 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ci OpenGL ES Extension #148 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ciDependencies 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ci OpenGL ES 2.0 is required. 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ci This extension is written against the OpenGL ES 2.0.25 385bd8deadSopenharmony_ci specification. 395bd8deadSopenharmony_ci 405bd8deadSopenharmony_ci Requires EXT_sRGB. 415bd8deadSopenharmony_ci 425bd8deadSopenharmony_ci OES_compressed_ETC1_RGB8_texture affects the definition of this 435bd8deadSopenharmony_ci extension. 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ci EXT_texture_storage affects the definition of this extension. 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ci NV_texture_array affects the definition of this extension. 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ci NV_texture_compression_s3tc affects the definition of this 505bd8deadSopenharmony_ci extension. 515bd8deadSopenharmony_ci 525bd8deadSopenharmony_ci NV_texture_compression_s3tc_update affects the definition of this 535bd8deadSopenharmony_ci extension. 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ciOverview 565bd8deadSopenharmony_ci 575bd8deadSopenharmony_ci This extension adds new uncompressed and compressed color texture 585bd8deadSopenharmony_ci formats with nonlinear sRGB color components. 595bd8deadSopenharmony_ci 605bd8deadSopenharmony_ci Luminance and luminance alpha provide support for textures 615bd8deadSopenharmony_ci containing sRGB values with identical red, green, and blue 625bd8deadSopenharmony_ci components. 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ci Compressed texture formats using S3TC and ETC1 compression 655bd8deadSopenharmony_ci algorithms are also added to provide compressed sRGB texture 665bd8deadSopenharmony_ci options. 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ci Finally, sized variant of sRGB, sLuminace, and sLuminance_alpha are 695bd8deadSopenharmony_ci provided for immutable textures defined using the EXT_texture_storage 705bd8deadSopenharmony_ci extension. 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ciNew Procedures and Functions 735bd8deadSopenharmony_ci 745bd8deadSopenharmony_ci None 755bd8deadSopenharmony_ci 765bd8deadSopenharmony_ciNew Tokens 775bd8deadSopenharmony_ci 785bd8deadSopenharmony_ci Accepted by the <format> and <internalformat> parameter of 795bd8deadSopenharmony_ci TexImage2D, and TexImage3DNV. These are also accepted by <format> 805bd8deadSopenharmony_ci parameter of TexSubImage2D and TexSubImage3DNV: 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci SLUMINANCE_NV 0x8C46 835bd8deadSopenharmony_ci SLUMINANCE_ALPHA_NV 0x8C44 845bd8deadSopenharmony_ci 855bd8deadSopenharmony_ci Accepted by the <internalformat> parameter of RenderbufferStorage, 865bd8deadSopenharmony_ci TexStorage2DEXT, and TexStorage3DEXT: 875bd8deadSopenharmony_ci SRGB8_NV 0x8C41 885bd8deadSopenharmony_ci 895bd8deadSopenharmony_ci Accepted by the <internalformat> parameter of TexStorage2DEXT and 905bd8deadSopenharmony_ci TexStorage3DEXT: 915bd8deadSopenharmony_ci SLUMINANCE8_NV 0x8C47 925bd8deadSopenharmony_ci SLUMINANCE8_ALPHA8_NV 0x8C45 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ci Accepted by the <internalformat> parameters of TexImage2D, 955bd8deadSopenharmony_ci TexImage3DNV, CompressedTexImage2D, and CompressedTexImage3DNV as 965bd8deadSopenharmony_ci well as the <format> parameter of TexSubImage2D, TexSubImage3DNV, 975bd8deadSopenharmony_ci CompressedTexSubImage2D, and CompressedTexSubImage3DNV: 985bd8deadSopenharmony_ci 995bd8deadSopenharmony_ci COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C 1005bd8deadSopenharmony_ci COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D 1015bd8deadSopenharmony_ci COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E 1025bd8deadSopenharmony_ci COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ci Accepted by the <internalformat> parameter of CompressedTexImage2D, 1055bd8deadSopenharmony_ci and CompressedTexImage3DNV: 1065bd8deadSopenharmony_ci 1075bd8deadSopenharmony_ci ETC1_SRGB8_NV 0x88EE 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL ES 2.0.25 Specification 1105bd8deadSopenharmony_ci(Rasterization) 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ciModify Section 3.7.1, "Texture Image Specification": 1135bd8deadSopenharmony_ci 1145bd8deadSopenharmony_ci Add 2 new rows to Table 3.3, "TexImage2D and ReadPixels formats": 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ci Element Meaning 1175bd8deadSopenharmony_ci Format Name and Order Target Buffer 1185bd8deadSopenharmony_ci ---------------- --------------- ------------- 1195bd8deadSopenharmony_ci SLUMINANCE_NV Luminance Color 1205bd8deadSopenharmony_ci SLUMINANCE_ALPHA_NV Luminance, A Color 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ci Add 2 new rows to Table 3.4, "Valid pixel format and type 1235bd8deadSopenharmony_ci combinations": 1245bd8deadSopenharmony_ci 1255bd8deadSopenharmony_ci Format Type Bytes per Pixel 1265bd8deadSopenharmony_ci ---------------- --------------- --------------- 1275bd8deadSopenharmony_ci SLUMINANCE_NV UNSIGNED_BYTE 1 1285bd8deadSopenharmony_ci SLUMINANCE_ALPHA_NV UNSIGNED_BYTE 2 1295bd8deadSopenharmony_ci 1305bd8deadSopenharmony_ci Add 2 new rows to "Valid combinations of format, type, and sized 1315bd8deadSopenharmony_ci internal-format" Table: 1325bd8deadSopenharmony_ci 1335bd8deadSopenharmony_ci Internal Format Format Type 1345bd8deadSopenharmony_ci ---------------- -------- ------ 1355bd8deadSopenharmony_ci SLUMINANCE8_NV SLUMINANCE_NV UNSIGNED_BYTE 1365bd8deadSopenharmony_ci SLUMINANCE8_ALPHA8_NV SLUMINANCE_ALPHA_NV UNSIGNED_BYTE 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ci 1395bd8deadSopenharmony_ci Add 5 new rows to "Specific Compressed Internal Formats" Table 1405bd8deadSopenharmony_ci 1415bd8deadSopenharmony_ci Compressed Internal Format Base Internal Format 1425bd8deadSopenharmony_ci ----------------------------------- -------------------- 1435bd8deadSopenharmony_ci COMPRESSED_SRGB_S3TC_DXT1_NV RGB 1445bd8deadSopenharmony_ci COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV RGBA 1455bd8deadSopenharmony_ci COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV RGBA 1465bd8deadSopenharmony_ci COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV RGBA 1475bd8deadSopenharmony_ci ETC1_SRGB8_NV RGB 1485bd8deadSopenharmony_ci 1495bd8deadSopenharmony_ci Modify Section 3.7.2 "Alternate Texture Image Specification 1505bd8deadSopenharmony_ci Commands" 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ci Modify the first sentence of the last paragraph (added by 1535bd8deadSopenharmony_ci NV_texture_compression_s3tc_update): 1545bd8deadSopenharmony_ci 1555bd8deadSopenharmony_ci When the internal format of the texture object is 1565bd8deadSopenharmony_ci COMPRESSED_RGB_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT1_EXT, 1575bd8deadSopenharmony_ci COMPRESSED_RGBA_S3TC_DXT3_EXT, COMPRESSED_RGBA_S3TC_DXT5_EXT, 1585bd8deadSopenharmony_ci COMPRESSED_SRGB_S3TC_DXT1_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 1595bd8deadSopenharmony_ci COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV, or COMPRESSED_SRGB_ALPHA_- 1605bd8deadSopenharmony_ci S3TC_DXT5_NV the update region specified in TexSubImage2D must be 1615bd8deadSopenharmony_ci aligned to 4x4 pixel blocks. ... 1625bd8deadSopenharmony_ci 1635bd8deadSopenharmony_ci Modify Section 3.7.3 "Compressed Texture Images" 1645bd8deadSopenharmony_ci 1655bd8deadSopenharmony_ci Add to the description of CompressedTexImage* 1665bd8deadSopenharmony_ci 1675bd8deadSopenharmony_ci If <internalformat> is COMPRESSED_SRGB_S3TC_DXT1_NV, 1685bd8deadSopenharmony_ci COMPRESSED_SRGBA_S3TC_DXT1_NV, COMPRESSED_SRGBA_S3TC_DXT3_NV, or 1695bd8deadSopenharmony_ci COMPRESSED_SRGBA_S3TC_DXT5_NV, the compressed texture is stored 1705bd8deadSopenharmony_ci using one of several S3TC compressed texture image formats. The 1715bd8deadSopenharmony_ci S3TC texture compression algorithm supports only 2D images. 1725bd8deadSopenharmony_ci CompressedTexImage3DNV produce an INVALID_OPERATION error if 1735bd8deadSopenharmony_ci <internalformat> is an S3TC format and <target> is not TEXTURE_- 1745bd8deadSopenharmony_ci 2D_ARRAY_NV. 1755bd8deadSopenharmony_ci 1765bd8deadSopenharmony_ci If <internalformat> is ETC1_SRGB8_NV, the compressed texture is an 1775bd8deadSopenharmony_ci ETC1 compressed texture. 1785bd8deadSopenharmony_ci 1795bd8deadSopenharmony_ci Change the penultimate paragraph describing CompressedTexSubImage* 1805bd8deadSopenharmony_ci (added by NV_texture_compression_s3tc): 1815bd8deadSopenharmony_ci 1825bd8deadSopenharmony_ci If the internal format is one of COMPRESSED_RGB_S3TC_DXT1_NV, 1835bd8deadSopenharmony_ci COMPRESSED_RGBA_S3TC_DXT1_NV, COMPRESSED_RGBA_S3TC_DXT3_NV, 1845bd8deadSopenharmony_ci COMPRESSED_RGBA_S3TC_DXT5_NV, COMPRESSED_SRGBA_S3TC_DXT1_NV, 1855bd8deadSopenharmony_ci COMPRESSED_SRGBA_S3TC_DXT3_NV, or COMPRESSED_SRGBA_S3TC_DXT5_NV 1865bd8deadSopenharmony_ci the compressed texture is stored using one of several S3TC 1875bd8deadSopenharmony_ci compressed texture image formats ... 1885bd8deadSopenharmony_ci 1895bd8deadSopenharmony_ci Modify Section 3.7.14, "sRGB Texture Color Conversion": 1905bd8deadSopenharmony_ci 1915bd8deadSopenharmony_ci Change the first sentence to: 1925bd8deadSopenharmony_ci 1935bd8deadSopenharmony_ci "If the currently bound texture's internal format is one 1945bd8deadSopenharmony_ci of SRGB_EXT, SRGB_ALPHA_EXT, SLUMINANCE_ALPHA_NV, SLUMINANCE_NV, 1955bd8deadSopenharmony_ci COMPRESSED_SRGB_S3TC_DXT1_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV, 1965bd8deadSopenharmony_ci COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV, 1975bd8deadSopenharmony_ci or ETC1_SRGB8_NV the red, green, and blue components are converted 1985bd8deadSopenharmony_ci from an sRGB color space to a linear color space as part of 1995bd8deadSopenharmony_ci filtering described in sections 3.7.7 and 3.7.8. ..." 2005bd8deadSopenharmony_ci 2015bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL ES 2.0.25 Specification (Per- 2025bd8deadSopenharmony_ciFragment Operations and the Framebuffer) 2035bd8deadSopenharmony_ci 2045bd8deadSopenharmony_ci The following should be added to table 4.5 "Renderbuffer Image 2055bd8deadSopenharmony_ci formats": 2065bd8deadSopenharmony_ci 2075bd8deadSopenharmony_ci SRGB8_NV color_renderable 8 8 8 - - - 2085bd8deadSopenharmony_ci 2095bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL ES 2.0.25 Specification (State and 2105bd8deadSopenharmony_ciState Requests) 2115bd8deadSopenharmony_ci 2125bd8deadSopenharmony_ci In section 6.1.3, modify the last sentence of the description of 2135bd8deadSopenharmony_ci GetFramebufferAttachmentParameteriv: 2145bd8deadSopenharmony_ci 2155bd8deadSopenharmony_ci "... For framebuffer objects, components are sRGB-encoded if the 2165bd8deadSopenharmony_ci internal format of a color attachment is SRGB_EXT, SRGB8_NV, 2175bd8deadSopenharmony_ci SRGB_ALPHA_EXT, SRGB8_ALPHA8_EXT, SLUMINANCE_NV, SLUMINANCE8_NV, 2185bd8deadSopenharmony_ci SLUMINANCE_ALPHA_NV, SLUMINANCE8_ALPHA8_NV, COMPRESSED_SRGB_S3TC_- 2195bd8deadSopenharmony_ci DXT1_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV, COMPRESSED_SRGB_ALPHA_- 2205bd8deadSopenharmony_ci S3TC_DXT3_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV, or ETC1_SRGB8_NV." 2215bd8deadSopenharmony_ci 2225bd8deadSopenharmony_ciDependencies on OES_compressed_ETC1_RGB8_texture 2235bd8deadSopenharmony_ci 2245bd8deadSopenharmony_ci If OES_compressed_ETC1_RGB8_texture is not supported, ignore all 2255bd8deadSopenharmony_ci references to ETC1_SRGB8_NV. 2265bd8deadSopenharmony_ci 2275bd8deadSopenharmony_ciDependencies on EXT_texture_storage 2285bd8deadSopenharmony_ci 2295bd8deadSopenharmony_ci If EXT_texture_storage is not supported, ignore all references to 2305bd8deadSopenharmony_ci glTexStorage2DEXT and TexStorage3DEXT functions, additions to the 2315bd8deadSopenharmony_ci "Valid combinations of format, type, and sized internal-format" 2325bd8deadSopenharmony_ci Table, and LUMINANCE8_NV and LUMINANCE8_ALPHA8_NV tokens. 2335bd8deadSopenharmony_ci 2345bd8deadSopenharmony_ciDependencies on NV_texture_array 2355bd8deadSopenharmony_ci 2365bd8deadSopenharmony_ci If NV_texture_array is not supported, ignore all references to 2375bd8deadSopenharmony_ci TexImage3DNV, TexSubImage3DNV, CompressedTexImage3DNV, and 2385bd8deadSopenharmony_ci CompressedTexSubImage3DNV. 2395bd8deadSopenharmony_ci 2405bd8deadSopenharmony_ciDependencies on NV_texture_compression_s3tc 2415bd8deadSopenharmony_ci 2425bd8deadSopenharmony_ci If EXT_texture_compression_s3tc is not supported, ignore the new 2435bd8deadSopenharmony_ci COMPRESSED_*_S3TC_DXT* tokens, the additions to the "Compressed 2445bd8deadSopenharmony_ci Internal Format" table, errors related to the COMPRESSED_*_S3TC_DXT* 2455bd8deadSopenharmony_ci tokens, and related discussion. Also ignore edits to decription 2465bd8deadSopenharmony_ci of CompressedTexSubImage*. 2475bd8deadSopenharmony_ci 2485bd8deadSopenharmony_ciDependencies on NV_texture_compression_s3tc_update 2495bd8deadSopenharmony_ci 2505bd8deadSopenharmony_ci If NV_texture_compression_s3tc_update is not supported, passing 2515bd8deadSopenharmony_ci COMPRESSED_SRGB_NV, COMPRESSED_SRGB_ALPHA_NV, 2525bd8deadSopenharmony_ci COMPRESSED_SLUMINANCE_NV, COMPRESSED_SLUMINANCE_ALPHA_NV, 2535bd8deadSopenharmony_ci COMPRESSED_SRGB_S3TC_DXT1_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV, 2545bd8deadSopenharmony_ci COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV, or COMPRESSED_SRGB_ALPHA_S3TC_- 2555bd8deadSopenharmony_ci DXT5_NV to the <internalformat> parameter of TexImage2D, 2565bd8deadSopenharmony_ci TexImage3DNV, is not supported and will produce an INVALID_VALUE 2575bd8deadSopenharmony_ci 2585bd8deadSopenharmony_ciErrors 2595bd8deadSopenharmony_ci 2605bd8deadSopenharmony_ci INVALID_OPERATION is generated by CompressedTexSubImage* if 2615bd8deadSopenharmony_ci <internalformat> is COMPRESSED_SRGB_S3TC_DXT1_NV, 2625bd8deadSopenharmony_ci COMPRESSED_SRGBA_S3TC_DXT1_NV, COMPRESSED_SRGBA_S3TC_DXT3_NV, or 2635bd8deadSopenharmony_ci COMPRESSED_SRGBA_S3TC_DXT5_NV and any of the following apply: 2645bd8deadSopenharmony_ci * <width> is not a multiple of four, and <width> plus 2655bd8deadSopenharmony_ci <xoffset> is not equal to the texture width; 2665bd8deadSopenharmony_ci * <height> is not a multiple of four, and <height> plus 2675bd8deadSopenharmony_ci <yoffset> is not equal to the texture height; or 2685bd8deadSopenharmony_ci * <xoffset> or <yoffset> is not a multiple of four. 2695bd8deadSopenharmony_ci 2705bd8deadSopenharmony_ci INVALID_OPERATION is generated by CompressedTexImage3DNV if 2715bd8deadSopenharmony_ci <internalformat> is COMPRESSED_SRGB_S3TC_DXT1_NV, COMPRESSED_SRGB_- 2725bd8deadSopenharmony_ci ALPHA_S3TC_DXT1_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV, 2735bd8deadSopenharmony_ci COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV, or ETC1_SRGB8_NV and <target> is 2745bd8deadSopenharmony_ci not TEXTURE_IMAGE_2D_ARRAY_NV. 2755bd8deadSopenharmony_ci 2765bd8deadSopenharmony_ci INVALID_OPERATION is generated by CompressedTexSubImage2D, 2775bd8deadSopenharmony_ci TexSubImage2D, CompressedTexSubImage3DNV, or TexSubImage3DNV, if the 2785bd8deadSopenharmony_ci texture image <level> bound to <target> has internal format 2795bd8deadSopenharmony_ci ETC1_SRGB8_NV. 2805bd8deadSopenharmony_ci 2815bd8deadSopenharmony_ciNew State 2825bd8deadSopenharmony_ci 2835bd8deadSopenharmony_ci None 2845bd8deadSopenharmony_ci 2855bd8deadSopenharmony_ciNew Implementation Dependent State 2865bd8deadSopenharmony_ci 2875bd8deadSopenharmony_ci None 2885bd8deadSopenharmony_ci 2895bd8deadSopenharmony_ciIssues 2905bd8deadSopenharmony_ci 2915bd8deadSopenharmony_ci 1) Should this be one extension or two? 2925bd8deadSopenharmony_ci 2935bd8deadSopenharmony_ci RESOLVED: one. Desktop GL divided this functionality between 2945bd8deadSopenharmony_ci texture_sRGB and framebuffer_sRGB, but the ES extension EXT_sRGB 2955bd8deadSopenharmony_ci which took some features from each of those was only one. For 2965bd8deadSopenharmony_ci consistency with EXT_sRGB, this is a single extension. 2975bd8deadSopenharmony_ci 2985bd8deadSopenharmony_ci 2) Should inherently incomplete compressed sRGB texture attachments 2995bd8deadSopenharmony_ci still return sRGB for FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 3005bd8deadSopenharmony_ci queries? 3015bd8deadSopenharmony_ci 3025bd8deadSopenharmony_ci RESOLVED: Yes. Just because they are incomplete doesn't mean they 3035bd8deadSopenharmony_ci aren't attached. Such a query might be performed to determine 3045bd8deadSopenharmony_ci why an FBO is incomplete. 3055bd8deadSopenharmony_ci 3065bd8deadSopenharmony_ci 3) Should formats for sRGB luminance values be supported? 3075bd8deadSopenharmony_ci 3085bd8deadSopenharmony_ci RESOLVED: Yes. Implementations can always support luminance 3095bd8deadSopenharmony_ci and luminance-alpha sRGB formats as an RGB8 or RGBA8 format with 3105bd8deadSopenharmony_ci replicated R, G, and B values. 3115bd8deadSopenharmony_ci 3125bd8deadSopenharmony_ci For lack of a better term, "SLUMINANCE" will be used within 3135bd8deadSopenharmony_ci token names to indicate sRGB values with identical red, green, 3145bd8deadSopenharmony_ci and blue components. 3155bd8deadSopenharmony_ci 3165bd8deadSopenharmony_ci 4) Should all component sizes be supported for sRGB components or 3175bd8deadSopenharmony_ci just 8-bit? 3185bd8deadSopenharmony_ci 3195bd8deadSopenharmony_ci RESOLVED: Just 8-bit. For sRGB values with more than 8 bit of 3205bd8deadSopenharmony_ci precision, a linear representation may be easier to work with 3215bd8deadSopenharmony_ci and adequately represent dim values. Storing 5-bit and 6-bit 3225bd8deadSopenharmony_ci values in sRGB form is unnecessary because applications 3235bd8deadSopenharmony_ci sophisticated enough to sRGB to maintain color precision will 3245bd8deadSopenharmony_ci demand at least 8-bit precision for sRGB values. 3255bd8deadSopenharmony_ci 3265bd8deadSopenharmony_ci Because hardware tables are required sRGB conversions, it doesn't 3275bd8deadSopenharmony_ci make sense to burden hardware with conversions that are unlikely 3285bd8deadSopenharmony_ci when 8-bit is the norm for sRGB values. 3295bd8deadSopenharmony_ci 3305bd8deadSopenharmony_ci 5) Should generic compressed sRGB formats be supported? 3315bd8deadSopenharmony_ci 3325bd8deadSopenharmony_ci RESOLVED: Yes. Implementations are free simply to use 3335bd8deadSopenharmony_ci uncompressed sRGB formats to implement the GL_COMPRESSED_SRGB_* 3345bd8deadSopenharmony_ci formats. 3355bd8deadSopenharmony_ci 3365bd8deadSopenharmony_ci 6) Should S3TC compressed sRGB formats be supported? 3375bd8deadSopenharmony_ci 3385bd8deadSopenharmony_ci RESOLVED: Yes, but only if EXT_texture_compression_s3tc is also 3395bd8deadSopenharmony_ci advertised. For competitive reasons, we expect OpenGL ES will 3405bd8deadSopenharmony_ci need an S3TC-based block compression format for sRGB data. 3415bd8deadSopenharmony_ci 3425bd8deadSopenharmony_ci Rather than expose a separate "sRGB_compression" extension, 3435bd8deadSopenharmony_ci it makes more sense to specify a dependency between 3445bd8deadSopenharmony_ci EXT_texture_compression_s3tc and this extension such that when 3455bd8deadSopenharmony_ci BOTH extensions are exposed, the GL_COMPRESSED_SRGB*_S3TC_DXT*_NV 3465bd8deadSopenharmony_ci tokens are accepted. 3475bd8deadSopenharmony_ci 3485bd8deadSopenharmony_ci We avoid explicitly requiring S3TC formats when EXT_texture_sRGB 3495bd8deadSopenharmony_ci is advertised to avoid IP encumbrances. 3505bd8deadSopenharmony_ci 3515bd8deadSopenharmony_ci 7) How is the texture border color handled for sRGB formats? 3525bd8deadSopenharmony_ci (Only relevant if NV_texture_border_clamp is supported. 3535bd8deadSopenharmony_ci 3545bd8deadSopenharmony_ci RESOLVED: The texture border color is specified as four 3555bd8deadSopenharmony_ci floating-point values. Given that the texture border color can 3565bd8deadSopenharmony_ci be specified at such high precision, it is always treated as a 3575bd8deadSopenharmony_ci linear RGBA value. 3585bd8deadSopenharmony_ci 3595bd8deadSopenharmony_ci Only texel components are converted from the sRGB encoding to a 3605bd8deadSopenharmony_ci linear RGB value ahead of texture filtering. The border color 3615bd8deadSopenharmony_ci can be used "as is" without any conversion. 3625bd8deadSopenharmony_ci 3635bd8deadSopenharmony_ci By keeping the texture border color specified as a linear 3645bd8deadSopenharmony_ci RGB value at the API level allows developers to specify the 3655bd8deadSopenharmony_ci high-precision texture border color in a single consistent color 3665bd8deadSopenharmony_ci space without concern for how the sRGB conversion is implemented 3675bd8deadSopenharmony_ci in relation to filtering. 3685bd8deadSopenharmony_ci 3695bd8deadSopenharmony_ci An implementation that does post-filtering sRGB conversion is 3705bd8deadSopenharmony_ci likely to convert the texture border color to sRGB within 3715bd8deadSopenharmony_ci the driver so it can be filtered with the sRGB values coming 3725bd8deadSopenharmony_ci from texels and then the filtered sRGB value is converted to 3735bd8deadSopenharmony_ci linear RGB. 3745bd8deadSopenharmony_ci 3755bd8deadSopenharmony_ci By maintaining the texture border color always in linear RGB, 3765bd8deadSopenharmony_ci we avoid developers having to know if an implementation is 3775bd8deadSopenharmony_ci performing the sRGB conversion (ideally) pre-filtering or (less 3785bd8deadSopenharmony_ci ideally) post-filtering. 3795bd8deadSopenharmony_ci 3805bd8deadSopenharmony_ci 8) Should sRGB framebuffer support affect the pixel path? 3815bd8deadSopenharmony_ci 3825bd8deadSopenharmony_ci RESOLVED: No. 3835bd8deadSopenharmony_ci 3845bd8deadSopenharmony_ci sRGB conversion only applies to color reads for blending and 3855bd8deadSopenharmony_ci color writes. Color reads for glReadPixels have no sRGB 3865bd8deadSopenharmony_ci conversion applied. 3875bd8deadSopenharmony_ci 3885bd8deadSopenharmony_ci 3895bd8deadSopenharmony_ciRevision History 3905bd8deadSopenharmony_ci 3915bd8deadSopenharmony_ci Rev. Date Author Changes 3925bd8deadSopenharmony_ci ---- -------- --------- ------------------------------------- 3935bd8deadSopenharmony_ci 5 17 Jan 2013 groth Add sized L and LA sRGB formats 3945bd8deadSopenharmony_ci Drastically flesh out interactions. 3955bd8deadSopenharmony_ci 4 11 sep 2012 groth Further clarify interactions 3965bd8deadSopenharmony_ci 3 21 Aug 2012 groth Reorganzied issues. Clarified some. 3975bd8deadSopenharmony_ci 2 15 Aug 2012 groth Clarified mheyer feedback. 3985bd8deadSopenharmony_ci 1 13 Aug 2012 groth Initial draft based off EXT_texture_sRGB 399