main: allow external textures for BindImageTexture
authorYevhenii Kolesnikov <yevhenii.kolesnikov@globallogic.com>
Thu, 2 Jan 2020 13:06:48 +0000 (15:06 +0200)
committerTapani Pälli <tapani.palli@intel.com>
Wed, 8 Jan 2020 07:21:39 +0000 (09:21 +0200)
From issue 10 of the OES_EGL_image_external_essl3:

  A limited set of use-cases is enabled by making glBindImageTexture
  accept external textures. Shaders can access such external textures
  using the existing <image2D> sampler type.

Fixes: 02a6d901eee ("mesa: add OES_EGL_image_external_essl3 support")
Signed-off-by: Yevhenii Kolesnikov <yevhenii.kolesnikov@globallogic.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mesa/main/shaderimage.c

index 3f5dc16f2ff34d8b74113492c454f8e98c1c9575..5deca07b6a42fb9ab8a2fe74a8bcb4f859bc8941 100644 (file)
@@ -654,9 +654,13 @@ _mesa_BindImageTexture(GLuint unit, GLuint texture, GLint level,
        * However note that issue 7 of the GL_OES_texture_buffer spec
        * recognizes that there is no way to create immutable buffer textures,
        * so those are excluded from this requirement.
+       *
+       * Additionally, issue 10 of the OES_EGL_image_external_essl3 spec
+       * states that glBindImageTexture must accept external textures.
        */
       if (_mesa_is_gles(ctx) && !texObj->Immutable &&
-          texObj->Target != GL_TEXTURE_BUFFER) {
+          texObj->Target != GL_TEXTURE_BUFFER &&
+          texObj->Target != GL_TEXTURE_EXTERNAL_OES) {
          _mesa_error(ctx, GL_INVALID_OPERATION,
                      "glBindImageTexture(!immutable)");
          return;