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

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

Issue 663363002: Standardize usage of virtual/override/final in gpu/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update generator script Created 6 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/framebuffer_manager.h" 5 #include "gpu/command_buffer/service/framebuffer_manager.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "base/strings/stringprintf.h" 7 #include "base/strings/stringprintf.h"
8 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 8 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
9 #include "gpu/command_buffer/service/renderbuffer_manager.h" 9 #include "gpu/command_buffer/service/renderbuffer_manager.h"
10 #include "gpu/command_buffer/service/texture_manager.h" 10 #include "gpu/command_buffer/service/texture_manager.h"
(...skipping 30 matching lines...) Expand all
41 } 41 }
42 42
43 class RenderbufferAttachment 43 class RenderbufferAttachment
44 : public Framebuffer::Attachment { 44 : public Framebuffer::Attachment {
45 public: 45 public:
46 explicit RenderbufferAttachment( 46 explicit RenderbufferAttachment(
47 Renderbuffer* renderbuffer) 47 Renderbuffer* renderbuffer)
48 : renderbuffer_(renderbuffer) { 48 : renderbuffer_(renderbuffer) {
49 } 49 }
50 50
51 virtual GLsizei width() const override { 51 GLsizei width() const override { return renderbuffer_->width(); }
52 return renderbuffer_->width();
53 }
54 52
55 virtual GLsizei height() const override { 53 GLsizei height() const override { return renderbuffer_->height(); }
56 return renderbuffer_->height();
57 }
58 54
59 virtual GLenum internal_format() const override { 55 GLenum internal_format() const override {
60 return renderbuffer_->internal_format(); 56 return renderbuffer_->internal_format();
61 } 57 }
62 58
63 virtual GLenum texture_type() const override { 59 GLenum texture_type() const override { return 0; }
64 return 0;
65 }
66 60
67 virtual GLsizei samples() const override { 61 GLsizei samples() const override { return renderbuffer_->samples(); }
68 return renderbuffer_->samples();
69 }
70 62
71 virtual GLuint object_name() const override { 63 GLuint object_name() const override { return renderbuffer_->client_id(); }
72 return renderbuffer_->client_id();
73 }
74 64
75 virtual bool cleared() const override { 65 bool cleared() const override { return renderbuffer_->cleared(); }
76 return renderbuffer_->cleared();
77 }
78 66
79 virtual void SetCleared( 67 void SetCleared(RenderbufferManager* renderbuffer_manager,
80 RenderbufferManager* renderbuffer_manager, 68 TextureManager* /* texture_manager */,
81 TextureManager* /* texture_manager */, 69 bool cleared) override {
82 bool cleared) override {
83 renderbuffer_manager->SetCleared(renderbuffer_.get(), cleared); 70 renderbuffer_manager->SetCleared(renderbuffer_.get(), cleared);
84 } 71 }
85 72
86 virtual bool IsTexture( 73 bool IsTexture(TextureRef* /* texture */) const override { return false; }
87 TextureRef* /* texture */) const override {
88 return false;
89 }
90 74
91 virtual bool IsRenderbuffer( 75 bool IsRenderbuffer(Renderbuffer* renderbuffer) const override {
92 Renderbuffer* renderbuffer) const override {
93 return renderbuffer_.get() == renderbuffer; 76 return renderbuffer_.get() == renderbuffer;
94 } 77 }
95 78
96 virtual bool CanRenderTo() const override { 79 bool CanRenderTo() const override { return true; }
97 return true;
98 }
99 80
100 virtual void DetachFromFramebuffer(Framebuffer* framebuffer) const override { 81 void DetachFromFramebuffer(Framebuffer* framebuffer) const override {
101 // Nothing to do for renderbuffers. 82 // Nothing to do for renderbuffers.
102 } 83 }
103 84
104 virtual bool ValidForAttachmentType( 85 bool ValidForAttachmentType(GLenum attachment_type,
105 GLenum attachment_type, uint32 max_color_attachments) override { 86 uint32 max_color_attachments) override {
106 uint32 need = GLES2Util::GetChannelsNeededForAttachmentType( 87 uint32 need = GLES2Util::GetChannelsNeededForAttachmentType(
107 attachment_type, max_color_attachments); 88 attachment_type, max_color_attachments);
108 uint32 have = GLES2Util::GetChannelsForFormat(internal_format()); 89 uint32 have = GLES2Util::GetChannelsForFormat(internal_format());
109 return (need & have) != 0; 90 return (need & have) != 0;
110 } 91 }
111 92
112 Renderbuffer* renderbuffer() const { 93 Renderbuffer* renderbuffer() const {
113 return renderbuffer_.get(); 94 return renderbuffer_.get();
114 } 95 }
115 96
116 virtual size_t GetSignatureSize( 97 size_t GetSignatureSize(TextureManager* texture_manager) const override {
117 TextureManager* texture_manager) const override {
118 return renderbuffer_->GetSignatureSize(); 98 return renderbuffer_->GetSignatureSize();
119 } 99 }
120 100
121 virtual void AddToSignature( 101 void AddToSignature(TextureManager* texture_manager,
122 TextureManager* texture_manager, std::string* signature) const override { 102 std::string* signature) const override {
123 DCHECK(signature); 103 DCHECK(signature);
124 renderbuffer_->AddToSignature(signature); 104 renderbuffer_->AddToSignature(signature);
125 } 105 }
126 106
127 virtual void OnWillRenderTo() const override {} 107 void OnWillRenderTo() const override {}
128 virtual void OnDidRenderTo() const override {} 108 void OnDidRenderTo() const override {}
129 virtual bool FormsFeedbackLoop( 109 bool FormsFeedbackLoop(TextureRef* /* texture */,
130 TextureRef* /* texture */, GLint /*level */) const override { 110 GLint /*level */) const override {
131 return false; 111 return false;
132 } 112 }
133 113
134 protected: 114 protected:
135 virtual ~RenderbufferAttachment() { } 115 ~RenderbufferAttachment() override {}
136 116
137 private: 117 private:
138 scoped_refptr<Renderbuffer> renderbuffer_; 118 scoped_refptr<Renderbuffer> renderbuffer_;
139 119
140 DISALLOW_COPY_AND_ASSIGN(RenderbufferAttachment); 120 DISALLOW_COPY_AND_ASSIGN(RenderbufferAttachment);
141 }; 121 };
142 122
143 class TextureAttachment 123 class TextureAttachment
144 : public Framebuffer::Attachment { 124 : public Framebuffer::Attachment {
145 public: 125 public:
146 TextureAttachment( 126 TextureAttachment(
147 TextureRef* texture_ref, GLenum target, GLint level, GLsizei samples) 127 TextureRef* texture_ref, GLenum target, GLint level, GLsizei samples)
148 : texture_ref_(texture_ref), 128 : texture_ref_(texture_ref),
149 target_(target), 129 target_(target),
150 level_(level), 130 level_(level),
151 samples_(samples) { 131 samples_(samples) {
152 } 132 }
153 133
154 virtual GLsizei width() const override { 134 GLsizei width() const override {
155 GLsizei temp_width = 0; 135 GLsizei temp_width = 0;
156 GLsizei temp_height = 0; 136 GLsizei temp_height = 0;
157 texture_ref_->texture()->GetLevelSize( 137 texture_ref_->texture()->GetLevelSize(
158 target_, level_, &temp_width, &temp_height); 138 target_, level_, &temp_width, &temp_height);
159 return temp_width; 139 return temp_width;
160 } 140 }
161 141
162 virtual GLsizei height() const override { 142 GLsizei height() const override {
163 GLsizei temp_width = 0; 143 GLsizei temp_width = 0;
164 GLsizei temp_height = 0; 144 GLsizei temp_height = 0;
165 texture_ref_->texture()->GetLevelSize( 145 texture_ref_->texture()->GetLevelSize(
166 target_, level_, &temp_width, &temp_height); 146 target_, level_, &temp_width, &temp_height);
167 return temp_height; 147 return temp_height;
168 } 148 }
169 149
170 virtual GLenum internal_format() const override { 150 GLenum internal_format() const override {
171 GLenum temp_type = 0; 151 GLenum temp_type = 0;
172 GLenum temp_internal_format = 0; 152 GLenum temp_internal_format = 0;
173 texture_ref_->texture()->GetLevelType( 153 texture_ref_->texture()->GetLevelType(
174 target_, level_, &temp_type, &temp_internal_format); 154 target_, level_, &temp_type, &temp_internal_format);
175 return temp_internal_format; 155 return temp_internal_format;
176 } 156 }
177 157
178 virtual GLenum texture_type() const override { 158 GLenum texture_type() const override {
179 GLenum temp_type = 0; 159 GLenum temp_type = 0;
180 GLenum temp_internal_format = 0; 160 GLenum temp_internal_format = 0;
181 texture_ref_->texture()->GetLevelType( 161 texture_ref_->texture()->GetLevelType(
182 target_, level_, &temp_type, &temp_internal_format); 162 target_, level_, &temp_type, &temp_internal_format);
183 return temp_type; 163 return temp_type;
184 } 164 }
185 165
186 virtual GLsizei samples() const override { 166 GLsizei samples() const override { return samples_; }
187 return samples_;
188 }
189 167
190 virtual GLuint object_name() const override { 168 GLuint object_name() const override { return texture_ref_->client_id(); }
191 return texture_ref_->client_id();
192 }
193 169
194 virtual bool cleared() const override { 170 bool cleared() const override {
195 return texture_ref_->texture()->IsLevelCleared(target_, level_); 171 return texture_ref_->texture()->IsLevelCleared(target_, level_);
196 } 172 }
197 173
198 virtual void SetCleared( 174 void SetCleared(RenderbufferManager* /* renderbuffer_manager */,
199 RenderbufferManager* /* renderbuffer_manager */, 175 TextureManager* texture_manager,
200 TextureManager* texture_manager, 176 bool cleared) override {
201 bool cleared) override {
202 texture_manager->SetLevelCleared( 177 texture_manager->SetLevelCleared(
203 texture_ref_.get(), target_, level_, cleared); 178 texture_ref_.get(), target_, level_, cleared);
204 } 179 }
205 180
206 virtual bool IsTexture(TextureRef* texture) const override { 181 bool IsTexture(TextureRef* texture) const override {
207 return texture == texture_ref_.get(); 182 return texture == texture_ref_.get();
208 } 183 }
209 184
210 virtual bool IsRenderbuffer( 185 bool IsRenderbuffer(Renderbuffer* /* renderbuffer */) const override {
211 Renderbuffer* /* renderbuffer */)
212 const override {
213 return false; 186 return false;
214 } 187 }
215 188
216 TextureRef* texture() const { 189 TextureRef* texture() const {
217 return texture_ref_.get(); 190 return texture_ref_.get();
218 } 191 }
219 192
220 virtual bool CanRenderTo() const override { 193 bool CanRenderTo() const override {
221 return texture_ref_->texture()->CanRenderTo(); 194 return texture_ref_->texture()->CanRenderTo();
222 } 195 }
223 196
224 virtual void DetachFromFramebuffer(Framebuffer* framebuffer) 197 void DetachFromFramebuffer(Framebuffer* framebuffer) const override {
225 const override {
226 texture_ref_->texture()->DetachFromFramebuffer(); 198 texture_ref_->texture()->DetachFromFramebuffer();
227 framebuffer->OnTextureRefDetached(texture_ref_.get()); 199 framebuffer->OnTextureRefDetached(texture_ref_.get());
228 } 200 }
229 201
230 virtual bool ValidForAttachmentType( 202 bool ValidForAttachmentType(GLenum attachment_type,
231 GLenum attachment_type, uint32 max_color_attachments) override { 203 uint32 max_color_attachments) override {
232 GLenum type = 0; 204 GLenum type = 0;
233 GLenum internal_format = 0; 205 GLenum internal_format = 0;
234 if (!texture_ref_->texture()->GetLevelType( 206 if (!texture_ref_->texture()->GetLevelType(
235 target_, level_, &type, &internal_format)) { 207 target_, level_, &type, &internal_format)) {
236 return false; 208 return false;
237 } 209 }
238 uint32 need = GLES2Util::GetChannelsNeededForAttachmentType( 210 uint32 need = GLES2Util::GetChannelsNeededForAttachmentType(
239 attachment_type, max_color_attachments); 211 attachment_type, max_color_attachments);
240 uint32 have = GLES2Util::GetChannelsForFormat(internal_format); 212 uint32 have = GLES2Util::GetChannelsForFormat(internal_format);
241 213
242 // Workaround for NVIDIA drivers that incorrectly expose these formats as 214 // Workaround for NVIDIA drivers that incorrectly expose these formats as
243 // renderable: 215 // renderable:
244 if (internal_format == GL_LUMINANCE || internal_format == GL_ALPHA || 216 if (internal_format == GL_LUMINANCE || internal_format == GL_ALPHA ||
245 internal_format == GL_LUMINANCE_ALPHA) { 217 internal_format == GL_LUMINANCE_ALPHA) {
246 return false; 218 return false;
247 } 219 }
248 return (need & have) != 0; 220 return (need & have) != 0;
249 } 221 }
250 222
251 virtual size_t GetSignatureSize( 223 size_t GetSignatureSize(TextureManager* texture_manager) const override {
252 TextureManager* texture_manager) const override {
253 return texture_manager->GetSignatureSize(); 224 return texture_manager->GetSignatureSize();
254 } 225 }
255 226
256 virtual void AddToSignature( 227 void AddToSignature(TextureManager* texture_manager,
257 TextureManager* texture_manager, std::string* signature) const override { 228 std::string* signature) const override {
258 DCHECK(signature); 229 DCHECK(signature);
259 texture_manager->AddToSignature( 230 texture_manager->AddToSignature(
260 texture_ref_.get(), target_, level_, signature); 231 texture_ref_.get(), target_, level_, signature);
261 } 232 }
262 233
263 virtual void OnWillRenderTo() const override { 234 void OnWillRenderTo() const override {
264 texture_ref_->texture()->OnWillModifyPixels(); 235 texture_ref_->texture()->OnWillModifyPixels();
265 } 236 }
266 237
267 virtual void OnDidRenderTo() const override { 238 void OnDidRenderTo() const override {
268 texture_ref_->texture()->OnDidModifyPixels(); 239 texture_ref_->texture()->OnDidModifyPixels();
269 } 240 }
270 241
271 virtual bool FormsFeedbackLoop( 242 bool FormsFeedbackLoop(TextureRef* texture, GLint level) const override {
272 TextureRef* texture, GLint level) const override {
273 return texture == texture_ref_.get() && level == level_; 243 return texture == texture_ref_.get() && level == level_;
274 } 244 }
275 245
276 protected: 246 protected:
277 virtual ~TextureAttachment() {} 247 ~TextureAttachment() override {}
278 248
279 private: 249 private:
280 scoped_refptr<TextureRef> texture_ref_; 250 scoped_refptr<TextureRef> texture_ref_;
281 GLenum target_; 251 GLenum target_;
282 GLint level_; 252 GLint level_;
283 GLsizei samples_; 253 GLsizei samples_;
284 254
285 DISALLOW_COPY_AND_ASSIGN(TextureAttachment); 255 DISALLOW_COPY_AND_ASSIGN(TextureAttachment);
286 }; 256 };
287 257
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 ++it) { 733 ++it) {
764 TextureDetachObserver* observer = *it; 734 TextureDetachObserver* observer = *it;
765 observer->OnTextureRefDetachedFromFramebuffer(texture); 735 observer->OnTextureRefDetachedFromFramebuffer(texture);
766 } 736 }
767 } 737 }
768 738
769 } // namespace gles2 739 } // namespace gles2
770 } // namespace gpu 740 } // namespace gpu
771 741
772 742
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/error_state.cc ('k') | gpu/command_buffer/service/gl_context_virtual.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698