Fix error checking for glTexImage2D
Trac #20959
Signed-off-by: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/trunk@1133 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 9f22716..a967b52 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -5097,6 +5097,26 @@
return error(GL_INVALID_OPERATION);
}
+ // validate <type> by itself (used as secondary key below)
+ switch (type)
+ {
+ case GL_UNSIGNED_BYTE:
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ case GL_UNSIGNED_SHORT:
+ case GL_UNSIGNED_INT:
+ case GL_UNSIGNED_INT_24_8_OES:
+ case GL_HALF_FLOAT_OES:
+ case GL_FLOAT:
+ break;
+ default:
+ return error(GL_INVALID_ENUM);
+ }
+
+ // validate <format> + <type> combinations
+ // - invalid <format> -> sets INVALID_ENUM
+ // - invalid <format>+<type> combination -> sets INVALID_OPERATION
switch (format)
{
case GL_ALPHA:
@@ -5109,7 +5129,7 @@
case GL_HALF_FLOAT_OES:
break;
default:
- return error(GL_INVALID_ENUM);
+ return error(GL_INVALID_OPERATION);
}
break;
case GL_RGB:
@@ -5121,7 +5141,7 @@
case GL_HALF_FLOAT_OES:
break;
default:
- return error(GL_INVALID_ENUM);
+ return error(GL_INVALID_OPERATION);
}
break;
case GL_RGBA:
@@ -5134,7 +5154,7 @@
case GL_HALF_FLOAT_OES:
break;
default:
- return error(GL_INVALID_ENUM);
+ return error(GL_INVALID_OPERATION);
}
break;
case GL_BGRA_EXT:
@@ -5143,7 +5163,7 @@
case GL_UNSIGNED_BYTE:
break;
default:
- return error(GL_INVALID_ENUM);
+ return error(GL_INVALID_OPERATION);
}
break;
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: // error cases for compressed textures are handled below
@@ -5158,7 +5178,7 @@
case GL_UNSIGNED_INT:
break;
default:
- return error(GL_INVALID_ENUM);
+ return error(GL_INVALID_OPERATION);
}
break;
case GL_DEPTH_STENCIL_OES:
@@ -5167,11 +5187,11 @@
case GL_UNSIGNED_INT_24_8_OES:
break;
default:
- return error(GL_INVALID_ENUM);
+ return error(GL_INVALID_OPERATION);
}
break;
default:
- return error(GL_INVALID_VALUE);
+ return error(GL_INVALID_ENUM);
}
if (border != 0)