Commit ae108bd1 by Jamie Madill Committed by Commit Bot

Use angle::Result in front-end (Part 5)

Refactors gl::Buffer and implementation. Bug: angleproject:2491 Change-Id: Ic6860dac2faf33067965e7117ea8e98dc6a8dc7a Reviewed-on: https://chromium-review.googlesource.com/c/1283310Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent c2328a15
...@@ -71,11 +71,11 @@ const std::string &Buffer::getLabel() const ...@@ -71,11 +71,11 @@ const std::string &Buffer::getLabel() const
return mState.mLabel; return mState.mLabel;
} }
Error Buffer::bufferData(Context *context, angle::Result Buffer::bufferData(Context *context,
BufferBinding target, BufferBinding target,
const void *data, const void *data,
GLsizeiptr size, GLsizeiptr size,
BufferUsage usage) BufferUsage usage)
{ {
const void *dataForImpl = data; const void *dataForImpl = data;
...@@ -99,14 +99,14 @@ Error Buffer::bufferData(Context *context, ...@@ -99,14 +99,14 @@ Error Buffer::bufferData(Context *context,
// Notify when storage changes. // Notify when storage changes.
onStateChange(context, angle::SubjectMessage::STORAGE_CHANGED); onStateChange(context, angle::SubjectMessage::STORAGE_CHANGED);
return NoError(); return angle::Result::Continue();
} }
Error Buffer::bufferSubData(const Context *context, angle::Result Buffer::bufferSubData(const Context *context,
BufferBinding target, BufferBinding target,
const void *data, const void *data,
GLsizeiptr size, GLsizeiptr size,
GLintptr offset) GLintptr offset)
{ {
ANGLE_TRY(mImpl->setSubData(context, target, data, size, offset)); ANGLE_TRY(mImpl->setSubData(context, target, data, size, offset));
...@@ -115,14 +115,14 @@ Error Buffer::bufferSubData(const Context *context, ...@@ -115,14 +115,14 @@ Error Buffer::bufferSubData(const Context *context,
// Notify when data changes. // Notify when data changes.
onStateChange(context, angle::SubjectMessage::CONTENTS_CHANGED); onStateChange(context, angle::SubjectMessage::CONTENTS_CHANGED);
return NoError(); return angle::Result::Continue();
} }
Error Buffer::copyBufferSubData(const Context *context, angle::Result Buffer::copyBufferSubData(const Context *context,
Buffer *source, Buffer *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) GLsizeiptr size)
{ {
ANGLE_TRY( ANGLE_TRY(
mImpl->copySubData(context, source->getImplementation(), sourceOffset, destOffset, size)); mImpl->copySubData(context, source->getImplementation(), sourceOffset, destOffset, size));
...@@ -132,10 +132,10 @@ Error Buffer::copyBufferSubData(const Context *context, ...@@ -132,10 +132,10 @@ Error Buffer::copyBufferSubData(const Context *context,
// Notify when data changes. // Notify when data changes.
onStateChange(context, angle::SubjectMessage::CONTENTS_CHANGED); onStateChange(context, angle::SubjectMessage::CONTENTS_CHANGED);
return NoError(); return angle::Result::Continue();
} }
Error Buffer::map(const Context *context, GLenum access) angle::Result Buffer::map(const Context *context, GLenum access)
{ {
ASSERT(!mState.mMapped); ASSERT(!mState.mMapped);
...@@ -154,13 +154,13 @@ Error Buffer::map(const Context *context, GLenum access) ...@@ -154,13 +154,13 @@ Error Buffer::map(const Context *context, GLenum access)
// Notify when state changes. // Notify when state changes.
onStateChange(context, angle::SubjectMessage::RESOURCE_MAPPED); onStateChange(context, angle::SubjectMessage::RESOURCE_MAPPED);
return NoError(); return angle::Result::Continue();
} }
Error Buffer::mapRange(const Context *context, angle::Result Buffer::mapRange(const Context *context,
GLintptr offset, GLintptr offset,
GLsizeiptr length, GLsizeiptr length,
GLbitfield access) GLbitfield access)
{ {
ASSERT(!mState.mMapped); ASSERT(!mState.mMapped);
ASSERT(offset + length <= mState.mSize); ASSERT(offset + length <= mState.mSize);
...@@ -187,10 +187,10 @@ Error Buffer::mapRange(const Context *context, ...@@ -187,10 +187,10 @@ Error Buffer::mapRange(const Context *context,
// Notify when state changes. // Notify when state changes.
onStateChange(context, angle::SubjectMessage::RESOURCE_MAPPED); onStateChange(context, angle::SubjectMessage::RESOURCE_MAPPED);
return NoError(); return angle::Result::Continue();
} }
Error Buffer::unmap(const Context *context, GLboolean *result) angle::Result Buffer::unmap(const Context *context, GLboolean *result)
{ {
ASSERT(mState.mMapped); ASSERT(mState.mMapped);
...@@ -207,7 +207,7 @@ Error Buffer::unmap(const Context *context, GLboolean *result) ...@@ -207,7 +207,7 @@ Error Buffer::unmap(const Context *context, GLboolean *result)
// Notify when data changes. // Notify when data changes.
onStateChange(context, angle::SubjectMessage::RESOURCE_UNMAPPED); onStateChange(context, angle::SubjectMessage::RESOURCE_UNMAPPED);
return NoError(); return angle::Result::Continue();
} }
void Buffer::onTransformFeedback(const Context *context) void Buffer::onTransformFeedback(const Context *context)
...@@ -226,16 +226,16 @@ void Buffer::onPixelPack(const Context *context) ...@@ -226,16 +226,16 @@ void Buffer::onPixelPack(const Context *context)
onStateChange(context, angle::SubjectMessage::CONTENTS_CHANGED); onStateChange(context, angle::SubjectMessage::CONTENTS_CHANGED);
} }
Error Buffer::getIndexRange(const gl::Context *context, angle::Result Buffer::getIndexRange(const gl::Context *context,
GLenum type, GLenum type,
size_t offset, size_t offset,
size_t count, size_t count,
bool primitiveRestartEnabled, bool primitiveRestartEnabled,
IndexRange *outRange) const IndexRange *outRange) const
{ {
if (mIndexRangeCache.findRange(type, offset, count, primitiveRestartEnabled, outRange)) if (mIndexRangeCache.findRange(type, offset, count, primitiveRestartEnabled, outRange))
{ {
return NoError(); return angle::Result::Continue();
} }
ANGLE_TRY( ANGLE_TRY(
...@@ -243,7 +243,7 @@ Error Buffer::getIndexRange(const gl::Context *context, ...@@ -243,7 +243,7 @@ Error Buffer::getIndexRange(const gl::Context *context,
mIndexRangeCache.addRange(type, offset, count, primitiveRestartEnabled, *outRange); mIndexRangeCache.addRange(type, offset, count, primitiveRestartEnabled, *outRange);
return NoError(); return angle::Result::Continue();
} }
GLint Buffer::getMemorySize() const GLint Buffer::getMemorySize() const
......
...@@ -36,8 +36,6 @@ class BufferState final : angle::NonCopyable ...@@ -36,8 +36,6 @@ class BufferState final : angle::NonCopyable
BufferState(); BufferState();
~BufferState(); ~BufferState();
const std::string &getLabel();
BufferUsage getUsage() const { return mUsage; } BufferUsage getUsage() const { return mUsage; }
GLbitfield getAccessFlags() const { return mAccessFlags; } GLbitfield getAccessFlags() const { return mAccessFlags; }
GLenum getAccess() const { return mAccess; } GLenum getAccess() const { return mAccess; }
...@@ -78,35 +76,38 @@ class Buffer final : public RefCountObject, ...@@ -78,35 +76,38 @@ class Buffer final : public RefCountObject,
void setLabel(const std::string &label) override; void setLabel(const std::string &label) override;
const std::string &getLabel() const override; const std::string &getLabel() const override;
Error bufferData(Context *context, angle::Result bufferData(Context *context,
BufferBinding target, BufferBinding target,
const void *data, const void *data,
GLsizeiptr size, GLsizeiptr size,
BufferUsage usage); BufferUsage usage);
Error bufferSubData(const Context *context, angle::Result bufferSubData(const Context *context,
BufferBinding target, BufferBinding target,
const void *data, const void *data,
GLsizeiptr size, GLsizeiptr size,
GLintptr offset); GLintptr offset);
Error copyBufferSubData(const Context *context, angle::Result copyBufferSubData(const Context *context,
Buffer *source, Buffer *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size); GLsizeiptr size);
Error map(const Context *context, GLenum access); angle::Result map(const Context *context, GLenum access);
Error mapRange(const Context *context, GLintptr offset, GLsizeiptr length, GLbitfield access); angle::Result mapRange(const Context *context,
Error unmap(const Context *context, GLboolean *result); GLintptr offset,
GLsizeiptr length,
GLbitfield access);
angle::Result unmap(const Context *context, GLboolean *result);
// These are called when another operation changes Buffer data. // These are called when another operation changes Buffer data.
void onTransformFeedback(const Context *context); void onTransformFeedback(const Context *context);
void onPixelPack(const Context *context); void onPixelPack(const Context *context);
Error getIndexRange(const gl::Context *context, angle::Result getIndexRange(const gl::Context *context,
GLenum type, GLenum type,
size_t offset, size_t offset,
size_t count, size_t count,
bool primitiveRestartEnabled, bool primitiveRestartEnabled,
IndexRange *outRange) const; IndexRange *outRange) const;
BufferUsage getUsage() const { return mState.mUsage; } BufferUsage getUsage() const { return mState.mUsage; }
GLbitfield getAccessFlags() const { return mState.mAccessFlags; } GLbitfield getAccessFlags() const { return mState.mAccessFlags; }
......
...@@ -35,35 +35,35 @@ class BufferImpl : public angle::Subject ...@@ -35,35 +35,35 @@ class BufferImpl : public angle::Subject
virtual ~BufferImpl() {} virtual ~BufferImpl() {}
virtual void destroy(const gl::Context *context) {} virtual void destroy(const gl::Context *context) {}
virtual gl::Error setData(const gl::Context *context, virtual angle::Result setData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
gl::BufferUsage usage) = 0; gl::BufferUsage usage) = 0;
virtual gl::Error setSubData(const gl::Context *context, virtual angle::Result setSubData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
size_t offset) = 0; size_t offset) = 0;
virtual gl::Error copySubData(const gl::Context *context, virtual angle::Result copySubData(const gl::Context *context,
BufferImpl *source, BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) = 0; GLsizeiptr size) = 0;
virtual gl::Error map(const gl::Context *context, GLenum access, void **mapPtr) = 0; virtual angle::Result map(const gl::Context *context, GLenum access, void **mapPtr) = 0;
virtual gl::Error mapRange(const gl::Context *context, virtual angle::Result mapRange(const gl::Context *context,
size_t offset, size_t offset,
size_t length, size_t length,
GLbitfield access, GLbitfield access,
void **mapPtr) = 0; void **mapPtr) = 0;
virtual gl::Error unmap(const gl::Context *context, GLboolean *result) = 0; virtual angle::Result unmap(const gl::Context *context, GLboolean *result) = 0;
virtual gl::Error getIndexRange(const gl::Context *context, virtual angle::Result getIndexRange(const gl::Context *context,
GLenum type, GLenum type,
size_t offset, size_t offset,
size_t count, size_t count,
bool primitiveRestartEnabled, bool primitiveRestartEnabled,
gl::IndexRange *outRange) = 0; gl::IndexRange *outRange) = 0;
// Override if accurate native memory size information is available // Override if accurate native memory size information is available
virtual GLint getMemorySize() const { return 0; } virtual GLint getMemorySize() const { return 0; }
......
...@@ -22,21 +22,30 @@ class MockBufferImpl : public BufferImpl ...@@ -22,21 +22,30 @@ class MockBufferImpl : public BufferImpl
MockBufferImpl() : BufferImpl(mMockState) {} MockBufferImpl() : BufferImpl(mMockState) {}
~MockBufferImpl() { destructor(); } ~MockBufferImpl() { destructor(); }
MOCK_METHOD5(setData,
angle::Result(const gl::Context *,
gl::BufferBinding,
const void *,
size_t,
gl::BufferUsage));
MOCK_METHOD5( MOCK_METHOD5(
setData, setSubData,
gl::Error(const gl::Context *, gl::BufferBinding, const void *, size_t, gl::BufferUsage)); angle::Result(const gl::Context *, gl::BufferBinding, const void *, size_t, size_t));
MOCK_METHOD5(setSubData, MOCK_METHOD5(copySubData,
gl::Error(const gl::Context *, gl::BufferBinding, const void *, size_t, size_t)); angle::Result(const gl::Context *contextImpl,
BufferImpl *,
GLintptr,
GLintptr,
GLsizeiptr));
MOCK_METHOD3(map, angle::Result(const gl::Context *contextImpl, GLenum, void **));
MOCK_METHOD5( MOCK_METHOD5(
copySubData, mapRange,
gl::Error(const gl::Context *contextImpl, BufferImpl *, GLintptr, GLintptr, GLsizeiptr)); angle::Result(const gl::Context *contextImpl, size_t, size_t, GLbitfield, void **));
MOCK_METHOD3(map, gl::Error(const gl::Context *contextImpl, GLenum, void **)); MOCK_METHOD2(unmap, angle::Result(const gl::Context *contextImpl, GLboolean *result));
MOCK_METHOD5(mapRange,
gl::Error(const gl::Context *contextImpl, size_t, size_t, GLbitfield, void **)); MOCK_METHOD6(
MOCK_METHOD2(unmap, gl::Error(const gl::Context *contextImpl, GLboolean *result)); getIndexRange,
angle::Result(const gl::Context *, GLenum, size_t, size_t, bool, gl::IndexRange *));
MOCK_METHOD6(getIndexRange,
gl::Error(const gl::Context *, GLenum, size_t, size_t, bool, gl::IndexRange *));
MOCK_METHOD0(destructor, void()); MOCK_METHOD0(destructor, void());
......
...@@ -174,18 +174,18 @@ void BufferD3D::promoteStaticUsage(const gl::Context *context, size_t dataSize) ...@@ -174,18 +174,18 @@ void BufferD3D::promoteStaticUsage(const gl::Context *context, size_t dataSize)
} }
} }
gl::Error BufferD3D::getIndexRange(const gl::Context *context, angle::Result BufferD3D::getIndexRange(const gl::Context *context,
GLenum type, GLenum type,
size_t offset, size_t offset,
size_t count, size_t count,
bool primitiveRestartEnabled, bool primitiveRestartEnabled,
gl::IndexRange *outRange) gl::IndexRange *outRange)
{ {
const uint8_t *data = nullptr; const uint8_t *data = nullptr;
ANGLE_TRY(getData(context, &data)); ANGLE_TRY(getData(context, &data));
*outRange = gl::ComputeIndexRange(type, data + offset, count, primitiveRestartEnabled); *outRange = gl::ComputeIndexRange(type, data + offset, count, primitiveRestartEnabled);
return gl::NoError(); return angle::Result::Continue();
} }
} // namespace rx } // namespace rx
...@@ -57,12 +57,12 @@ class BufferD3D : public BufferImpl ...@@ -57,12 +57,12 @@ class BufferD3D : public BufferImpl
void promoteStaticUsage(const gl::Context *context, size_t dataSize); void promoteStaticUsage(const gl::Context *context, size_t dataSize);
gl::Error getIndexRange(const gl::Context *context, angle::Result getIndexRange(const gl::Context *context,
GLenum type, GLenum type,
size_t offset, size_t offset,
size_t count, size_t count,
bool primitiveRestartEnabled, bool primitiveRestartEnabled,
gl::IndexRange *outRange) override; gl::IndexRange *outRange) override;
BufferFactoryD3D *getFactory() const { return mFactory; } BufferFactoryD3D *getFactory() const { return mFactory; }
D3DBufferUsage getUsage() const { return mUsage; } D3DBufferUsage getUsage() const { return mUsage; }
......
...@@ -337,15 +337,14 @@ Buffer11::~Buffer11() ...@@ -337,15 +337,14 @@ Buffer11::~Buffer11()
mRenderer->onBufferDelete(this); mRenderer->onBufferDelete(this);
} }
gl::Error Buffer11::setData(const gl::Context *context, angle::Result Buffer11::setData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
gl::BufferUsage usage) gl::BufferUsage usage)
{ {
updateD3DBufferUsage(context, usage); updateD3DBufferUsage(context, usage);
ANGLE_TRY(setSubData(context, target, data, size, 0)); return setSubData(context, target, data, size, 0);
return gl::NoError();
} }
angle::Result Buffer11::getData(const gl::Context *context, const uint8_t **outData) angle::Result Buffer11::getData(const gl::Context *context, const uint8_t **outData)
...@@ -367,11 +366,11 @@ angle::Result Buffer11::getData(const gl::Context *context, const uint8_t **outD ...@@ -367,11 +366,11 @@ angle::Result Buffer11::getData(const gl::Context *context, const uint8_t **outD
return angle::Result::Continue(); return angle::Result::Continue();
} }
gl::Error Buffer11::setSubData(const gl::Context *context, angle::Result Buffer11::setSubData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
size_t offset) size_t offset)
{ {
size_t requiredSize = size + offset; size_t requiredSize = size + offset;
...@@ -424,14 +423,14 @@ gl::Error Buffer11::setSubData(const gl::Context *context, ...@@ -424,14 +423,14 @@ gl::Error Buffer11::setSubData(const gl::Context *context,
mSize = std::max(mSize, requiredSize); mSize = std::max(mSize, requiredSize);
invalidateStaticData(context); invalidateStaticData(context);
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error Buffer11::copySubData(const gl::Context *context, angle::Result Buffer11::copySubData(const gl::Context *context,
BufferImpl *source, BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) GLsizeiptr size)
{ {
Buffer11 *sourceBuffer = GetAs<Buffer11>(source); Buffer11 *sourceBuffer = GetAs<Buffer11>(source);
ASSERT(sourceBuffer != nullptr); ASSERT(sourceBuffer != nullptr);
...@@ -488,10 +487,10 @@ gl::Error Buffer11::copySubData(const gl::Context *context, ...@@ -488,10 +487,10 @@ gl::Error Buffer11::copySubData(const gl::Context *context,
mSize = std::max<size_t>(mSize, destOffset + size); mSize = std::max<size_t>(mSize, destOffset + size);
invalidateStaticData(context); invalidateStaticData(context);
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error Buffer11::map(const gl::Context *context, GLenum access, void **mapPtr) angle::Result Buffer11::map(const gl::Context *context, GLenum access, void **mapPtr)
{ {
// GL_OES_mapbuffer uses an enum instead of a bitfield for it's access, convert to a bitfield // GL_OES_mapbuffer uses an enum instead of a bitfield for it's access, convert to a bitfield
// and call mapRange. // and call mapRange.
...@@ -499,11 +498,11 @@ gl::Error Buffer11::map(const gl::Context *context, GLenum access, void **mapPtr ...@@ -499,11 +498,11 @@ gl::Error Buffer11::map(const gl::Context *context, GLenum access, void **mapPtr
return mapRange(context, 0, mSize, GL_MAP_WRITE_BIT, mapPtr); return mapRange(context, 0, mSize, GL_MAP_WRITE_BIT, mapPtr);
} }
gl::Error Buffer11::mapRange(const gl::Context *context, angle::Result Buffer11::mapRange(const gl::Context *context,
size_t offset, size_t offset,
size_t length, size_t length,
GLbitfield access, GLbitfield access,
void **mapPtr) void **mapPtr)
{ {
ASSERT(!mMappedStorage); ASSERT(!mMappedStorage);
...@@ -538,10 +537,10 @@ gl::Error Buffer11::mapRange(const gl::Context *context, ...@@ -538,10 +537,10 @@ gl::Error Buffer11::mapRange(const gl::Context *context,
ASSERT(mappedBuffer); ASSERT(mappedBuffer);
*mapPtr = static_cast<void *>(mappedBuffer); *mapPtr = static_cast<void *>(mappedBuffer);
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error Buffer11::unmap(const gl::Context *context, GLboolean *result) angle::Result Buffer11::unmap(const gl::Context *context, GLboolean *result)
{ {
ASSERT(mMappedStorage); ASSERT(mMappedStorage);
mMappedStorage->unmap(); mMappedStorage->unmap();
...@@ -550,7 +549,7 @@ gl::Error Buffer11::unmap(const gl::Context *context, GLboolean *result) ...@@ -550,7 +549,7 @@ gl::Error Buffer11::unmap(const gl::Context *context, GLboolean *result)
// TODO: detect if we had corruption. if so, return false. // TODO: detect if we had corruption. if so, return false.
*result = GL_TRUE; *result = GL_TRUE;
return gl::NoError(); return angle::Result::Continue();
} }
angle::Result Buffer11::markTransformFeedbackUsage(const gl::Context *context) angle::Result Buffer11::markTransformFeedbackUsage(const gl::Context *context)
......
...@@ -85,28 +85,28 @@ class Buffer11 : public BufferD3D ...@@ -85,28 +85,28 @@ class Buffer11 : public BufferD3D
void invalidateStaticData(const gl::Context *context) override; void invalidateStaticData(const gl::Context *context) override;
// BufferImpl implementation // BufferImpl implementation
gl::Error setData(const gl::Context *context, angle::Result setData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
gl::BufferUsage usage) override; gl::BufferUsage usage) override;
gl::Error setSubData(const gl::Context *context, angle::Result setSubData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
size_t offset) override; size_t offset) override;
gl::Error copySubData(const gl::Context *context, angle::Result copySubData(const gl::Context *context,
BufferImpl *source, BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) override; GLsizeiptr size) override;
gl::Error map(const gl::Context *context, GLenum access, void **mapPtr) override; angle::Result map(const gl::Context *context, GLenum access, void **mapPtr) override;
gl::Error mapRange(const gl::Context *context, angle::Result mapRange(const gl::Context *context,
size_t offset, size_t offset,
size_t length, size_t length,
GLbitfield access, GLbitfield access,
void **mapPtr) override; void **mapPtr) override;
gl::Error unmap(const gl::Context *context, GLboolean *result) override; angle::Result unmap(const gl::Context *context, GLboolean *result) override;
angle::Result markTransformFeedbackUsage(const gl::Context *context) override; angle::Result markTransformFeedbackUsage(const gl::Context *context) override;
private: private:
......
...@@ -34,18 +34,15 @@ bool Buffer9::supportsDirectBinding() const ...@@ -34,18 +34,15 @@ bool Buffer9::supportsDirectBinding() const
return false; return false;
} }
gl::Error Buffer9::setData(const gl::Context *context, angle::Result Buffer9::setData(const gl::Context *context,
gl::BufferBinding /*target*/, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
gl::BufferUsage usage) gl::BufferUsage usage)
{ {
if (size > mMemory.size()) if (size > mMemory.size())
{ {
if (!mMemory.resize(size)) ANGLE_CHECK_HR_ALLOC(GetImplAs<Context9>(context), mMemory.resize(size));
{
return gl::OutOfMemory() << "Failed to resize internal buffer.";
}
} }
mSize = size; mSize = size;
...@@ -58,7 +55,7 @@ gl::Error Buffer9::setData(const gl::Context *context, ...@@ -58,7 +55,7 @@ gl::Error Buffer9::setData(const gl::Context *context,
invalidateStaticData(context); invalidateStaticData(context);
return gl::NoError(); return angle::Result::Continue();
} }
angle::Result Buffer9::getData(const gl::Context *context, const uint8_t **outData) angle::Result Buffer9::getData(const gl::Context *context, const uint8_t **outData)
...@@ -67,18 +64,15 @@ angle::Result Buffer9::getData(const gl::Context *context, const uint8_t **outDa ...@@ -67,18 +64,15 @@ angle::Result Buffer9::getData(const gl::Context *context, const uint8_t **outDa
return angle::Result::Continue(); return angle::Result::Continue();
} }
gl::Error Buffer9::setSubData(const gl::Context *context, angle::Result Buffer9::setSubData(const gl::Context *context,
gl::BufferBinding /*target*/, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
size_t offset) size_t offset)
{ {
if (offset + size > mMemory.size()) if (offset + size > mMemory.size())
{ {
if (!mMemory.resize(offset + size)) ANGLE_CHECK_HR_ALLOC(GetImplAs<Context9>(context), mMemory.resize(size + offset));
{
return gl::OutOfMemory() << "Failed to resize internal buffer.";
}
} }
mSize = std::max(mSize, offset + size); mSize = std::max(mSize, offset + size);
...@@ -89,14 +83,14 @@ gl::Error Buffer9::setSubData(const gl::Context *context, ...@@ -89,14 +83,14 @@ gl::Error Buffer9::setSubData(const gl::Context *context,
invalidateStaticData(context); invalidateStaticData(context);
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error Buffer9::copySubData(const gl::Context *context, angle::Result Buffer9::copySubData(const gl::Context *context,
BufferImpl *source, BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) GLsizeiptr size)
{ {
// Note: this method is currently unreachable // Note: this method is currently unreachable
Buffer9 *sourceBuffer = GetAs<Buffer9>(source); Buffer9 *sourceBuffer = GetAs<Buffer9>(source);
...@@ -106,30 +100,30 @@ gl::Error Buffer9::copySubData(const gl::Context *context, ...@@ -106,30 +100,30 @@ gl::Error Buffer9::copySubData(const gl::Context *context,
invalidateStaticData(context); invalidateStaticData(context);
return gl::NoError(); return angle::Result::Continue();
} }
// We do not support buffer mapping in D3D9 // We do not support buffer mapping in D3D9
gl::Error Buffer9::map(const gl::Context *context, GLenum access, void **mapPtr) angle::Result Buffer9::map(const gl::Context *context, GLenum access, void **mapPtr)
{ {
UNREACHABLE(); ANGLE_HR_UNREACHABLE(GetImplAs<Context9>(context));
return gl::InternalError(); return angle::Result::Stop();
} }
gl::Error Buffer9::mapRange(const gl::Context *context, angle::Result Buffer9::mapRange(const gl::Context *context,
size_t offset, size_t offset,
size_t length, size_t length,
GLbitfield access, GLbitfield access,
void **mapPtr) void **mapPtr)
{ {
UNREACHABLE(); ANGLE_HR_UNREACHABLE(GetImplAs<Context9>(context));
return gl::InternalError(); return angle::Result::Stop();
} }
gl::Error Buffer9::unmap(const gl::Context *context, GLboolean *result) angle::Result Buffer9::unmap(const gl::Context *context, GLboolean *result)
{ {
UNREACHABLE(); ANGLE_HR_UNREACHABLE(GetImplAs<Context9>(context));
return gl::InternalError(); return angle::Result::Stop();
} }
angle::Result Buffer9::markTransformFeedbackUsage(const gl::Context *context) angle::Result Buffer9::markTransformFeedbackUsage(const gl::Context *context)
......
...@@ -29,28 +29,28 @@ class Buffer9 : public BufferD3D ...@@ -29,28 +29,28 @@ class Buffer9 : public BufferD3D
angle::Result getData(const gl::Context *context, const uint8_t **outData) override; angle::Result getData(const gl::Context *context, const uint8_t **outData) override;
// BufferImpl implementation // BufferImpl implementation
gl::Error setData(const gl::Context *context, angle::Result setData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
gl::BufferUsage usage) override; gl::BufferUsage usage) override;
gl::Error setSubData(const gl::Context *context, angle::Result setSubData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
size_t offset) override; size_t offset) override;
gl::Error copySubData(const gl::Context *context, angle::Result copySubData(const gl::Context *context,
BufferImpl *source, BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) override; GLsizeiptr size) override;
gl::Error map(const gl::Context *context, GLenum access, void **mapPtr) override; angle::Result map(const gl::Context *context, GLenum access, void **mapPtr) override;
gl::Error mapRange(const gl::Context *context, angle::Result mapRange(const gl::Context *context,
size_t offset, size_t offset,
size_t length, size_t length,
GLbitfield access, GLbitfield access,
void **mapPtr) override; void **mapPtr) override;
gl::Error unmap(const gl::Context *context, GLboolean *result) override; angle::Result unmap(const gl::Context *context, GLboolean *result) override;
angle::Result markTransformFeedbackUsage(const gl::Context *context) override; angle::Result markTransformFeedbackUsage(const gl::Context *context) override;
private: private:
......
...@@ -10,8 +10,10 @@ ...@@ -10,8 +10,10 @@
#include "common/debug.h" #include "common/debug.h"
#include "common/utilities.h" #include "common/utilities.h"
#include "libANGLE/Context.h"
#include "libANGLE/angletypes.h" #include "libANGLE/angletypes.h"
#include "libANGLE/formatutils.h" #include "libANGLE/formatutils.h"
#include "libANGLE/renderer/gl/ContextGL.h"
#include "libANGLE/renderer/gl/FunctionsGL.h" #include "libANGLE/renderer/gl/FunctionsGL.h"
#include "libANGLE/renderer/gl/StateManagerGL.h" #include "libANGLE/renderer/gl/StateManagerGL.h"
#include "libANGLE/renderer/gl/renderergl_utils.h" #include "libANGLE/renderer/gl/renderergl_utils.h"
...@@ -55,21 +57,18 @@ BufferGL::~BufferGL() ...@@ -55,21 +57,18 @@ BufferGL::~BufferGL()
mBufferID = 0; mBufferID = 0;
} }
gl::Error BufferGL::setData(const gl::Context * /*context*/, angle::Result BufferGL::setData(const gl::Context *context,
gl::BufferBinding /*target*/, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
gl::BufferUsage usage) gl::BufferUsage usage)
{ {
mStateManager->bindBuffer(DestBufferOperationTarget, mBufferID); mStateManager->bindBuffer(DestBufferOperationTarget, mBufferID);
mFunctions->bufferData(gl::ToGLenum(DestBufferOperationTarget), size, data, ToGLenum(usage)); mFunctions->bufferData(gl::ToGLenum(DestBufferOperationTarget), size, data, ToGLenum(usage));
if (mShadowBufferData) if (mShadowBufferData)
{ {
if (!mShadowCopy.resize(size)) ANGLE_CHECK_GL_ALLOC(GetImplAs<ContextGL>(context), mShadowCopy.resize(size));
{
return gl::OutOfMemory() << "Failed to resize buffer data shadow copy.";
}
if (size > 0 && data != nullptr) if (size > 0 && data != nullptr)
{ {
...@@ -79,14 +78,14 @@ gl::Error BufferGL::setData(const gl::Context * /*context*/, ...@@ -79,14 +78,14 @@ gl::Error BufferGL::setData(const gl::Context * /*context*/,
mBufferSize = size; mBufferSize = size;
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferGL::setSubData(const gl::Context * /*context*/, angle::Result BufferGL::setSubData(const gl::Context *context,
gl::BufferBinding /*target*/, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
size_t offset) size_t offset)
{ {
mStateManager->bindBuffer(DestBufferOperationTarget, mBufferID); mStateManager->bindBuffer(DestBufferOperationTarget, mBufferID);
mFunctions->bufferSubData(gl::ToGLenum(DestBufferOperationTarget), offset, size, data); mFunctions->bufferSubData(gl::ToGLenum(DestBufferOperationTarget), offset, size, data);
...@@ -96,14 +95,14 @@ gl::Error BufferGL::setSubData(const gl::Context * /*context*/, ...@@ -96,14 +95,14 @@ gl::Error BufferGL::setSubData(const gl::Context * /*context*/,
memcpy(mShadowCopy.data() + offset, data, size); memcpy(mShadowCopy.data() + offset, data, size);
} }
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferGL::copySubData(const gl::Context *context, angle::Result BufferGL::copySubData(const gl::Context *context,
BufferImpl *source, BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) GLsizeiptr size)
{ {
BufferGL *sourceGL = GetAs<BufferGL>(source); BufferGL *sourceGL = GetAs<BufferGL>(source);
...@@ -120,10 +119,10 @@ gl::Error BufferGL::copySubData(const gl::Context *context, ...@@ -120,10 +119,10 @@ gl::Error BufferGL::copySubData(const gl::Context *context,
memcpy(mShadowCopy.data() + destOffset, sourceGL->mShadowCopy.data() + sourceOffset, size); memcpy(mShadowCopy.data() + destOffset, sourceGL->mShadowCopy.data() + sourceOffset, size);
} }
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferGL::map(const gl::Context *context, GLenum access, void **mapPtr) angle::Result BufferGL::map(const gl::Context *context, GLenum access, void **mapPtr)
{ {
if (mShadowBufferData) if (mShadowBufferData)
{ {
...@@ -146,14 +145,14 @@ gl::Error BufferGL::map(const gl::Context *context, GLenum access, void **mapPtr ...@@ -146,14 +145,14 @@ gl::Error BufferGL::map(const gl::Context *context, GLenum access, void **mapPtr
mMapOffset = 0; mMapOffset = 0;
mMapSize = mBufferSize; mMapSize = mBufferSize;
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferGL::mapRange(const gl::Context *context, angle::Result BufferGL::mapRange(const gl::Context *context,
size_t offset, size_t offset,
size_t length, size_t length,
GLbitfield access, GLbitfield access,
void **mapPtr) void **mapPtr)
{ {
if (mShadowBufferData) if (mShadowBufferData)
{ {
...@@ -170,10 +169,10 @@ gl::Error BufferGL::mapRange(const gl::Context *context, ...@@ -170,10 +169,10 @@ gl::Error BufferGL::mapRange(const gl::Context *context,
mMapOffset = offset; mMapOffset = offset;
mMapSize = length; mMapSize = length;
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferGL::unmap(const gl::Context *context, GLboolean *result) angle::Result BufferGL::unmap(const gl::Context *context, GLboolean *result)
{ {
ASSERT(result); ASSERT(result);
ASSERT(mIsMapped); ASSERT(mIsMapped);
...@@ -192,15 +191,15 @@ gl::Error BufferGL::unmap(const gl::Context *context, GLboolean *result) ...@@ -192,15 +191,15 @@ gl::Error BufferGL::unmap(const gl::Context *context, GLboolean *result)
} }
mIsMapped = false; mIsMapped = false;
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferGL::getIndexRange(const gl::Context *context, angle::Result BufferGL::getIndexRange(const gl::Context *context,
GLenum type, GLenum type,
size_t offset, size_t offset,
size_t count, size_t count,
bool primitiveRestartEnabled, bool primitiveRestartEnabled,
gl::IndexRange *outRange) gl::IndexRange *outRange)
{ {
ASSERT(!mIsMapped); ASSERT(!mIsMapped);
...@@ -221,7 +220,7 @@ gl::Error BufferGL::getIndexRange(const gl::Context *context, ...@@ -221,7 +220,7 @@ gl::Error BufferGL::getIndexRange(const gl::Context *context,
mFunctions->unmapBuffer(gl::ToGLenum(DestBufferOperationTarget)); mFunctions->unmapBuffer(gl::ToGLenum(DestBufferOperationTarget));
} }
return gl::NoError(); return angle::Result::Continue();
} }
GLuint BufferGL::getBufferID() const GLuint BufferGL::getBufferID() const
......
...@@ -26,35 +26,35 @@ class BufferGL : public BufferImpl ...@@ -26,35 +26,35 @@ class BufferGL : public BufferImpl
StateManagerGL *stateManager); StateManagerGL *stateManager);
~BufferGL() override; ~BufferGL() override;
gl::Error setData(const gl::Context *context, angle::Result setData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
gl::BufferUsage usage) override; gl::BufferUsage usage) override;
gl::Error setSubData(const gl::Context *context, angle::Result setSubData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
size_t offset) override; size_t offset) override;
gl::Error copySubData(const gl::Context *context, angle::Result copySubData(const gl::Context *context,
BufferImpl *source, BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) override; GLsizeiptr size) override;
gl::Error map(const gl::Context *context, GLenum access, void **mapPtr) override; angle::Result map(const gl::Context *context, GLenum access, void **mapPtr) override;
gl::Error mapRange(const gl::Context *context, angle::Result mapRange(const gl::Context *context,
size_t offset, size_t offset,
size_t length, size_t length,
GLbitfield access, GLbitfield access,
void **mapPtr) override; void **mapPtr) override;
gl::Error unmap(const gl::Context *context, GLboolean *result) override; angle::Result unmap(const gl::Context *context, GLboolean *result) override;
gl::Error getIndexRange(const gl::Context *context, angle::Result getIndexRange(const gl::Context *context,
GLenum type, GLenum type,
size_t offset, size_t offset,
size_t count, size_t count,
bool primitiveRestartEnabled, bool primitiveRestartEnabled,
gl::IndexRange *outRange) override; gl::IndexRange *outRange) override;
GLuint getBufferID() const; GLuint getBufferID() const;
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "common/debug.h" #include "common/debug.h"
#include "common/utilities.h" #include "common/utilities.h"
#include "libANGLE/Context.h"
#include "libANGLE/angletypes.h" #include "libANGLE/angletypes.h"
#include "libANGLE/renderer/null/ContextNULL.h" #include "libANGLE/renderer/null/ContextNULL.h"
...@@ -29,83 +30,81 @@ BufferNULL::~BufferNULL() ...@@ -29,83 +30,81 @@ BufferNULL::~BufferNULL()
ASSERT(memoryReleaseResult); ASSERT(memoryReleaseResult);
} }
gl::Error BufferNULL::setData(const gl::Context *context, angle::Result BufferNULL::setData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
gl::BufferUsage usage) gl::BufferUsage usage)
{ {
if (!mAllocationTracker->updateMemoryAllocation(mData.size(), size)) ANGLE_CHECK_GL_ALLOC(GetImplAs<ContextNULL>(context),
{ mAllocationTracker->updateMemoryAllocation(mData.size(), size));
return gl::OutOfMemory() << "Unable to allocate internal buffer storage.";
}
mData.resize(size, 0); mData.resize(size, 0);
if (size > 0 && data != nullptr) if (size > 0 && data != nullptr)
{ {
memcpy(mData.data(), data, size); memcpy(mData.data(), data, size);
} }
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferNULL::setSubData(const gl::Context *context, angle::Result BufferNULL::setSubData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
size_t offset) size_t offset)
{ {
if (size > 0) if (size > 0)
{ {
memcpy(mData.data() + offset, data, size); memcpy(mData.data() + offset, data, size);
} }
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferNULL::copySubData(const gl::Context *context, angle::Result BufferNULL::copySubData(const gl::Context *context,
BufferImpl *source, BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) GLsizeiptr size)
{ {
BufferNULL *sourceNULL = GetAs<BufferNULL>(source); BufferNULL *sourceNULL = GetAs<BufferNULL>(source);
if (size > 0) if (size > 0)
{ {
memcpy(mData.data() + destOffset, sourceNULL->mData.data() + sourceOffset, size); memcpy(mData.data() + destOffset, sourceNULL->mData.data() + sourceOffset, size);
} }
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferNULL::map(const gl::Context *context, GLenum access, void **mapPtr) angle::Result BufferNULL::map(const gl::Context *context, GLenum access, void **mapPtr)
{ {
*mapPtr = mData.data(); *mapPtr = mData.data();
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferNULL::mapRange(const gl::Context *context, angle::Result BufferNULL::mapRange(const gl::Context *context,
size_t offset, size_t offset,
size_t length, size_t length,
GLbitfield access, GLbitfield access,
void **mapPtr) void **mapPtr)
{ {
*mapPtr = mData.data() + offset; *mapPtr = mData.data() + offset;
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferNULL::unmap(const gl::Context *context, GLboolean *result) angle::Result BufferNULL::unmap(const gl::Context *context, GLboolean *result)
{ {
*result = GL_TRUE; *result = GL_TRUE;
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferNULL::getIndexRange(const gl::Context *context, angle::Result BufferNULL::getIndexRange(const gl::Context *context,
GLenum type, GLenum type,
size_t offset, size_t offset,
size_t count, size_t count,
bool primitiveRestartEnabled, bool primitiveRestartEnabled,
gl::IndexRange *outRange) gl::IndexRange *outRange)
{ {
*outRange = gl::ComputeIndexRange(type, mData.data() + offset, count, primitiveRestartEnabled); *outRange = gl::ComputeIndexRange(type, mData.data() + offset, count, primitiveRestartEnabled);
return gl::NoError(); return angle::Result::Continue();
} }
uint8_t *BufferNULL::getDataPtr() uint8_t *BufferNULL::getDataPtr()
......
...@@ -23,35 +23,35 @@ class BufferNULL : public BufferImpl ...@@ -23,35 +23,35 @@ class BufferNULL : public BufferImpl
BufferNULL(const gl::BufferState &state, AllocationTrackerNULL *allocationTracker); BufferNULL(const gl::BufferState &state, AllocationTrackerNULL *allocationTracker);
~BufferNULL() override; ~BufferNULL() override;
gl::Error setData(const gl::Context *context, angle::Result setData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
gl::BufferUsage usage) override; gl::BufferUsage usage) override;
gl::Error setSubData(const gl::Context *context, angle::Result setSubData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
size_t offset) override; size_t offset) override;
gl::Error copySubData(const gl::Context *context, angle::Result copySubData(const gl::Context *context,
BufferImpl *source, BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) override; GLsizeiptr size) override;
gl::Error map(const gl::Context *context, GLenum access, void **mapPtr) override; angle::Result map(const gl::Context *context, GLenum access, void **mapPtr) override;
gl::Error mapRange(const gl::Context *context, angle::Result mapRange(const gl::Context *context,
size_t offset, size_t offset,
size_t length, size_t length,
GLbitfield access, GLbitfield access,
void **mapPtr) override; void **mapPtr) override;
gl::Error unmap(const gl::Context *context, GLboolean *result) override; angle::Result unmap(const gl::Context *context, GLboolean *result) override;
gl::Error getIndexRange(const gl::Context *context, angle::Result getIndexRange(const gl::Context *context,
GLenum type, GLenum type,
size_t offset, size_t offset,
size_t count, size_t count,
bool primitiveRestartEnabled, bool primitiveRestartEnabled,
gl::IndexRange *outRange) override; gl::IndexRange *outRange) override;
uint8_t *getDataPtr(); uint8_t *getDataPtr();
const uint8_t *getDataPtr() const; const uint8_t *getDataPtr() const;
......
...@@ -39,11 +39,11 @@ void BufferVk::release(RendererVk *renderer) ...@@ -39,11 +39,11 @@ void BufferVk::release(RendererVk *renderer)
mBuffer.release(renderer); mBuffer.release(renderer);
} }
gl::Error BufferVk::setData(const gl::Context *context, angle::Result BufferVk::setData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
gl::BufferUsage usage) gl::BufferUsage usage)
{ {
ContextVk *contextVk = vk::GetImpl(context); ContextVk *contextVk = vk::GetImpl(context);
...@@ -79,40 +79,39 @@ gl::Error BufferVk::setData(const gl::Context *context, ...@@ -79,40 +79,39 @@ gl::Error BufferVk::setData(const gl::Context *context,
ANGLE_TRY(setDataImpl(contextVk, static_cast<const uint8_t *>(data), size, 0)); ANGLE_TRY(setDataImpl(contextVk, static_cast<const uint8_t *>(data), size, 0));
} }
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferVk::setSubData(const gl::Context *context, angle::Result BufferVk::setSubData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
size_t offset) size_t offset)
{ {
ASSERT(mBuffer.valid()); ASSERT(mBuffer.valid());
ContextVk *contextVk = vk::GetImpl(context); ContextVk *contextVk = vk::GetImpl(context);
ANGLE_TRY(setDataImpl(contextVk, static_cast<const uint8_t *>(data), size, offset)); ANGLE_TRY(setDataImpl(contextVk, static_cast<const uint8_t *>(data), size, offset));
return gl::NoError(); return angle::Result::Continue();
} }
gl::Error BufferVk::copySubData(const gl::Context *context, angle::Result BufferVk::copySubData(const gl::Context *context,
BufferImpl *source, BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) GLsizeiptr size)
{ {
UNIMPLEMENTED(); ANGLE_VK_UNREACHABLE(vk::GetImpl(context));
return gl::InternalError(); return angle::Result::Stop();
} }
gl::Error BufferVk::map(const gl::Context *context, GLenum access, void **mapPtr) angle::Result BufferVk::map(const gl::Context *context, GLenum access, void **mapPtr)
{ {
ASSERT(mBuffer.valid()); ASSERT(mBuffer.valid());
ContextVk *contextVk = vk::GetImpl(context); ContextVk *contextVk = vk::GetImpl(context);
ANGLE_TRY(mapImpl(contextVk, mapPtr)); return mapImpl(contextVk, mapPtr);
return gl::NoError();
} }
angle::Result BufferVk::mapImpl(ContextVk *contextVk, void **mapPtr) angle::Result BufferVk::mapImpl(ContextVk *contextVk, void **mapPtr)
...@@ -126,23 +125,21 @@ GLint64 BufferVk::getSize() ...@@ -126,23 +125,21 @@ GLint64 BufferVk::getSize()
return mState.getSize(); return mState.getSize();
} }
gl::Error BufferVk::mapRange(const gl::Context *context, angle::Result BufferVk::mapRange(const gl::Context *context,
size_t offset, size_t offset,
size_t length, size_t length,
GLbitfield access, GLbitfield access,
void **mapPtr) void **mapPtr)
{ {
ASSERT(mBuffer.valid()); ASSERT(mBuffer.valid());
ContextVk *contextVk = vk::GetImpl(context); ContextVk *contextVk = vk::GetImpl(context);
ANGLE_TRY(mBuffer.getDeviceMemory().map(contextVk, offset, length, 0, return mBuffer.getDeviceMemory().map(contextVk, offset, length, 0,
reinterpret_cast<uint8_t **>(mapPtr))); reinterpret_cast<uint8_t **>(mapPtr));
return gl::NoError();
} }
gl::Error BufferVk::unmap(const gl::Context *context, GLboolean *result) angle::Result BufferVk::unmap(const gl::Context *context, GLboolean *result)
{ {
return unmapImpl(vk::GetImpl(context)); return unmapImpl(vk::GetImpl(context));
} }
...@@ -156,12 +153,12 @@ angle::Result BufferVk::unmapImpl(ContextVk *contextVk) ...@@ -156,12 +153,12 @@ angle::Result BufferVk::unmapImpl(ContextVk *contextVk)
return angle::Result::Continue(); return angle::Result::Continue();
} }
gl::Error BufferVk::getIndexRange(const gl::Context *context, angle::Result BufferVk::getIndexRange(const gl::Context *context,
GLenum type, GLenum type,
size_t offset, size_t offset,
size_t count, size_t count,
bool primitiveRestartEnabled, bool primitiveRestartEnabled,
gl::IndexRange *outRange) gl::IndexRange *outRange)
{ {
ContextVk *contextVk = vk::GetImpl(context); ContextVk *contextVk = vk::GetImpl(context);
...@@ -180,7 +177,7 @@ gl::Error BufferVk::getIndexRange(const gl::Context *context, ...@@ -180,7 +177,7 @@ gl::Error BufferVk::getIndexRange(const gl::Context *context,
*outRange = gl::ComputeIndexRange(type, mapPointer, count, primitiveRestartEnabled); *outRange = gl::ComputeIndexRange(type, mapPointer, count, primitiveRestartEnabled);
mBuffer.getDeviceMemory().unmap(contextVk->getDevice()); mBuffer.getDeviceMemory().unmap(contextVk->getDevice());
return gl::NoError(); return angle::Result::Continue();
} }
angle::Result BufferVk::setDataImpl(ContextVk *contextVk, angle::Result BufferVk::setDataImpl(ContextVk *contextVk,
......
...@@ -25,35 +25,35 @@ class BufferVk : public BufferImpl ...@@ -25,35 +25,35 @@ class BufferVk : public BufferImpl
~BufferVk() override; ~BufferVk() override;
void destroy(const gl::Context *context) override; void destroy(const gl::Context *context) override;
gl::Error setData(const gl::Context *context, angle::Result setData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
gl::BufferUsage usage) override; gl::BufferUsage usage) override;
gl::Error setSubData(const gl::Context *context, angle::Result setSubData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
size_t offset) override; size_t offset) override;
gl::Error copySubData(const gl::Context *context, angle::Result copySubData(const gl::Context *context,
BufferImpl *source, BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) override; GLsizeiptr size) override;
gl::Error map(const gl::Context *context, GLenum access, void **mapPtr) override; angle::Result map(const gl::Context *context, GLenum access, void **mapPtr) override;
gl::Error mapRange(const gl::Context *context, angle::Result mapRange(const gl::Context *context,
size_t offset, size_t offset,
size_t length, size_t length,
GLbitfield access, GLbitfield access,
void **mapPtr) override; void **mapPtr) override;
gl::Error unmap(const gl::Context *context, GLboolean *result) override; angle::Result unmap(const gl::Context *context, GLboolean *result) override;
gl::Error getIndexRange(const gl::Context *context, angle::Result getIndexRange(const gl::Context *context,
GLenum type, GLenum type,
size_t offset, size_t offset,
size_t count, size_t count,
bool primitiveRestartEnabled, bool primitiveRestartEnabled,
gl::IndexRange *outRange) override; gl::IndexRange *outRange) override;
GLint64 getSize(); GLint64 getSize();
const vk::BufferHelper &getBuffer() const const vk::BufferHelper &getBuffer() const
......
...@@ -81,27 +81,28 @@ class MockBufferD3D : public rx::BufferD3D ...@@ -81,27 +81,28 @@ class MockBufferD3D : public rx::BufferD3D
MockBufferD3D(rx::BufferFactoryD3D *factory) : BufferD3D(mockState, factory), mData() {} MockBufferD3D(rx::BufferFactoryD3D *factory) : BufferD3D(mockState, factory), mData() {}
// BufferImpl // BufferImpl
gl::Error setData(const gl::Context *context, angle::Result setData(const gl::Context *context,
gl::BufferBinding target, gl::BufferBinding target,
const void *data, const void *data,
size_t size, size_t size,
gl::BufferUsage) override gl::BufferUsage) override
{ {
mData.resize(size); mData.resize(size);
if (data && size > 0) if (data && size > 0)
{ {
memcpy(&mData[0], data, size); memcpy(&mData[0], data, size);
} }
return gl::NoError(); return angle::Result::Continue();
} }
MOCK_METHOD5(setSubData, MOCK_METHOD5(
gl::Error(const gl::Context *, gl::BufferBinding, const void *, size_t, size_t)); setSubData,
angle::Result(const gl::Context *, gl::BufferBinding, const void *, size_t, size_t));
MOCK_METHOD5(copySubData, MOCK_METHOD5(copySubData,
gl::Error(const gl::Context *, BufferImpl *, GLintptr, GLintptr, GLsizeiptr)); angle::Result(const gl::Context *, BufferImpl *, GLintptr, GLintptr, GLsizeiptr));
MOCK_METHOD3(map, gl::Error(const gl::Context *context, GLenum, void **)); MOCK_METHOD3(map, angle::Result(const gl::Context *context, GLenum, void **));
MOCK_METHOD5(mapRange, gl::Error(const gl::Context *, size_t, size_t, GLbitfield, void **)); MOCK_METHOD5(mapRange, angle::Result(const gl::Context *, size_t, size_t, GLbitfield, void **));
MOCK_METHOD2(unmap, gl::Error(const gl::Context *context, GLboolean *)); MOCK_METHOD2(unmap, angle::Result(const gl::Context *context, GLboolean *));
// BufferD3D // BufferD3D
MOCK_METHOD1(markTransformFeedbackUsage, angle::Result(const gl::Context *)); MOCK_METHOD1(markTransformFeedbackUsage, angle::Result(const gl::Context *));
......
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