| Name |
| |
| OES_texture_view |
| |
| Name Strings |
| |
| GL_OES_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 |
| |
| Specification Update Policy |
| |
| Khronos-approved extension specifications are updated in response to |
| issues and bugs prioritized by the Khronos OpenGL ES Working Group. For |
| extensions which have been promoted to a core Specification, fixes will |
| first appear in the latest version of that core Specification, and will |
| eventually be backported to the extension document. This policy is |
| described in more detail at |
| https://www.khronos.org/registry/OpenGL/docs/update_policy.php |
| |
| Portions Copyright (c) 2013-2014 NVIDIA Corporation. |
| |
| Status |
| |
| Approved by the OpenGL ES Working Group |
| Ratified by the Khronos Board of Promoters on November 7, 2014 |
| |
| Version |
| |
| Last Modified Date: June 18, 2014 |
| Revision: 1 |
| |
| Number |
| |
| OpenGL ES Extension #218 |
| |
| 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. |
| |
| OES_texture_buffer and EXT_texture_buffer affect the definition of this |
| extension. |
| |
| OES_texture_cube_map_array and EXT_texture_cube_map_array affects the |
| definition of this extension. |
| |
| OES_texture_storage_multisample_2d_array interacts with 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 TextureViewOES(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_OES 0x82DB |
| TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC |
| TEXTURE_VIEW_MIN_LAYER_OES 0x82DD |
| TEXTURE_VIEW_NUM_LAYERS_OES 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 TextureViewOES, 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_OES, TEXTURE_VIEW_NUM_LEVELS_OES, |
| TEXTURE_VIEW_MIN_LAYER_OES, TEXTURE_VIEW_NUM_LAYERS_OES, 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 TextureViewOES(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_OES is set to <minlevel> plus the value of |
| TEXTURE_VIEW_MIN_LEVEL_OES for <origtexture>. |
| |
| - TEXTURE_VIEW_MIN_LAYER_OES is set to <minlayer> plus the value of |
| TEXTURE_VIEW_MIN_LAYER_OES for <origtexture>. |
| |
| - TEXTURE_VIEW_NUM_LEVELS_OES is set to the lesser of <numlevels> and |
| the value of TEXTURE_VIEW_NUM_LEVELS_OES for <origtexture> minus |
| <minlevels>. |
| |
| - TEXTURE_VIEW_NUM_LAYERS_OES is set to the lesser of <numlayers> and |
| the value of TEXTURE_VIEW_NUM_LAYERS_OES 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_OES | |
| |------------------------------------------------------------------------------------------| |
| | TEXTURE_BUFFER_OES | <none> | |
| |------------------------------------------------------------------------------------------| |
| | TEXTURE_2D_ARRAY | TEXTURE_2D_ARRAY, TEXTURE_2D, TEXTURE_CUBE_MAP, | |
| | | TEXTURE_CUBE_MAP_ARRAY_OES | |
| |------------------------------------------------------------------------------------------| |
| | TEXTURE_CUBE_MAP_ARRAY | TEXTURE_CUBE_MAP_ARRAY_OES, TEXTURE_2D_ARRAY, TEXTURE_2D, | |
| | | TEXTURE_CUBE_MAP | |
| |------------------------------------------------------------------------------------------| |
| | TEXTURE_2D_MULTISAMPLE | TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY_OES | |
| |------------------------------------------------------------------------------------------| |
| | TEXTURE_2D_MULTISAMPLE_ARRAY_OES|TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY_OES| |
| -------------------------------------------------------------------------------------------- |
| |
| Table 8.X.1: Legal texture targets for TextureViewOES. |
| |
| 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_OES with 6 layer-faces. |
| |
| The two textures' internal formats must be compatible according to Table |
| 8.X.2 (Compatible internal formats for TextureViewOES) 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 TextureViewOES. 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_OES. |
| |
| |
| Errors |
| |
| An INVALID_VALUE error is generated if <texture> is zero. |
| |
| An INVALID_OPERATION error is generated by TextureViewOES 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_OES 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_OES, 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_OES become |
| <levels>. If the texture target is TEXTURE_2D_ARRAY, |
| TEXTURE_CUBE_MAP_ARRAY, or TEXTURE_2D_MULTISAMPLE_ARRAY_OES then |
| TEXTURE_VIEW_NUM_LAYERS_OES becomes <depth>. If the texture target is |
| TEXTURE_CUBE_MAP, then TEXTURE_VIEW_NUM_LAYERS_OES becomes 6. For any |
| other texture target, TEXTURE_VIEW_NUM_LAYERS_OES 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_OES, |
| TEXTURE_VIEW_NUM_LEVELS_OES, TEXTURE_VIEW_MIN_LAYER_OES, |
| TEXTURE_VIEW_NUM_LAYERS_OES are each zero." |
| |
| |
| Dependencies on OES_texture_buffer or EXT_texture_buffer |
| |
| If OES_texture_buffer or EXT_texture_buffer is not supported, remove |
| TEXTURE_BUFFER_OES from the list of targets in table 8.X.1. |
| |
| Dependencies on OES_texture_cube_map_array or EXT_texture_cube_map_array |
| |
| If OES_texture_cube_map_array or EXT_texture_cube_map_array is not |
| supported, remove all references to TEXTURE_CUBE_MAP_ARRAY_OES. |
| |
| Dependencies on OES_texture_storage_multisample_2d_array |
| |
| If OES_texture_storage_multisample_2d_array is not supported, remove all |
| references to TEXTURE_2D_MULTISAMPLE_ARRAY_OES |
| |
| 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_OES Z+ GetTexParameter 0 view base texture level 8.16view |
| TEXTURE_VIEW_NUM_LEVELS_OES Z+ GetTexParameter 0 view number of texture levels 8.16view |
| TEXTURE_VIEW_MIN_LAYER_OES Z+ GetTexParameter 0 view min array layer 8.16view |
| TEXTURE_VIEW_NUM_LAYERS_OES 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 |
| OES_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 06/18/2014 dkoch Initial OES version based on EXT. |
| No functional changes. |