make sure all texture->isCompressed calls are type-specific

Issue=306 Signed-off-by: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/trunk@1079 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 46f2d0a9
...@@ -2353,19 +2353,21 @@ void __stdcall glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum t ...@@ -2353,19 +2353,21 @@ void __stdcall glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum t
return error(GL_INVALID_OPERATION); return error(GL_INVALID_OPERATION);
} }
if (tex->isCompressed())
{
return error(GL_INVALID_OPERATION);
}
switch (textarget) switch (textarget)
{ {
case GL_TEXTURE_2D: case GL_TEXTURE_2D:
{
if (tex->getTarget() != GL_TEXTURE_2D) if (tex->getTarget() != GL_TEXTURE_2D)
{ {
return error(GL_INVALID_OPERATION); return error(GL_INVALID_OPERATION);
} }
gl::Texture2D *tex2d = static_cast<gl::Texture2D *>(tex);
if (tex2d->isCompressed())
{
return error(GL_INVALID_OPERATION);
}
break; break;
}
case GL_TEXTURE_CUBE_MAP_POSITIVE_X: case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
...@@ -2373,11 +2375,18 @@ void __stdcall glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum t ...@@ -2373,11 +2375,18 @@ void __stdcall glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum t
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
{
if (tex->getTarget() != GL_TEXTURE_CUBE_MAP) if (tex->getTarget() != GL_TEXTURE_CUBE_MAP)
{ {
return error(GL_INVALID_OPERATION); return error(GL_INVALID_OPERATION);
} }
gl::TextureCubeMap *texcube = static_cast<gl::TextureCubeMap *>(tex);
if (texcube->isCompressed())
{
return error(GL_INVALID_OPERATION);
}
break; break;
}
default: default:
return error(GL_INVALID_ENUM); return error(GL_INVALID_ENUM);
...@@ -2487,28 +2496,37 @@ void __stdcall glGenerateMipmap(GLenum target) ...@@ -2487,28 +2496,37 @@ void __stdcall glGenerateMipmap(GLenum target)
if (context) if (context)
{ {
gl::Texture *texture;
switch (target) switch (target)
{ {
case GL_TEXTURE_2D: case GL_TEXTURE_2D:
texture = context->getTexture2D(); {
break; gl::Texture2D *tex2d = context->getTexture2D();
case GL_TEXTURE_CUBE_MAP: if (tex2d->isCompressed())
texture = context->getTextureCubeMap(); {
break; return error(GL_INVALID_OPERATION);
}
default: tex2d->generateMipmaps();
return error(GL_INVALID_ENUM); break;
} }
if (texture->isCompressed()) case GL_TEXTURE_CUBE_MAP:
{
gl::TextureCubeMap *texcube = context->getTextureCubeMap();
if (texcube->isCompressed())
{ {
return error(GL_INVALID_OPERATION); return error(GL_INVALID_OPERATION);
} }
texture->generateMipmaps(); texcube->generateMipmaps();
break;
}
default:
return error(GL_INVALID_ENUM);
}
} }
} }
catch(std::bad_alloc&) catch(std::bad_alloc&)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment