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/renderer/d3d/FramebufferD3D.cpp b/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
index 222e4c3..b443f9a 100644
--- a/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
+++ b/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
@@ -260,12 +260,12 @@
const gl::InternalFormat &sizedFormatInfo = gl::GetInternalFormatInfo(format, type);
GLuint outputPitch = 0;
- ANGLE_TRY_RESULT(sizedFormatInfo.computeRowPitch(type, origArea.width, packState.alignment,
- packState.rowLength),
- outputPitch);
+ ANGLE_TRY_CHECKED_MATH(sizedFormatInfo.computeRowPitch(
+ type, origArea.width, packState.alignment, packState.rowLength, &outputPitch));
+
GLuint outputSkipBytes = 0;
- ANGLE_TRY_RESULT(sizedFormatInfo.computeSkipBytes(type, outputPitch, 0, packState, false),
- outputSkipBytes);
+ ANGLE_TRY_CHECKED_MATH(
+ sizedFormatInfo.computeSkipBytes(type, outputPitch, 0, packState, false, &outputSkipBytes));
outputSkipBytes +=
(area.x - origArea.x) * sizedFormatInfo.pixelBytes + (area.y - origArea.y) * outputPitch;
diff --git a/src/libANGLE/renderer/d3d/TextureD3D.cpp b/src/libANGLE/renderer/d3d/TextureD3D.cpp
index ddd9169..3d82eec 100644
--- a/src/libANGLE/renderer/d3d/TextureD3D.cpp
+++ b/src/libANGLE/renderer/d3d/TextureD3D.cpp
@@ -714,9 +714,9 @@
// Slow path: non-renderable texture or the texture levels aren't set up.
const auto &formatInfo = gl::GetSizedInternalFormatInfo(image->getInternalFormat());
- size_t imageBytes = 0;
- ANGLE_TRY_RESULT(formatInfo.computeRowPitch(formatInfo.type, image->getWidth(), 1, 0),
- imageBytes);
+ GLuint imageBytes = 0;
+ ANGLE_TRY_CHECKED_MATH(
+ formatInfo.computeRowPitch(formatInfo.type, image->getWidth(), 1, 0, &imageBytes));
imageBytes *= image->getHeight() * image->getDepth();
gl::PixelUnpackState zeroDataUnpackState;
@@ -2912,10 +2912,10 @@
ANGLE_TRY(
redefineImage(context, index.getLevelIndex(), formatInfo.sizedInternalFormat, size, false));
- GLsizei inputDepthPitch = 0;
- ANGLE_TRY_RESULT(formatInfo.computeDepthPitch(type, size.width, size.height, unpack.alignment,
- unpack.rowLength, unpack.imageHeight),
- inputDepthPitch);
+ GLuint inputDepthPitch = 0;
+ ANGLE_TRY_CHECKED_MATH(formatInfo.computeDepthPitch(type, size.width, size.height,
+ unpack.alignment, unpack.rowLength,
+ unpack.imageHeight, &inputDepthPitch));
for (int i = 0; i < size.depth; i++)
{
@@ -2938,10 +2938,10 @@
ASSERT(index.getTarget() == gl::TextureTarget::_2DArray);
const gl::InternalFormat &formatInfo =
gl::GetInternalFormatInfo(getInternalFormat(index.getLevelIndex()), type);
- GLsizei inputDepthPitch = 0;
- ANGLE_TRY_RESULT(formatInfo.computeDepthPitch(type, area.width, area.height, unpack.alignment,
- unpack.rowLength, unpack.imageHeight),
- inputDepthPitch);
+ GLuint inputDepthPitch = 0;
+ ANGLE_TRY_CHECKED_MATH(formatInfo.computeDepthPitch(type, area.width, area.height,
+ unpack.alignment, unpack.rowLength,
+ unpack.imageHeight, &inputDepthPitch));
for (int i = 0; i < area.depth; i++)
{
@@ -2972,10 +2972,9 @@
ANGLE_TRY(redefineImage(context, index.getLevelIndex(), internalFormat, size, false));
const gl::InternalFormat &formatInfo = gl::GetSizedInternalFormatInfo(internalFormat);
- GLsizei inputDepthPitch = 0;
- ANGLE_TRY_RESULT(
- formatInfo.computeDepthPitch(GL_UNSIGNED_BYTE, size.width, size.height, 1, 0, 0),
- inputDepthPitch);
+ GLuint inputDepthPitch = 0;
+ ANGLE_TRY_CHECKED_MATH(formatInfo.computeDepthPitch(GL_UNSIGNED_BYTE, size.width, size.height,
+ 1, 0, 0, &inputDepthPitch));
for (int i = 0; i < size.depth; i++)
{
@@ -2999,10 +2998,9 @@
ASSERT(index.getTarget() == gl::TextureTarget::_2DArray);
const gl::InternalFormat &formatInfo = gl::GetSizedInternalFormatInfo(format);
- GLsizei inputDepthPitch = 0;
- ANGLE_TRY_RESULT(
- formatInfo.computeDepthPitch(GL_UNSIGNED_BYTE, area.width, area.height, 1, 0, 0),
- inputDepthPitch);
+ GLuint inputDepthPitch = 0;
+ ANGLE_TRY_CHECKED_MATH(formatInfo.computeDepthPitch(GL_UNSIGNED_BYTE, area.width, area.height,
+ 1, 0, 0, &inputDepthPitch));
for (int i = 0; i < area.depth; i++)
{
diff --git a/src/libANGLE/renderer/d3d/VertexDataManager.cpp b/src/libANGLE/renderer/d3d/VertexDataManager.cpp
index 183c895..ca9a116 100644
--- a/src/libANGLE/renderer/d3d/VertexDataManager.cpp
+++ b/src/libANGLE/renderer/d3d/VertexDataManager.cpp
@@ -138,7 +138,7 @@
CheckedNumeric<unsigned int> offset;
offset = baseOffset + stride * static_cast<unsigned int>(startVertex);
- ANGLE_TRY_CHECKED_MATH(offset);
+ ANGLE_TRY_CHECKED_MATH(offset.IsValid());
return offset.ValueOrDie();
}
diff --git a/src/libANGLE/renderer/d3d/d3d11/Image11.cpp b/src/libANGLE/renderer/d3d/d3d11/Image11.cpp
index b2073f0..ac88e22 100644
--- a/src/libANGLE/renderer/d3d/d3d11/Image11.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/Image11.cpp
@@ -283,16 +283,14 @@
{
const gl::InternalFormat &formatInfo = gl::GetSizedInternalFormatInfo(mInternalFormat);
GLuint inputRowPitch = 0;
- ANGLE_TRY_RESULT(
- formatInfo.computeRowPitch(type, area.width, unpack.alignment, unpack.rowLength),
- inputRowPitch);
+ ANGLE_TRY_CHECKED_MATH(formatInfo.computeRowPitch(type, area.width, unpack.alignment,
+ unpack.rowLength, &inputRowPitch));
GLuint inputDepthPitch = 0;
- ANGLE_TRY_RESULT(formatInfo.computeDepthPitch(area.height, unpack.imageHeight, inputRowPitch),
- inputDepthPitch);
+ ANGLE_TRY_CHECKED_MATH(formatInfo.computeDepthPitch(area.height, unpack.imageHeight,
+ inputRowPitch, &inputDepthPitch));
GLuint inputSkipBytes = 0;
- ANGLE_TRY_RESULT(
- formatInfo.computeSkipBytes(type, inputRowPitch, inputDepthPitch, unpack, applySkipImages),
- inputSkipBytes);
+ ANGLE_TRY_CHECKED_MATH(formatInfo.computeSkipBytes(type, inputRowPitch, inputDepthPitch, unpack,
+ applySkipImages, &inputSkipBytes));
const d3d11::DXGIFormatSize &dxgiFormatInfo = d3d11::GetDXGIFormatSizeInfo(mDXGIFormat);
GLuint outputPixelSize = dxgiFormatInfo.pixelBytes;
@@ -321,10 +319,12 @@
const void *input)
{
const gl::InternalFormat &formatInfo = gl::GetSizedInternalFormatInfo(mInternalFormat);
- GLsizei inputRowPitch = 0;
- ANGLE_TRY_RESULT(formatInfo.computeRowPitch(GL_UNSIGNED_BYTE, area.width, 1, 0), inputRowPitch);
- GLsizei inputDepthPitch = 0;
- ANGLE_TRY_RESULT(formatInfo.computeDepthPitch(area.height, 0, inputRowPitch), inputDepthPitch);
+ GLuint inputRowPitch = 0;
+ ANGLE_TRY_CHECKED_MATH(
+ formatInfo.computeRowPitch(GL_UNSIGNED_BYTE, area.width, 1, 0, &inputRowPitch));
+ GLuint inputDepthPitch = 0;
+ ANGLE_TRY_CHECKED_MATH(
+ formatInfo.computeDepthPitch(area.height, 0, inputRowPitch, &inputDepthPitch));
const d3d11::DXGIFormatSize &dxgiFormatInfo = d3d11::GetDXGIFormatSizeInfo(mDXGIFormat);
GLuint outputPixelSize = dxgiFormatInfo.pixelBytes;
diff --git a/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp b/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp
index 027422a..200113c 100644
--- a/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp
@@ -735,16 +735,14 @@
const int height = destBox ? destBox->height : static_cast<int>(image->getHeight());
const int depth = destBox ? destBox->depth : static_cast<int>(image->getDepth());
GLuint srcRowPitch = 0;
- ANGLE_TRY_RESULT(
- internalFormatInfo.computeRowPitch(type, width, unpack.alignment, unpack.rowLength),
- srcRowPitch);
+ ANGLE_TRY_CHECKED_MATH(internalFormatInfo.computeRowPitch(type, width, unpack.alignment,
+ unpack.rowLength, &srcRowPitch));
GLuint srcDepthPitch = 0;
- ANGLE_TRY_RESULT(internalFormatInfo.computeDepthPitch(height, unpack.imageHeight, srcRowPitch),
- srcDepthPitch);
+ ANGLE_TRY_CHECKED_MATH(internalFormatInfo.computeDepthPitch(height, unpack.imageHeight,
+ srcRowPitch, &srcDepthPitch));
GLuint srcSkipBytes = 0;
- ANGLE_TRY_RESULT(internalFormatInfo.computeSkipBytes(type, srcRowPitch, srcDepthPitch, unpack,
- index.usesTex3D()),
- srcSkipBytes);
+ ANGLE_TRY_CHECKED_MATH(internalFormatInfo.computeSkipBytes(
+ type, srcRowPitch, srcDepthPitch, unpack, index.usesTex3D(), &srcSkipBytes));
const d3d11::Format &d3d11Format =
d3d11::Format::Get(image->getInternalFormat(), mRenderer->getRenderer11DeviceCaps());
diff --git a/src/libANGLE/renderer/d3d/d3d9/Image9.cpp b/src/libANGLE/renderer/d3d/d3d9/Image9.cpp
index bf2cf72..0ddcc83 100644
--- a/src/libANGLE/renderer/d3d/d3d9/Image9.cpp
+++ b/src/libANGLE/renderer/d3d/d3d9/Image9.cpp
@@ -555,9 +555,8 @@
const gl::InternalFormat &formatInfo = gl::GetSizedInternalFormatInfo(mInternalFormat);
GLuint inputRowPitch = 0;
- ANGLE_TRY_RESULT(
- formatInfo.computeRowPitch(type, area.width, unpack.alignment, unpack.rowLength),
- inputRowPitch);
+ ANGLE_TRY_CHECKED_MATH(formatInfo.computeRowPitch(type, area.width, unpack.alignment,
+ unpack.rowLength, &inputRowPitch));
ASSERT(!applySkipImages);
ASSERT(unpack.skipPixels == 0);
ASSERT(unpack.skipRows == 0);
@@ -595,11 +594,13 @@
ASSERT(area.z == 0 && area.depth == 1);
const gl::InternalFormat &formatInfo = gl::GetSizedInternalFormatInfo(mInternalFormat);
- GLsizei inputRowPitch = 0;
- ANGLE_TRY_RESULT(formatInfo.computeRowPitch(GL_UNSIGNED_BYTE, area.width, 1, 0), inputRowPitch);
- GLsizei inputDepthPitch = 0;
- ANGLE_TRY_RESULT(formatInfo.computeDepthPitch(area.height, 0, inputDepthPitch),
- inputDepthPitch);
+ GLuint inputRowPitch = 0;
+ ANGLE_TRY_CHECKED_MATH(
+ formatInfo.computeRowPitch(GL_UNSIGNED_BYTE, area.width, 1, 0, &inputRowPitch));
+
+ GLuint inputDepthPitch = 0;
+ ANGLE_TRY_CHECKED_MATH(
+ formatInfo.computeDepthPitch(area.height, 0, inputRowPitch, &inputDepthPitch));
const d3d9::TextureFormat &d3d9FormatInfo = d3d9::GetTextureFormatInfo(mInternalFormat);
diff --git a/src/libANGLE/renderer/gl/FramebufferGL.cpp b/src/libANGLE/renderer/gl/FramebufferGL.cpp
index f42a405..2a253dd 100644
--- a/src/libANGLE/renderer/gl/FramebufferGL.cpp
+++ b/src/libANGLE/renderer/gl/FramebufferGL.cpp
@@ -464,9 +464,8 @@
const gl::InternalFormat &glFormat = gl::GetInternalFormatInfo(readFormat, readType);
GLuint rowBytes = 0;
- ANGLE_TRY_RESULT(glFormat.computeRowPitch(readType, origArea.width, packState.alignment,
- packState.rowLength),
- rowBytes);
+ ANGLE_TRY_CHECKED_MATH(glFormat.computeRowPitch(
+ readType, origArea.width, packState.alignment, packState.rowLength, &rowBytes));
pixels += leftClip * glFormat.pixelBytes + topClip * rowBytes;
}
@@ -892,10 +891,10 @@
const gl::InternalFormat &glFormat = gl::GetInternalFormatInfo(format, type);
GLuint rowBytes = 0;
- ANGLE_TRY_RESULT(glFormat.computeRowPitch(type, area.width, pack.alignment, pack.rowLength),
- rowBytes);
+ ANGLE_TRY_CHECKED_MATH(
+ glFormat.computeRowPitch(type, area.width, pack.alignment, pack.rowLength, &rowBytes));
GLuint skipBytes = 0;
- ANGLE_TRY_RESULT(glFormat.computeSkipBytes(type, rowBytes, 0, pack, false), skipBytes);
+ ANGLE_TRY_CHECKED_MATH(glFormat.computeSkipBytes(type, rowBytes, 0, pack, false, &skipBytes));
gl::PixelPackState directPack;
directPack.alignment = 1;
@@ -934,10 +933,11 @@
const gl::InternalFormat &glFormat = gl::GetInternalFormatInfo(format, type);
GLuint rowBytes = 0;
- ANGLE_TRY_RESULT(glFormat.computeRowPitch(type, area.width, pack.alignment, pack.rowLength),
- rowBytes);
+ ANGLE_TRY_CHECKED_MATH(
+ glFormat.computeRowPitch(type, area.width, pack.alignment, pack.rowLength, &rowBytes));
GLuint skipBytes = 0;
- ANGLE_TRY_RESULT(glFormat.computeSkipBytes(type, rowBytes, 0, pack, false), skipBytes);
+ ANGLE_TRY_CHECKED_MATH(
+ glFormat.computeSkipBytes(type, rowBytes, 0, pack, false, &skipBytes));
gl::PixelPackState directPack;
directPack.alignment = 1;
diff --git a/src/libANGLE/renderer/gl/TextureGL.cpp b/src/libANGLE/renderer/gl/TextureGL.cpp
index a123108..32627be 100644
--- a/src/libANGLE/renderer/gl/TextureGL.cpp
+++ b/src/libANGLE/renderer/gl/TextureGL.cpp
@@ -341,16 +341,16 @@
const gl::InternalFormat &glFormat = gl::GetInternalFormatInfo(format, type);
GLuint rowBytes = 0;
- ANGLE_TRY_RESULT(glFormat.computeRowPitch(type, area.width, unpack.alignment, unpack.rowLength),
- rowBytes);
+ ANGLE_TRY_CHECKED_MATH(
+ glFormat.computeRowPitch(type, area.width, unpack.alignment, unpack.rowLength, &rowBytes));
GLuint imageBytes = 0;
- ANGLE_TRY_RESULT(glFormat.computeDepthPitch(area.height, unpack.imageHeight, rowBytes),
- imageBytes);
+ ANGLE_TRY_CHECKED_MATH(
+ glFormat.computeDepthPitch(area.height, unpack.imageHeight, rowBytes, &imageBytes));
bool useTexImage3D = nativegl::UseTexImage3D(getType());
GLuint skipBytes = 0;
- ANGLE_TRY_RESULT(glFormat.computeSkipBytes(type, rowBytes, imageBytes, unpack, useTexImage3D),
- skipBytes);
+ ANGLE_TRY_CHECKED_MATH(
+ glFormat.computeSkipBytes(type, rowBytes, imageBytes, unpack, useTexImage3D, &skipBytes));
const uint8_t *pixelsWithSkip = pixels + skipBytes;
if (useTexImage3D)
@@ -397,15 +397,15 @@
const gl::InternalFormat &glFormat = gl::GetInternalFormatInfo(format, type);
GLuint rowBytes = 0;
- ANGLE_TRY_RESULT(glFormat.computeRowPitch(type, area.width, unpack.alignment, unpack.rowLength),
- rowBytes);
+ ANGLE_TRY_CHECKED_MATH(
+ glFormat.computeRowPitch(type, area.width, unpack.alignment, unpack.rowLength, &rowBytes));
GLuint imageBytes = 0;
- ANGLE_TRY_RESULT(glFormat.computeDepthPitch(area.height, unpack.imageHeight, rowBytes),
- imageBytes);
+ ANGLE_TRY_CHECKED_MATH(
+ glFormat.computeDepthPitch(area.height, unpack.imageHeight, rowBytes, &imageBytes));
bool useTexImage3D = nativegl::UseTexImage3D(getType());
GLuint skipBytes = 0;
- ANGLE_TRY_RESULT(glFormat.computeSkipBytes(type, rowBytes, imageBytes, unpack, useTexImage3D),
- skipBytes);
+ ANGLE_TRY_CHECKED_MATH(
+ glFormat.computeSkipBytes(type, rowBytes, imageBytes, unpack, useTexImage3D, &skipBytes));
stateManager->setPixelUnpackState(unpack);
stateManager->setPixelUnpackBuffer(unpackBuffer);
@@ -895,8 +895,8 @@
internalFormat);
GLuint dataSize = 0;
- ANGLE_TRY_RESULT(internalFormatInfo.computeCompressedImageSize(levelSize),
- dataSize);
+ ANGLE_TRY_CHECKED_MATH(
+ internalFormatInfo.computeCompressedImageSize(levelSize, &dataSize));
functions->compressedTexImage2D(ToGLenum(type), static_cast<GLint>(level),
compressedTexImageFormat.format,
levelSize.width, levelSize.height, 0,
@@ -925,8 +925,8 @@
internalFormat);
GLuint dataSize = 0;
- ANGLE_TRY_RESULT(internalFormatInfo.computeCompressedImageSize(levelSize),
- dataSize);
+ ANGLE_TRY_CHECKED_MATH(internalFormatInfo.computeCompressedImageSize(
+ levelSize, &dataSize));
functions->compressedTexImage2D(
ToGLenum(face), static_cast<GLint>(level),
compressedTexImageFormat.format, levelSize.width, levelSize.height,
@@ -984,9 +984,8 @@
internalFormat);
GLuint dataSize = 0;
- ANGLE_TRY_RESULT(
- internalFormatInfo.computeCompressedImageSize(levelSize),
- dataSize);
+ ANGLE_TRY_CHECKED_MATH(
+ internalFormatInfo.computeCompressedImageSize(levelSize, &dataSize));
functions->compressedTexImage3D(
ToGLenum(type), i, compressedTexImageFormat.format, levelSize.width,
levelSize.height, levelSize.depth, 0, static_cast<GLsizei>(dataSize),
@@ -1536,7 +1535,8 @@
internalFormatInfo.internalFormat);
GLuint imageSize = 0;
- ANGLE_TRY_RESULT(internalFormatInfo.computeCompressedImageSize(desc.size), imageSize);
+ ANGLE_TRY_CHECKED_MATH(
+ internalFormatInfo.computeCompressedImageSize(desc.size, &imageSize));
angle::MemoryBuffer *zero;
ANGLE_TRY(context->getZeroFilledBuffer(imageSize, &zero));
@@ -1564,10 +1564,9 @@
functions, workarounds, internalFormatInfo.format, internalFormatInfo.type);
GLuint imageSize = 0;
- ANGLE_TRY_RESULT(internalFormatInfo.computePackUnpackEndByte(
- nativeSubImageFormat.type, desc.size, unpackState,
- nativegl::UseTexImage3D(getType())),
- imageSize);
+ ANGLE_TRY_CHECKED_MATH(internalFormatInfo.computePackUnpackEndByte(
+ nativeSubImageFormat.type, desc.size, unpackState, nativegl::UseTexImage3D(getType()),
+ &imageSize));
angle::MemoryBuffer *zero;
ANGLE_TRY(context->getZeroFilledBuffer(imageSize, &zero));
diff --git a/src/libANGLE/renderer/gl/renderergl_utils.cpp b/src/libANGLE/renderer/gl/renderergl_utils.cpp
index 0e1226f..62a7df5 100644
--- a/src/libANGLE/renderer/gl/renderergl_utils.cpp
+++ b/src/libANGLE/renderer/gl/renderergl_utils.cpp
@@ -1359,27 +1359,27 @@
// We are using an pack or unpack buffer, compute what the driver thinks is going to be the
// last byte read or written. If it is past the end of the buffer, we will need to use the
// workaround otherwise the driver will generate INVALID_OPERATION and not do the operation.
- CheckedNumeric<size_t> checkedEndByte;
- CheckedNumeric<size_t> pixelBytes;
- size_t rowPitch;
const gl::InternalFormat &glFormat = gl::GetInternalFormatInfo(format, type);
- ANGLE_TRY_RESULT(glFormat.computePackUnpackEndByte(type, size, state, is3D), checkedEndByte);
- ANGLE_TRY_RESULT(glFormat.computeRowPitch(type, size.width, state.alignment, state.rowLength),
- rowPitch);
- pixelBytes = glFormat.computePixelBytes(type);
+ GLuint endByte = 0;
+ ANGLE_TRY_CHECKED_MATH(glFormat.computePackUnpackEndByte(type, size, state, is3D, &endByte));
+ GLuint rowPitch = 0;
+ ANGLE_TRY_CHECKED_MATH(
+ glFormat.computeRowPitch(type, size.width, state.alignment, state.rowLength, &rowPitch));
- checkedEndByte += reinterpret_cast<intptr_t>(pixels);
+ CheckedNumeric<size_t> checkedPixelBytes = glFormat.computePixelBytes(type);
+ CheckedNumeric<size_t> checkedEndByte =
+ angle::CheckedNumeric<size_t>(endByte) + reinterpret_cast<intptr_t>(pixels);
// At this point checkedEndByte is the actual last byte read.
// The driver adds an extra row padding (if any), mimic it.
- ANGLE_TRY_CHECKED_MATH(pixelBytes);
- if (pixelBytes.ValueOrDie() * size.width < rowPitch)
+ ANGLE_TRY_CHECKED_MATH(checkedPixelBytes.IsValid());
+ if (checkedPixelBytes.ValueOrDie() * size.width < rowPitch)
{
- checkedEndByte += rowPitch - pixelBytes * size.width;
+ checkedEndByte += rowPitch - checkedPixelBytes * size.width;
}
- ANGLE_TRY_CHECKED_MATH(checkedEndByte);
+ ANGLE_TRY_CHECKED_MATH(checkedEndByte.IsValid());
return checkedEndByte.ValueOrDie() > static_cast<size_t>(pixelBuffer->getSize());
}
diff --git a/src/libANGLE/renderer/null/FramebufferNULL.cpp b/src/libANGLE/renderer/null/FramebufferNULL.cpp
index 83d8140..865a70a 100644
--- a/src/libANGLE/renderer/null/FramebufferNULL.cpp
+++ b/src/libANGLE/renderer/null/FramebufferNULL.cpp
@@ -148,12 +148,12 @@
const gl::InternalFormat &glFormat = gl::GetInternalFormatInfo(format, type);
GLuint rowBytes = 0;
- ANGLE_TRY_RESULT(
- glFormat.computeRowPitch(type, origArea.width, packState.alignment, packState.rowLength),
- rowBytes);
+ ANGLE_TRY_CHECKED_MATH(glFormat.computeRowPitch(type, origArea.width, packState.alignment,
+ packState.rowLength, &rowBytes));
GLuint skipBytes = 0;
- ANGLE_TRY_RESULT(glFormat.computeSkipBytes(type, rowBytes, 0, packState, false), skipBytes);
+ ANGLE_TRY_CHECKED_MATH(
+ glFormat.computeSkipBytes(type, rowBytes, 0, packState, false, &skipBytes));
pixels += skipBytes;
// Skip OOB region up to first in bounds pixel
diff --git a/src/libANGLE/renderer/vulkan/FramebufferVk.cpp b/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
index 89f22c3..bfdf0da 100644
--- a/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
+++ b/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
@@ -325,12 +325,11 @@
const gl::InternalFormat &sizedFormatInfo = gl::GetInternalFormatInfo(format, type);
GLuint outputPitch = 0;
- ANGLE_TRY_RESULT(
- sizedFormatInfo.computeRowPitch(type, area.width, packState.alignment, packState.rowLength),
- outputPitch);
+ ANGLE_TRY_CHECKED_MATH(sizedFormatInfo.computeRowPitch(type, area.width, packState.alignment,
+ packState.rowLength, &outputPitch));
GLuint outputSkipBytes = 0;
- ANGLE_TRY_RESULT(sizedFormatInfo.computeSkipBytes(type, outputPitch, 0, packState, false),
- outputSkipBytes);
+ ANGLE_TRY_CHECKED_MATH(
+ sizedFormatInfo.computeSkipBytes(type, outputPitch, 0, packState, false, &outputSkipBytes));
outputSkipBytes += (clippedArea.x - area.x) * sizedFormatInfo.pixelBytes +
(clippedArea.y - area.y) * outputPitch;
diff --git a/src/libANGLE/renderer/vulkan/TextureVk.cpp b/src/libANGLE/renderer/vulkan/TextureVk.cpp
index dadd0a9..e3269c0 100644
--- a/src/libANGLE/renderer/vulkan/TextureVk.cpp
+++ b/src/libANGLE/renderer/vulkan/TextureVk.cpp
@@ -101,22 +101,19 @@
const uint8_t *pixels)
{
GLuint inputRowPitch = 0;
- ANGLE_TRY_RESULT(
- formatInfo.computeRowPitch(type, extents.width, unpack.alignment, unpack.rowLength),
- inputRowPitch);
+ ANGLE_TRY_CHECKED_MATH(formatInfo.computeRowPitch(type, extents.width, unpack.alignment,
+ unpack.rowLength, &inputRowPitch));
GLuint inputDepthPitch = 0;
- ANGLE_TRY_RESULT(
- formatInfo.computeDepthPitch(extents.height, unpack.imageHeight, inputRowPitch),
- inputDepthPitch);
+ ANGLE_TRY_CHECKED_MATH(formatInfo.computeDepthPitch(extents.height, unpack.imageHeight,
+ inputRowPitch, &inputDepthPitch));
// TODO(jmadill): skip images for 3D Textures.
bool applySkipImages = false;
GLuint inputSkipBytes = 0;
- ANGLE_TRY_RESULT(
- formatInfo.computeSkipBytes(type, inputRowPitch, inputDepthPitch, unpack, applySkipImages),
- inputSkipBytes);
+ ANGLE_TRY_CHECKED_MATH(formatInfo.computeSkipBytes(type, inputRowPitch, inputDepthPitch, unpack,
+ applySkipImages, &inputSkipBytes));
RendererVk *renderer = contextVk->getRenderer();