diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-10-09 17:56:51 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-10-09 17:56:52 +0200 |
commit | 881ceeff428c377d02ae3881beccdbb028385075 (patch) | |
tree | 65bd4335d7f67b81b04e33f2cbb17a41cf966dd8 /src/3rdparty/angle/src/libGLESv2/renderer/d3d/IndexBuffer.cpp | |
parent | b3d2c867ed14cd6337d5e32b8750f198b5b7d331 (diff) | |
parent | 106487387d493dab934e19b33bfed55b8df62d67 (diff) |
Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: I05fcd8dc66d9ad0dc76bb7f5bae05c9876bfba14
Diffstat (limited to 'src/3rdparty/angle/src/libGLESv2/renderer/d3d/IndexBuffer.cpp')
-rw-r--r-- | src/3rdparty/angle/src/libGLESv2/renderer/d3d/IndexBuffer.cpp | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/IndexBuffer.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/IndexBuffer.cpp index 13e35e09ec..1dce1270d8 100644 --- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/IndexBuffer.cpp +++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/IndexBuffer.cpp @@ -1,4 +1,3 @@ -#include "precompiled.h" // // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be @@ -67,21 +66,22 @@ unsigned int IndexBufferInterface::getSerial() const return mIndexBuffer->getSerial(); } -bool IndexBufferInterface::mapBuffer(unsigned int size, void** outMappedMemory, unsigned int *streamOffset) +gl::Error IndexBufferInterface::mapBuffer(unsigned int size, void** outMappedMemory, unsigned int *streamOffset) { // Protect against integer overflow if (mWritePosition + size < mWritePosition) { - return false; + return gl::Error(GL_OUT_OF_MEMORY, "Mapping of internal index buffer would cause an integer overflow."); } - if (!mIndexBuffer->mapBuffer(mWritePosition, size, outMappedMemory)) + gl::Error error = mIndexBuffer->mapBuffer(mWritePosition, size, outMappedMemory); + if (error.isError()) { if (outMappedMemory) { *outMappedMemory = NULL; } - return false; + return error; } if (streamOffset) @@ -90,10 +90,10 @@ bool IndexBufferInterface::mapBuffer(unsigned int size, void** outMappedMemory, } mWritePosition += size; - return true; + return gl::Error(GL_NO_ERROR); } -bool IndexBufferInterface::unmapBuffer() +gl::Error IndexBufferInterface::unmapBuffer() { return mIndexBuffer->unmapBuffer(); } @@ -113,12 +113,12 @@ void IndexBufferInterface::setWritePosition(unsigned int writePosition) mWritePosition = writePosition; } -bool IndexBufferInterface::discard() +gl::Error IndexBufferInterface::discard() { return mIndexBuffer->discard(); } -bool IndexBufferInterface::setBufferSize(unsigned int bufferSize, GLenum indexType) +gl::Error IndexBufferInterface::setBufferSize(unsigned int bufferSize, GLenum indexType) { if (mIndexBuffer->getBufferSize() == 0) { @@ -138,26 +138,30 @@ StreamingIndexBufferInterface::~StreamingIndexBufferInterface() { } -bool StreamingIndexBufferInterface::reserveBufferSpace(unsigned int size, GLenum indexType) +gl::Error StreamingIndexBufferInterface::reserveBufferSpace(unsigned int size, GLenum indexType) { - bool result = true; unsigned int curBufferSize = getBufferSize(); unsigned int writePos = getWritePosition(); if (size > curBufferSize) { - result = setBufferSize(std::max(size, 2 * curBufferSize), indexType); + gl::Error error = setBufferSize(std::max(size, 2 * curBufferSize), indexType); + if (error.isError()) + { + return error; + } setWritePosition(0); } else if (writePos + size > curBufferSize || writePos + size < writePos) { - if (!discard()) + gl::Error error = discard(); + if (error.isError()) { - return false; + return error; } setWritePosition(0); } - return result; + return gl::Error(GL_NO_ERROR); } @@ -169,7 +173,7 @@ StaticIndexBufferInterface::~StaticIndexBufferInterface() { } -bool StaticIndexBufferInterface::reserveBufferSpace(unsigned int size, GLenum indexType) +gl::Error StaticIndexBufferInterface::reserveBufferSpace(unsigned int size, GLenum indexType) { unsigned int curSize = getBufferSize(); if (curSize == 0) @@ -178,13 +182,12 @@ bool StaticIndexBufferInterface::reserveBufferSpace(unsigned int size, GLenum in } else if (curSize >= size && indexType == getIndexType()) { - return true; + return gl::Error(GL_NO_ERROR); } else { - ERR("Static index buffers can't be resized"); UNREACHABLE(); - return false; + return gl::Error(GL_INVALID_OPERATION, "Internal static index buffers can't be resized"); } } |