Commit 5f56ddb9 by Jamie Madill Committed by Commit Bot

Buffer: Pass Context to all impl methods.

This allows us to retrieve Device handles for Vulkan, and could allow us to avoid storing some pointers for other back-ends. BUG=angleproject:1684 Change-Id: Iccd5b97cf1c3a332d62a38ad0fcf21c352270439 Reviewed-on: https://chromium-review.googlesource.com/426400 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 34bf2d93
...@@ -82,20 +82,25 @@ Error Buffer::bufferSubData(const Context *context, ...@@ -82,20 +82,25 @@ Error Buffer::bufferSubData(const Context *context,
return NoError(); return NoError();
} }
Error Buffer::copyBufferSubData(Buffer* source, GLintptr sourceOffset, GLintptr destOffset, GLsizeiptr size) Error Buffer::copyBufferSubData(const Context *context,
Buffer *source,
GLintptr sourceOffset,
GLintptr destOffset,
GLsizeiptr size)
{ {
ANGLE_TRY(mImpl->copySubData(source->getImplementation(), sourceOffset, destOffset, size)); ANGLE_TRY(mImpl->copySubData(rx::SafeGetImpl(context), source->getImplementation(),
sourceOffset, destOffset, size));
mIndexRangeCache.invalidateRange(static_cast<unsigned int>(destOffset), static_cast<unsigned int>(size)); mIndexRangeCache.invalidateRange(static_cast<unsigned int>(destOffset), static_cast<unsigned int>(size));
return NoError(); return NoError();
} }
Error Buffer::map(GLenum access) Error Buffer::map(const Context *context, GLenum access)
{ {
ASSERT(!mState.mMapped); ASSERT(!mState.mMapped);
Error error = mImpl->map(access, &mState.mMapPointer); Error error = mImpl->map(rx::SafeGetImpl(context), access, &mState.mMapPointer);
if (error.isError()) if (error.isError())
{ {
mState.mMapPointer = nullptr; mState.mMapPointer = nullptr;
...@@ -114,12 +119,16 @@ Error Buffer::map(GLenum access) ...@@ -114,12 +119,16 @@ Error Buffer::map(GLenum access)
return error; return error;
} }
Error Buffer::mapRange(GLintptr offset, GLsizeiptr length, GLbitfield access) Error Buffer::mapRange(const Context *context,
GLintptr offset,
GLsizeiptr length,
GLbitfield access)
{ {
ASSERT(!mState.mMapped); ASSERT(!mState.mMapped);
ASSERT(offset + length <= mState.mSize); ASSERT(offset + length <= mState.mSize);
Error error = mImpl->mapRange(offset, length, access, &mState.mMapPointer); Error error =
mImpl->mapRange(rx::SafeGetImpl(context), offset, length, access, &mState.mMapPointer);
if (error.isError()) if (error.isError())
{ {
mState.mMapPointer = nullptr; mState.mMapPointer = nullptr;
...@@ -145,11 +154,11 @@ Error Buffer::mapRange(GLintptr offset, GLsizeiptr length, GLbitfield access) ...@@ -145,11 +154,11 @@ Error Buffer::mapRange(GLintptr offset, GLsizeiptr length, GLbitfield access)
return error; return error;
} }
Error Buffer::unmap(GLboolean *result) Error Buffer::unmap(const Context *context, GLboolean *result)
{ {
ASSERT(mState.mMapped); ASSERT(mState.mMapped);
Error error = mImpl->unmap(result); Error error = mImpl->unmap(rx::SafeGetImpl(context), result);
if (error.isError()) if (error.isError())
{ {
*result = GL_FALSE; *result = GL_FALSE;
......
...@@ -79,13 +79,14 @@ class Buffer final : public RefCountObject, public LabeledObject ...@@ -79,13 +79,14 @@ class Buffer final : public RefCountObject, public LabeledObject
const void *data, const void *data,
GLsizeiptr size, GLsizeiptr size,
GLintptr offset); GLintptr offset);
Error copyBufferSubData(Buffer *source, Error copyBufferSubData(const Context *context,
Buffer *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size); GLsizeiptr size);
Error map(GLenum access); Error map(const Context *context, GLenum access);
Error mapRange(GLintptr offset, GLsizeiptr length, GLbitfield access); Error mapRange(const Context *context, GLintptr offset, GLsizeiptr length, GLbitfield access);
Error unmap(GLboolean *result); Error unmap(const Context *context, GLboolean *result);
void onTransformFeedback(); void onTransformFeedback();
void onPixelUnpack(); void onPixelUnpack();
......
...@@ -3098,7 +3098,7 @@ GLvoid *Context::mapBuffer(GLenum target, GLenum access) ...@@ -3098,7 +3098,7 @@ GLvoid *Context::mapBuffer(GLenum target, GLenum access)
Buffer *buffer = mGLState.getTargetBuffer(target); Buffer *buffer = mGLState.getTargetBuffer(target);
ASSERT(buffer); ASSERT(buffer);
Error error = buffer->map(access); Error error = buffer->map(this, access);
if (error.isError()) if (error.isError())
{ {
handleError(error); handleError(error);
...@@ -3114,7 +3114,7 @@ GLboolean Context::unmapBuffer(GLenum target) ...@@ -3114,7 +3114,7 @@ GLboolean Context::unmapBuffer(GLenum target)
ASSERT(buffer); ASSERT(buffer);
GLboolean result; GLboolean result;
Error error = buffer->unmap(&result); Error error = buffer->unmap(this, &result);
if (error.isError()) if (error.isError())
{ {
handleError(error); handleError(error);
...@@ -3132,7 +3132,7 @@ GLvoid *Context::mapBufferRange(GLenum target, ...@@ -3132,7 +3132,7 @@ GLvoid *Context::mapBufferRange(GLenum target,
Buffer *buffer = mGLState.getTargetBuffer(target); Buffer *buffer = mGLState.getTargetBuffer(target);
ASSERT(buffer); ASSERT(buffer);
Error error = buffer->mapRange(offset, length, access); Error error = buffer->mapRange(this, offset, length, access);
if (error.isError()) if (error.isError())
{ {
handleError(error); handleError(error);
...@@ -3596,7 +3596,7 @@ void Context::copyBufferSubData(GLenum readTarget, ...@@ -3596,7 +3596,7 @@ void Context::copyBufferSubData(GLenum readTarget,
Buffer *readBuffer = mGLState.getTargetBuffer(readTarget); Buffer *readBuffer = mGLState.getTargetBuffer(readTarget);
Buffer *writeBuffer = mGLState.getTargetBuffer(writeTarget); Buffer *writeBuffer = mGLState.getTargetBuffer(writeTarget);
handleError(writeBuffer->copyBufferSubData(readBuffer, readOffset, writeOffset, size)); handleError(writeBuffer->copyBufferSubData(this, readBuffer, readOffset, writeOffset, size));
} }
void Context::bindAttribLocation(GLuint program, GLuint index, const GLchar *name) void Context::bindAttribLocation(GLuint program, GLuint index, const GLchar *name)
......
...@@ -40,13 +40,18 @@ class BufferImpl : angle::NonCopyable ...@@ -40,13 +40,18 @@ class BufferImpl : angle::NonCopyable
const void *data, const void *data,
size_t size, size_t size,
size_t offset) = 0; size_t offset) = 0;
virtual gl::Error copySubData(BufferImpl *source, virtual gl::Error copySubData(ContextImpl *contextImpl,
BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) = 0; GLsizeiptr size) = 0;
virtual gl::Error map(GLenum access, GLvoid **mapPtr) = 0; virtual gl::Error map(ContextImpl *contextImpl, GLenum access, GLvoid **mapPtr) = 0;
virtual gl::Error mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr) = 0; virtual gl::Error mapRange(ContextImpl *contextImpl,
virtual gl::Error unmap(GLboolean *result) = 0; size_t offset,
size_t length,
GLbitfield access,
GLvoid **mapPtr) = 0;
virtual gl::Error unmap(ContextImpl *contextImpl, GLboolean *result) = 0;
virtual gl::Error getIndexRange(GLenum type, virtual gl::Error getIndexRange(GLenum type,
size_t offset, size_t offset,
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "gmock/gmock.h" #include "gmock/gmock.h"
#include "libANGLE/Buffer.h"
#include "libANGLE/renderer/BufferImpl.h" #include "libANGLE/renderer/BufferImpl.h"
namespace rx namespace rx
...@@ -23,10 +24,12 @@ class MockBufferImpl : public BufferImpl ...@@ -23,10 +24,12 @@ class MockBufferImpl : public BufferImpl
MOCK_METHOD5(setData, gl::Error(ContextImpl *, GLenum, const void *, size_t, GLenum)); MOCK_METHOD5(setData, gl::Error(ContextImpl *, GLenum, const void *, size_t, GLenum));
MOCK_METHOD5(setSubData, gl::Error(ContextImpl *, GLenum, const void *, size_t, size_t)); MOCK_METHOD5(setSubData, gl::Error(ContextImpl *, GLenum, const void *, size_t, size_t));
MOCK_METHOD4(copySubData, gl::Error(BufferImpl *, GLintptr, GLintptr, GLsizeiptr)); MOCK_METHOD5(copySubData,
MOCK_METHOD2(map, gl::Error(GLenum, GLvoid **)); gl::Error(ContextImpl *contextImpl, BufferImpl *, GLintptr, GLintptr, GLsizeiptr));
MOCK_METHOD4(mapRange, gl::Error(size_t, size_t, GLbitfield, GLvoid **)); MOCK_METHOD3(map, gl::Error(ContextImpl *contextImpl, GLenum, GLvoid **));
MOCK_METHOD1(unmap, gl::Error(GLboolean *result)); MOCK_METHOD5(mapRange,
gl::Error(ContextImpl *contextImpl, size_t, size_t, GLbitfield, GLvoid **));
MOCK_METHOD2(unmap, gl::Error(ContextImpl *contextImpl, GLboolean *result));
MOCK_METHOD5(getIndexRange, gl::Error(GLenum, size_t, size_t, bool, gl::IndexRange *)); MOCK_METHOD5(getIndexRange, gl::Error(GLenum, size_t, size_t, bool, gl::IndexRange *));
......
...@@ -388,7 +388,8 @@ gl::Error Buffer11::setSubData(ContextImpl * /*context*/, ...@@ -388,7 +388,8 @@ gl::Error Buffer11::setSubData(ContextImpl * /*context*/,
return gl::NoError(); return gl::NoError();
} }
gl::Error Buffer11::copySubData(BufferImpl *source, gl::Error Buffer11::copySubData(ContextImpl *context,
BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) GLsizeiptr size)
...@@ -451,15 +452,19 @@ gl::Error Buffer11::copySubData(BufferImpl *source, ...@@ -451,15 +452,19 @@ gl::Error Buffer11::copySubData(BufferImpl *source,
return gl::NoError(); return gl::NoError();
} }
gl::Error Buffer11::map(GLenum access, GLvoid **mapPtr) gl::Error Buffer11::map(ContextImpl *context, GLenum access, GLvoid **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.
ASSERT(access == GL_WRITE_ONLY_OES); ASSERT(access == GL_WRITE_ONLY_OES);
return mapRange(0, mSize, GL_MAP_WRITE_BIT, mapPtr); return mapRange(context, 0, mSize, GL_MAP_WRITE_BIT, mapPtr);
} }
gl::Error Buffer11::mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr) gl::Error Buffer11::mapRange(ContextImpl *context,
size_t offset,
size_t length,
GLbitfield access,
GLvoid **mapPtr)
{ {
ASSERT(!mMappedStorage); ASSERT(!mMappedStorage);
...@@ -499,7 +504,7 @@ gl::Error Buffer11::mapRange(size_t offset, size_t length, GLbitfield access, GL ...@@ -499,7 +504,7 @@ gl::Error Buffer11::mapRange(size_t offset, size_t length, GLbitfield access, GL
return gl::NoError(); return gl::NoError();
} }
gl::Error Buffer11::unmap(GLboolean *result) gl::Error Buffer11::unmap(ContextImpl *context, GLboolean *result)
{ {
ASSERT(mMappedStorage); ASSERT(mMappedStorage);
mMappedStorage->unmap(); mMappedStorage->unmap();
......
...@@ -84,13 +84,18 @@ class Buffer11 : public BufferD3D ...@@ -84,13 +84,18 @@ class Buffer11 : public BufferD3D
const void *data, const void *data,
size_t size, size_t size,
size_t offset) override; size_t offset) override;
gl::Error copySubData(BufferImpl *source, gl::Error copySubData(ContextImpl *contextImpl,
BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) override; GLsizeiptr size) override;
gl::Error map(GLenum access, GLvoid **mapPtr) override; gl::Error map(ContextImpl *contextImpl, GLenum access, GLvoid **mapPtr) override;
gl::Error mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr) override; gl::Error mapRange(ContextImpl *contextImpl,
gl::Error unmap(GLboolean *result) override; size_t offset,
size_t length,
GLbitfield access,
GLvoid **mapPtr) override;
gl::Error unmap(ContextImpl *contextImpl, GLboolean *result) override;
gl::Error markTransformFeedbackUsage() override; gl::Error markTransformFeedbackUsage() override;
// We use two set of dirty events. Static buffers are marked dirty whenever // We use two set of dirty events. Static buffers are marked dirty whenever
......
...@@ -79,7 +79,11 @@ gl::Error Buffer9::setSubData(ContextImpl * /*context*/, ...@@ -79,7 +79,11 @@ gl::Error Buffer9::setSubData(ContextImpl * /*context*/,
return gl::NoError(); return gl::NoError();
} }
gl::Error Buffer9::copySubData(BufferImpl* source, GLintptr sourceOffset, GLintptr destOffset, GLsizeiptr size) gl::Error Buffer9::copySubData(ContextImpl *context,
BufferImpl *source,
GLintptr sourceOffset,
GLintptr destOffset,
GLsizeiptr size)
{ {
// Note: this method is currently unreachable // Note: this method is currently unreachable
Buffer9* sourceBuffer = GetAs<Buffer9>(source); Buffer9* sourceBuffer = GetAs<Buffer9>(source);
...@@ -93,19 +97,23 @@ gl::Error Buffer9::copySubData(BufferImpl* source, GLintptr sourceOffset, GLintp ...@@ -93,19 +97,23 @@ gl::Error Buffer9::copySubData(BufferImpl* source, GLintptr sourceOffset, GLintp
} }
// We do not support buffer mapping in D3D9 // We do not support buffer mapping in D3D9
gl::Error Buffer9::map(GLenum access, GLvoid **mapPtr) gl::Error Buffer9::map(ContextImpl *context, GLenum access, GLvoid **mapPtr)
{ {
UNREACHABLE(); UNREACHABLE();
return gl::Error(GL_INVALID_OPERATION); return gl::Error(GL_INVALID_OPERATION);
} }
gl::Error Buffer9::mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr) gl::Error Buffer9::mapRange(ContextImpl *context,
size_t offset,
size_t length,
GLbitfield access,
GLvoid **mapPtr)
{ {
UNREACHABLE(); UNREACHABLE();
return gl::Error(GL_INVALID_OPERATION); return gl::Error(GL_INVALID_OPERATION);
} }
gl::Error Buffer9::unmap(GLboolean *result) gl::Error Buffer9::unmap(ContextImpl *context, GLboolean *result)
{ {
UNREACHABLE(); UNREACHABLE();
return gl::Error(GL_INVALID_OPERATION); return gl::Error(GL_INVALID_OPERATION);
......
...@@ -39,13 +39,18 @@ class Buffer9 : public BufferD3D ...@@ -39,13 +39,18 @@ class Buffer9 : public BufferD3D
const void *data, const void *data,
size_t size, size_t size,
size_t offset) override; size_t offset) override;
gl::Error copySubData(BufferImpl *source, gl::Error copySubData(ContextImpl *context,
BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) override; GLsizeiptr size) override;
gl::Error map(GLenum access, GLvoid **mapPtr) override; gl::Error map(ContextImpl *context, GLenum access, GLvoid **mapPtr) override;
gl::Error mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr) override; gl::Error mapRange(ContextImpl *context,
gl::Error unmap(GLboolean *result) override; size_t offset,
size_t length,
GLbitfield access,
GLvoid **mapPtr) override;
gl::Error unmap(ContextImpl *context, GLboolean *result) override;
gl::Error markTransformFeedbackUsage() override; gl::Error markTransformFeedbackUsage() override;
private: private:
......
...@@ -99,7 +99,11 @@ gl::Error BufferGL::setSubData(ContextImpl * /*context*/, ...@@ -99,7 +99,11 @@ gl::Error BufferGL::setSubData(ContextImpl * /*context*/,
return gl::NoError(); return gl::NoError();
} }
gl::Error BufferGL::copySubData(BufferImpl* source, GLintptr sourceOffset, GLintptr destOffset, GLsizeiptr size) gl::Error BufferGL::copySubData(ContextImpl *context,
BufferImpl *source,
GLintptr sourceOffset,
GLintptr destOffset,
GLsizeiptr size)
{ {
BufferGL *sourceGL = GetAs<BufferGL>(source); BufferGL *sourceGL = GetAs<BufferGL>(source);
...@@ -117,7 +121,7 @@ gl::Error BufferGL::copySubData(BufferImpl* source, GLintptr sourceOffset, GLint ...@@ -117,7 +121,7 @@ gl::Error BufferGL::copySubData(BufferImpl* source, GLintptr sourceOffset, GLint
return gl::NoError(); return gl::NoError();
} }
gl::Error BufferGL::map(GLenum access, GLvoid **mapPtr) gl::Error BufferGL::map(ContextImpl *context, GLenum access, GLvoid **mapPtr)
{ {
if (mShadowBufferData) if (mShadowBufferData)
{ {
...@@ -143,7 +147,11 @@ gl::Error BufferGL::map(GLenum access, GLvoid **mapPtr) ...@@ -143,7 +147,11 @@ gl::Error BufferGL::map(GLenum access, GLvoid **mapPtr)
return gl::NoError(); return gl::NoError();
} }
gl::Error BufferGL::mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr) gl::Error BufferGL::mapRange(ContextImpl *context,
size_t offset,
size_t length,
GLbitfield access,
GLvoid **mapPtr)
{ {
if (mShadowBufferData) if (mShadowBufferData)
{ {
...@@ -162,7 +170,7 @@ gl::Error BufferGL::mapRange(size_t offset, size_t length, GLbitfield access, GL ...@@ -162,7 +170,7 @@ gl::Error BufferGL::mapRange(size_t offset, size_t length, GLbitfield access, GL
return gl::NoError(); return gl::NoError();
} }
gl::Error BufferGL::unmap(GLboolean *result) gl::Error BufferGL::unmap(ContextImpl *context, GLboolean *result)
{ {
ASSERT(result); ASSERT(result);
ASSERT(mIsMapped); ASSERT(mIsMapped);
......
...@@ -36,10 +36,18 @@ class BufferGL : public BufferImpl ...@@ -36,10 +36,18 @@ class BufferGL : public BufferImpl
const void *data, const void *data,
size_t size, size_t size,
size_t offset) override; size_t offset) override;
gl::Error copySubData(BufferImpl* source, GLintptr sourceOffset, GLintptr destOffset, GLsizeiptr size) override; gl::Error copySubData(ContextImpl *contextImpl,
gl::Error map(GLenum access, GLvoid **mapPtr) override; BufferImpl *source,
gl::Error mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr) override; GLintptr sourceOffset,
gl::Error unmap(GLboolean *result) override; GLintptr destOffset,
GLsizeiptr size) override;
gl::Error map(ContextImpl *contextImpl, GLenum access, GLvoid **mapPtr) override;
gl::Error mapRange(ContextImpl *contextImpl,
size_t offset,
size_t length,
GLbitfield access,
GLvoid **mapPtr) override;
gl::Error unmap(ContextImpl *contextImpl, GLboolean *result) override;
gl::Error getIndexRange(GLenum type, gl::Error getIndexRange(GLenum type,
size_t offset, size_t offset,
......
...@@ -51,7 +51,8 @@ gl::Error BufferNULL::setSubData(ContextImpl *context, ...@@ -51,7 +51,8 @@ gl::Error BufferNULL::setSubData(ContextImpl *context,
return gl::NoError(); return gl::NoError();
} }
gl::Error BufferNULL::copySubData(BufferImpl *source, gl::Error BufferNULL::copySubData(ContextImpl *context,
BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) GLsizeiptr size)
...@@ -64,19 +65,23 @@ gl::Error BufferNULL::copySubData(BufferImpl *source, ...@@ -64,19 +65,23 @@ gl::Error BufferNULL::copySubData(BufferImpl *source,
return gl::NoError(); return gl::NoError();
} }
gl::Error BufferNULL::map(GLenum access, GLvoid **mapPtr) gl::Error BufferNULL::map(ContextImpl *context, GLenum access, GLvoid **mapPtr)
{ {
*mapPtr = mData.data(); *mapPtr = mData.data();
return gl::NoError(); return gl::NoError();
} }
gl::Error BufferNULL::mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr) gl::Error BufferNULL::mapRange(ContextImpl *context,
size_t offset,
size_t length,
GLbitfield access,
GLvoid **mapPtr)
{ {
*mapPtr = mData.data() + offset; *mapPtr = mData.data() + offset;
return gl::NoError(); return gl::NoError();
} }
gl::Error BufferNULL::unmap(GLboolean *result) gl::Error BufferNULL::unmap(ContextImpl *context, GLboolean *result)
{ {
*result = GL_TRUE; *result = GL_TRUE;
return gl::NoError(); return gl::NoError();
......
...@@ -31,13 +31,18 @@ class BufferNULL : public BufferImpl ...@@ -31,13 +31,18 @@ class BufferNULL : public BufferImpl
const void *data, const void *data,
size_t size, size_t size,
size_t offset) override; size_t offset) override;
gl::Error copySubData(BufferImpl *source, gl::Error copySubData(ContextImpl *contextImpl,
BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) override; GLsizeiptr size) override;
gl::Error map(GLenum access, GLvoid **mapPtr) override; gl::Error map(ContextImpl *contextImpl, GLenum access, GLvoid **mapPtr) override;
gl::Error mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr) override; gl::Error mapRange(ContextImpl *contextImpl,
gl::Error unmap(GLboolean *result) override; size_t offset,
size_t length,
GLbitfield access,
GLvoid **mapPtr) override;
gl::Error unmap(ContextImpl *contextImpl, GLboolean *result) override;
gl::Error getIndexRange(GLenum type, gl::Error getIndexRange(GLenum type,
size_t offset, size_t offset,
......
...@@ -100,7 +100,8 @@ gl::Error BufferVk::setSubData(ContextImpl *context, ...@@ -100,7 +100,8 @@ gl::Error BufferVk::setSubData(ContextImpl *context,
return gl::NoError(); return gl::NoError();
} }
gl::Error BufferVk::copySubData(BufferImpl *source, gl::Error BufferVk::copySubData(ContextImpl *context,
BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) GLsizeiptr size)
...@@ -109,7 +110,7 @@ gl::Error BufferVk::copySubData(BufferImpl *source, ...@@ -109,7 +110,7 @@ gl::Error BufferVk::copySubData(BufferImpl *source,
return gl::Error(GL_INVALID_OPERATION); return gl::Error(GL_INVALID_OPERATION);
} }
gl::Error BufferVk::map(GLenum access, GLvoid **mapPtr) gl::Error BufferVk::map(ContextImpl *context, GLenum access, GLvoid **mapPtr)
{ {
ASSERT(mBuffer.getHandle() != VK_NULL_HANDLE); ASSERT(mBuffer.getHandle() != VK_NULL_HANDLE);
ASSERT(mBuffer.getMemory().getHandle() != VK_NULL_HANDLE); ASSERT(mBuffer.getMemory().getHandle() != VK_NULL_HANDLE);
...@@ -120,7 +121,11 @@ gl::Error BufferVk::map(GLenum access, GLvoid **mapPtr) ...@@ -120,7 +121,11 @@ gl::Error BufferVk::map(GLenum access, GLvoid **mapPtr)
return gl::NoError(); return gl::NoError();
} }
gl::Error BufferVk::mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr) gl::Error BufferVk::mapRange(ContextImpl *context,
size_t offset,
size_t length,
GLbitfield access,
GLvoid **mapPtr)
{ {
ASSERT(mBuffer.getHandle() != VK_NULL_HANDLE); ASSERT(mBuffer.getHandle() != VK_NULL_HANDLE);
ASSERT(mBuffer.getMemory().getHandle() != VK_NULL_HANDLE); ASSERT(mBuffer.getMemory().getHandle() != VK_NULL_HANDLE);
...@@ -130,7 +135,7 @@ gl::Error BufferVk::mapRange(size_t offset, size_t length, GLbitfield access, GL ...@@ -130,7 +135,7 @@ gl::Error BufferVk::mapRange(size_t offset, size_t length, GLbitfield access, GL
return gl::NoError(); return gl::NoError();
} }
gl::Error BufferVk::unmap(GLboolean *result) gl::Error BufferVk::unmap(ContextImpl *context, GLboolean *result)
{ {
ASSERT(mBuffer.getHandle() != VK_NULL_HANDLE); ASSERT(mBuffer.getHandle() != VK_NULL_HANDLE);
ASSERT(mBuffer.getMemory().getHandle() != VK_NULL_HANDLE); ASSERT(mBuffer.getMemory().getHandle() != VK_NULL_HANDLE);
......
...@@ -32,13 +32,18 @@ class BufferVk : public BufferImpl ...@@ -32,13 +32,18 @@ class BufferVk : public BufferImpl
const void *data, const void *data,
size_t size, size_t size,
size_t offset) override; size_t offset) override;
gl::Error copySubData(BufferImpl *source, gl::Error copySubData(ContextImpl *contextImpl,
BufferImpl *source,
GLintptr sourceOffset, GLintptr sourceOffset,
GLintptr destOffset, GLintptr destOffset,
GLsizeiptr size) override; GLsizeiptr size) override;
gl::Error map(GLenum access, GLvoid **mapPtr) override; gl::Error map(ContextImpl *contextImpl, GLenum access, GLvoid **mapPtr) override;
gl::Error mapRange(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr) override; gl::Error mapRange(ContextImpl *contextImpl,
gl::Error unmap(GLboolean *result) override; size_t offset,
size_t length,
GLbitfield access,
GLvoid **mapPtr) override;
gl::Error unmap(ContextImpl *contextImpl, GLboolean *result) override;
gl::Error getIndexRange(GLenum type, gl::Error getIndexRange(GLenum type,
size_t offset, size_t offset,
......
...@@ -166,7 +166,7 @@ TEST_P(D3D11EmulatedIndexedBufferTest, TestSourceBufferRemainsUntouchedAfterExpa ...@@ -166,7 +166,7 @@ TEST_P(D3D11EmulatedIndexedBufferTest, TestSourceBufferRemainsUntouchedAfterExpa
// Copy the original source buffer before any expand calls have been made // Copy the original source buffer before any expand calls have been made
gl::BufferState cleanSourceState; gl::BufferState cleanSourceState;
rx::Buffer11 *cleanSourceBuffer = new rx::Buffer11(cleanSourceState, mRenderer); rx::Buffer11 *cleanSourceBuffer = new rx::Buffer11(cleanSourceState, mRenderer);
cleanSourceBuffer->copySubData(mSourceBuffer, 0, 0, mSourceBuffer->getSize()); cleanSourceBuffer->copySubData(nullptr, mSourceBuffer, 0, 0, mSourceBuffer->getSize());
// Do a basic exanded and compare test. // Do a basic exanded and compare test.
rx::SourceIndexData srcData = {nullptr, muintIndices.data(), rx::SourceIndexData srcData = {nullptr, muintIndices.data(),
......
...@@ -94,10 +94,12 @@ class MockBufferD3D : public rx::BufferD3D ...@@ -94,10 +94,12 @@ class MockBufferD3D : public rx::BufferD3D
} }
MOCK_METHOD5(setSubData, gl::Error(rx::ContextImpl *, GLenum, const void *, size_t, size_t)); MOCK_METHOD5(setSubData, gl::Error(rx::ContextImpl *, GLenum, const void *, size_t, size_t));
MOCK_METHOD4(copySubData, gl::Error(BufferImpl*, GLintptr, GLintptr, GLsizeiptr)); MOCK_METHOD5(copySubData,
MOCK_METHOD2(map, gl::Error(GLenum, GLvoid **)); gl::Error(rx::ContextImpl *context, BufferImpl *, GLintptr, GLintptr, GLsizeiptr));
MOCK_METHOD4(mapRange, gl::Error(size_t, size_t, GLbitfield, GLvoid **)); MOCK_METHOD3(map, gl::Error(rx::ContextImpl *context, GLenum, GLvoid **));
MOCK_METHOD1(unmap, gl::Error(GLboolean *)); MOCK_METHOD5(mapRange,
gl::Error(rx::ContextImpl *context, size_t, size_t, GLbitfield, GLvoid **));
MOCK_METHOD2(unmap, gl::Error(rx::ContextImpl *context, GLboolean *));
// BufferD3D // BufferD3D
MOCK_METHOD0(markTransformFeedbackUsage, gl::Error()); MOCK_METHOD0(markTransformFeedbackUsage, gl::Error());
......
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