| Index: gpu/command_buffer/service/buffer_manager.cc
|
| diff --git a/gpu/command_buffer/service/buffer_manager.cc b/gpu/command_buffer/service/buffer_manager.cc
|
| index 1f64fd57887be55344175ee81d9950dd9306f5d1..c2a0ba5c2979f3fe33f67c2d597989ae0dcd54f5 100644
|
| --- a/gpu/command_buffer/service/buffer_manager.cc
|
| +++ b/gpu/command_buffer/service/buffer_manager.cc
|
| @@ -74,6 +74,27 @@ void BufferManager::StopTracking(Buffer* buffer) {
|
| --buffer_count_;
|
| }
|
|
|
| +Buffer::MappedRange::MappedRange(
|
| + GLintptr offset, GLsizeiptr size, GLenum access, void* pointer,
|
| + scoped_refptr<gpu::Buffer> shm)
|
| + : offset(offset),
|
| + size(size),
|
| + access(access),
|
| + pointer(pointer),
|
| + shm(shm) {
|
| + DCHECK(pointer);
|
| + DCHECK(shm.get() && GetShmPointer());
|
| +}
|
| +
|
| +Buffer::MappedRange::~MappedRange() {
|
| +}
|
| +
|
| +void* Buffer::MappedRange::GetShmPointer() const {
|
| + DCHECK(shm.get());
|
| + return shm->GetDataAddress(static_cast<unsigned int>(offset),
|
| + static_cast<unsigned int>(size));
|
| +}
|
| +
|
| Buffer::Buffer(BufferManager* manager, GLuint service_id)
|
| : manager_(manager),
|
| size_(0),
|
| @@ -119,6 +140,7 @@ void Buffer::SetInfo(
|
| memset(shadow_.get(), 0, size);
|
| }
|
| }
|
| + mapped_range_.reset(nullptr);
|
| }
|
|
|
| bool Buffer::CheckRange(
|
| @@ -397,12 +419,23 @@ bool BufferManager::SetTarget(Buffer* buffer, GLenum target) {
|
| // Since one BufferManager can be shared by multiple decoders, ContextState is
|
| // passed in each time and not just passed in during initialization.
|
| Buffer* BufferManager::GetBufferInfoForTarget(
|
| - ContextState* state, GLenum target) {
|
| - DCHECK(target == GL_ARRAY_BUFFER || target == GL_ELEMENT_ARRAY_BUFFER);
|
| - if (target == GL_ARRAY_BUFFER) {
|
| - return state->bound_array_buffer.get();
|
| - } else {
|
| - return state->vertex_attrib_manager->element_array_buffer();
|
| + ContextState* state, GLenum target) const {
|
| + switch (target) {
|
| + case GL_ARRAY_BUFFER:
|
| + return state->bound_array_buffer.get();
|
| + case GL_ELEMENT_ARRAY_BUFFER:
|
| + return state->vertex_attrib_manager->element_array_buffer();
|
| + case GL_COPY_READ_BUFFER:
|
| + case GL_COPY_WRITE_BUFFER:
|
| + case GL_PIXEL_PACK_BUFFER:
|
| + case GL_PIXEL_UNPACK_BUFFER:
|
| + case GL_TRANSFORM_FEEDBACK_BUFFER:
|
| + case GL_UNIFORM_BUFFER:
|
| + NOTIMPLEMENTED();
|
| + return nullptr;
|
| + default:
|
| + NOTREACHED();
|
| + return nullptr;
|
| }
|
| }
|
|
|
|
|