Name EXT_EGL_image_storage_compression Name Strings GL_EXT_EGL_image_storage_compression Contact Jan-Harald Fredriksen (jan-harald.fredriksen 'at' arm.com) Contributors Jan-Harald Fredriksen, Arm Lisa Wu, Arm Anton Berko, Arm Laurie Hedge, Imagination Technologies Status Complete Version Version 1 - November 15, 2021 Number OpenGL ES Extension #337 Dependencies Requires OpenGL ES 3.0. Requires GL_EXT_EGL_image_storage. This extension is written based on the wording of the OpenGL ES 3.2 Specification. Overview Applications may wish to take advantage of framebuffer compression. Some platforms may support framebuffer compression at fixed bitrates. Such compression algorithms generally produce results that are visually lossless, but the results are typically not bit-exact when compared to a non-compressed result. This extension enables applications to specify a texture by taking all properties from a fixed-rate compressed EGLImage. Glossary Please see the EGL_KHR_image specification for a list of terms used by this specification. New Types None. New Procedures and Functions None. New Tokens New attributes accepted by the argument of EGLImageTargetTexStorageEXT: SURFACE_COMPRESSION_EXT 0x96C0 Accepted as attribute values for SURFACE_COMPRESSION_EXT by EGLImageTargetTexStorageEXT: SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1 SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2 Additions to Chapter 8 of the OpenGL ES 3.2 Specification (Textures and Samplers) - (8.18, p. 210) Modify the final paragraph of the description of the EGLImageTargetTexStorageEXT command: specifies a list of attributes for the texture. All attribute names in are immediately followed by the corresponding value. The list is terminated with GL_NONE. If an attribute is not specified in , then the default value is used. may be NULL or empty (first attribute is GL_NONE), in which case all attributes assume their default value as described below. Attributes that can be specified in include SURFACE_COMPRESSION_EXT. SURFACE_COMPRESSION_EXT specifies whether fixed-rate compression is enabled for . If its value is SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT, then must not use fixed-rate compression. In this case, if refers to a compressed image, the error INVALID_OPERATION is generated. If its value is SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT, then may use fixed-rate compression. The default value of SURFACE_COMPRESSION_EXT is SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT. If is neither NULL nor a value described above, the error INVALID_VALUE is generated. Fixed-rate compression is done in an implementation-defined manner and may be applied at block granularity. In that case, a write to an individual texel may modify the value of other texels in the same block. Modify section 8.23, "Texture Image Loads and Stores": Add to the list of errors for BindImageTexture: "An INVALID_VALUE error is generated if the value of SURFACE_COMPRESSION_EXT for is not SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT." Add to the bullet list of conditions for when image access is considered invalid: " * the value of SURFACE_COMPRESSION_EXT for the texture is not SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT;" Issues 1. Can fixed-rate compressed images be imported using EGLImageTargetTexture2DOES? RESOLVED. No. We only allow fixed-rate compression for immutable textures. 2. Do we need to specify compression rates in this extension? RESOLVED. No. The source EGLImage object must have been allocated elsewhere, and the compression ratio must have been decided at that time. Revision History Version 1, 2021/11/15 - Internal revisions