Report errors for unsupported Depth/stencil texture operations
Trac #20875
Signed-off-by: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/trunk@1105 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 47903b0..f1791a7 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -1297,6 +1297,19 @@
return error(GL_INVALID_ENUM);
}
break;
+ case GL_DEPTH_COMPONENT:
+ case GL_DEPTH_COMPONENT16:
+ case GL_DEPTH_COMPONENT32_OES:
+ case GL_DEPTH_STENCIL_OES:
+ case GL_DEPTH24_STENCIL8_OES:
+ if (context->supportsDepthTextures())
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+ else
+ {
+ return error(GL_INVALID_ENUM);
+ }
default:
return error(GL_INVALID_ENUM);
}
@@ -1461,6 +1474,9 @@
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
return error(GL_INVALID_OPERATION);
+ case GL_DEPTH_COMPONENT:
+ case GL_DEPTH_STENCIL_OES:
+ return error(GL_INVALID_OPERATION);
default:
return error(GL_INVALID_OPERATION);
}
@@ -2506,6 +2522,10 @@
{
return error(GL_INVALID_OPERATION);
}
+ if (tex2d->isDepth(0))
+ {
+ return error(GL_INVALID_OPERATION);
+ }
tex2d->generateMipmaps();
break;
@@ -5236,6 +5256,15 @@
{
return error(GL_INVALID_VALUE);
}
+ if (target != GL_TEXTURE_2D)
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+ // OES_depth_texture supports loading depth data, but ANGLE_depth_texture does not
+ if (pixels != NULL)
+ {
+ return error(GL_INVALID_OPERATION);
+ }
break;
default:
break;
@@ -5514,6 +5543,10 @@
{
return error(GL_INVALID_ENUM);
}
+ if (target != GL_TEXTURE_2D)
+ {
+ return error(GL_INVALID_OPERATION);
+ }
break;
default:
break;
@@ -5624,6 +5657,12 @@
{
return error(GL_INVALID_ENUM);
}
+ if (target != GL_TEXTURE_2D)
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+ // OES_depth_texture supports loading depth data, but ANGLE_depth_texture does not
+ return error(GL_INVALID_OPERATION);
}
if (target == GL_TEXTURE_2D)