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>
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index 7eda289..e03abc2 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -4409,17 +4409,13 @@
 
 	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 @@
 	{
 		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;
 		}