[Mesa-dev] Implement GLES 3.1 image load/store and OES_shader_image_atomic.

Francisco Jerez currojerez at riseup.net
Mon Aug 17 09:45:39 PDT 2015


This series implements a number of differences I've found while
comparing the GLES 3.1 and desktop GL shader image APIs.  Most of it
is about taking into account additional restrictions for the GLES API,
but there's also some new functionality (see PATCH 09 and 23).

Together with Igalia's SSBO branch this gets us to pass most of the
ES31 shader image conformance tests from Khronos (excluding the ones
that depend on compute shaders, and barring some minor bugs I had to
work-around locally not related to shader images).

Patches 01-07 implement the required core mesa changes, patches 08-20
are GLSL front-end fixes for the unextended GLES 3.1 shader image API,
and patches 21-25 implement OES_shader_image_atomic and expose it for
the i965 driver.

For a branch in testable form see:

http://cgit.freedesktop.org/~currojerez/mesa/log/?h=image-load-store-es31

[PATCH 01/25] mesa: Rename MaxCombinedImageUnitsAndFragmentOutputs to MaxCombinedShaderOutputResources.
[PATCH 02/25] mesa: Don't lose track of the shader image layer originally specified by the user.
[PATCH 03/25] mesa: Reject image formats not supported by GLES.
[PATCH 04/25] mesa: Reset image unit state to the default values when a bound image is deleted.
[PATCH 05/25] mesa: Initialize image unit state to different defaults in GLES.
[PATCH 06/25] mesa: Refuse to bind a mutable texture object to an image unit in GLES.
[PATCH 07/25] mesa: Refuse to bind image uniforms using glUniform in GLES.
[PATCH 08/25] glsl: Forbid non-constant image array indexing in GLSL ES 3.1.
[PATCH 09/25] glsl: Add support for image binding qualifiers.
[PATCH 10/25] glsl: Require that all image uniforms have a format qualifier in GLSL ES.
[PATCH 11/25] glsl: Implement GLSL ES restriction on images being either readonly or writeonly.
[PATCH 12/25] glsl: Allow precision qualifiers on general opaque types.
[PATCH 13/25] glsl: Use a separate availability class for image atomic built-ins.
[PATCH 14/25] glsl: Expose image load and store built-ins in GLSL ES 3.1.
[PATCH 15/25] glsl: Accept supported image types in GLSL ES 3.1.
[PATCH 16/25] glsl: Accept atomic_uint type in GLSL ES 3.1.
[PATCH 17/25] glsl: Remove duplicate definition of gl_MaxTess*ImageUniforms built-in constants.
[PATCH 18/25] glsl: Define image-related built-in constants required by GLSL ES 3.1.
[PATCH 19/25] glsl: Recognise image memory qualifiers in GLSL ES 3.1.
[PATCH 20/25] glsl: Parse the allowed image format qualifiers in GLSL ES 3.1.
[PATCH 21/25] mesa: Add extension enable and table entry for OES_shader_image_atomic.
[PATCH 22/25] glsl: Add usual extension boilerplate for OES_shader_image_atomic.
[PATCH 23/25] glsl: Implement the required built-in functions when OES_shader_image_atomic is enabled.
[PATCH 24/25] i965/fs: Return result of image atomic in a register of the expected type.
[PATCH 25/25] i965: Expose OES_shader_image_atomic.


More information about the mesa-dev mailing list