Add initial support for various stream extensions.
Add entry points and validation for various egl stream extensions
including EGL_KHR_stream_consumer_gltexture and
EGL_NV_stream_consumer_gltexture_yuv and NV_EGL_stream_consumer_external.
The extensions functionality is not yet implemented and the extension
strings are thus not exposed yet.
BUG=angleproject:1332
Change-Id: I115d872557db38d8dd94cc367038668406719109
Reviewed-on: https://chromium-review.googlesource.com/332026
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
diff --git a/src/libANGLE/validationES2.cpp b/src/libANGLE/validationES2.cpp
index 2c7f83c..a8266b9 100644
--- a/src/libANGLE/validationES2.cpp
+++ b/src/libANGLE/validationES2.cpp
@@ -1972,4 +1972,43 @@
return ValidateFlushMappedBufferRangeBase(context, target, offset, length);
}
+bool ValidateBindTexture(Context *context, GLenum target, GLuint texture)
+{
+ Texture *textureObject = context->getTexture(texture);
+ if (textureObject && textureObject->getTarget() != target && texture != 0)
+ {
+ context->recordError(Error(GL_INVALID_OPERATION, "Invalid texture"));
+ return false;
+ }
+
+ switch (target)
+ {
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_CUBE_MAP:
+ break;
+
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_2D_ARRAY:
+ if (context->getClientVersion() < 3)
+ {
+ context->recordError(Error(GL_INVALID_ENUM, "GLES 3.0 disabled"));
+ return false;
+ }
+ break;
+ case GL_TEXTURE_EXTERNAL_OES:
+ if (!context->getExtensions().eglStreamConsumerExternal)
+ {
+ context->recordError(
+ Error(GL_INVALID_ENUM, "External texture extension not enabled"));
+ return false;
+ }
+ break;
+ default:
+ context->recordError(Error(GL_INVALID_ENUM, "Invalid target"));
+ return false;
+ }
+
+ return true;
+}
+
} // namespace gl