| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "gpu/command_buffer/service/buffer_manager.h" | 5 #include "gpu/command_buffer/service/buffer_manager.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <limits> | 9 #include <limits> |
| 10 | 10 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 ++buffer_count_; | 99 ++buffer_count_; |
| 100 } | 100 } |
| 101 | 101 |
| 102 void BufferManager::StopTracking(Buffer* buffer) { | 102 void BufferManager::StopTracking(Buffer* buffer) { |
| 103 memory_type_tracker_->TrackMemFree(buffer->size()); | 103 memory_type_tracker_->TrackMemFree(buffer->size()); |
| 104 --buffer_count_; | 104 --buffer_count_; |
| 105 } | 105 } |
| 106 | 106 |
| 107 Buffer::MappedRange::MappedRange( | 107 Buffer::MappedRange::MappedRange( |
| 108 GLintptr offset, GLsizeiptr size, GLenum access, void* pointer, | 108 GLintptr offset, GLsizeiptr size, GLenum access, void* pointer, |
| 109 scoped_refptr<gpu::Buffer> shm) | 109 scoped_refptr<gpu::Buffer> shm, unsigned int shm_offset) |
| 110 : offset(offset), | 110 : offset(offset), |
| 111 size(size), | 111 size(size), |
| 112 access(access), | 112 access(access), |
| 113 pointer(pointer), | 113 pointer(pointer), |
| 114 shm(shm) { | 114 shm(shm), |
| 115 shm_offset(shm_offset) { |
| 115 DCHECK(pointer); | 116 DCHECK(pointer); |
| 116 DCHECK(shm.get() && GetShmPointer()); | 117 DCHECK(shm.get() && GetShmPointer()); |
| 117 } | 118 } |
| 118 | 119 |
| 119 Buffer::MappedRange::~MappedRange() { | 120 Buffer::MappedRange::~MappedRange() { |
| 120 } | 121 } |
| 121 | 122 |
| 122 void* Buffer::MappedRange::GetShmPointer() const { | 123 void* Buffer::MappedRange::GetShmPointer() const { |
| 123 DCHECK(shm.get()); | 124 DCHECK(shm.get()); |
| 124 return shm->GetDataAddress(static_cast<unsigned int>(offset), | 125 return shm->GetDataAddress(shm_offset, static_cast<unsigned int>(size)); |
| 125 static_cast<unsigned int>(size)); | |
| 126 } | 126 } |
| 127 | 127 |
| 128 Buffer::Buffer(BufferManager* manager, GLuint service_id) | 128 Buffer::Buffer(BufferManager* manager, GLuint service_id) |
| 129 : manager_(manager), | 129 : manager_(manager), |
| 130 size_(0), | 130 size_(0), |
| 131 deleted_(false), | 131 deleted_(false), |
| 132 is_client_side_array_(false), | 132 is_client_side_array_(false), |
| 133 service_id_(service_id), | 133 service_id_(service_id), |
| 134 initial_target_(0), | 134 initial_target_(0), |
| 135 usage_(GL_STATIC_DRAW) { | 135 usage_(GL_STATIC_DRAW) { |
| (...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 562 void BufferManager::DoCopyBufferSubData( | 562 void BufferManager::DoCopyBufferSubData( |
| 563 Buffer* readbuffer, | 563 Buffer* readbuffer, |
| 564 GLenum readtarget, | 564 GLenum readtarget, |
| 565 GLintptr readoffset, | 565 GLintptr readoffset, |
| 566 Buffer* writebuffer, | 566 Buffer* writebuffer, |
| 567 GLenum writetarget, | 567 GLenum writetarget, |
| 568 GLintptr writeoffset, | 568 GLintptr writeoffset, |
| 569 GLsizeiptr size) { | 569 GLsizeiptr size) { |
| 570 DCHECK(readbuffer); | 570 DCHECK(readbuffer); |
| 571 DCHECK(writebuffer); | 571 DCHECK(writebuffer); |
| 572 const bool use_shadow = UseShadowBuffer(writetarget, writebuffer->usage()); | 572 if (writebuffer->shadowed()) { |
| 573 if (use_shadow) { | |
| 574 const void* data = readbuffer->GetRange(readoffset, size); | 573 const void* data = readbuffer->GetRange(readoffset, size); |
| 575 DCHECK(data); | 574 DCHECK(data); |
| 576 writebuffer->SetRange(writeoffset, size, data); | 575 bool success = writebuffer->SetRange(writeoffset, size, data); |
| 576 DCHECK(success); |
| 577 } | 577 } |
| 578 | 578 |
| 579 glCopyBufferSubData(readtarget, writetarget, readoffset, writeoffset, size); | 579 glCopyBufferSubData(readtarget, writetarget, readoffset, writeoffset, size); |
| 580 } | 580 } |
| 581 | 581 |
| 582 void BufferManager::ValidateAndDoGetBufferParameteri64v( | 582 void BufferManager::ValidateAndDoGetBufferParameteri64v( |
| 583 ContextState* context_state, GLenum target, GLenum pname, GLint64* params) { | 583 ContextState* context_state, GLenum target, GLenum pname, GLint64* params) { |
| 584 Buffer* buffer = GetBufferInfoForTarget(context_state, target); | 584 Buffer* buffer = GetBufferInfoForTarget(context_state, target); |
| 585 if (!buffer) { | 585 if (!buffer) { |
| 586 ERRORSTATE_SET_GL_ERROR( | 586 ERRORSTATE_SET_GL_ERROR( |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 auto guid = gl::GetGLBufferGUIDForTracing(share_group_tracing_guid, | 752 auto guid = gl::GetGLBufferGUIDForTracing(share_group_tracing_guid, |
| 753 client_buffer_id); | 753 client_buffer_id); |
| 754 pmd->CreateSharedGlobalAllocatorDump(guid); | 754 pmd->CreateSharedGlobalAllocatorDump(guid); |
| 755 pmd->AddOwnershipEdge(dump->guid(), guid); | 755 pmd->AddOwnershipEdge(dump->guid(), guid); |
| 756 } | 756 } |
| 757 return true; | 757 return true; |
| 758 } | 758 } |
| 759 | 759 |
| 760 } // namespace gles2 | 760 } // namespace gles2 |
| 761 } // namespace gpu | 761 } // namespace gpu |
| OLD | NEW |