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

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

Issue 8515023: Allow deleted resources to be used (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 7 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
8 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 8 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
9 9
10 namespace gpu { 10 namespace gpu {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 target_(0), 59 target_(0),
60 size_(0), 60 size_(0),
61 usage_(GL_STATIC_DRAW), 61 usage_(GL_STATIC_DRAW),
62 shadowed_(false) { 62 shadowed_(false) {
63 } 63 }
64 64
65 BufferManager::BufferInfo::~BufferInfo() { } 65 BufferManager::BufferInfo::~BufferInfo() { }
66 66
67 void BufferManager::BufferInfo::SetInfo( 67 void BufferManager::BufferInfo::SetInfo(
68 GLsizeiptr size, GLenum usage, bool shadow) { 68 GLsizeiptr size, GLenum usage, bool shadow) {
69 DCHECK(!IsDeleted());
70 usage_ = usage; 69 usage_ = usage;
71 if (size != size_ || shadow != shadowed_) { 70 if (size != size_ || shadow != shadowed_) {
72 shadowed_ = shadow; 71 shadowed_ = shadow;
73 size_ = size; 72 size_ = size;
74 ClearCache(); 73 ClearCache();
75 if (shadowed_) { 74 if (shadowed_) {
76 shadow_.reset(new int8[size]); 75 shadow_.reset(new int8[size]);
77 memset(shadow_.get(), 0, size); 76 memset(shadow_.get(), 0, size);
78 } 77 }
79 } 78 }
80 } 79 }
81 80
82 bool BufferManager::BufferInfo::SetRange( 81 bool BufferManager::BufferInfo::SetRange(
83 GLintptr offset, GLsizeiptr size, const GLvoid * data) { 82 GLintptr offset, GLsizeiptr size, const GLvoid * data) {
84 DCHECK(!IsDeleted());
85 if (offset < 0 || offset + size < offset || offset + size > size_) { 83 if (offset < 0 || offset + size < offset || offset + size > size_) {
86 return false; 84 return false;
87 } 85 }
88 if (shadowed_) { 86 if (shadowed_) {
89 memcpy(shadow_.get() + offset, data, size); 87 memcpy(shadow_.get() + offset, data, size);
90 ClearCache(); 88 ClearCache();
91 } 89 }
92 return true; 90 return true;
93 } 91 }
94 92
(...skipping 21 matching lines...) Expand all
116 for (; element < end; ++element) { 114 for (; element < end; ++element) {
117 if (*element > max_value) { 115 if (*element > max_value) {
118 max_value = *element; 116 max_value = *element;
119 } 117 }
120 } 118 }
121 return max_value; 119 return max_value;
122 } 120 }
123 121
124 bool BufferManager::BufferInfo::GetMaxValueForRange( 122 bool BufferManager::BufferInfo::GetMaxValueForRange(
125 GLuint offset, GLsizei count, GLenum type, GLuint* max_value) { 123 GLuint offset, GLsizei count, GLenum type, GLuint* max_value) {
126 DCHECK(!IsDeleted());
127 Range range(offset, count, type); 124 Range range(offset, count, type);
128 RangeToMaxValueMap::iterator it = range_set_.find(range); 125 RangeToMaxValueMap::iterator it = range_set_.find(range);
129 if (it != range_set_.end()) { 126 if (it != range_set_.end()) {
130 *max_value = it->second; 127 *max_value = it->second;
131 return true; 128 return true;
132 } 129 }
133 130
134 uint32 size; 131 uint32 size;
135 if (!SafeMultiplyUint32( 132 if (!SafeMultiplyUint32(
136 count, GLES2Util::GetGLTypeSizeForTexturesAndBuffers(type), &size)) { 133 count, GLES2Util::GetGLTypeSizeForTexturesAndBuffers(type), &size)) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 if (info->target() == 0) { 205 if (info->target() == 0) {
209 info->set_target(target); 206 info->set_target(target);
210 } 207 }
211 return true; 208 return true;
212 } 209 }
213 210
214 } // namespace gles2 211 } // namespace gles2
215 } // namespace gpu 212 } // namespace gpu
216 213
217 214
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/buffer_manager.h ('k') | gpu/command_buffer/service/framebuffer_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698