| Name |
| |
| ANDROID_extension_pack_es31a |
| |
| Name Strings |
| |
| GL_ANDROID_extension_pack_es31a |
| |
| Contact |
| |
| Jesse Hall (jessehall 'at' google.com) |
| |
| Contributors |
| |
| Jesse Hall, Google |
| |
| Status |
| |
| Complete. |
| |
| Version |
| |
| Last Modified Date: July 7, 2014 |
| Revision: 3 |
| |
| Number |
| |
| OpenGL ES Extension #187 |
| |
| Dependencies |
| |
| OpenGL ES 3.1 and GLSL ES 3.10 are required. |
| |
| The following extensions are required: |
| * KHR_debug |
| * KHR_texture_compression_astc_ldr |
| * KHR_blend_equation_advanced |
| * OES_sample_shading |
| * OES_sample_variables |
| * OES_shader_image_atomic |
| * OES_shader_multisample_interpolation |
| * OES_texture_stencil8 |
| * OES_texture_storage_multisample_2d_array |
| * EXT_copy_image |
| * EXT_draw_buffers_indexed |
| * EXT_geometry_shader |
| * EXT_gpu_shader5 |
| * EXT_primitive_bounding_box |
| * EXT_shader_io_blocks |
| * EXT_tessellation_shader |
| * EXT_texture_border_clamp |
| * EXT_texture_buffer |
| * EXT_texture_cube_map_array |
| * EXT_texture_sRGB_decode |
| |
| Overview |
| |
| This extension changes little functionality directly. Instead it serves to |
| roll up the 20 extensions it requires, allowing applications to check for |
| all of them at once, and enable all of their shading language features with |
| a single #extension statement. The Android platform provides special support |
| outside of OpenGL ES to help applications target this set of extensions. |
| |
| In addition, this extension ensures support for images, shader storage |
| buffers, and atomic counters in fragment shaders. In unextended OpenGL ES |
| the minimum value of the relevant implementation-defined limits is zero; |
| this extension raises these minimums to match the minimums for compute |
| shaders. |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| None |
| |
| Modifications to Chapter 20 of the OpenGL ES 3.1 Specification (State Tables) |
| |
| Modify Table 20.44, Implementation Dependent Fragment Shader Limits, p. 395: |
| |
| Get Value Type Get Command Minimum Value Description Sec. |
| ----------------------- ---- ----------- ------------- ------------------------- ----- |
| MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS Z+ GetIntegerv 1 No. of atomic counter 7.7 |
| buffers accessed by a |
| fragment shader |
| MAX_FRAGMENT_ATOMIC_COUNTERS Z+ GetIntegerv 8 No. of atomic counters 7.7 |
| accessed by a fragment |
| shader |
| MAX_FRAGMENT_IMAGE_UNIFORMS Z+ GetIntegerv 4 No. of image variables in 11.1.3 |
| fragment shaders |
| MAX_FRAGMENT_SHADER_STORAGE_BLOCKS Z+ GetIntegerv 4 No. of shader storage 7.8 |
| blocks accessed by a |
| fragment shader |
| [[Change minimum values]] |
| |
| Modifications to The OpenGL ES Shading Language Specification, Version 3.10 |
| (Revision 5) |
| |
| Including the following line in a shader: |
| |
| #extension GL_ANDROID_extension_pack_es31a : <behavior> |
| |
| has the same effect as including the following lines: |
| |
| #extension GL_KHR_blend_equation_advanced : <behavior> |
| #extension GL_OES_sample_variables : <behavior> |
| #extension GL_OES_shader_image_atomic : <behavior> |
| #extension GL_OES_shader_multisample_interpolation : <behavior> |
| #extension GL_OES_texture_storage_multisample_2d_array : <behavior> |
| #extension GL_EXT_geometry_shader : <behavior> |
| #extension GL_EXT_gpu_shader5 : <behavior> |
| #extension GL_EXT_primitive_bounding_box : <behavior> |
| #extension GL_EXT_shader_io_blocks : <behavior> |
| #extension GL_EXT_tessellation_shader : <behavior> |
| #extension GL_EXT_texture_buffer : <behavior> |
| #extension GL_EXT_texture_cube_map_array : <behavior> |
| |
| where <behavior> is as specified in section 3.4. |
| |
| A new preprocessor #define is added to the OpenGL ES Shading Language: |
| |
| #define GL_ANDROID_extension_pack_es31a 1 |
| |
| New Implementation Dependent State |
| |
| None |
| |
| Issues |
| |
| (1) Should all the extensions be enabled in all shader stages? What happens |
| if an extension is enabled in a stage that it does not modify? |
| |
| RESOLVED: All extensions are enabled in all stages. |
| |
| Enabling this extension in a shader has exactly the same behavior as |
| enabling each of the required extensions individually. None of the other |
| extensions limit what shader stages they can be enabled in. Generally, if |
| the modifications introduced by an extension do not apply to a shader stage, |
| then enabling it in that stage is a no-op. If an extension does introduce |
| new features to the language in a stage, a shader that doesn't use the new |
| features will behave the same whether it enables the extension or not. |
| |
| |
| Revision History |
| |
| Revision 3, 2014/7/7 (Jesse Hall) |
| - Changed status from "draft" to "complete" |
| - Corrected capitalization of EXT_texture_sRGB_decode |
| |
| Revision 2, 2014/5/2 (Jesse Hall) |
| - Added dependency on EXT_primitive_bounding_box |
| - Added and resolved Issue #1 |
| |
| Revision 1, 2014/4/18 (Jesse Hall) |
| - Initial version |