Disallow depth textures to be used as destinations of glCopy*Image*.

TRAC #23262

Signed-off-by: Jamie Madill
Signed-off-by: Shannon Woods
Author: Geoff Lang
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index f461cb4..68fb0e7 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -1096,6 +1096,7 @@
     gl::Texture *texture = NULL;
     GLenum textureInternalFormat = GL_NONE;
     bool textureCompressed = false;
+    bool textureIsDepth = false;
     GLint textureLevelWidth = 0;
     GLint textureLevelHeight = 0;
     GLint textureLevelDepth = 0;
@@ -1108,6 +1109,7 @@
             {
                 textureInternalFormat = texture2d->getInternalFormat(level);
                 textureCompressed = texture2d->isCompressed(level);
+                textureIsDepth = texture2d->isDepth(level);
                 textureLevelWidth = texture2d->getWidth(level);
                 textureLevelHeight = texture2d->getHeight(level);
                 textureLevelDepth = 1;
@@ -1128,6 +1130,7 @@
             {
                 textureInternalFormat = textureCube->getInternalFormat(target, level);
                 textureCompressed = textureCube->isCompressed(target, level);
+                textureIsDepth = false;
                 textureLevelWidth = textureCube->getWidth(target, level);
                 textureLevelHeight = textureCube->getHeight(target, level);
                 textureLevelDepth = 1;
@@ -1143,6 +1146,7 @@
             {
                 textureInternalFormat = texture2dArray->getInternalFormat(level);
                 textureCompressed = texture2dArray->isCompressed(level);
+                textureIsDepth = texture2dArray->isDepth(level);
                 textureLevelWidth = texture2dArray->getWidth(level);
                 textureLevelHeight = texture2dArray->getHeight(level);
                 textureLevelDepth = texture2dArray->getDepth(level);
@@ -1158,6 +1162,7 @@
             {
                 textureInternalFormat = texture3d->getInternalFormat(level);
                 textureCompressed = texture3d->isCompressed(level);
+                textureIsDepth = texture3d->isDepth(level);
                 textureLevelWidth = texture3d->getWidth(level);
                 textureLevelHeight = texture3d->getHeight(level);
                 textureLevelDepth = texture3d->getDepth(level);
@@ -1180,6 +1185,11 @@
         return gl::error(GL_INVALID_OPERATION, false);
     }
 
+    if (textureIsDepth)
+    {
+        return gl::error(GL_INVALID_OPERATION, false);
+    }
+
     if (textureCompressed)
     {
         if ((width % 4 != 0 && width != textureLevelWidth) ||