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 |