1Name 2 3 EXT_EGL_image_storage_compression 4 5Name Strings 6 7 GL_EXT_EGL_image_storage_compression 8 9Contact 10 11 Jan-Harald Fredriksen (jan-harald.fredriksen 'at' arm.com) 12 13Contributors 14 15 Jan-Harald Fredriksen, Arm 16 Lisa Wu, Arm 17 Anton Berko, Arm 18 Laurie Hedge, Imagination Technologies 19 20Status 21 22 Complete 23 24Version 25 26 Version 1 - November 15, 2021 27 28Number 29 30 OpenGL ES Extension #337 31 32Dependencies 33 34 Requires OpenGL ES 3.0. 35 36 Requires GL_EXT_EGL_image_storage. 37 This extension is written based on the wording of the OpenGL ES 3.2 38 Specification. 39 40Overview 41 42 Applications may wish to take advantage of framebuffer compression. Some 43 platforms may support framebuffer compression at fixed bitrates. Such 44 compression algorithms generally produce results that are visually lossless, 45 but the results are typically not bit-exact when compared to a non-compressed 46 result. 47 48 This extension enables applications to specify a texture by taking all 49 properties from a fixed-rate compressed EGLImage. 50 51Glossary 52 53 Please see the EGL_KHR_image specification for a list of terms 54 used by this specification. 55 56New Types 57 58 None. 59 60New Procedures and Functions 61 62 None. 63 64New Tokens 65 66 New attributes accepted by the <attrib_list> argument of 67 EGLImageTargetTexStorageEXT: 68 SURFACE_COMPRESSION_EXT 0x96C0 69 70 Accepted as attribute values for SURFACE_COMPRESSION_EXT by 71 EGLImageTargetTexStorageEXT: 72 SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1 73 SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2 74 75Additions to Chapter 8 of the OpenGL ES 3.2 Specification (Textures and 76Samplers) 77 78 - (8.18, p. 210) Modify the final paragraph of the description of the 79 EGLImageTargetTexStorageEXT command: 80 81 <attrib_list> specifies a list of attributes for the texture. 82 83 All attribute names in <attrib_list> are immediately followed by the 84 corresponding value. The list is terminated with GL_NONE. If an 85 attribute is not specified in <attrib_list>, then the default value 86 is used. 87 88 <attrib_list> may be NULL or empty (first attribute is GL_NONE), in which 89 case all attributes assume their default value as described below. 90 91 Attributes that can be specified in <attrib_list> include 92 SURFACE_COMPRESSION_EXT. 93 94 SURFACE_COMPRESSION_EXT specifies whether fixed-rate compression 95 is enabled for <image>. 96 If its value is SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT, then <image> 97 must not use fixed-rate compression. 98 In this case, if <image> refers to a compressed image, the error 99 INVALID_OPERATION is generated. 100 101 If its value is SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT, then 102 <image> may use fixed-rate compression. 103 104 The default value of SURFACE_COMPRESSION_EXT is 105 SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT. 106 107 If <attrib_list> is neither NULL nor a value described above, 108 the error INVALID_VALUE is generated. 109 110 Fixed-rate compression is done in an implementation-defined manner and may 111 be applied at block granularity. In that case, a write to an individual 112 texel may modify the value of other texels in the same block. 113 114 Modify section 8.23, "Texture Image Loads and Stores": 115 116 Add to the list of errors for BindImageTexture: 117 118 "An INVALID_VALUE error is generated if the value of 119 SURFACE_COMPRESSION_EXT for <texture> is not 120 SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT." 121 122 Add to the bullet list of conditions for when image access is considered invalid: 123 124 " * the value of SURFACE_COMPRESSION_EXT for the texture is not 125 SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT;" 126 127Issues 128 129 1. Can fixed-rate compressed images be imported using EGLImageTargetTexture2DOES? 130 131 RESOLVED. No. We only allow fixed-rate compression for immutable textures. 132 133 2. Do we need to specify compression rates in this extension? 134 135 RESOLVED. No. The source EGLImage object must have been allocated elsewhere, 136 and the compression ratio must have been decided at that time. 137 138Revision History 139 Version 1, 2021/11/15 140 - Internal revisions 141