summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTopi Pohjolainen <topi.pohjolainen@intel.com>2013-10-07 15:42:42 +0300
committerTopi Pohjolainen <topi.pohjolainen@intel.com>2013-10-11 09:59:01 +0300
commit396c69bf5de4c6ccf9c4a79fcfa63438bbaca994 (patch)
tree1495beeee19f271eed25ba1d6eb2167354d8572c
parent9cb8f7a12655bb76355402f015e88c19db78f6d6 (diff)
mesa: Allow external textures to use fallback (0, 0, 0, 1)
Fixes GL2ExtensionTests/egl_image_external/TestSimpleUnassociated.test which is part of gles2/3 conformance suite. Here image external textures are switched to be treated the same as 2D textures. These can be associated with the fallback texture providing fixed sample values of (0, 0, 0, 1). The OES_EGL_image_external spec says: "Sampling an external texture which is not associated with any EGLImage sibling will return a sample value of (0,0,0,1)." "External textures cannot be used with TexImage2D, TexSubImage2D, CompressedTexImage2D, CompressedTexSubImage2D, CopyTexImage2D, or CopyTexSubImage2D, and an INVALID_ENUM error will be generated if this is attempted." And quoting Chad: "That's enforced in _mesa_TexImage*() by calling legal_teximage_target(), and enforced in _mesa_TexSubImage*() by calling legal_texsubmimage_target(). Each of the legal_tex*image_target() functions reject external textures. Therefore, allowing GL_TEXTURE_EXTERNAL_OES in store_texsubimage() won't violate the above spec quote. I think it's safe to allow GL_TEXTURE_EXTERNAL_OES in store_texsubimage(), as long as the texture has only a single plane. Luckily, that's the only type of external textures that Mesa currently supports." CC: Chad Versace <chad.versace@linux.intel.com> Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
-rw-r--r--src/mesa/main/texstore.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index 04385e1e9c..76d8d9ba3f 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -3961,6 +3961,7 @@ store_texsubimage(struct gl_context *ctx,
case GL_TEXTURE_2D:
case GL_TEXTURE_RECTANGLE:
case GL_TEXTURE_CUBE_MAP:
+ case GL_TEXTURE_EXTERNAL_OES:
/* one image slice, nothing special needs to be done */
break;
case GL_TEXTURE_1D: