Replaced remaining uses of old texture conversion functions in gl entry points.
TRAC #22972
Signed-off-by: Jamie Madill
Signed-off-by: Nicolas Capens
Author: Geoff Lang
git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2326 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 5ab406f..0dfeae6 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -11,6 +11,7 @@
#include "libGLESv2/main.h"
#include "libGLESv2/utilities.h"
+#include "libGLESv2/formatutils.h"
#include "libGLESv2/Buffer.h"
#include "libGLESv2/Fence.h"
#include "libGLESv2/Framebuffer.h"
@@ -156,7 +157,7 @@
if (format != GL_NONE)
{
- GLenum internalformat = gl::ConvertSizedInternalFormat(format, type);
+ GLenum internalformat = gl::GetSizedInternalFormat(format, type, 2);
if (internalformat != texture->getInternalFormat(level))
{
return gl::error(GL_INVALID_OPERATION, false);
@@ -197,7 +198,7 @@
if (format != GL_NONE)
{
- GLenum internalformat = gl::ConvertSizedInternalFormat(format, type);
+ GLenum internalformat = gl::GetSizedInternalFormat(format, type, 2);
if (internalformat != texture->getInternalFormat(target, level))
{
return gl::error(GL_INVALID_OPERATION, false);
@@ -378,7 +379,7 @@
GLenum actualInternalFormat = isSubImage ? textureInternalFormat : internalformat;
if (isCompressed)
{
- if (!gl::IsValidES3CompressedFormat(actualInternalFormat))
+ if (!gl::IsFormatCompressed(actualInternalFormat, context->getClientVersion()))
{
return gl::error(GL_INVALID_ENUM, false);
}
@@ -390,10 +391,16 @@
}
else
{
- GLenum err;
- if (!gl::IsValidES3FormatCombination(actualInternalFormat, format, type, &err))
+ if (!gl::IsValidInternalFormat(actualInternalFormat, context) ||
+ !gl::IsValidFormat(format, context->getClientVersion()) ||
+ !gl::IsValidType(type, context->getClientVersion()))
{
- return gl::error(err, false);
+ return gl::error(GL_INVALID_ENUM, false);
+ }
+
+ if (!gl::IsValidFormatCombination(actualInternalFormat, format, type, context->getClientVersion()))
+ {
+ return gl::error(GL_INVALID_OPERATION, false);
}
if ((target == GL_TEXTURE_3D || target == GL_TEXTURE_2D_ARRAY) &&
@@ -413,7 +420,7 @@
if (format != GL_NONE)
{
- GLenum internalformat = gl::ConvertSizedInternalFormat(format, type);
+ GLenum internalformat = gl::GetSizedInternalFormat(format, type, context->getClientVersion());
if (internalformat != textureInternalFormat)
{
return gl::error(GL_INVALID_OPERATION, false);
@@ -508,7 +515,7 @@
gl::Texture2D *texture2d = context->getTexture2D();
if (texture2d)
{
- textureFormat = gl::ExtractFormat(texture2d->getInternalFormat(level));
+ textureFormat = gl::GetFormat(texture2d->getInternalFormat(level), context->getClientVersion());
textureCompressed = texture2d->isCompressed(level);
textureLevelWidth = texture2d->getWidth(level);
textureLevelHeight = texture2d->getHeight(level);
@@ -528,7 +535,7 @@
gl::TextureCubeMap *textureCube = context->getTextureCubeMap();
if (textureCube)
{
- textureFormat = gl::ExtractFormat(textureCube->getInternalFormat(target, level));
+ textureFormat = gl::GetFormat(textureCube->getInternalFormat(target, level), context->getClientVersion());
textureCompressed = textureCube->isCompressed(target, level);
textureLevelWidth = textureCube->getWidth(target, level);
textureLevelHeight = textureCube->getHeight(target, level);
@@ -543,7 +550,7 @@
gl::Texture3D *texture3d = context->getTexture3D();
if (texture3d)
{
- textureFormat = gl::ExtractFormat(texture3d->getInternalFormat(level));
+ textureFormat = gl::GetFormat(texture3d->getInternalFormat(level), context->getClientVersion());
textureCompressed = texture3d->isCompressed(level);
textureLevelWidth = texture3d->getWidth(level);
textureLevelHeight = texture3d->getHeight(level);
@@ -583,7 +590,7 @@
return gl::error(GL_INVALID_VALUE, false);
}
- if (!gl::IsValidES3CopyTexImageCombination(textureFormat, colorbufferFormat))
+ if (!gl::IsValidCopyTexImageCombination(textureFormat, colorbufferFormat, context->getClientVersion()))
{
return gl::error(GL_INVALID_OPERATION, false);
}
@@ -1604,7 +1611,7 @@
default: UNREACHABLE();
}
- if (imageSize != gl::ComputeCompressedSize(width, height, internalformat))
+ if (imageSize != (GLsizei)gl::GetBlockSize(internalformat, GL_UNSIGNED_BYTE, context->getClientVersion(), width, height))
{
return gl::error(GL_INVALID_VALUE);
}
@@ -1729,7 +1736,7 @@
default: UNREACHABLE();
}
- if (imageSize != gl::ComputeCompressedSize(width, height, format))
+ if (imageSize != (GLsizei)gl::GetBlockSize(format, GL_UNSIGNED_BYTE, context->getClientVersion(), width, height))
{
return gl::error(GL_INVALID_VALUE);
}
@@ -1743,7 +1750,7 @@
if (target == GL_TEXTURE_2D)
{
gl::Texture2D *texture = context->getTexture2D();
- if (validateSubImageParams2D(true, width, height, xoffset, yoffset, level, format, GL_NONE, texture))
+ if (validateSubImageParams2D(true, width, height, xoffset, yoffset, level, format, GL_UNSIGNED_BYTE, texture))
{
texture->subImageCompressed(level, xoffset, yoffset, width, height, format, imageSize, data);
}
@@ -1751,7 +1758,7 @@
else if (gl::IsCubemapTextureTarget(target))
{
gl::TextureCubeMap *texture = context->getTextureCubeMap();
- if (validateSubImageParamsCube(true, width, height, xoffset, yoffset, target, level, format, GL_NONE, texture))
+ if (validateSubImageParamsCube(true, width, height, xoffset, yoffset, target, level, format, GL_UNSIGNED_BYTE, texture))
{
texture->subImageCompressed(target, level, xoffset, yoffset, width, height, format, imageSize, data);
}
@@ -2026,7 +2033,7 @@
{
return; // error already registered by validateSubImageParams
}
- textureFormat = gl::ExtractFormat(tex2d->getInternalFormat(level));
+ textureFormat = gl::GetFormat(tex2d->getInternalFormat(level), context->getClientVersion());
texture = tex2d;
}
else if (gl::IsCubemapTextureTarget(target))
@@ -2037,7 +2044,7 @@
{
return; // error already registered by validateSubImageParams
}
- textureFormat = gl::ExtractFormat(texcube->getInternalFormat(target, level));
+ textureFormat = gl::GetFormat(texcube->getInternalFormat(target, level), context->getClientVersion());
texture = texcube;
}
else UNREACHABLE();
@@ -5470,11 +5477,6 @@
return gl::error(GL_INVALID_ENUM);
}
- if (!gl::IsColorRenderable(internalformat) && !gl::IsDepthRenderable(internalformat) && !gl::IsStencilRenderable(internalformat))
- {
- return gl::error(GL_INVALID_ENUM);
- }
-
if (width < 0 || height < 0 || samples < 0)
{
return gl::error(GL_INVALID_VALUE);
@@ -5484,6 +5486,18 @@
if (context)
{
+ if (!gl::IsValidInternalFormat(internalformat, context))
+ {
+ return gl::error(GL_INVALID_ENUM);
+ }
+
+ if (!gl::IsColorRenderingSupported(internalformat, context) &&
+ !gl::IsDepthRenderingSupported(internalformat, context) &&
+ !gl::IsStencilRenderingSupported(internalformat, context))
+ {
+ return gl::error(GL_INVALID_ENUM);
+ }
+
if (width > context->getMaximumRenderbufferDimension() ||
height > context->getMaximumRenderbufferDimension() ||
samples > context->getMaxSupportedSamples())
@@ -6399,18 +6413,23 @@
return gl::error(GL_INVALID_OPERATION);
}
- GLenum format = gl::ExtractFormat(internalformat);
- GLenum type = gl::ExtractType(internalformat);
-
- if (format == GL_NONE || type == GL_NONE)
- {
- return gl::error(GL_INVALID_ENUM);
- }
-
gl::Context *context = gl::getNonLostContext();
if (context)
{
+ if (!gl::IsValidInternalFormat(internalformat, context))
+ {
+ return gl::error(GL_INVALID_ENUM);
+ }
+
+ GLenum format = gl::GetFormat(internalformat, context->getClientVersion());
+ GLenum type = gl::GetType(internalformat, context->getClientVersion());
+
+ if (format == GL_NONE || type == GL_NONE)
+ {
+ return gl::error(GL_INVALID_ENUM);
+ }
+
switch (target)
{
case GL_TEXTURE_2D:
@@ -6581,21 +6600,22 @@
return gl::error(GL_INVALID_VALUE);
}
- if (format == GL_FLOAT)
+ if (type == GL_FLOAT)
{
if (!context->supportsFloat32Textures())
{
return gl::error(GL_INVALID_ENUM);
}
}
- else if (format == GL_HALF_FLOAT_OES)
+ else if (type == GL_HALF_FLOAT_OES)
{
if (!context->supportsFloat16Textures())
{
return gl::error(GL_INVALID_ENUM);
}
}
- else if (gl::IsDepthTexture(format))
+
+ if (format == GL_DEPTH_COMPONENT)
{
if (!context->supportsDepthTextures())
{
@@ -7743,7 +7763,7 @@
return gl::error(GL_INVALID_OPERATION);
}
- if (imageSize < 0 || imageSize != gl::ComputeCompressedSize(width, height, internalformat))
+ if (imageSize < 0 || imageSize != (GLsizei)gl::GetBlockSize(internalformat, GL_UNSIGNED_BYTE, context->getClientVersion(), width, height))
{
return gl::error(GL_INVALID_VALUE);
}
@@ -7800,7 +7820,7 @@
return gl::error(GL_INVALID_OPERATION);
}
- if (imageSize < 0 || imageSize != gl::ComputeCompressedSize(width, height, format))
+ if (imageSize < 0 || imageSize != (GLsizei)gl::GetBlockSize(format, GL_UNSIGNED_BYTE, context->getClientVersion(), width, height))
{
return gl::error(GL_INVALID_VALUE);
}