Added support for compressed storage textures.

TRAC #18730 Signed-off-by: Daniel Koch Author: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/trunk@858 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 64a0fb2a
...@@ -4895,6 +4895,29 @@ void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf ...@@ -4895,6 +4895,29 @@ void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf
} }
} }
switch (internalformat)
{
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
if (!context->supportsDXT1Textures())
{
return error(GL_INVALID_ENUM);
}
break;
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
if (!context->supportsDXT3Textures())
{
return error(GL_INVALID_ENUM);
}
break;
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
if (!context->supportsDXT5Textures())
{
return error(GL_INVALID_ENUM);
}
break;
}
if (target == GL_TEXTURE_2D) if (target == GL_TEXTURE_2D)
{ {
gl::Texture2D *texture = context->getTexture2D(); gl::Texture2D *texture = context->getTexture2D();
......
...@@ -378,15 +378,19 @@ GLenum ExtractFormat(GLenum internalformat) ...@@ -378,15 +378,19 @@ GLenum ExtractFormat(GLenum internalformat)
{ {
switch (internalformat) switch (internalformat)
{ {
case GL_RGB565: return GL_RGB; case GL_RGB565: return GL_RGB;
case GL_RGBA4: return GL_RGBA; case GL_RGBA4: return GL_RGBA;
case GL_RGB5_A1: return GL_RGBA; case GL_RGB5_A1: return GL_RGBA;
case GL_RGB8_OES: return GL_RGB; case GL_RGB8_OES: return GL_RGB;
case GL_RGBA8_OES: return GL_RGBA; case GL_RGBA8_OES: return GL_RGBA;
case GL_LUMINANCE8_ALPHA8_EXT: return GL_LUMINANCE_ALPHA; case GL_LUMINANCE8_ALPHA8_EXT: return GL_LUMINANCE_ALPHA;
case GL_LUMINANCE8_EXT: return GL_LUMINANCE; case GL_LUMINANCE8_EXT: return GL_LUMINANCE;
case GL_ALPHA8_EXT: return GL_ALPHA; case GL_ALPHA8_EXT: return GL_ALPHA;
default: return GL_NONE; // Unsupported case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: return GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: return GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: return GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE;
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: return GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE;
default: return GL_NONE; // Unsupported
} }
} }
...@@ -394,15 +398,19 @@ GLenum ExtractType(GLenum internalformat) ...@@ -394,15 +398,19 @@ GLenum ExtractType(GLenum internalformat)
{ {
switch (internalformat) switch (internalformat)
{ {
case GL_RGB565: return GL_UNSIGNED_SHORT_5_6_5; case GL_RGB565: return GL_UNSIGNED_SHORT_5_6_5;
case GL_RGBA4: return GL_UNSIGNED_SHORT_4_4_4_4; case GL_RGBA4: return GL_UNSIGNED_SHORT_4_4_4_4;
case GL_RGB5_A1: return GL_UNSIGNED_SHORT_5_5_5_1; case GL_RGB5_A1: return GL_UNSIGNED_SHORT_5_5_5_1;
case GL_RGB8_OES: return GL_UNSIGNED_BYTE; case GL_RGB8_OES: return GL_UNSIGNED_BYTE;
case GL_RGBA8_OES: return GL_UNSIGNED_BYTE; case GL_RGBA8_OES: return GL_UNSIGNED_BYTE;
case GL_LUMINANCE8_ALPHA8_EXT: return GL_UNSIGNED_BYTE; case GL_LUMINANCE8_ALPHA8_EXT: return GL_UNSIGNED_BYTE;
case GL_LUMINANCE8_EXT: return GL_UNSIGNED_BYTE; case GL_LUMINANCE8_EXT: return GL_UNSIGNED_BYTE;
case GL_ALPHA8_EXT: return GL_UNSIGNED_BYTE; case GL_ALPHA8_EXT: return GL_UNSIGNED_BYTE;
default: return GL_NONE; // Unsupported case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: return GL_UNSIGNED_BYTE;
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: return GL_UNSIGNED_BYTE;
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: return GL_UNSIGNED_BYTE;
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: return GL_UNSIGNED_BYTE;
default: return GL_NONE; // Unsupported
} }
} }
......
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