aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Forbes <chrisforbes@google.com>2019-10-02 08:23:32 -0700
committerChris Forbes <chrisforbes@google.com>2019-10-02 17:09:38 +0000
commitaabce7952d41115dcf427c394ba3b5a3205428ca (patch)
treeb5f3fb2b127bcffbb59eeb11672141d907e4018f
parent0597afff0763df5cd67890c81f77e5f431516a15 (diff)
downloadswiftshader-aabce7952d41115dcf427c394ba3b5a3205428ca.tar.gz
Fix edge cases of creating EGLImages from cubemap faces
We need the face target here, not the whole texture target. This fixes the one case that was actually broken, and avoids hitting an assert in debug swiftshader for all tests in this group. Bug: b/141916742 Test: dEQP-EGL.functional.image.api.create_image_gles2_cubemap* Change-Id: I25ef8f6d6e2909adfc646e68f1711589777017ba Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/36948 Tested-by: Chris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by: Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
-rw-r--r--src/OpenGL/libGLESv2/Context.cpp30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index 7eda289ed..e03abc27e 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -4409,17 +4409,13 @@ EGLenum Context::validateSharedImage(EGLenum target, GLuint name, GLuint texture
switch(target)
{
- case EGL_GL_TEXTURE_2D_KHR:
- textureTarget = GL_TEXTURE_2D;
- break;
- case EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR:
- case EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR:
- case EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR:
- case EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR:
- case EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR:
- case EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR:
- textureTarget = GL_TEXTURE_CUBE_MAP;
- break;
+ case EGL_GL_TEXTURE_2D_KHR: textureTarget = GL_TEXTURE_2D; break;
+ case EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR: textureTarget = GL_TEXTURE_CUBE_MAP_POSITIVE_X; break;
+ case EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR: textureTarget = GL_TEXTURE_CUBE_MAP_NEGATIVE_X; break;
+ case EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR: textureTarget = GL_TEXTURE_CUBE_MAP_POSITIVE_Y; break;
+ case EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR: textureTarget = GL_TEXTURE_CUBE_MAP_NEGATIVE_Y; break;
+ case EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR: textureTarget = GL_TEXTURE_CUBE_MAP_POSITIVE_Z; break;
+ case EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR: textureTarget = GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; break;
case EGL_GL_RENDERBUFFER_KHR:
break;
default:
@@ -4435,7 +4431,17 @@ EGLenum Context::validateSharedImage(EGLenum target, GLuint name, GLuint texture
{
es2::Texture *texture = getTexture(name);
- if(!texture || texture->getTarget() != textureTarget)
+ if(!texture)
+ {
+ return EGL_BAD_PARAMETER;
+ }
+
+ if (texture->getTarget() != GL_TEXTURE_CUBE_MAP && texture->getTarget() != textureTarget)
+ {
+ return EGL_BAD_PARAMETER;
+ }
+
+ if (texture->getTarget() == GL_TEXTURE_CUBE_MAP && !IsCubemapTextureTarget(textureTarget))
{
return EGL_BAD_PARAMETER;
}