From 18bb6852b234a69530a4a6f3ff4e9d33b8e8c7fb Mon Sep 17 00:00:00 2001 From: Dylan Noblesmith Date: Sun, 29 Apr 2012 13:23:53 +0000 Subject: mesa: reject immutable textures in glEGLImageTargetTexture2DOES() GL_ARB_texture_storage says: The commands eglBindTexImage, wglBindTexImageARB, glXBindTexImageEXT or EGLImageTargetTexture2DOES are not permitted on an immutable-format texture. They will generate the following errors: - EGLImageTargetTexture2DOES: INVALID_OPERATION - eglBindTexImage: EGL_BAD_MATCH - wglBindTexImage: ERROR_INVALID_OPERATION - glXBindTexImageEXT: BadMatch Fixing the EGL and GLX cases requires extending the DRI interface, since setTexBuffer2 doesn't currently return any error information. Reviewed-by: Brian Paul --- src/mesa/main/teximage.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/mesa/main') diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 23486467dbc..50095d2c666 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -2692,6 +2692,13 @@ _mesa_EGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image) texObj = _mesa_get_current_tex_object(ctx, target); _mesa_lock_texture(ctx, texObj); + if (texObj->Immutable) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glEGLImageTargetTexture2D(texture is immutable)"); + _mesa_unlock_texture(ctx, texObj); + return; + } + texImage = _mesa_get_tex_image(ctx, texObj, target, 0); if (!texImage) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "glEGLImageTargetTexture2D"); -- cgit v1.2.3