Refactor internal format pixel math methods.
This removes the use of the ErrorOrResult class from these methods.
This will enable more performant Error handling. Also cleans up the
ANGLE_TRY_CHECKED_MATH macro to be more general.
Bug: angleproject:2713
Change-Id: I349947d320907839ca88ec1f9251e6ddc3858a08
Reviewed-on: https://chromium-review.googlesource.com/1128920
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
diff --git a/src/libANGLE/validationES2.cpp b/src/libANGLE/validationES2.cpp
index 1e2cb16..0e87fc4 100644
--- a/src/libANGLE/validationES2.cpp
+++ b/src/libANGLE/validationES2.cpp
@@ -2733,14 +2733,15 @@
}
const InternalFormat &formatInfo = GetSizedInternalFormatInfo(internalformat);
- auto blockSizeOrErr = formatInfo.computeCompressedImageSize(gl::Extents(width, height, 1));
- if (blockSizeOrErr.isError())
+
+ GLuint blockSize = 0;
+ if (!formatInfo.computeCompressedImageSize(gl::Extents(width, height, 1), &blockSize))
{
- context->handleError(blockSizeOrErr.getError());
+ ANGLE_VALIDATION_ERR(context, InvalidOperation(), IntegerOverflow);
return false;
}
- if (imageSize < 0 || static_cast<GLuint>(imageSize) != blockSizeOrErr.getResult())
+ if (imageSize < 0 || static_cast<GLuint>(imageSize) != blockSize)
{
ANGLE_VALIDATION_ERR(context, InvalidValue(), CompressedTextureDimensionsMustMatchData);
return false;
@@ -2827,14 +2828,14 @@
}
const InternalFormat &formatInfo = GetSizedInternalFormatInfo(format);
- auto blockSizeOrErr = formatInfo.computeCompressedImageSize(gl::Extents(width, height, 1));
- if (blockSizeOrErr.isError())
+ GLuint blockSize = 0;
+ if (!formatInfo.computeCompressedImageSize(gl::Extents(width, height, 1), &blockSize))
{
- context->handleError(blockSizeOrErr.getError());
+ ANGLE_VALIDATION_ERR(context, InvalidOperation(), IntegerOverflow);
return false;
}
- if (imageSize < 0 || static_cast<GLuint>(imageSize) != blockSizeOrErr.getResult())
+ if (imageSize < 0 || static_cast<GLuint>(imageSize) != blockSize)
{
context->handleError(InvalidValue());
return false;