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)