Name EXT_texture_view Name Strings GL_EXT_texture_view Contact Jon Leech (oddhack 'at' sonic.net) Daniel Koch, NVIDIA (dkoch 'at' nvidia.com) Contributors Jeff Bolz, NVIDIA Corporation (jbolz 'at' nvidia.com) Pat Brown, NVIDIA Slawomir Grajewski, Intel Jon Leech Notice Copyright (c) 2012-2013 The Khronos Group Inc. Copyright terms at http://www.khronos.org/registry/speccopyright.html Portions Copyright (c) 2013-2014 NVIDIA Corporation. Status Complete. Version Last Modified Date: April 1, 2014 Revision: 8 Number OpenGL ES Extension #185 Dependencies OpenGL ES 3.1 and OpenGL ES Shading Language 3.10 are required. This specification is written against the OpenGL ES 3.1 (March 17, 2014) and OpenGL ES 3.10 Shading Language (March 17, 2014) Specifications. EXT_texture_buffer affects the definition of this extension. EXT_texture_cube_map_array affects the definition of this extension. EXT_texture_compression_s3tc interacts with this extension. EXT_texture_compression_rgtc interacts with this extension. EXT_texture_compression_bptc interacts with this extension. KHR_texture_compression_astc_ldr interacts with this extension. KHR_texture_compression_astc_hdr interacts with this extension. OES_texture_compression_astc interacts with this extension. Overview This extension allows a texture's data store to be "viewed" in multiple ways, either reinterpreting the data format/type as a different format/ type with the same element size, or by clamping the mipmap level range or array slice range. The goals of this extension are to avoid having these alternate views become shared mutable containers of shared mutable objects, and to add the views to the API in a minimally invasive way. No new object types are added. Conceptually, a texture object is split into the following parts: - A data store holding texel data. - State describing which portions of the data store to use, and how to interpret the data elements. - An embedded sampler object. - Various other texture parameters. With this extension, multiple textures can share a data store and have different state describing which portions of the data store to use and how to interpret the data elements. The data store is refcounted and not destroyed until the last texture sharing it is deleted. This extension leverages the concept of an "immutable texture". Views can only be created of textures created with TexStorage*. New Procedures and Functions void TextureViewEXT(uint texture, enum target, uint origtexture, enum internalformat, uint minlevel, uint numlevels, uint minlayer, uint numlayers); New Tokens Accepted by the parameters of GetTexParameterfv and GetTexParameteriv: TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE TEXTURE_IMMUTABLE_LEVELS 0x82DF Used as compatibility class names in table 8.X.2: VIEW_CLASS_128_BITS VIEW_CLASS_96_BITS VIEW_CLASS_64_BITS VIEW_CLASS_48_BITS VIEW_CLASS_32_BITS VIEW_CLASS_24_BITS VIEW_CLASS_16_BITS VIEW_CLASS_8_BITS VIEW_CLASS_RGTC1_RED VIEW_CLASS_RGTC2_RG VIEW_CLASS_BPTC_UNORM VIEW_CLASS_BPTC_FLOAT VIEW_CLASS_S3TC_DXT1_RGB VIEW_CLASS_S3TC_DXT1_RGBA VIEW_CLASS_S3TC_DXT3_RGBA VIEW_CLASS_S3TC_DXT5_RGBA VIEW_CLASS_EAC_R11 VIEW_CLASS_EAC_RG11 VIEW_CLASS_ETC2_RGB VIEW_CLASS_ETC2_RGBA VIEW_CLASS_ETC2_EAC_RGBA VIEW_CLASS_ASTC_4x4_RGBA VIEW_CLASS_ASTC_5x4_RGBA VIEW_CLASS_ASTC_5x5_RGBA VIEW_CLASS_ASTC_6x5_RGBA VIEW_CLASS_ASTC_6x6_RGBA VIEW_CLASS_ASTC_8x5_RGBA VIEW_CLASS_ASTC_8x6_RGBA VIEW_CLASS_ASTC_8x8_RGBA VIEW_CLASS_ASTC_10x5_RGBA VIEW_CLASS_ASTC_10x6_RGBA VIEW_CLASS_ASTC_10x8_RGBA VIEW_CLASS_ASTC_10x10_RGBA VIEW_CLASS_ASTC_12x10_RGBA VIEW_CLASS_ASTC_12x12_RGBA VIEW_CLASS_ASTC_3x3x3_RGBA VIEW_CLASS_ASTC_4x3x3_RGBA VIEW_CLASS_ASTC_4x4x3_RGBA VIEW_CLASS_ASTC_4x4x4_RGBA VIEW_CLASS_ASTC_5x4x4_RGBA VIEW_CLASS_ASTC_5x5x4_RGBA VIEW_CLASS_ASTC_5x5x5_RGBA VIEW_CLASS_ASTC_6x5x5_RGBA VIEW_CLASS_ASTC_6x6x5_RGBA VIEW_CLASS_ASTC_6x6x6_RGBA (The VIEW_CLASS_* tokens used as compatibility class names in table 8.X.2 are the same tokens returned by the VIEW_COMPATIBILITY_CLASS query in ARB_internalformat_query2. In this extension they are simply a labelling mechanism and serve no functional purpose in the API, so their numeric values are not specified.) Additions to the OpenGL ES 3.1 Specification Modify section 5.3, "Propagating Changes to Objects" Add to the paragraph starting "When is a texture, the contents ..." on p. 44: When is a texture, the contents of are construed to include the contents of the data store of , even if 's data store was modified via a different view of the data store. Modify subsection 8.9, "Texture Parameters" Add the following to the end of the paragraph on p. 171 starting "In the remainder of chapter 8, denote by lod_min...": If the texture was created with TextureViewEXT, then the TEXTURE_BASE_LEVEL and TEXTURE_MAX_LEVEL parameters are interpreted relative to the view and not relative to the original data store. Modify section 8.10.2, "Texture Parameter Queries" Add to the list of legal s in the description of GetTexParameter on p. 172: ... must be IMAGE_FORMAT_COMPATIBILITY_TYPE, TEXTURE_IMMUTABLE_FORMAT, TEXTURE_IMMUTABLE_LEVELS, TEXTURE_VIEW_MIN_LEVEL_EXT, TEXTURE_VIEW_NUM_LEVELS_EXT, TEXTURE_VIEW_MIN_LAYER_EXT, TEXTURE_VIEW_NUM_LAYERS_EXT, or one of the symbolic values in table 8.20. Add a new subsection 8.16view following section 8.16, "Texture Completeness" 8.16view Texture Views A texture can be created which references the data store of another texture and interprets the data with a different format, and/or selects a subset of the levels and/or layers of the other texture. The data store for such a texture is shared with the data store of the original texture. Updating the shared data store using the original texture affects texture values read using the new texture, and vice versa. A texture data store remains in existence until all textures that reference it are deleted. The command: void TextureViewEXT(uint texture, enum target, uint origtexture, enum internalformat, uint minlevel, uint numlevels, uint minlayer, uint numlayers); initializes the texture named to the target specified by . 's data store is inherited from the texture named , but elements of the data store are interpreted according to the internal format specified by . Additionally, if the original texture is an array or has multiple mipmap levels, the parameters , , , and control which of those slices and levels are considered part of the texture. The and parameters are relative to the view of the original texture. If or extend beyond the original texture, they are clamped to the max extent of the original texture. If the command is successful, the texture parameters in are updated as follows: - TEXTURE_IMMUTABLE_FORMAT is set to TRUE. - TEXTURE_IMMUTABLE_LEVELS is set to the value of TEXTURE_IMMUTABLE_LEVELS for . - TEXTURE_VIEW_MIN_LEVEL_EXT is set to plus the value of TEXTURE_VIEW_MIN_LEVEL_EXT for . - TEXTURE_VIEW_MIN_LAYER_EXT is set to plus the value of TEXTURE_VIEW_MIN_LAYER_EXT for . - TEXTURE_VIEW_NUM_LEVELS_EXT is set to the lesser of and the value of TEXTURE_VIEW_NUM_LEVELS_EXT for minus . - TEXTURE_VIEW_NUM_LAYERS_EXT is set to the lesser of and the value of TEXTURE_VIEW_NUM_LAYERS_EXT for minus . The new texture's target must be with the target of , as defined by table 8.X.1. Numerous constraints on and the texture dimensions depend on and the target of . These constraints are summarized below in the errors section. -------------------------------------------------------------------------------------------- | Original target | Valid new targets | |------------------------------------------------------------------------------------------| | TEXTURE_2D | TEXTURE_2D, TEXTURE_2D_ARRAY | |------------------------------------------------------------------------------------------| | TEXTURE_3D | TEXTURE_3D | |------------------------------------------------------------------------------------------| | TEXTURE_CUBE_MAP | TEXTURE_CUBE_MAP, TEXTURE_2D, TEXTURE_2D_ARRAY, | | | TEXTURE_CUBE_MAP_ARRAY_EXT | |------------------------------------------------------------------------------------------| | TEXTURE_BUFFER_EXT | | |------------------------------------------------------------------------------------------| | TEXTURE_2D_ARRAY | TEXTURE_2D_ARRAY, TEXTURE_2D, TEXTURE_CUBE_MAP, | | | TEXTURE_CUBE_MAP_ARRAY_EXT | |------------------------------------------------------------------------------------------| | TEXTURE_CUBE_MAP_ARRAY | TEXTURE_CUBE_MAP_ARRAY_EXT, TEXTURE_2D_ARRAY, TEXTURE_2D, | | | TEXTURE_CUBE_MAP | |------------------------------------------------------------------------------------------| | TEXTURE_2D_MULTISAMPLE | TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY | |------------------------------------------------------------------------------------------| | TEXTURE_2D_MULTISAMPLE_ARRAY| TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY | -------------------------------------------------------------------------------------------- Table 8.X.1: Legal texture targets for TextureViewEXT. When 's target is TEXTURE_CUBE_MAP, the layer parameters are interpreted in the same order as if it were a TEXTURE_CUBE_MAP_ARRAY_EXT with 6 layer-faces. The two textures' internal formats must be compatible according to Table 8.X.2 (Compatible internal formats for TextureViewEXT) if the internal format exists in that table. The internal formats must be identical if not in that table. -------------------------------------------------------------------------- | Class | Internal formats | -------------------------------------------------------------------------- | VIEW_CLASS_128_BITS | RGBA32F, RGBA32UI, RGBA32I | -------------------------------------------------------------------------- | VIEW_CLASS_96_BITS | RGB32F, RGB32UI, RGB32I | -------------------------------------------------------------------------- | VIEW_CLASS_64_BITS | RGBA16F, RG32F, RGBA16UI, RG32UI, | | | RGBA16I, RG32I | -------------------------------------------------------------------------- | VIEW_CLASS_48_BITS | RGB16F, RGB16UI, RGB16I | -------------------------------------------------------------------------- | VIEW_CLASS_32_BITS | RG16F, R11F_G11F_B10F, R32F, | | | RGB10_A2UI, RGBA8UI, RG16UI, R32UI, | | | RGBA8I, RG16I, R32I, RGB10_A2, RGBA8, | | | RGBA8_SNORM, SRGB8_ALPHA8, RGB9_E5 | ------------------------------------------------------------------------- | VIEW_CLASS_24_BITS | RGB8, RGB8_SNORM, SRGB8, RGB8UI, RGB8I | -------------------------------------------------------------------------- | VIEW_CLASS_16_BITS | R16F, RG8UI, R16UI, RG8I, R16I, RG8, | | | RG8_SNORM | -------------------------------------------------------------------------- | VIEW_CLASS_8_BITS | R8UI, R8I, R8, R8_SNORM | -------------------------------------------------------------------------- | VIEW_CLASS_RGTC1_RED | COMPRESSED_RED_RGTC1_EXT, | | | COMPRESSED_SIGNED_RED_RGTC1_EXT | -------------------------------------------------------------------------- | VIEW_CLASS_RGTC2_RG | COMPRESSED_RG_RGTC2_EXT, | | | COMPRESSED_SIGNED_RG_RGTC2_EXT | -------------------------------------------------------------------------- | VIEW_CLASS_BPTC_UNORM | COMPRESSED_RGBA_BPTC_UNORM_EXT, | | | COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT | -------------------------------------------------------------------------- | VIEW_CLASS_BPTC_FLOAT | COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT, | | | COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT | -------------------------------------------------------------------------- | VIEW_CLASS_S3TC_DXT1_RGB | COMPRESSED_RGB_S3TC_DXT1_EXT, | | | COMPRESSED_SRGB_S3TC_DXT1_EXT | -------------------------------------------------------------------------- | VIEW_CLASS_S3TC_DXT1_RGBA | COMPRESSED_RGBA_S3TC_DXT1_EXT, | | | COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT | -------------------------------------------------------------------------- | VIEW_CLASS_S3TC_DXT3_RGBA | COMPRESSED_RGBA_S3TC_DXT3_EXT, | | | COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT | -------------------------------------------------------------------------- | VIEW_CLASS_S3TC_DXT5_RGBA | COMPRESSED_RGBA_S3TC_DXT5_EXT, | | | COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT | -------------------------------------------------------------------------- | VIEW_CLASS_EAC_R11 | COMPRESSED_R11_EAC, | | | COMPRESSED_SIGNED_R11_EAC | -------------------------------------------------------------------------- | VIEW_CLASS_EAC_RG11 | COMPRESSED_RG11_EAC, | | | COMPRESSED_SIGNED_RG11_EAC | -------------------------------------------------------------------------- | VIEW_CLASS_ETC2_RGB | COMPRESSED_RGB8_ETC2, | | | COMPRESSED_SRGB8_ETC2 | -------------------------------------------------------------------------- | VIEW_CLASS_ETC2_RGBA | COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, | | | COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 | -------------------------------------------------------------------------- | VIEW_CLASS_ETC2_EAC_RGBA | COMPRESSED_RGBA8_ETC2_EAC, | | | COMPRESSED_SRGB8_ALPHA8_ETC2_EAC | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_4x4_RGBA | COMPRESSED_RGBA_ASTC_4x4_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_5x4_RGBA | COMPRESSED_RGBA_ASTC_5x4_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_5x5_RGBA | COMPRESSED_RGBA_ASTC_5x5_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_6x5_RGBA | COMPRESSED_RGBA_ASTC_6x5_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_6x6_RGBA | COMPRESSED_RGBA_ASTC_6x6_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_8x5_RGBA | COMPRESSED_RGBA_ASTC_8x5_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_8x6_RGBA | COMPRESSED_RGBA_ASTC_8x6_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_8x8_RGBA | COMPRESSED_RGBA_ASTC_8x8_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_10x5_RGBA | COMPRESSED_RGBA_ASTC_10x5_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_10x6_RGBA | COMPRESSED_RGBA_ASTC_10x6_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_10x8_RGBA | COMPRESSED_RGBA_ASTC_10x8_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_10x10_RGBA | COMPRESSED_RGBA_ASTC_10x10_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_12x10_RGBA | COMPRESSED_RGBA_ASTC_12x10_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_12x12_RGBA | COMPRESSED_RGBA_ASTC_12x12_KHR, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_3x3x3_RGBA | COMPRESSED_RGBA_ASTC_3x3x3_OES, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_4x3x3_RGBA | COMPRESSED_RGBA_ASTC_4x3x3_OES, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_4x4x3_RGBA | COMPRESSED_RGBA_ASTC_4x4x3_OES, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_4x4x4_RGBA | COMPRESSED_RGBA_ASTC_4x4x4_OES, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_5x4x4_RGBA | COMPRESSED_RGBA_ASTC_5x4x4_OES, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_5x5x4_RGBA | COMPRESSED_RGBA_ASTC_5x5x4_OES, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_5x5x5_RGBA | COMPRESSED_RGBA_ASTC_5x5x5_OES, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_6x5x5_RGBA | COMPRESSED_RGBA_ASTC_6x5x5_OES, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_6x6x5_RGBA | COMPRESSED_RGBA_ASTC_6x6x5_OES, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES | -------------------------------------------------------------------------- | VIEW_CLASS_ASTC_6x6x6_RGBA | COMPRESSED_RGBA_ASTC_6x6x6_OES, | | | COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES | -------------------------------------------------------------------------- Table 8.X.2: Compatible internal formats for TextureViewEXT. Formats in the same entry may be cast to each other. If the internal format does not exactly match the internal format of the original texture, the contents of the memory are reinterpreted in the same manner as for image bindings described in section 8.22. Texture commands that take a or parameter, such as TexSubImage2D, interpret that parameter to be relative to the view of the texture. i.e. the mipmap level of the data store that would be updated via TexSubImage2D would be the sum of and the value of TEXTURE_VIEW_MIN_LEVEL_EXT. Errors An INVALID_VALUE error is generated if is zero. An INVALID_OPERATION error is generated by TextureViewEXT if is not a valid name returned by GenTextures, or if has already been bound and given a target. An INVALID_VALUE error is generated if is not the name of a texture. An INVALID_OPERATION error is generated if the value of TEXTURE_IMMUTABLE_FORMAT for is not TRUE. An INVALID_OPERATION error is generated if is not compatible with the target of , as defined by table 8.X.1. An INVALID_OPERATION error is generated if the internal format of exists in table 8.X.2 and is not compatible with , as described in that table. An INVALID_OPERATION error is generated if the internal format of does not exist in table 8.X.2, and is not identical to . An INVALID_VALUE error is generated if or are larger than the greatest level or layer, respectively, of . An INVALID_VALUE error is generated if is TEXTURE_CUBE_MAP and the clamped is not 6. An INVALID_VALUE error is generated if is TEXTURE_CUBE_MAP_ARRAY_EXT and the clamped is not a multiple of 6. In this case counts layer-faces rather than layers. An INVALID_VALUE error is generated if is TEXTURE_2D, TEXTURE_3D, or TEXTURE_2D_MULTISAMPLE and does not equal 1. An INVALID_OPERATION error is generated if is TEXTURE_CUBE_MAP or TEXTURE_CUBE_MAP_ARRAY_EXT, and the width and height of 's levels are not equal. An INVALID_OPERATION error is generated if any dimension of is larger than the maximum supported corresponding dimension of the new target. For example, if has a TEXTURE_2D_ARRAY target and is TEXTURE_CUBE_MAP, its width must be no greater than the value of MAX_CUBE_MAP_TEXTURE_SIZE. Modify section 8.17, "Immutable-Format Texture Images" Modify the third bullet on p. 188, starting "If the command is successful, TEXTURE_IMMUTABLE_FORMAT...": If the command is successful, TEXTURE_IMMUTABLE_FORMAT becomes TRUE, TEXTURE_IMMUTABLE_LEVELS and TEXTURE_VIEW_NUM_LEVELS_EXT become . If the texture target is TEXTURE_2D_ARRAY, TEXTURE_CUBE_MAP_ARRAY, or TEXTURE_2D_MULTISAMPLE_ARRAY then TEXTURE_VIEW_NUM_LAYERS_EXT becomes . If the texture target is TEXTURE_CUBE_MAP, then TEXTURE_VIEW_NUM_LAYERS_EXT becomes 6. For any other texture target, TEXTURE_VIEW_NUM_LAYERS_EXT becomes 1. Modify section 8.18, "Texture State" Add to the fourth paragraph on the section on p. 191, starting "Next, there are the": "... swizzle modes (see section 14.2.1), and four integers describing the texture view base level, number of levels, minimum array layer, and number of layers." Add to the following paragraph starting "In the initial state": "... and ALPHA, respectively. The values of TEXTURE_VIEW_MIN_LEVEL_EXT, TEXTURE_VIEW_NUM_LEVELS_EXT, TEXTURE_VIEW_MIN_LAYER_EXT, TEXTURE_VIEW_NUM_LAYERS_EXT are each zero." Dependencies on EXT_texture_buffer If EXT_texture_buffer is not supported, remove TEXTURE_BUFFER_EXT from the list of targets in table 8.X.1. Dependencies on EXT_texture_cube_map_array If EXT_texture_cube_map_array is not supported, remove all references to TEXTURE_CUBE_MAP_ARRAY_EXT. Dependencies on EXT_texture_compression_s3tc If EXT_texture_compression_s3tc is not supported, remove any references to S3TC compressed texture formats. Dependencies on EXT_texture_compression_rgtc If EXT_texture_compression_rgtc is not supported, remove any references to the RGTC compressed texture formats. Dependencies on EXT_texture_compression_bptc If EXT_texture_compression_bptc is not supported, remove any references to the BPTC compressed texture formats. Dependencies on KHR_texture_compression_astc_ldr If KHR_texture_compression_astc_ldr is not supported, remove any references to the ASTC LDR compressed texture formats. Dependencies on KHR_texture_compression_astc_hdr If KHR_texture_compression_astc_hdr is not supported, remove any references to the ASTC HDR compressed texture formats. Dependencies on OES_texture_compression_astc If OES_texture_compression_astc is not supported, remove any references to the ASTC 3D compressed texture formats. New State Add to table 20.9, Textures (state per texture object) Initial Get Value Type Get Command Value Description Sec. --------------------------- ---- ----------- ------- ----------------------------- ------ TEXTURE_VIEW_MIN_LEVEL_EXT Z+ GetTexParameter 0 view base texture level 8.16view TEXTURE_VIEW_NUM_LEVELS_EXT Z+ GetTexParameter 0 view number of texture levels 8.16view TEXTURE_VIEW_MIN_LAYER_EXT Z+ GetTexParameter 0 view min array layer 8.16view TEXTURE_VIEW_NUM_LAYERS_EXT Z+ GetTexParameter 0 view number of array layers 8.16view New Implementation Dependent State None. Examples TODO Issues Note: These issues apply specifically to the definition of the EXT_texture_view specification, which is based on the OpenGL extension ARB_texture_view. Resolved issues from ARB_texture_view have been removed, but remain largely applicable to this extension. ARB_texture_view can be found in the OpenGL Registry. (1) What functionality was removed from ARB_texture_view? - Texture targets TEXTURE_1D_ARRAY and TEXTURE_RECTANGLE. - View classes VIEW_CLASS_RGTC1_RED, VIEW_CLASS_RGTC2_RG, VIEW_CLASS_BPTC_UNORM, and VIEW_CLASS_BPTC_FLOAT, corresponding to GL-only RGTC and BPTC compressed texture formats. - Base and internal formats R16, R16_SNORM, RG16, RG16_SNORM, RGB16, RGB16_SNORM, RGBA16, and RGBA16_SNORM (see bug 11366). (2) Should there be ETC2/EAC view classes added corresponding to those texture formats? RESOLVED. Yes. These view classes don't exist in OpenGL 4.4 or any GL extension, even though ETC2/EAC compressed formats are part of 4.4. However as these formats are likely to be more important in an OpenGL ES environment and thus support is added. Support is also included for ASTC and RGTC and BPTC in case those texture formats are also supported. Revision History Rev. Date Author Changes ---- -------- -------- ------------------------------------------- 1 10/07/13 Jon Leech Initial version based on ARB_texture_view 2 11/12/13 Jon Leech Add dependency on EXT_texture_buffer and fix enum name. 3 11/20/13 Jon Leech Refer to ES 3.1 instead of 3plus. 4 11/21/13 dkoch Add dependency on EXT_texture_cube_map_array and restore related language. 5 12/18/13 dkoch Add view classes for ETC2/EAC and ASTC formats Add interactions with RGTC and BPTC extensions. Resolve issue 3, add issue 5. Remove ARB_internalformat_query2 interaction. Added errors section based on GL 4.4. 6 03/10/14 Jon Leech Rebase on OpenGL ES 3.1, change extension suffix to EXT, and remove R{GBA}16{,_SNORM} formats. 7 03/26/14 Jon Leech Sync with released ES 3.1 specs. Reflow text. 8 04/01/15 dkoch Update contributors.