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) ||