| 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 <pname> 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 <T> is a texture, the contents ..." | |
| on p. 44: | |
| When <T> is a texture, the contents of <T> are construed to include the | |
| contents of the data store of <T>, even if <T>'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 <pname>s in the description of GetTexParameter | |
| on p. 172: | |
| ... <pname> 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 <texture> to the target specified by | |
| <target>. <texture>'s data store is inherited from the texture named | |
| <origtexture>, but elements of the data store are interpreted according | |
| to the internal format specified by <internalformat>. Additionally, if the | |
| original texture is an array or has multiple mipmap levels, the parameters | |
| <minlayer>, <numlayers>, <minlevel>, and <numlevels> control which of those | |
| slices and levels are considered part of the texture. | |
| The <minlevel> and <minlayer> parameters are relative to the view of the | |
| original texture. If <numlayers> or <numlevels> 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 <texture> are | |
| updated as follows: | |
| - TEXTURE_IMMUTABLE_FORMAT is set to TRUE. | |
| - TEXTURE_IMMUTABLE_LEVELS is set to the value of | |
| TEXTURE_IMMUTABLE_LEVELS for <origtexture>. | |
| - TEXTURE_VIEW_MIN_LEVEL_EXT is set to <minlevel> plus the value of | |
| TEXTURE_VIEW_MIN_LEVEL_EXT for <origtexture>. | |
| - TEXTURE_VIEW_MIN_LAYER_EXT is set to <minlayer> plus the value of | |
| TEXTURE_VIEW_MIN_LAYER_EXT for <origtexture>. | |
| - TEXTURE_VIEW_NUM_LEVELS_EXT is set to the lesser of <numlevels> and | |
| the value of TEXTURE_VIEW_NUM_LEVELS_EXT for <origtexture> minus | |
| <minlevels>. | |
| - TEXTURE_VIEW_NUM_LAYERS_EXT is set to the lesser of <numlayers> and | |
| the value of TEXTURE_VIEW_NUM_LAYERS_EXT for <origtexture> minus | |
| <minlayer>. | |
| The new texture's target must be <compatible> with the target of | |
| <origtexture>, as defined by table 8.X.1. | |
| Numerous constraints on <numlayers> and the texture dimensions depend on | |
| <target> and the target of <origtexture>. 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 | <none> | | |
| |------------------------------------------------------------------------------------------| | |
| | 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 <origtexture>'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 <level> or <layer> 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 <level> and the value of | |
| TEXTURE_VIEW_MIN_LEVEL_EXT. | |
| Errors | |
| An INVALID_VALUE error is generated if <texture> is zero. | |
| An INVALID_OPERATION error is generated by TextureViewEXT if <texture> | |
| is not a valid name returned by GenTextures, or if <texture> has already | |
| been bound and given a target. | |
| An INVALID_VALUE error is generated if <origtexture> is not the name of | |
| a texture. | |
| An INVALID_OPERATION error is generated if the value of | |
| TEXTURE_IMMUTABLE_FORMAT for <origtexture> is not TRUE. | |
| An INVALID_OPERATION error is generated if <target> is not compatible | |
| with the target of <origtexture>, as defined by table 8.X.1. | |
| An INVALID_OPERATION error is generated if the internal format of | |
| <origtexture> exists in table 8.X.2 and is not compatible with | |
| <internalformat>, as described in that table. | |
| An INVALID_OPERATION error is generated if the internal format of | |
| <origtexture> does not exist in table 8.X.2, and is not identical to | |
| <internalformat>. | |
| An INVALID_VALUE error is generated if <minlevel> or <minlayer> are | |
| larger than the greatest level or layer, respectively, of <origtexture>. | |
| An INVALID_VALUE error is generated if <target> is TEXTURE_CUBE_MAP and | |
| the clamped <numlayers> is not 6. | |
| An INVALID_VALUE error is generated if <target> is | |
| TEXTURE_CUBE_MAP_ARRAY_EXT and the clamped <numlayers> is not a multiple | |
| of 6. In this case <numlayers> counts layer-faces rather than layers. | |
| An INVALID_VALUE error is generated if <target> is TEXTURE_2D, | |
| TEXTURE_3D, or TEXTURE_2D_MULTISAMPLE and <numlayers> does not equal 1. | |
| An INVALID_OPERATION error is generated if <target> is | |
| TEXTURE_CUBE_MAP or TEXTURE_CUBE_MAP_ARRAY_EXT, and the width and height | |
| of <origtexture>'s levels are not equal. | |
| An INVALID_OPERATION error is generated if any dimension of | |
| <origtexture> is larger than the maximum supported corresponding | |
| dimension of the new target. For example, if <origtexture> has a | |
| TEXTURE_2D_ARRAY target and <target> 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 | |
| <levels>. If the texture target is TEXTURE_2D_ARRAY, | |
| TEXTURE_CUBE_MAP_ARRAY, or TEXTURE_2D_MULTISAMPLE_ARRAY then | |
| TEXTURE_VIEW_NUM_LAYERS_EXT becomes <depth>. 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. |