Commit 87718a87 by Jamie Madill Committed by Commit Bot

Use more gl::Error in IndexDataManager.

BUG=angleproject:2229 Change-Id: I19f7c1600300298e7bc2a1f7dc4215a67053767c Reviewed-on: https://chromium-review.googlesource.com/764674 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 8b920b21
...@@ -146,20 +146,12 @@ gl::Error StreamingIndexBufferInterface::reserveBufferSpace(unsigned int size, G ...@@ -146,20 +146,12 @@ gl::Error StreamingIndexBufferInterface::reserveBufferSpace(unsigned int size, G
unsigned int writePos = getWritePosition(); unsigned int writePos = getWritePosition();
if (size > curBufferSize) if (size > curBufferSize)
{ {
gl::Error error = setBufferSize(std::max(size, 2 * curBufferSize), indexType); ANGLE_TRY(setBufferSize(std::max(size, 2 * curBufferSize), indexType));
if (error.isError())
{
return error;
}
setWritePosition(0); setWritePosition(0);
} }
else if (writePos + size > curBufferSize || writePos + size < writePos) else if (writePos + size > curBufferSize || writePos + size < writePos)
{ {
gl::Error error = discard(); ANGLE_TRY(discard());
if (error.isError())
{
return error;
}
setWritePosition(0); setWritePosition(0);
} }
...@@ -194,4 +186,4 @@ gl::Error StaticIndexBufferInterface::reserveBufferSpace(unsigned int size, GLen ...@@ -194,4 +186,4 @@ gl::Error StaticIndexBufferInterface::reserveBufferSpace(unsigned int size, GLen
} }
} }
} } // namespace rx
...@@ -99,27 +99,14 @@ gl::Error StreamInIndexBuffer(IndexBufferInterface *buffer, ...@@ -99,27 +99,14 @@ gl::Error StreamInIndexBuffer(IndexBufferInterface *buffer,
} }
unsigned int bufferSizeRequired = count << dstTypeInfo.bytesShift; unsigned int bufferSizeRequired = count << dstTypeInfo.bytesShift;
gl::Error error = buffer->reserveBufferSpace(bufferSizeRequired, dstType); ANGLE_TRY(buffer->reserveBufferSpace(bufferSizeRequired, dstType));
if (error.isError())
{
return error;
}
void *output = nullptr; void *output = nullptr;
error = buffer->mapBuffer(bufferSizeRequired, &output, offset); ANGLE_TRY(buffer->mapBuffer(bufferSizeRequired, &output, offset));
if (error.isError())
{
return error;
}
ConvertIndices(srcType, dstType, data, count, output, usePrimitiveRestartFixedIndex); ConvertIndices(srcType, dstType, data, count, output, usePrimitiveRestartFixedIndex);
error = buffer->unmapBuffer(); ANGLE_TRY(buffer->unmapBuffer());
if (error.isError())
{
return error;
}
return gl::NoError(); return gl::NoError();
} }
...@@ -302,19 +289,11 @@ gl::Error IndexDataManager::prepareIndexData(const gl::Context *context, ...@@ -302,19 +289,11 @@ gl::Error IndexDataManager::prepareIndexData(const gl::Context *context,
if (staticBuffer == nullptr || !offsetAligned) if (staticBuffer == nullptr || !offsetAligned)
{ {
const uint8_t *bufferData = nullptr; const uint8_t *bufferData = nullptr;
gl::Error error = buffer->getData(context, &bufferData); ANGLE_TRY(buffer->getData(context, &bufferData));
if (error.isError())
{
return error;
}
ASSERT(bufferData != nullptr); ASSERT(bufferData != nullptr);
error = streamIndexData(bufferData + offset, count, srcType, dstType, ANGLE_TRY(streamIndexData(bufferData + offset, count, srcType, dstType,
primitiveRestartFixedIndexEnabled, translated); primitiveRestartFixedIndexEnabled, translated));
if (error.isError())
{
return error;
}
buffer->promoteStaticUsage(context, count << srcTypeInfo.bytesShift); buffer->promoteStaticUsage(context, count << srcTypeInfo.bytesShift);
} }
else else
...@@ -322,21 +301,13 @@ gl::Error IndexDataManager::prepareIndexData(const gl::Context *context, ...@@ -322,21 +301,13 @@ gl::Error IndexDataManager::prepareIndexData(const gl::Context *context,
if (!staticBufferInitialized) if (!staticBufferInitialized)
{ {
const uint8_t *bufferData = nullptr; const uint8_t *bufferData = nullptr;
gl::Error error = buffer->getData(context, &bufferData); ANGLE_TRY(buffer->getData(context, &bufferData));
if (error.isError())
{
return error;
}
ASSERT(bufferData != nullptr); ASSERT(bufferData != nullptr);
unsigned int convertCount = unsigned int convertCount =
static_cast<unsigned int>(buffer->getSize()) >> srcTypeInfo.bytesShift; static_cast<unsigned int>(buffer->getSize()) >> srcTypeInfo.bytesShift;
error = StreamInIndexBuffer(staticBuffer, bufferData, convertCount, srcType, dstType, ANGLE_TRY(StreamInIndexBuffer(staticBuffer, bufferData, convertCount, srcType, dstType,
primitiveRestartFixedIndexEnabled, nullptr); primitiveRestartFixedIndexEnabled, nullptr));
if (error.isError())
{
return error;
}
} }
ASSERT(offsetAligned && staticBuffer->getIndexType() == dstType); ASSERT(offsetAligned && staticBuffer->getIndexType() == dstType);
...@@ -359,11 +330,7 @@ gl::Error IndexDataManager::streamIndexData(const void *data, ...@@ -359,11 +330,7 @@ gl::Error IndexDataManager::streamIndexData(const void *data,
const gl::Type &dstTypeInfo = gl::GetTypeInfo(dstType); const gl::Type &dstTypeInfo = gl::GetTypeInfo(dstType);
IndexBufferInterface *indexBuffer = nullptr; IndexBufferInterface *indexBuffer = nullptr;
gl::Error error = getStreamingIndexBuffer(dstType, &indexBuffer); ANGLE_TRY(getStreamingIndexBuffer(dstType, &indexBuffer));
if (error.isError())
{
return error;
}
ASSERT(indexBuffer != nullptr); ASSERT(indexBuffer != nullptr);
unsigned int offset; unsigned int offset;
......
...@@ -1342,12 +1342,8 @@ gl::Error Renderer9::applyIndexBuffer(const gl::Context *context, ...@@ -1342,12 +1342,8 @@ gl::Error Renderer9::applyIndexBuffer(const gl::Context *context,
{ {
gl::VertexArray *vao = context->getGLState().getVertexArray(); gl::VertexArray *vao = context->getGLState().getVertexArray();
gl::Buffer *elementArrayBuffer = vao->getElementArrayBuffer().get(); gl::Buffer *elementArrayBuffer = vao->getElementArrayBuffer().get();
gl::Error error = mIndexDataManager->prepareIndexData(context, type, count, elementArrayBuffer, ANGLE_TRY(mIndexDataManager->prepareIndexData(context, type, count, elementArrayBuffer, indices,
indices, indexInfo, false); indexInfo, false));
if (error.isError())
{
return error;
}
// Directly binding the storage buffer is not supported for d3d9 // Directly binding the storage buffer is not supported for d3d9
ASSERT(indexInfo->storage == nullptr); ASSERT(indexInfo->storage == nullptr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment