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

Side by Side Diff: third_party/WebKit/Source/modules/webgl/WebGLFramebuffer.cpp

Issue 1808933002: Remove framebufferRenderbuffer and framebufferTexture* from WGC3D. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@wgc3d-unused
Patch Set: framebufferRenderbuffer: rebase Created 4 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2009 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * 12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 #include "modules/webgl/WebGLFramebuffer.h" 26 #include "modules/webgl/WebGLFramebuffer.h"
27 27
28 #include "gpu/command_buffer/client/gles2_interface.h"
28 #include "modules/webgl/WebGLRenderbuffer.h" 29 #include "modules/webgl/WebGLRenderbuffer.h"
29 #include "modules/webgl/WebGLRenderingContextBase.h" 30 #include "modules/webgl/WebGLRenderingContextBase.h"
30 #include "modules/webgl/WebGLTexture.h" 31 #include "modules/webgl/WebGLTexture.h"
31 #include "platform/NotImplemented.h" 32 #include "platform/NotImplemented.h"
32 33
33 namespace blink { 34 namespace blink {
34 35
35 namespace { 36 namespace {
36 37
37 class WebGLRenderbufferAttachment final : public WebGLFramebuffer::WebGLAttachme nt { 38 class WebGLRenderbufferAttachment final : public WebGLFramebuffer::WebGLAttachme nt {
38 public: 39 public:
39 static WebGLFramebuffer::WebGLAttachment* create(WebGLRenderbuffer*); 40 static WebGLFramebuffer::WebGLAttachment* create(WebGLRenderbuffer*);
40 41
41 DECLARE_VIRTUAL_TRACE(); 42 DECLARE_VIRTUAL_TRACE();
42 43
43 private: 44 private:
44 explicit WebGLRenderbufferAttachment(WebGLRenderbuffer*); 45 explicit WebGLRenderbufferAttachment(WebGLRenderbuffer*);
45 WebGLRenderbufferAttachment() { } 46 WebGLRenderbufferAttachment() { }
46 47
47 WebGLSharedObject* object() const override; 48 WebGLSharedObject* object() const override;
48 bool isSharedObject(WebGLSharedObject*) const override; 49 bool isSharedObject(WebGLSharedObject*) const override;
49 bool valid() const override; 50 bool valid() const override;
50 void onDetached(WebGraphicsContext3D*) override; 51 void onDetached(WebGraphicsContext3D*) override;
51 void attach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overrid e; 52 void attach(gpu::gles2::GLES2Interface*, GLenum target, GLenum attachment) o verride;
52 void unattach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overr ide; 53 void unattach(gpu::gles2::GLES2Interface*, GLenum target, GLenum attachment) override;
53 54
54 Member<WebGLRenderbuffer> m_renderbuffer; 55 Member<WebGLRenderbuffer> m_renderbuffer;
55 }; 56 };
56 57
57 WebGLFramebuffer::WebGLAttachment* WebGLRenderbufferAttachment::create(WebGLRend erbuffer* renderbuffer) 58 WebGLFramebuffer::WebGLAttachment* WebGLRenderbufferAttachment::create(WebGLRend erbuffer* renderbuffer)
58 { 59 {
59 return new WebGLRenderbufferAttachment(renderbuffer); 60 return new WebGLRenderbufferAttachment(renderbuffer);
60 } 61 }
61 62
62 DEFINE_TRACE(WebGLRenderbufferAttachment) 63 DEFINE_TRACE(WebGLRenderbufferAttachment)
(...skipping 20 matching lines...) Expand all
83 bool WebGLRenderbufferAttachment::valid() const 84 bool WebGLRenderbufferAttachment::valid() const
84 { 85 {
85 return m_renderbuffer->object(); 86 return m_renderbuffer->object();
86 } 87 }
87 88
88 void WebGLRenderbufferAttachment::onDetached(WebGraphicsContext3D* context) 89 void WebGLRenderbufferAttachment::onDetached(WebGraphicsContext3D* context)
89 { 90 {
90 m_renderbuffer->onDetached(context); 91 m_renderbuffer->onDetached(context);
91 } 92 }
92 93
93 void WebGLRenderbufferAttachment::attach(WebGraphicsContext3D* context, GLenum t arget, GLenum attachment) 94 void WebGLRenderbufferAttachment::attach(gpu::gles2::GLES2Interface* gl, GLenum target, GLenum attachment)
94 { 95 {
95 Platform3DObject object = objectOrZero(m_renderbuffer.get()); 96 Platform3DObject object = objectOrZero(m_renderbuffer.get());
96 context->framebufferRenderbuffer(target, attachment, GL_RENDERBUFFER, object ); 97 gl->FramebufferRenderbuffer(target, attachment, GL_RENDERBUFFER, object);
97 } 98 }
98 99
99 void WebGLRenderbufferAttachment::unattach(WebGraphicsContext3D* context, GLenum target, GLenum attachment) 100 void WebGLRenderbufferAttachment::unattach(gpu::gles2::GLES2Interface* gl, GLenu m target, GLenum attachment)
100 { 101 {
101 context->framebufferRenderbuffer(target, attachment, GL_RENDERBUFFER, 0); 102 gl->FramebufferRenderbuffer(target, attachment, GL_RENDERBUFFER, 0);
102 } 103 }
103 104
104 class WebGLTextureAttachment final : public WebGLFramebuffer::WebGLAttachment { 105 class WebGLTextureAttachment final : public WebGLFramebuffer::WebGLAttachment {
105 public: 106 public:
106 static WebGLFramebuffer::WebGLAttachment* create(WebGLTexture*, GLenum targe t, GLint level, GLint layer); 107 static WebGLFramebuffer::WebGLAttachment* create(WebGLTexture*, GLenum targe t, GLint level, GLint layer);
107 108
108 DECLARE_VIRTUAL_TRACE(); 109 DECLARE_VIRTUAL_TRACE();
109 110
110 private: 111 private:
111 WebGLTextureAttachment(WebGLTexture*, GLenum target, GLint level, GLint laye r); 112 WebGLTextureAttachment(WebGLTexture*, GLenum target, GLint level, GLint laye r);
112 WebGLTextureAttachment() { } 113 WebGLTextureAttachment() { }
113 114
114 WebGLSharedObject* object() const override; 115 WebGLSharedObject* object() const override;
115 bool isSharedObject(WebGLSharedObject*) const override; 116 bool isSharedObject(WebGLSharedObject*) const override;
116 bool valid() const override; 117 bool valid() const override;
117 void onDetached(WebGraphicsContext3D*) override; 118 void onDetached(WebGraphicsContext3D*) override;
118 void attach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overrid e; 119 void attach(gpu::gles2::GLES2Interface*, GLenum target, GLenum attachment) o verride;
119 void unattach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overr ide; 120 void unattach(gpu::gles2::GLES2Interface*, GLenum target, GLenum attachment) override;
120 121
121 Member<WebGLTexture> m_texture; 122 Member<WebGLTexture> m_texture;
122 GLenum m_target; 123 GLenum m_target;
123 GLint m_level; 124 GLint m_level;
124 GLint m_layer; 125 GLint m_layer;
125 }; 126 };
126 127
127 WebGLFramebuffer::WebGLAttachment* WebGLTextureAttachment::create(WebGLTexture* texture, GLenum target, GLint level, GLint layer) 128 WebGLFramebuffer::WebGLAttachment* WebGLTextureAttachment::create(WebGLTexture* texture, GLenum target, GLint level, GLint layer)
128 { 129 {
129 return new WebGLTextureAttachment(texture, target, level, layer); 130 return new WebGLTextureAttachment(texture, target, level, layer);
(...skipping 26 matching lines...) Expand all
156 bool WebGLTextureAttachment::valid() const 157 bool WebGLTextureAttachment::valid() const
157 { 158 {
158 return m_texture->object(); 159 return m_texture->object();
159 } 160 }
160 161
161 void WebGLTextureAttachment::onDetached(WebGraphicsContext3D* context) 162 void WebGLTextureAttachment::onDetached(WebGraphicsContext3D* context)
162 { 163 {
163 m_texture->onDetached(context); 164 m_texture->onDetached(context);
164 } 165 }
165 166
166 void WebGLTextureAttachment::attach(WebGraphicsContext3D* context, GLenum target , GLenum attachment) 167 void WebGLTextureAttachment::attach(gpu::gles2::GLES2Interface* gl, GLenum targe t, GLenum attachment)
167 { 168 {
168 Platform3DObject object = objectOrZero(m_texture.get()); 169 Platform3DObject object = objectOrZero(m_texture.get());
169 if (m_target == GL_TEXTURE_3D || m_target == GL_TEXTURE_2D_ARRAY) { 170 if (m_target == GL_TEXTURE_3D || m_target == GL_TEXTURE_2D_ARRAY) {
170 context->framebufferTextureLayer(target, attachment, object, m_level, m_ layer); 171 gl->FramebufferTextureLayer(target, attachment, object, m_level, m_layer );
171 } else { 172 } else {
172 context->framebufferTexture2D(target, attachment, m_target, object, m_le vel); 173 gl->FramebufferTexture2D(target, attachment, m_target, object, m_level);
173 } 174 }
174 } 175 }
175 176
176 void WebGLTextureAttachment::unattach(WebGraphicsContext3D* context, GLenum targ et, GLenum attachment) 177 void WebGLTextureAttachment::unattach(gpu::gles2::GLES2Interface* gl, GLenum tar get, GLenum attachment)
177 { 178 {
178 // GL_DEPTH_STENCIL_ATTACHMENT attachment is valid in ES3. 179 // GL_DEPTH_STENCIL_ATTACHMENT attachment is valid in ES3.
179 if (m_target == GL_TEXTURE_3D || m_target == GL_TEXTURE_2D_ARRAY) { 180 if (m_target == GL_TEXTURE_3D || m_target == GL_TEXTURE_2D_ARRAY) {
180 context->framebufferTextureLayer(target, attachment, 0, m_level, m_layer ); 181 gl->FramebufferTextureLayer(target, attachment, 0, m_level, m_layer);
181 } else { 182 } else {
182 context->framebufferTexture2D(target, attachment, m_target, 0, m_level); 183 gl->FramebufferTexture2D(target, attachment, m_target, 0, m_level);
183 } 184 }
184 } 185 }
185 186
186 } // anonymous namespace 187 } // anonymous namespace
187 188
188 WebGLFramebuffer::WebGLAttachment::WebGLAttachment() 189 WebGLFramebuffer::WebGLAttachment::WebGLAttachment()
189 { 190 {
190 } 191 }
191 192
192 WebGLFramebuffer::WebGLAttachment::~WebGLAttachment() 193 WebGLFramebuffer::WebGLAttachment::~WebGLAttachment()
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 drawBuffersIfNecessary(false); 243 drawBuffersIfNecessary(false);
243 renderbuffer->onAttached(); 244 renderbuffer->onAttached();
244 } 245 }
245 } 246 }
246 247
247 void WebGLFramebuffer::attach(GLenum target, GLenum attachment, GLenum attachmen tPoint) 248 void WebGLFramebuffer::attach(GLenum target, GLenum attachment, GLenum attachmen tPoint)
248 { 249 {
249 ASSERT(isBound(target)); 250 ASSERT(isBound(target));
250 WebGLAttachment* attachmentObject = getAttachment(attachment); 251 WebGLAttachment* attachmentObject = getAttachment(attachment);
251 if (attachmentObject) 252 if (attachmentObject)
252 attachmentObject->attach(context()->webContext(), target, attachmentPoin t); 253 attachmentObject->attach(context()->contextGL(), target, attachmentPoint );
253 } 254 }
254 255
255 WebGLSharedObject* WebGLFramebuffer::getAttachmentObject(GLenum attachment) cons t 256 WebGLSharedObject* WebGLFramebuffer::getAttachmentObject(GLenum attachment) cons t
256 { 257 {
257 if (!m_object) 258 if (!m_object)
258 return nullptr; 259 return nullptr;
259 WebGLAttachment* attachmentObject = getAttachment(attachment); 260 WebGLAttachment* attachmentObject = getAttachment(attachment);
260 return attachmentObject ? attachmentObject->object() : nullptr; 261 return attachmentObject ? attachmentObject->object() : nullptr;
261 } 262 }
262 263
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 if (!attachment) 299 if (!attachment)
299 return; 300 return;
300 301
301 bool checkMore = true; 302 bool checkMore = true;
302 while (checkMore) { 303 while (checkMore) {
303 checkMore = false; 304 checkMore = false;
304 for (const auto& it : m_attachments) { 305 for (const auto& it : m_attachments) {
305 WebGLAttachment* attachmentObject = it.value.get(); 306 WebGLAttachment* attachmentObject = it.value.get();
306 if (attachmentObject->isSharedObject(attachment)) { 307 if (attachmentObject->isSharedObject(attachment)) {
307 GLenum attachmentType = it.key; 308 GLenum attachmentType = it.key;
308 attachmentObject->unattach(context()->webContext(), target, atta chmentType); 309 attachmentObject->unattach(context()->contextGL(), target, attac hmentType);
309 removeAttachmentFromBoundFramebuffer(target, attachmentType); 310 removeAttachmentFromBoundFramebuffer(target, attachmentType);
310 checkMore = true; 311 checkMore = true;
311 break; 312 break;
312 } 313 }
313 } 314 }
314 } 315 }
315 } 316 }
316 317
317 GLenum WebGLFramebuffer::checkDepthStencilStatus(const char** reason) const 318 GLenum WebGLFramebuffer::checkDepthStencilStatus(const char** reason) const
318 { 319 {
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 return GL_NONE; 422 return GL_NONE;
422 } 423 }
423 424
424 DEFINE_TRACE(WebGLFramebuffer) 425 DEFINE_TRACE(WebGLFramebuffer)
425 { 426 {
426 visitor->trace(m_attachments); 427 visitor->trace(m_attachments);
427 WebGLContextObject::trace(visitor); 428 WebGLContextObject::trace(visitor);
428 } 429 }
429 430
430 } // namespace blink 431 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698