Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(238)

Side by Side Diff: gpu/command_buffer/service/buffer_manager.cc

Issue 2383333002: Update shadowed data in MapBufferRange path. (Closed)
Patch Set: This should work Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/buffer_manager.h ('k') | gpu/command_buffer/service/gles2_cmd_decoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698