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

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

Issue 12326146: Refactor/Rename a bunch of GPU stuff (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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 | Annotate | Revision Log
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/renderbuffer_manager.h" 5 #include "gpu/command_buffer/service/renderbuffer_manager.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 9 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
10 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 10 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
(...skipping 12 matching lines...) Expand all
23 max_renderbuffer_size_(max_renderbuffer_size), 23 max_renderbuffer_size_(max_renderbuffer_size),
24 max_samples_(max_samples), 24 max_samples_(max_samples),
25 num_uncleared_renderbuffers_(0), 25 num_uncleared_renderbuffers_(0),
26 renderbuffer_info_count_(0), 26 renderbuffer_info_count_(0),
27 have_context_(true) { 27 have_context_(true) {
28 } 28 }
29 29
30 RenderbufferManager::~RenderbufferManager() { 30 RenderbufferManager::~RenderbufferManager() {
31 DCHECK(renderbuffer_infos_.empty()); 31 DCHECK(renderbuffer_infos_.empty());
32 // If this triggers, that means something is keeping a reference to 32 // If this triggers, that means something is keeping a reference to
33 // a RenderbufferInfo belonging to this. 33 // a Renderbuffer belonging to this.
34 CHECK_EQ(renderbuffer_info_count_, 0u); 34 CHECK_EQ(renderbuffer_info_count_, 0u);
35 35
36 DCHECK_EQ(0, num_uncleared_renderbuffers_); 36 DCHECK_EQ(0, num_uncleared_renderbuffers_);
37 } 37 }
38 38
39 size_t RenderbufferManager::RenderbufferInfo::EstimatedSize() { 39 size_t Renderbuffer::EstimatedSize() {
40 uint32 size = 0; 40 uint32 size = 0;
41 RenderbufferManager::ComputeEstimatedRenderbufferSize( 41 RenderbufferManager::ComputeEstimatedRenderbufferSize(
42 width_, height_, samples_, internal_format_, &size); 42 width_, height_, samples_, internal_format_, &size);
43 return size; 43 return size;
44 } 44 }
45 45
46 void RenderbufferManager::RenderbufferInfo::AddToSignature( 46 void Renderbuffer::AddToSignature(
47 std::string* signature) const { 47 std::string* signature) const {
48 DCHECK(signature); 48 DCHECK(signature);
49 *signature += base::StringPrintf( 49 *signature += base::StringPrintf(
50 "|Renderbuffer|internal_format=%04x|samples=%d|width=%d|height=%d", 50 "|Renderbuffer|internal_format=%04x|samples=%d|width=%d|height=%d",
51 internal_format_, samples_, width_, height_); 51 internal_format_, samples_, width_, height_);
52 } 52 }
53 53
54 RenderbufferManager::RenderbufferInfo::~RenderbufferInfo() { 54 Renderbuffer::Renderbuffer(RenderbufferManager* manager, GLuint service_id)
55 : manager_(manager),
56 deleted_(false),
57 service_id_(service_id),
58 cleared_(true),
59 has_been_bound_(false),
60 samples_(0),
61 internal_format_(GL_RGBA4),
62 width_(0),
63 height_(0) {
64 manager_->StartTracking(this);
65 }
66
67 Renderbuffer::~Renderbuffer() {
55 if (manager_) { 68 if (manager_) {
56 if (manager_->have_context_) { 69 if (manager_->have_context_) {
57 GLuint id = service_id(); 70 GLuint id = service_id();
58 glDeleteRenderbuffersEXT(1, &id); 71 glDeleteRenderbuffersEXT(1, &id);
59 } 72 }
60 manager_->StopTracking(this); 73 manager_->StopTracking(this);
61 manager_ = NULL; 74 manager_ = NULL;
62 } 75 }
63 } 76 }
64 77
65 void RenderbufferManager::Destroy(bool have_context) { 78 void RenderbufferManager::Destroy(bool have_context) {
66 have_context_ = have_context; 79 have_context_ = have_context;
67 renderbuffer_infos_.clear(); 80 renderbuffer_infos_.clear();
68 DCHECK_EQ(0u, memory_tracker_->GetMemRepresented()); 81 DCHECK_EQ(0u, memory_tracker_->GetMemRepresented());
69 } 82 }
70 83
71 void RenderbufferManager::StartTracking(RenderbufferInfo* /* renderbuffer */) { 84 void RenderbufferManager::StartTracking(Renderbuffer* /* renderbuffer */) {
72 ++renderbuffer_info_count_; 85 ++renderbuffer_info_count_;
73 } 86 }
74 87
75 void RenderbufferManager::StopTracking(RenderbufferInfo* renderbuffer) { 88 void RenderbufferManager::StopTracking(Renderbuffer* renderbuffer) {
76 --renderbuffer_info_count_; 89 --renderbuffer_info_count_;
77 if (!renderbuffer->cleared()) { 90 if (!renderbuffer->cleared()) {
78 --num_uncleared_renderbuffers_; 91 --num_uncleared_renderbuffers_;
79 } 92 }
80 memory_tracker_->TrackMemFree(renderbuffer->EstimatedSize()); 93 memory_tracker_->TrackMemFree(renderbuffer->EstimatedSize());
81 } 94 }
82 95
83 void RenderbufferManager::SetInfo( 96 void RenderbufferManager::SetInfo(
84 RenderbufferInfo* renderbuffer, 97 Renderbuffer* renderbuffer,
85 GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { 98 GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
86 DCHECK(renderbuffer); 99 DCHECK(renderbuffer);
87 if (!renderbuffer->cleared()) { 100 if (!renderbuffer->cleared()) {
88 --num_uncleared_renderbuffers_; 101 --num_uncleared_renderbuffers_;
89 } 102 }
90 memory_tracker_->TrackMemFree(renderbuffer->EstimatedSize()); 103 memory_tracker_->TrackMemFree(renderbuffer->EstimatedSize());
91 renderbuffer->SetInfo(samples, internalformat, width, height); 104 renderbuffer->SetInfo(samples, internalformat, width, height);
92 memory_tracker_->TrackMemAlloc(renderbuffer->EstimatedSize()); 105 memory_tracker_->TrackMemAlloc(renderbuffer->EstimatedSize());
93 if (!renderbuffer->cleared()) { 106 if (!renderbuffer->cleared()) {
94 ++num_uncleared_renderbuffers_; 107 ++num_uncleared_renderbuffers_;
95 } 108 }
96 } 109 }
97 110
98 void RenderbufferManager::SetCleared(RenderbufferInfo* renderbuffer, 111 void RenderbufferManager::SetCleared(Renderbuffer* renderbuffer,
99 bool cleared) { 112 bool cleared) {
100 DCHECK(renderbuffer); 113 DCHECK(renderbuffer);
101 if (!renderbuffer->cleared()) { 114 if (!renderbuffer->cleared()) {
102 --num_uncleared_renderbuffers_; 115 --num_uncleared_renderbuffers_;
103 } 116 }
104 renderbuffer->set_cleared(cleared); 117 renderbuffer->set_cleared(cleared);
105 if (!renderbuffer->cleared()) { 118 if (!renderbuffer->cleared()) {
106 ++num_uncleared_renderbuffers_; 119 ++num_uncleared_renderbuffers_;
107 } 120 }
108 } 121 }
109 122
110 void RenderbufferManager::CreateRenderbufferInfo( 123 void RenderbufferManager::CreateRenderbuffer(
111 GLuint client_id, GLuint service_id) { 124 GLuint client_id, GLuint service_id) {
112 RenderbufferInfo::Ref info(new RenderbufferInfo(this, service_id)); 125 scoped_refptr<Renderbuffer> info(new Renderbuffer(this, service_id));
113 std::pair<RenderbufferInfoMap::iterator, bool> result = 126 std::pair<RenderbufferInfoMap::iterator, bool> result =
114 renderbuffer_infos_.insert(std::make_pair(client_id, info)); 127 renderbuffer_infos_.insert(std::make_pair(client_id, info));
115 DCHECK(result.second); 128 DCHECK(result.second);
116 if (!info->cleared()) { 129 if (!info->cleared()) {
117 ++num_uncleared_renderbuffers_; 130 ++num_uncleared_renderbuffers_;
118 } 131 }
119 } 132 }
120 133
121 RenderbufferManager::RenderbufferInfo* RenderbufferManager::GetRenderbufferInfo( 134 Renderbuffer* RenderbufferManager::GetRenderbuffer(
122 GLuint client_id) { 135 GLuint client_id) {
123 RenderbufferInfoMap::iterator it = renderbuffer_infos_.find(client_id); 136 RenderbufferInfoMap::iterator it = renderbuffer_infos_.find(client_id);
124 return it != renderbuffer_infos_.end() ? it->second : NULL; 137 return it != renderbuffer_infos_.end() ? it->second : NULL;
125 } 138 }
126 139
127 void RenderbufferManager::RemoveRenderbufferInfo(GLuint client_id) { 140 void RenderbufferManager::RemoveRenderbuffer(GLuint client_id) {
128 RenderbufferInfoMap::iterator it = renderbuffer_infos_.find(client_id); 141 RenderbufferInfoMap::iterator it = renderbuffer_infos_.find(client_id);
129 if (it != renderbuffer_infos_.end()) { 142 if (it != renderbuffer_infos_.end()) {
130 RenderbufferInfo* info = it->second; 143 Renderbuffer* info = it->second;
131 info->MarkAsDeleted(); 144 info->MarkAsDeleted();
132 renderbuffer_infos_.erase(it); 145 renderbuffer_infos_.erase(it);
133 } 146 }
134 } 147 }
135 148
136 bool RenderbufferManager::GetClientId( 149 bool RenderbufferManager::GetClientId(
137 GLuint service_id, GLuint* client_id) const { 150 GLuint service_id, GLuint* client_id) const {
138 // This doesn't need to be fast. It's only used during slow queries. 151 // This doesn't need to be fast. It's only used during slow queries.
139 for (RenderbufferInfoMap::const_iterator it = renderbuffer_infos_.begin(); 152 for (RenderbufferInfoMap::const_iterator it = renderbuffer_infos_.begin();
140 it != renderbuffer_infos_.end(); ++it) { 153 it != renderbuffer_infos_.end(); ++it) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 return GL_RGB; 192 return GL_RGB;
180 } 193 }
181 } 194 }
182 return impl_format; 195 return impl_format;
183 } 196 }
184 197
185 } // namespace gles2 198 } // namespace gles2
186 } // namespace gpu 199 } // namespace gpu
187 200
188 201
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/renderbuffer_manager.h ('k') | gpu/command_buffer/service/renderbuffer_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698