D3D: Use angle::Result error pattern.
This completes the refactor for the D3D9/D3D11 back-ends.
Bug: angleproject:2752
Change-Id: Ie35a925f75c902d8f9fdab6bc33b3bb9c937f85b
Reviewed-on: https://chromium-review.googlesource.com/1167209
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/renderer/d3d/IndexBuffer.cpp b/src/libANGLE/renderer/d3d/IndexBuffer.cpp
index 68e926e..565f730 100644
--- a/src/libANGLE/renderer/d3d/IndexBuffer.cpp
+++ b/src/libANGLE/renderer/d3d/IndexBuffer.cpp
@@ -8,7 +8,9 @@
// class with derivations, classes that perform graphics API agnostic index buffer operations.
#include "libANGLE/renderer/d3d/IndexBuffer.h"
-#include "libANGLE/renderer/d3d/RendererD3D.h"
+
+#include "libANGLE/Context.h"
+#include "libANGLE/renderer/d3d/ContextD3D.h"
namespace rx
{
@@ -66,20 +68,19 @@
return mIndexBuffer->getSerial();
}
-gl::Error IndexBufferInterface::mapBuffer(const gl::Context *context,
- unsigned int size,
- void **outMappedMemory,
- unsigned int *streamOffset)
+angle::Result IndexBufferInterface::mapBuffer(const gl::Context *context,
+ unsigned int size,
+ void **outMappedMemory,
+ unsigned int *streamOffset)
{
// Protect against integer overflow
- if (mWritePosition + size < mWritePosition)
- {
- return gl::OutOfMemory()
- << "Mapping of internal index buffer would cause an integer overflow.";
- }
+ bool check = (mWritePosition + size < mWritePosition);
+ ANGLE_CHECK_HR(GetImplAs<ContextD3D>(context), !check,
+ "Mapping of internal index buffer would cause an integer overflow.",
+ E_OUTOFMEMORY);
- gl::Error error = mIndexBuffer->mapBuffer(context, mWritePosition, size, outMappedMemory);
- if (error.isError())
+ angle::Result error = mIndexBuffer->mapBuffer(context, mWritePosition, size, outMappedMemory);
+ if (error == angle::Result::Stop())
{
if (outMappedMemory)
{
@@ -94,10 +95,10 @@
}
mWritePosition += size;
- return gl::NoError();
+ return angle::Result::Continue();
}
-gl::Error IndexBufferInterface::unmapBuffer(const gl::Context *context)
+angle::Result IndexBufferInterface::unmapBuffer(const gl::Context *context)
{
return mIndexBuffer->unmapBuffer(context);
}
@@ -117,14 +118,14 @@
mWritePosition = writePosition;
}
-gl::Error IndexBufferInterface::discard(const gl::Context *context)
+angle::Result IndexBufferInterface::discard(const gl::Context *context)
{
return mIndexBuffer->discard(context);
}
-gl::Error IndexBufferInterface::setBufferSize(const gl::Context *context,
- unsigned int bufferSize,
- GLenum indexType)
+angle::Result IndexBufferInterface::setBufferSize(const gl::Context *context,
+ unsigned int bufferSize,
+ GLenum indexType)
{
if (mIndexBuffer->getBufferSize() == 0)
{
@@ -145,9 +146,9 @@
{
}
-gl::Error StreamingIndexBufferInterface::reserveBufferSpace(const gl::Context *context,
- unsigned int size,
- GLenum indexType)
+angle::Result StreamingIndexBufferInterface::reserveBufferSpace(const gl::Context *context,
+ unsigned int size,
+ GLenum indexType)
{
unsigned int curBufferSize = getBufferSize();
unsigned int writePos = getWritePosition();
@@ -162,7 +163,7 @@
setWritePosition(0);
}
- return gl::NoError();
+ return angle::Result::Continue();
}
@@ -175,24 +176,18 @@
{
}
-gl::Error StaticIndexBufferInterface::reserveBufferSpace(const gl::Context *context,
- unsigned int size,
- GLenum indexType)
+angle::Result StaticIndexBufferInterface::reserveBufferSpace(const gl::Context *context,
+ unsigned int size,
+ GLenum indexType)
{
unsigned int curSize = getBufferSize();
if (curSize == 0)
{
return setBufferSize(context, size, indexType);
}
- else if (curSize >= size && indexType == getIndexType())
- {
- return gl::NoError();
- }
- else
- {
- UNREACHABLE();
- return gl::InternalError() << "Internal static index buffers can't be resized";
- }
+
+ ASSERT(curSize >= size && indexType == getIndexType());
+ return angle::Result::Continue();
}
} // namespace rx