OLD | NEW |
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 |
(...skipping 18 matching lines...) Expand all Loading... |
29 | 29 |
30 #include "modules/webgl/WebGLRenderbuffer.h" | 30 #include "modules/webgl/WebGLRenderbuffer.h" |
31 #include "modules/webgl/WebGLRenderingContextBase.h" | 31 #include "modules/webgl/WebGLRenderingContextBase.h" |
32 #include "modules/webgl/WebGLTexture.h" | 32 #include "modules/webgl/WebGLTexture.h" |
33 #include "platform/NotImplemented.h" | 33 #include "platform/NotImplemented.h" |
34 | 34 |
35 namespace blink { | 35 namespace blink { |
36 | 36 |
37 namespace { | 37 namespace { |
38 | 38 |
39 class WebGLRenderbufferAttachment final : public WebGLFramebuffer::WebGLAtta
chment { | 39 class WebGLRenderbufferAttachment final : public WebGLFramebuffer::WebGLAttachme
nt { |
40 public: | 40 public: |
41 static PassRefPtrWillBeRawPtr<WebGLFramebuffer::WebGLAttachment> create(
WebGLRenderbuffer*); | 41 static WebGLFramebuffer::WebGLAttachment* create(WebGLRenderbuffer*); |
42 | 42 |
43 DECLARE_VIRTUAL_TRACE(); | 43 DECLARE_VIRTUAL_TRACE(); |
44 | 44 |
45 private: | 45 private: |
46 explicit WebGLRenderbufferAttachment(WebGLRenderbuffer*); | 46 explicit WebGLRenderbufferAttachment(WebGLRenderbuffer*); |
47 WebGLRenderbufferAttachment() { } | 47 WebGLRenderbufferAttachment() { } |
48 | 48 |
49 GLsizei width() const override; | 49 GLsizei width() const override; |
50 GLsizei height() const override; | 50 GLsizei height() const override; |
51 GLenum format() const override; | 51 GLenum format() const override; |
52 GLenum type() const override; | 52 GLenum type() const override; |
53 WebGLSharedObject* object() const override; | 53 WebGLSharedObject* object() const override; |
54 bool isSharedObject(WebGLSharedObject*) const override; | 54 bool isSharedObject(WebGLSharedObject*) const override; |
55 bool valid() const override; | 55 bool valid() const override; |
56 void onDetached(WebGraphicsContext3D*) override; | 56 void onDetached(WebGraphicsContext3D*) override; |
57 void attach(WebGraphicsContext3D*, GLenum target, GLenum attachment) ove
rride; | 57 void attach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overrid
e; |
58 void unattach(WebGraphicsContext3D*, GLenum target, GLenum attachment) o
verride; | 58 void unattach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overr
ide; |
59 | 59 |
60 RefPtrWillBeMember<WebGLRenderbuffer> m_renderbuffer; | 60 Member<WebGLRenderbuffer> m_renderbuffer; |
61 }; | 61 }; |
62 | 62 |
63 PassRefPtrWillBeRawPtr<WebGLFramebuffer::WebGLAttachment> WebGLRenderbufferA
ttachment::create(WebGLRenderbuffer* renderbuffer) | 63 WebGLFramebuffer::WebGLAttachment* WebGLRenderbufferAttachment::create(WebGLRend
erbuffer* renderbuffer) |
64 { | 64 { |
65 return adoptRefWillBeNoop(new WebGLRenderbufferAttachment(renderbuffer))
; | 65 return new WebGLRenderbufferAttachment(renderbuffer); |
66 } | 66 } |
67 | 67 |
68 DEFINE_TRACE(WebGLRenderbufferAttachment) | 68 DEFINE_TRACE(WebGLRenderbufferAttachment) |
69 { | 69 { |
70 visitor->trace(m_renderbuffer); | 70 visitor->trace(m_renderbuffer); |
71 WebGLFramebuffer::WebGLAttachment::trace(visitor); | 71 WebGLFramebuffer::WebGLAttachment::trace(visitor); |
72 } | 72 } |
73 | 73 |
74 WebGLRenderbufferAttachment::WebGLRenderbufferAttachment(WebGLRenderbuffer*
renderbuffer) | 74 WebGLRenderbufferAttachment::WebGLRenderbufferAttachment(WebGLRenderbuffer* rend
erbuffer) |
75 : m_renderbuffer(renderbuffer) | 75 : m_renderbuffer(renderbuffer) |
76 { | 76 { |
77 } | 77 } |
78 | 78 |
79 GLsizei WebGLRenderbufferAttachment::width() const | 79 GLsizei WebGLRenderbufferAttachment::width() const |
80 { | 80 { |
81 return m_renderbuffer->width(); | 81 return m_renderbuffer->width(); |
82 } | 82 } |
83 | 83 |
84 GLsizei WebGLRenderbufferAttachment::height() const | 84 GLsizei WebGLRenderbufferAttachment::height() const |
85 { | 85 { |
86 return m_renderbuffer->height(); | 86 return m_renderbuffer->height(); |
87 } | 87 } |
88 | 88 |
89 GLenum WebGLRenderbufferAttachment::format() const | 89 GLenum WebGLRenderbufferAttachment::format() const |
90 { | 90 { |
91 GLenum format = m_renderbuffer->internalFormat(); | 91 GLenum format = m_renderbuffer->internalFormat(); |
92 if (format == GL_DEPTH_STENCIL_OES | 92 if (format == GL_DEPTH_STENCIL_OES |
93 && m_renderbuffer->emulatedStencilBuffer() | 93 && m_renderbuffer->emulatedStencilBuffer() |
94 && m_renderbuffer->emulatedStencilBuffer()->internalFormat() != GL_S
TENCIL_INDEX8) { | 94 && m_renderbuffer->emulatedStencilBuffer()->internalFormat() != GL_STENC
IL_INDEX8) { |
95 return 0; | |
96 } | |
97 return format; | |
98 } | |
99 | |
100 WebGLSharedObject* WebGLRenderbufferAttachment::object() const | |
101 { | |
102 return m_renderbuffer->object() ? m_renderbuffer.get() : 0; | |
103 } | |
104 | |
105 bool WebGLRenderbufferAttachment::isSharedObject(WebGLSharedObject* object)
const | |
106 { | |
107 return object == m_renderbuffer; | |
108 } | |
109 | |
110 bool WebGLRenderbufferAttachment::valid() const | |
111 { | |
112 return m_renderbuffer->object(); | |
113 } | |
114 | |
115 void WebGLRenderbufferAttachment::onDetached(WebGraphicsContext3D* context) | |
116 { | |
117 m_renderbuffer->onDetached(context); | |
118 } | |
119 | |
120 void WebGLRenderbufferAttachment::attach(WebGraphicsContext3D* context, GLen
um target, GLenum attachment) | |
121 { | |
122 Platform3DObject object = objectOrZero(m_renderbuffer.get()); | |
123 if (attachment == GL_DEPTH_STENCIL_ATTACHMENT && m_renderbuffer->emulate
dStencilBuffer()) { | |
124 context->framebufferRenderbuffer(target, GL_DEPTH_ATTACHMENT, GL_REN
DERBUFFER, object); | |
125 context->framebufferRenderbuffer(target, GL_STENCIL_ATTACHMENT, GL_R
ENDERBUFFER, objectOrZero(m_renderbuffer->emulatedStencilBuffer())); | |
126 } else { | |
127 context->framebufferRenderbuffer(target, attachment, GL_RENDERBUFFER
, object); | |
128 } | |
129 } | |
130 | |
131 void WebGLRenderbufferAttachment::unattach(WebGraphicsContext3D* context, GL
enum target, GLenum attachment) | |
132 { | |
133 if (attachment == GL_DEPTH_STENCIL_ATTACHMENT) { | |
134 context->framebufferRenderbuffer(target, GL_DEPTH_ATTACHMENT, GL_REN
DERBUFFER, 0); | |
135 context->framebufferRenderbuffer(target, GL_STENCIL_ATTACHMENT, GL_R
ENDERBUFFER, 0); | |
136 } else { | |
137 context->framebufferRenderbuffer(target, attachment, GL_RENDERBUFFER
, 0); | |
138 } | |
139 } | |
140 | |
141 GLenum WebGLRenderbufferAttachment::type() const | |
142 { | |
143 return 0; | 95 return 0; |
144 } | 96 } |
145 | 97 return format; |
146 class WebGLTextureAttachment final : public WebGLFramebuffer::WebGLAttachmen
t { | 98 } |
147 public: | 99 |
148 static PassRefPtrWillBeRawPtr<WebGLFramebuffer::WebGLAttachment> create(
WebGLTexture*, GLenum target, GLint level); | 100 WebGLSharedObject* WebGLRenderbufferAttachment::object() const |
149 | 101 { |
150 DECLARE_VIRTUAL_TRACE(); | 102 return m_renderbuffer->object() ? m_renderbuffer.get() : 0; |
151 | 103 } |
152 private: | 104 |
153 WebGLTextureAttachment(WebGLTexture*, GLenum target, GLint level); | 105 bool WebGLRenderbufferAttachment::isSharedObject(WebGLSharedObject* object) cons
t |
154 WebGLTextureAttachment() { } | 106 { |
155 | 107 return object == m_renderbuffer; |
156 GLsizei width() const override; | 108 } |
157 GLsizei height() const override; | 109 |
158 GLenum format() const override; | 110 bool WebGLRenderbufferAttachment::valid() const |
159 GLenum type() const override; | 111 { |
160 WebGLSharedObject* object() const override; | 112 return m_renderbuffer->object(); |
161 bool isSharedObject(WebGLSharedObject*) const override; | 113 } |
162 bool valid() const override; | 114 |
163 void onDetached(WebGraphicsContext3D*) override; | 115 void WebGLRenderbufferAttachment::onDetached(WebGraphicsContext3D* context) |
164 void attach(WebGraphicsContext3D*, GLenum target, GLenum attachment) ove
rride; | 116 { |
165 void unattach(WebGraphicsContext3D*, GLenum target, GLenum attachment) o
verride; | 117 m_renderbuffer->onDetached(context); |
166 | 118 } |
167 RefPtrWillBeMember<WebGLTexture> m_texture; | 119 |
168 GLenum m_target; | 120 void WebGLRenderbufferAttachment::attach(WebGraphicsContext3D* context, GLenum t
arget, GLenum attachment) |
169 GLint m_level; | 121 { |
170 }; | 122 Platform3DObject object = objectOrZero(m_renderbuffer.get()); |
171 | 123 if (attachment == GL_DEPTH_STENCIL_ATTACHMENT && m_renderbuffer->emulatedSte
ncilBuffer()) { |
172 PassRefPtrWillBeRawPtr<WebGLFramebuffer::WebGLAttachment> WebGLTextureAttach
ment::create(WebGLTexture* texture, GLenum target, GLint level) | 124 context->framebufferRenderbuffer(target, GL_DEPTH_ATTACHMENT, GL_RENDERB
UFFER, object); |
173 { | 125 context->framebufferRenderbuffer(target, GL_STENCIL_ATTACHMENT, GL_RENDE
RBUFFER, objectOrZero(m_renderbuffer->emulatedStencilBuffer())); |
174 return adoptRefWillBeNoop(new WebGLTextureAttachment(texture, target, le
vel)); | 126 } else { |
175 } | 127 context->framebufferRenderbuffer(target, attachment, GL_RENDERBUFFER, ob
ject); |
176 | 128 } |
177 DEFINE_TRACE(WebGLTextureAttachment) | 129 } |
178 { | 130 |
179 visitor->trace(m_texture); | 131 void WebGLRenderbufferAttachment::unattach(WebGraphicsContext3D* context, GLenum
target, GLenum attachment) |
180 WebGLFramebuffer::WebGLAttachment::trace(visitor); | 132 { |
181 } | 133 if (attachment == GL_DEPTH_STENCIL_ATTACHMENT) { |
182 | 134 context->framebufferRenderbuffer(target, GL_DEPTH_ATTACHMENT, GL_RENDERB
UFFER, 0); |
183 WebGLTextureAttachment::WebGLTextureAttachment(WebGLTexture* texture, GLenum
target, GLint level) | 135 context->framebufferRenderbuffer(target, GL_STENCIL_ATTACHMENT, GL_RENDE
RBUFFER, 0); |
| 136 } else { |
| 137 context->framebufferRenderbuffer(target, attachment, GL_RENDERBUFFER, 0)
; |
| 138 } |
| 139 } |
| 140 |
| 141 GLenum WebGLRenderbufferAttachment::type() const |
| 142 { |
| 143 notImplemented(); |
| 144 return 0; |
| 145 } |
| 146 |
| 147 class WebGLTextureAttachment final : public WebGLFramebuffer::WebGLAttachment { |
| 148 public: |
| 149 static WebGLFramebuffer::WebGLAttachment* create(WebGLTexture*, GLenum targe
t, GLint level); |
| 150 |
| 151 DECLARE_VIRTUAL_TRACE(); |
| 152 |
| 153 private: |
| 154 WebGLTextureAttachment(WebGLTexture*, GLenum target, GLint level); |
| 155 WebGLTextureAttachment() { } |
| 156 |
| 157 GLsizei width() const override; |
| 158 GLsizei height() const override; |
| 159 GLenum format() const override; |
| 160 GLenum type() const override; |
| 161 WebGLSharedObject* object() const override; |
| 162 bool isSharedObject(WebGLSharedObject*) const override; |
| 163 bool valid() const override; |
| 164 void onDetached(WebGraphicsContext3D*) override; |
| 165 void attach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overrid
e; |
| 166 void unattach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overr
ide; |
| 167 |
| 168 Member<WebGLTexture> m_texture; |
| 169 GLenum m_target; |
| 170 GLint m_level; |
| 171 }; |
| 172 |
| 173 WebGLFramebuffer::WebGLAttachment* WebGLTextureAttachment::create(WebGLTexture*
texture, GLenum target, GLint level) |
| 174 { |
| 175 return new WebGLTextureAttachment(texture, target, level); |
| 176 } |
| 177 |
| 178 DEFINE_TRACE(WebGLTextureAttachment) |
| 179 { |
| 180 visitor->trace(m_texture); |
| 181 WebGLFramebuffer::WebGLAttachment::trace(visitor); |
| 182 } |
| 183 |
| 184 WebGLTextureAttachment::WebGLTextureAttachment(WebGLTexture* texture, GLenum tar
get, GLint level) |
184 : m_texture(texture) | 185 : m_texture(texture) |
185 , m_target(target) | 186 , m_target(target) |
186 , m_level(level) | 187 , m_level(level) |
187 { | 188 { |
188 } | 189 } |
189 | 190 |
190 GLsizei WebGLTextureAttachment::width() const | 191 GLsizei WebGLTextureAttachment::width() const |
191 { | 192 { |
192 return m_texture->getWidth(m_target, m_level); | 193 return m_texture->getWidth(m_target, m_level); |
193 } | 194 } |
194 | 195 |
195 GLsizei WebGLTextureAttachment::height() const | 196 GLsizei WebGLTextureAttachment::height() const |
196 { | 197 { |
197 return m_texture->getHeight(m_target, m_level); | 198 return m_texture->getHeight(m_target, m_level); |
198 } | 199 } |
199 | 200 |
200 GLenum WebGLTextureAttachment::format() const | 201 GLenum WebGLTextureAttachment::format() const |
201 { | 202 { |
202 return m_texture->getInternalFormat(m_target, m_level); | 203 return m_texture->getInternalFormat(m_target, m_level); |
203 } | 204 } |
204 | 205 |
205 WebGLSharedObject* WebGLTextureAttachment::object() const | 206 WebGLSharedObject* WebGLTextureAttachment::object() const |
206 { | 207 { |
207 return m_texture->object() ? m_texture.get() : 0; | 208 return m_texture->object() ? m_texture.get() : 0; |
208 } | 209 } |
209 | 210 |
210 bool WebGLTextureAttachment::isSharedObject(WebGLSharedObject* object) const | 211 bool WebGLTextureAttachment::isSharedObject(WebGLSharedObject* object) const |
211 { | 212 { |
212 return object == m_texture; | 213 return object == m_texture; |
213 } | 214 } |
214 | 215 |
215 bool WebGLTextureAttachment::valid() const | 216 bool WebGLTextureAttachment::valid() const |
216 { | 217 { |
217 return m_texture->object(); | 218 return m_texture->object(); |
218 } | 219 } |
219 | 220 |
220 void WebGLTextureAttachment::onDetached(WebGraphicsContext3D* context) | 221 void WebGLTextureAttachment::onDetached(WebGraphicsContext3D* context) |
221 { | 222 { |
222 m_texture->onDetached(context); | 223 m_texture->onDetached(context); |
223 } | 224 } |
224 | 225 |
225 void WebGLTextureAttachment::attach(WebGraphicsContext3D* context, GLenum ta
rget, GLenum attachment) | 226 void WebGLTextureAttachment::attach(WebGraphicsContext3D* context, GLenum target
, GLenum attachment) |
226 { | 227 { |
227 Platform3DObject object = objectOrZero(m_texture.get()); | 228 Platform3DObject object = objectOrZero(m_texture.get()); |
228 context->framebufferTexture2D(target, attachment, m_target, object, m_le
vel); | 229 context->framebufferTexture2D(target, attachment, m_target, object, m_level)
; |
229 } | 230 } |
230 | 231 |
231 void WebGLTextureAttachment::unattach(WebGraphicsContext3D* context, GLenum
target, GLenum attachment) | 232 void WebGLTextureAttachment::unattach(WebGraphicsContext3D* context, GLenum targ
et, GLenum attachment) |
232 { | 233 { |
233 if (attachment == GL_DEPTH_STENCIL_ATTACHMENT) { | 234 if (attachment == GL_DEPTH_STENCIL_ATTACHMENT) { |
234 context->framebufferTexture2D(target, GL_DEPTH_ATTACHMENT, m_target,
0, m_level); | 235 context->framebufferTexture2D(target, GL_DEPTH_ATTACHMENT, m_target, 0,
m_level); |
235 context->framebufferTexture2D(target, GL_STENCIL_ATTACHMENT, m_targe
t, 0, m_level); | 236 context->framebufferTexture2D(target, GL_STENCIL_ATTACHMENT, m_target, 0
, m_level); |
236 } else { | 237 } else { |
237 context->framebufferTexture2D(target, attachment, m_target, 0, m_lev
el); | 238 context->framebufferTexture2D(target, attachment, m_target, 0, m_level); |
238 } | 239 } |
239 } | 240 } |
240 | 241 |
241 GLenum WebGLTextureAttachment::type() const | 242 GLenum WebGLTextureAttachment::type() const |
242 { | 243 { |
243 return m_texture->getType(m_target, m_level); | 244 return m_texture->getType(m_target, m_level); |
244 } | 245 } |
245 | 246 |
246 bool isColorRenderable(GLenum internalformat) | 247 bool isColorRenderable(GLenum internalformat) |
247 { | 248 { |
248 switch (internalformat) { | 249 switch (internalformat) { |
249 case GL_RGB: | 250 case GL_RGB: |
250 case GL_RGBA: | 251 case GL_RGBA: |
251 case GL_SRGB_ALPHA_EXT: | 252 case GL_SRGB_ALPHA_EXT: |
252 case GL_R8: | 253 case GL_R8: |
253 case GL_R8UI: | 254 case GL_R8UI: |
254 case GL_R8I: | 255 case GL_R8I: |
255 case GL_R16UI: | 256 case GL_R16UI: |
256 case GL_R16I: | 257 case GL_R16I: |
257 case GL_R32UI: | 258 case GL_R32UI: |
258 case GL_R32I: | 259 case GL_R32I: |
(...skipping 14 matching lines...) Expand all Loading... |
273 case GL_RGBA8UI: | 274 case GL_RGBA8UI: |
274 case GL_RGBA8I: | 275 case GL_RGBA8I: |
275 case GL_RGB10_A2UI: | 276 case GL_RGB10_A2UI: |
276 case GL_RGBA16UI: | 277 case GL_RGBA16UI: |
277 case GL_RGBA16I: | 278 case GL_RGBA16I: |
278 case GL_RGBA32UI: | 279 case GL_RGBA32UI: |
279 case GL_RGBA32I: | 280 case GL_RGBA32I: |
280 return true; | 281 return true; |
281 default: | 282 default: |
282 return false; | 283 return false; |
283 } | |
284 } | 284 } |
| 285 } |
285 | 286 |
286 bool isDepthRenderable(GLenum internalformat, bool includesDepthStencil) | 287 bool isDepthRenderable(GLenum internalformat, bool includesDepthStencil) |
287 { | 288 { |
288 switch (internalformat) { | 289 switch (internalformat) { |
289 case GL_DEPTH_COMPONENT: | 290 case GL_DEPTH_COMPONENT: |
290 case GL_DEPTH_COMPONENT16: | 291 case GL_DEPTH_COMPONENT16: |
291 case GL_DEPTH_COMPONENT24: | 292 case GL_DEPTH_COMPONENT24: |
292 case GL_DEPTH_COMPONENT32F: | 293 case GL_DEPTH_COMPONENT32F: |
293 return true; | 294 return true; |
294 case GL_DEPTH_STENCIL: | 295 case GL_DEPTH_STENCIL: |
295 case GL_DEPTH24_STENCIL8: | 296 case GL_DEPTH24_STENCIL8: |
296 case GL_DEPTH32F_STENCIL8: | 297 case GL_DEPTH32F_STENCIL8: |
297 return includesDepthStencil; | 298 return includesDepthStencil; |
298 default: | 299 default: |
299 return false; | 300 return false; |
300 } | |
301 } | 301 } |
| 302 } |
302 | 303 |
303 bool isStencilRenderable(GLenum internalformat, bool includesDepthStencil) | 304 bool isStencilRenderable(GLenum internalformat, bool includesDepthStencil) |
304 { | 305 { |
305 switch (internalformat) { | 306 switch (internalformat) { |
306 case GL_STENCIL_INDEX8: | 307 case GL_STENCIL_INDEX8: |
307 return true; | 308 return true; |
308 case GL_DEPTH_STENCIL: | 309 case GL_DEPTH_STENCIL: |
309 case GL_DEPTH24_STENCIL8: | 310 case GL_DEPTH24_STENCIL8: |
310 case GL_DEPTH32F_STENCIL8: | 311 case GL_DEPTH32F_STENCIL8: |
311 return includesDepthStencil; | 312 return includesDepthStencil; |
312 default: | 313 default: |
313 return false; | 314 return false; |
314 } | |
315 } | 315 } |
| 316 } |
316 | 317 |
317 } // anonymous namespace | 318 } // anonymous namespace |
318 | 319 |
319 WebGLFramebuffer::WebGLAttachment::WebGLAttachment() | 320 WebGLFramebuffer::WebGLAttachment::WebGLAttachment() |
320 { | 321 { |
321 } | 322 } |
322 | 323 |
323 WebGLFramebuffer::WebGLAttachment::~WebGLAttachment() | 324 WebGLFramebuffer::WebGLAttachment::~WebGLAttachment() |
324 { | 325 { |
325 } | 326 } |
326 | 327 |
327 PassRefPtrWillBeRawPtr<WebGLFramebuffer> WebGLFramebuffer::create(WebGLRendering
ContextBase* ctx) | 328 WebGLFramebuffer* WebGLFramebuffer::create(WebGLRenderingContextBase* ctx) |
328 { | 329 { |
329 return adoptRefWillBeNoop(new WebGLFramebuffer(ctx)); | 330 return new WebGLFramebuffer(ctx); |
330 } | 331 } |
331 | 332 |
332 WebGLFramebuffer::WebGLFramebuffer(WebGLRenderingContextBase* ctx) | 333 WebGLFramebuffer::WebGLFramebuffer(WebGLRenderingContextBase* ctx) |
333 : WebGLContextObject(ctx) | 334 : WebGLContextObject(ctx) |
334 , m_object(ctx->webContext()->createFramebuffer()) | 335 , m_object(ctx->webContext()->createFramebuffer()) |
335 , m_hasEverBeenBound(false) | 336 , m_hasEverBeenBound(false) |
336 , m_readBuffer(GL_COLOR_ATTACHMENT0) | 337 , m_readBuffer(GL_COLOR_ATTACHMENT0) |
337 { | 338 { |
338 } | 339 } |
339 | 340 |
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
656 return false; | 657 return false; |
657 if (format) | 658 if (format) |
658 *format = image->format(); | 659 *format = image->format(); |
659 if (type) | 660 if (type) |
660 *type = image->type(); | 661 *type = image->type(); |
661 return true; | 662 return true; |
662 } | 663 } |
663 | 664 |
664 DEFINE_TRACE(WebGLFramebuffer) | 665 DEFINE_TRACE(WebGLFramebuffer) |
665 { | 666 { |
666 #if ENABLE(OILPAN) | |
667 visitor->trace(m_attachments); | 667 visitor->trace(m_attachments); |
668 #endif | |
669 WebGLContextObject::trace(visitor); | 668 WebGLContextObject::trace(visitor); |
670 } | 669 } |
671 | 670 |
672 } | 671 } |
OLD | NEW |