| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2010, Google Inc. All rights reserved. | 2 * Copyright (c) 2010, Google 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 are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 static const bool s_allowContextEvictionOnCreate = true; | 56 static const bool s_allowContextEvictionOnCreate = true; |
| 57 static const int s_maxScaleAttempts = 3; | 57 static const int s_maxScaleAttempts = 3; |
| 58 | 58 |
| 59 class ScopedTextureUnit0BindingRestorer { | 59 class ScopedTextureUnit0BindingRestorer { |
| 60 public: | 60 public: |
| 61 ScopedTextureUnit0BindingRestorer(GraphicsContext3D* context, GC3Denum activ
eTextureUnit, Platform3DObject textureUnitZeroId) | 61 ScopedTextureUnit0BindingRestorer(GraphicsContext3D* context, GC3Denum activ
eTextureUnit, Platform3DObject textureUnitZeroId) |
| 62 : m_context(context) | 62 : m_context(context) |
| 63 , m_oldActiveTextureUnit(activeTextureUnit) | 63 , m_oldActiveTextureUnit(activeTextureUnit) |
| 64 , m_oldTextureUnitZeroId(textureUnitZeroId) | 64 , m_oldTextureUnitZeroId(textureUnitZeroId) |
| 65 { | 65 { |
| 66 m_context->activeTexture(GraphicsContext3D::TEXTURE0); | 66 m_context->activeTexture(GL_TEXTURE0); |
| 67 } | 67 } |
| 68 ~ScopedTextureUnit0BindingRestorer() | 68 ~ScopedTextureUnit0BindingRestorer() |
| 69 { | 69 { |
| 70 m_context->bindTexture(GraphicsContext3D::TEXTURE_2D, m_oldTextureUnitZe
roId); | 70 m_context->bindTexture(GL_TEXTURE_2D, m_oldTextureUnitZeroId); |
| 71 m_context->activeTexture(m_oldActiveTextureUnit); | 71 m_context->activeTexture(m_oldActiveTextureUnit); |
| 72 } | 72 } |
| 73 | 73 |
| 74 private: | 74 private: |
| 75 GraphicsContext3D* m_context; | 75 GraphicsContext3D* m_context; |
| 76 GC3Denum m_oldActiveTextureUnit; | 76 GC3Denum m_oldActiveTextureUnit; |
| 77 Platform3DObject m_oldTextureUnitZeroId; | 77 Platform3DObject m_oldTextureUnitZeroId; |
| 78 }; | 78 }; |
| 79 | 79 |
| 80 PassRefPtr<DrawingBuffer> DrawingBuffer::create(GraphicsContext3D* context, cons
t IntSize& size, PreserveDrawingBuffer preserve, PassRefPtr<ContextEvictionManag
er> contextEvictionManager) | 80 PassRefPtr<DrawingBuffer> DrawingBuffer::create(GraphicsContext3D* context, cons
t IntSize& size, PreserveDrawingBuffer preserve, PassRefPtr<ContextEvictionManag
er> contextEvictionManager) |
| (...skipping 18 matching lines...) Expand all Loading... |
| 99 DrawingBuffer::DrawingBuffer(GraphicsContext3D* context, | 99 DrawingBuffer::DrawingBuffer(GraphicsContext3D* context, |
| 100 const IntSize& size, | 100 const IntSize& size, |
| 101 bool multisampleExtensionSupported, | 101 bool multisampleExtensionSupported, |
| 102 bool packedDepthStencilExtensionSupported, | 102 bool packedDepthStencilExtensionSupported, |
| 103 PreserveDrawingBuffer preserve, | 103 PreserveDrawingBuffer preserve, |
| 104 PassRefPtr<ContextEvictionManager> contextEvictionM
anager) | 104 PassRefPtr<ContextEvictionManager> contextEvictionM
anager) |
| 105 : m_preserveDrawingBuffer(preserve) | 105 : m_preserveDrawingBuffer(preserve) |
| 106 , m_scissorEnabled(false) | 106 , m_scissorEnabled(false) |
| 107 , m_texture2DBinding(0) | 107 , m_texture2DBinding(0) |
| 108 , m_framebufferBinding(0) | 108 , m_framebufferBinding(0) |
| 109 , m_activeTextureUnit(GraphicsContext3D::TEXTURE0) | 109 , m_activeTextureUnit(GL_TEXTURE0) |
| 110 , m_context(context) | 110 , m_context(context) |
| 111 , m_size(-1, -1) | 111 , m_size(-1, -1) |
| 112 , m_multisampleExtensionSupported(multisampleExtensionSupported) | 112 , m_multisampleExtensionSupported(multisampleExtensionSupported) |
| 113 , m_packedDepthStencilExtensionSupported(packedDepthStencilExtensionSupporte
d) | 113 , m_packedDepthStencilExtensionSupported(packedDepthStencilExtensionSupporte
d) |
| 114 , m_fbo(0) | 114 , m_fbo(0) |
| 115 , m_colorBuffer(0) | 115 , m_colorBuffer(0) |
| 116 , m_frontColorBuffer(0) | 116 , m_frontColorBuffer(0) |
| 117 , m_depthStencilBuffer(0) | 117 , m_depthStencilBuffer(0) |
| 118 , m_depthBuffer(0) | 118 , m_depthBuffer(0) |
| 119 , m_stencilBuffer(0) | 119 , m_stencilBuffer(0) |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 nextFrontColorBuffer = createNewMailbox(newColorBuffer); | 188 nextFrontColorBuffer = createNewMailbox(newColorBuffer); |
| 189 } | 189 } |
| 190 | 190 |
| 191 if (m_preserveDrawingBuffer == Discard) { | 191 if (m_preserveDrawingBuffer == Discard) { |
| 192 m_colorBuffer = nextFrontColorBuffer->textureId; | 192 m_colorBuffer = nextFrontColorBuffer->textureId; |
| 193 swap(nextFrontColorBuffer, m_lastColorBuffer); | 193 swap(nextFrontColorBuffer, m_lastColorBuffer); |
| 194 // It appears safe to overwrite the context's framebuffer binding in the
Discard case since there will always be a | 194 // It appears safe to overwrite the context's framebuffer binding in the
Discard case since there will always be a |
| 195 // WebGLRenderingContext::clearIfComposited() call made before the next
draw call which restores the framebuffer binding. | 195 // WebGLRenderingContext::clearIfComposited() call made before the next
draw call which restores the framebuffer binding. |
| 196 // If this stops being true at some point, we should track the current f
ramebuffer binding in the DrawingBuffer and restore | 196 // If this stops being true at some point, we should track the current f
ramebuffer binding in the DrawingBuffer and restore |
| 197 // it after attaching the new back buffer here. | 197 // it after attaching the new back buffer here. |
| 198 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_fbo); | 198 m_context->bindFramebuffer(GL_FRAMEBUFFER, m_fbo); |
| 199 m_context->framebufferTexture2D(GraphicsContext3D::FRAMEBUFFER, Graphics
Context3D::COLOR_ATTACHMENT0, GraphicsContext3D::TEXTURE_2D, m_colorBuffer, 0); | 199 m_context->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL
_TEXTURE_2D, m_colorBuffer, 0); |
| 200 } else { | 200 } else { |
| 201 Extensions3D* extensions = m_context->extensions(); | 201 Extensions3D* extensions = m_context->extensions(); |
| 202 extensions->copyTextureCHROMIUM(GraphicsContext3D::TEXTURE_2D, m_colorBu
ffer, nextFrontColorBuffer->textureId, 0, GraphicsContext3D::RGBA, GraphicsConte
xt3D::UNSIGNED_BYTE); | 202 extensions->copyTextureCHROMIUM(GL_TEXTURE_2D, m_colorBuffer, nextFrontC
olorBuffer->textureId, 0, GL_RGBA, GL_UNSIGNED_BYTE); |
| 203 } | 203 } |
| 204 | 204 |
| 205 if (multisample() && !m_framebufferBinding) | 205 if (multisample() && !m_framebufferBinding) |
| 206 bind(); | 206 bind(); |
| 207 else | 207 else |
| 208 restoreFramebufferBinding(); | 208 restoreFramebufferBinding(); |
| 209 | 209 |
| 210 m_contentsChanged = false; | 210 m_contentsChanged = false; |
| 211 | 211 |
| 212 context()->bindTexture(GraphicsContext3D::TEXTURE_2D, nextFrontColorBuffer->
textureId); | 212 context()->bindTexture(GL_TEXTURE_2D, nextFrontColorBuffer->textureId); |
| 213 context()->produceTextureCHROMIUM(GraphicsContext3D::TEXTURE_2D, nextFrontCo
lorBuffer->mailbox.name); | 213 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, nextFrontColorBuffer->mailb
ox.name); |
| 214 context()->flush(); | 214 context()->flush(); |
| 215 m_context->markLayerComposited(); | 215 m_context->markLayerComposited(); |
| 216 | 216 |
| 217 *outMailbox = nextFrontColorBuffer->mailbox; | 217 *outMailbox = nextFrontColorBuffer->mailbox; |
| 218 m_frontColorBuffer = nextFrontColorBuffer->textureId; | 218 m_frontColorBuffer = nextFrontColorBuffer->textureId; |
| 219 return true; | 219 return true; |
| 220 } | 220 } |
| 221 | 221 |
| 222 void DrawingBuffer::mailboxReleased(const blink::WebExternalTextureMailbox& mail
box) | 222 void DrawingBuffer::mailboxReleased(const blink::WebExternalTextureMailbox& mail
box) |
| 223 { | 223 { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 238 return PassRefPtr<MailboxInfo>(); | 238 return PassRefPtr<MailboxInfo>(); |
| 239 | 239 |
| 240 RefPtr<MailboxInfo> mailboxInfo = m_recycledMailboxes.last().release(); | 240 RefPtr<MailboxInfo> mailboxInfo = m_recycledMailboxes.last().release(); |
| 241 m_recycledMailboxes.removeLast(); | 241 m_recycledMailboxes.removeLast(); |
| 242 | 242 |
| 243 if (mailboxInfo->mailbox.syncPoint) { | 243 if (mailboxInfo->mailbox.syncPoint) { |
| 244 context()->waitSyncPoint(mailboxInfo->mailbox.syncPoint); | 244 context()->waitSyncPoint(mailboxInfo->mailbox.syncPoint); |
| 245 mailboxInfo->mailbox.syncPoint = 0; | 245 mailboxInfo->mailbox.syncPoint = 0; |
| 246 } | 246 } |
| 247 | 247 |
| 248 context()->bindTexture(GraphicsContext3D::TEXTURE_2D, mailboxInfo->textureId
); | 248 context()->bindTexture(GL_TEXTURE_2D, mailboxInfo->textureId); |
| 249 context()->consumeTextureCHROMIUM(GraphicsContext3D::TEXTURE_2D, mailboxInfo
->mailbox.name); | 249 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailboxInfo->mailbox.name); |
| 250 | 250 |
| 251 if (mailboxInfo->size != m_size) { | 251 if (mailboxInfo->size != m_size) { |
| 252 m_context->texImage2DResourceSafe(GraphicsContext3D::TEXTURE_2D, 0, m_in
ternalColorFormat, m_size.width(), m_size.height(), 0, m_colorFormat, GraphicsCo
ntext3D::UNSIGNED_BYTE); | 252 m_context->texImage2DResourceSafe(GL_TEXTURE_2D, 0, m_internalColorForma
t, m_size.width(), m_size.height(), 0, m_colorFormat, GL_UNSIGNED_BYTE); |
| 253 mailboxInfo->size = m_size; | 253 mailboxInfo->size = m_size; |
| 254 } | 254 } |
| 255 | 255 |
| 256 return mailboxInfo.release(); | 256 return mailboxInfo.release(); |
| 257 } | 257 } |
| 258 | 258 |
| 259 PassRefPtr<DrawingBuffer::MailboxInfo> DrawingBuffer::createNewMailbox(unsigned
textureId) | 259 PassRefPtr<DrawingBuffer::MailboxInfo> DrawingBuffer::createNewMailbox(unsigned
textureId) |
| 260 { | 260 { |
| 261 RefPtr<MailboxInfo> returnMailbox = adoptRef(new MailboxInfo()); | 261 RefPtr<MailboxInfo> returnMailbox = adoptRef(new MailboxInfo()); |
| 262 context()->genMailboxCHROMIUM(returnMailbox->mailbox.name); | 262 context()->genMailboxCHROMIUM(returnMailbox->mailbox.name); |
| 263 returnMailbox->textureId = textureId; | 263 returnMailbox->textureId = textureId; |
| 264 returnMailbox->size = m_size; | 264 returnMailbox->size = m_size; |
| 265 m_textureMailboxes.append(returnMailbox); | 265 m_textureMailboxes.append(returnMailbox); |
| 266 return returnMailbox.release(); | 266 return returnMailbox.release(); |
| 267 } | 267 } |
| 268 | 268 |
| 269 void DrawingBuffer::initialize(const IntSize& size) | 269 void DrawingBuffer::initialize(const IntSize& size) |
| 270 { | 270 { |
| 271 ASSERT(m_context); | 271 ASSERT(m_context); |
| 272 m_attributes = m_context->getContextAttributes(); | 272 m_attributes = m_context->getContextAttributes(); |
| 273 | 273 |
| 274 if (m_attributes.alpha) { | 274 if (m_attributes.alpha) { |
| 275 m_internalColorFormat = GraphicsContext3D::RGBA; | 275 m_internalColorFormat = GL_RGBA; |
| 276 m_colorFormat = GraphicsContext3D::RGBA; | 276 m_colorFormat = GL_RGBA; |
| 277 m_internalRenderbufferFormat = Extensions3D::RGBA8_OES; | 277 m_internalRenderbufferFormat = Extensions3D::RGBA8_OES; |
| 278 } else { | 278 } else { |
| 279 m_internalColorFormat = GraphicsContext3D::RGB; | 279 m_internalColorFormat = GL_RGB; |
| 280 m_colorFormat = GraphicsContext3D::RGB; | 280 m_colorFormat = GL_RGB; |
| 281 m_internalRenderbufferFormat = Extensions3D::RGB8_OES; | 281 m_internalRenderbufferFormat = Extensions3D::RGB8_OES; |
| 282 } | 282 } |
| 283 | 283 |
| 284 m_context->getIntegerv(GraphicsContext3D::MAX_TEXTURE_SIZE, &m_maxTextureSiz
e); | 284 m_context->getIntegerv(GL_MAX_TEXTURE_SIZE, &m_maxTextureSize); |
| 285 | 285 |
| 286 m_fbo = m_context->createFramebuffer(); | 286 m_fbo = m_context->createFramebuffer(); |
| 287 | 287 |
| 288 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_fbo); | 288 m_context->bindFramebuffer(GL_FRAMEBUFFER, m_fbo); |
| 289 m_colorBuffer = createColorTexture(); | 289 m_colorBuffer = createColorTexture(); |
| 290 m_context->framebufferTexture2D(GraphicsContext3D::FRAMEBUFFER, GraphicsCont
ext3D::COLOR_ATTACHMENT0, GraphicsContext3D::TEXTURE_2D, m_colorBuffer, 0); | 290 m_context->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEX
TURE_2D, m_colorBuffer, 0); |
| 291 createSecondaryBuffers(); | 291 createSecondaryBuffers(); |
| 292 reset(size); | 292 reset(size); |
| 293 m_lastColorBuffer = createNewMailbox(m_colorBuffer); | 293 m_lastColorBuffer = createNewMailbox(m_colorBuffer); |
| 294 } | 294 } |
| 295 | 295 |
| 296 unsigned DrawingBuffer::frontColorBuffer() const | 296 unsigned DrawingBuffer::frontColorBuffer() const |
| 297 { | 297 { |
| 298 return m_frontColorBuffer; | 298 return m_frontColorBuffer; |
| 299 } | 299 } |
| 300 | 300 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 324 bool unpackPremultiplyAlphaNeeded = false; | 324 bool unpackPremultiplyAlphaNeeded = false; |
| 325 bool unpackUnpremultiplyAlphaNeeded = false; | 325 bool unpackUnpremultiplyAlphaNeeded = false; |
| 326 if (m_attributes.alpha && m_attributes.premultipliedAlpha && !premultiplyAlp
ha) | 326 if (m_attributes.alpha && m_attributes.premultipliedAlpha && !premultiplyAlp
ha) |
| 327 unpackUnpremultiplyAlphaNeeded = true; | 327 unpackUnpremultiplyAlphaNeeded = true; |
| 328 else if (m_attributes.alpha && !m_attributes.premultipliedAlpha && premultip
lyAlpha) | 328 else if (m_attributes.alpha && !m_attributes.premultipliedAlpha && premultip
lyAlpha) |
| 329 unpackPremultiplyAlphaNeeded = true; | 329 unpackPremultiplyAlphaNeeded = true; |
| 330 | 330 |
| 331 context.pixelStorei(Extensions3D::UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, unpac
kUnpremultiplyAlphaNeeded); | 331 context.pixelStorei(Extensions3D::UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, unpac
kUnpremultiplyAlphaNeeded); |
| 332 context.pixelStorei(Extensions3D::UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, unpackP
remultiplyAlphaNeeded); | 332 context.pixelStorei(Extensions3D::UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, unpackP
remultiplyAlphaNeeded); |
| 333 context.pixelStorei(Extensions3D::UNPACK_FLIP_Y_CHROMIUM, flipY); | 333 context.pixelStorei(Extensions3D::UNPACK_FLIP_Y_CHROMIUM, flipY); |
| 334 extensions->copyTextureCHROMIUM(GraphicsContext3D::TEXTURE_2D, sourceTexture
, texture, level, internalFormat, destType); | 334 extensions->copyTextureCHROMIUM(GL_TEXTURE_2D, sourceTexture, texture, level
, internalFormat, destType); |
| 335 context.pixelStorei(Extensions3D::UNPACK_FLIP_Y_CHROMIUM, false); | 335 context.pixelStorei(Extensions3D::UNPACK_FLIP_Y_CHROMIUM, false); |
| 336 context.pixelStorei(Extensions3D::UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, false
); | 336 context.pixelStorei(Extensions3D::UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, false
); |
| 337 context.pixelStorei(Extensions3D::UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, false); | 337 context.pixelStorei(Extensions3D::UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, false); |
| 338 context.flush(); | 338 context.flush(); |
| 339 | 339 |
| 340 return true; | 340 return true; |
| 341 } | 341 } |
| 342 | 342 |
| 343 Platform3DObject DrawingBuffer::framebuffer() const | 343 Platform3DObject DrawingBuffer::framebuffer() const |
| 344 { | 344 { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 357 m_layer->setBlendBackgroundColor(m_attributes.alpha); | 357 m_layer->setBlendBackgroundColor(m_attributes.alpha); |
| 358 m_layer->setPremultipliedAlpha(m_attributes.premultipliedAlpha); | 358 m_layer->setPremultipliedAlpha(m_attributes.premultipliedAlpha); |
| 359 GraphicsLayer::registerContentsLayer(m_layer->layer()); | 359 GraphicsLayer::registerContentsLayer(m_layer->layer()); |
| 360 } | 360 } |
| 361 | 361 |
| 362 return m_layer->layer(); | 362 return m_layer->layer(); |
| 363 } | 363 } |
| 364 | 364 |
| 365 void DrawingBuffer::paintCompositedResultsToCanvas(ImageBuffer* imageBuffer) | 365 void DrawingBuffer::paintCompositedResultsToCanvas(ImageBuffer* imageBuffer) |
| 366 { | 366 { |
| 367 if (!m_context || !m_context->makeContextCurrent() || m_context->extensions(
)->getGraphicsResetStatusARB() != GraphicsContext3D::NO_ERROR) | 367 if (!m_context || !m_context->makeContextCurrent() || m_context->extensions(
)->getGraphicsResetStatusARB() != GL_NO_ERROR) |
| 368 return; | 368 return; |
| 369 | 369 |
| 370 Extensions3D* extensions = m_context->extensions(); | 370 Extensions3D* extensions = m_context->extensions(); |
| 371 | 371 |
| 372 if (!imageBuffer) | 372 if (!imageBuffer) |
| 373 return; | 373 return; |
| 374 Platform3DObject tex = imageBuffer->getBackingTexture(); | 374 Platform3DObject tex = imageBuffer->getBackingTexture(); |
| 375 if (tex) { | 375 if (tex) { |
| 376 extensions->copyTextureCHROMIUM(GraphicsContext3D::TEXTURE_2D, m_frontCo
lorBuffer, | 376 extensions->copyTextureCHROMIUM(GL_TEXTURE_2D, m_frontColorBuffer, |
| 377 tex, 0, GraphicsContext3D::RGBA, GraphicsContext3D::UNSIGNED_BYTE); | 377 tex, 0, GL_RGBA, GL_UNSIGNED_BYTE); |
| 378 return; | 378 return; |
| 379 } | 379 } |
| 380 | 380 |
| 381 // Since the m_frontColorBuffer was produced and sent to the compositor, it
cannot be bound to an fbo. | 381 // Since the m_frontColorBuffer was produced and sent to the compositor, it
cannot be bound to an fbo. |
| 382 // We have to make a copy of it here and bind that copy instead. | 382 // We have to make a copy of it here and bind that copy instead. |
| 383 // FIXME: That's not true any more, provided we don't change texture | 383 // FIXME: That's not true any more, provided we don't change texture |
| 384 // parameters. | 384 // parameters. |
| 385 unsigned sourceTexture = createColorTexture(m_size); | 385 unsigned sourceTexture = createColorTexture(m_size); |
| 386 extensions->copyTextureCHROMIUM(GraphicsContext3D::TEXTURE_2D, m_frontColorB
uffer, sourceTexture, 0, GraphicsContext3D::RGBA, GraphicsContext3D::UNSIGNED_BY
TE); | 386 extensions->copyTextureCHROMIUM(GL_TEXTURE_2D, m_frontColorBuffer, sourceTex
ture, 0, GL_RGBA, GL_UNSIGNED_BYTE); |
| 387 | 387 |
| 388 // Since we're using the same context as WebGL, we have to restore any state
we change (in this case, just the framebuffer binding). | 388 // Since we're using the same context as WebGL, we have to restore any state
we change (in this case, just the framebuffer binding). |
| 389 // FIXME: The WebGLRenderingContext tracks the current framebuffer binding,
it would be slightly more efficient to use this value | 389 // FIXME: The WebGLRenderingContext tracks the current framebuffer binding,
it would be slightly more efficient to use this value |
| 390 // rather than querying it off of the context. | 390 // rather than querying it off of the context. |
| 391 GC3Dint previousFramebuffer = 0; | 391 GC3Dint previousFramebuffer = 0; |
| 392 m_context->getIntegerv(GraphicsContext3D::FRAMEBUFFER_BINDING, &previousFram
ebuffer); | 392 m_context->getIntegerv(GL_FRAMEBUFFER_BINDING, &previousFramebuffer); |
| 393 | 393 |
| 394 Platform3DObject framebuffer = m_context->createFramebuffer(); | 394 Platform3DObject framebuffer = m_context->createFramebuffer(); |
| 395 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, framebuffer); | 395 m_context->bindFramebuffer(GL_FRAMEBUFFER, framebuffer); |
| 396 m_context->framebufferTexture2D(GraphicsContext3D::FRAMEBUFFER, GraphicsCont
ext3D::COLOR_ATTACHMENT0, GraphicsContext3D::TEXTURE_2D, sourceTexture, 0); | 396 m_context->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEX
TURE_2D, sourceTexture, 0); |
| 397 | 397 |
| 398 extensions->paintFramebufferToCanvas(framebuffer, size().width(), size().hei
ght(), !m_attributes.premultipliedAlpha, imageBuffer); | 398 extensions->paintFramebufferToCanvas(framebuffer, size().width(), size().hei
ght(), !m_attributes.premultipliedAlpha, imageBuffer); |
| 399 m_context->deleteFramebuffer(framebuffer); | 399 m_context->deleteFramebuffer(framebuffer); |
| 400 m_context->deleteTexture(sourceTexture); | 400 m_context->deleteTexture(sourceTexture); |
| 401 | 401 |
| 402 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, previousFramebuff
er); | 402 m_context->bindFramebuffer(GL_FRAMEBUFFER, previousFramebuffer); |
| 403 } | 403 } |
| 404 | 404 |
| 405 void DrawingBuffer::clearPlatformLayer() | 405 void DrawingBuffer::clearPlatformLayer() |
| 406 { | 406 { |
| 407 if (m_layer) | 407 if (m_layer) |
| 408 m_layer->clearTexture(); | 408 m_layer->clearTexture(); |
| 409 | 409 |
| 410 if (m_context) | 410 if (m_context) |
| 411 m_context->flush(); | 411 m_context->flush(); |
| 412 } | 412 } |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 466 | 466 |
| 467 unsigned DrawingBuffer::createColorTexture(const IntSize& size) | 467 unsigned DrawingBuffer::createColorTexture(const IntSize& size) |
| 468 { | 468 { |
| 469 if (!m_context) | 469 if (!m_context) |
| 470 return 0; | 470 return 0; |
| 471 | 471 |
| 472 unsigned offscreenColorTexture = m_context->createTexture(); | 472 unsigned offscreenColorTexture = m_context->createTexture(); |
| 473 if (!offscreenColorTexture) | 473 if (!offscreenColorTexture) |
| 474 return 0; | 474 return 0; |
| 475 | 475 |
| 476 m_context->bindTexture(GraphicsContext3D::TEXTURE_2D, offscreenColorTexture)
; | 476 m_context->bindTexture(GL_TEXTURE_2D, offscreenColorTexture); |
| 477 m_context->texParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::T
EXTURE_MAG_FILTER, GraphicsContext3D::LINEAR); | 477 m_context->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
| 478 m_context->texParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::T
EXTURE_MIN_FILTER, GraphicsContext3D::LINEAR); | 478 m_context->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
| 479 m_context->texParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::T
EXTURE_WRAP_S, GraphicsContext3D::CLAMP_TO_EDGE); | 479 m_context->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)
; |
| 480 m_context->texParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::T
EXTURE_WRAP_T, GraphicsContext3D::CLAMP_TO_EDGE); | 480 m_context->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)
; |
| 481 if (!size.isEmpty()) | 481 if (!size.isEmpty()) |
| 482 m_context->texImage2DResourceSafe(GraphicsContext3D::TEXTURE_2D, 0, m_in
ternalColorFormat, size.width(), size.height(), 0, m_colorFormat, GraphicsContex
t3D::UNSIGNED_BYTE); | 482 m_context->texImage2DResourceSafe(GL_TEXTURE_2D, 0, m_internalColorForma
t, size.width(), size.height(), 0, m_colorFormat, GL_UNSIGNED_BYTE); |
| 483 | 483 |
| 484 return offscreenColorTexture; | 484 return offscreenColorTexture; |
| 485 } | 485 } |
| 486 | 486 |
| 487 void DrawingBuffer::createSecondaryBuffers() | 487 void DrawingBuffer::createSecondaryBuffers() |
| 488 { | 488 { |
| 489 // create a multisample FBO | 489 // create a multisample FBO |
| 490 if (multisample()) { | 490 if (multisample()) { |
| 491 m_multisampleFBO = m_context->createFramebuffer(); | 491 m_multisampleFBO = m_context->createFramebuffer(); |
| 492 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_multisample
FBO); | 492 m_context->bindFramebuffer(GL_FRAMEBUFFER, m_multisampleFBO); |
| 493 m_multisampleColorBuffer = m_context->createRenderbuffer(); | 493 m_multisampleColorBuffer = m_context->createRenderbuffer(); |
| 494 } | 494 } |
| 495 } | 495 } |
| 496 | 496 |
| 497 bool DrawingBuffer::resizeFramebuffer(const IntSize& size) | 497 bool DrawingBuffer::resizeFramebuffer(const IntSize& size) |
| 498 { | 498 { |
| 499 // resize regular FBO | 499 // resize regular FBO |
| 500 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_fbo); | 500 m_context->bindFramebuffer(GL_FRAMEBUFFER, m_fbo); |
| 501 | 501 |
| 502 m_context->bindTexture(GraphicsContext3D::TEXTURE_2D, m_colorBuffer); | 502 m_context->bindTexture(GL_TEXTURE_2D, m_colorBuffer); |
| 503 m_context->texImage2DResourceSafe(GraphicsContext3D::TEXTURE_2D, 0, m_intern
alColorFormat, size.width(), size.height(), 0, m_colorFormat, GraphicsContext3D:
:UNSIGNED_BYTE); | 503 m_context->texImage2DResourceSafe(GL_TEXTURE_2D, 0, m_internalColorFormat, s
ize.width(), size.height(), 0, m_colorFormat, GL_UNSIGNED_BYTE); |
| 504 if (m_lastColorBuffer) | 504 if (m_lastColorBuffer) |
| 505 m_lastColorBuffer->size = size; | 505 m_lastColorBuffer->size = size; |
| 506 | 506 |
| 507 m_context->framebufferTexture2D(GraphicsContext3D::FRAMEBUFFER, GraphicsCont
ext3D::COLOR_ATTACHMENT0, GraphicsContext3D::TEXTURE_2D, m_colorBuffer, 0); | 507 m_context->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEX
TURE_2D, m_colorBuffer, 0); |
| 508 | 508 |
| 509 m_context->bindTexture(GraphicsContext3D::TEXTURE_2D, 0); | 509 m_context->bindTexture(GL_TEXTURE_2D, 0); |
| 510 | 510 |
| 511 if (!multisample()) | 511 if (!multisample()) |
| 512 resizeDepthStencil(size, 0); | 512 resizeDepthStencil(size, 0); |
| 513 if (m_context->checkFramebufferStatus(GraphicsContext3D::FRAMEBUFFER) != Gra
phicsContext3D::FRAMEBUFFER_COMPLETE) | 513 if (m_context->checkFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMP
LETE) |
| 514 return false; | 514 return false; |
| 515 | 515 |
| 516 return true; | 516 return true; |
| 517 } | 517 } |
| 518 | 518 |
| 519 bool DrawingBuffer::resizeMultisampleFramebuffer(const IntSize& size) | 519 bool DrawingBuffer::resizeMultisampleFramebuffer(const IntSize& size) |
| 520 { | 520 { |
| 521 if (multisample()) { | 521 if (multisample()) { |
| 522 int maxSampleCount = 0; | 522 int maxSampleCount = 0; |
| 523 | 523 |
| 524 m_context->getIntegerv(Extensions3D::MAX_SAMPLES, &maxSampleCount); | 524 m_context->getIntegerv(Extensions3D::MAX_SAMPLES, &maxSampleCount); |
| 525 int sampleCount = std::min(4, maxSampleCount); | 525 int sampleCount = std::min(4, maxSampleCount); |
| 526 | 526 |
| 527 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_multisample
FBO); | 527 m_context->bindFramebuffer(GL_FRAMEBUFFER, m_multisampleFBO); |
| 528 | 528 |
| 529 m_context->bindRenderbuffer(GraphicsContext3D::RENDERBUFFER, m_multisamp
leColorBuffer); | 529 m_context->bindRenderbuffer(GL_RENDERBUFFER, m_multisampleColorBuffer); |
| 530 m_context->extensions()->renderbufferStorageMultisample(GraphicsContext3
D::RENDERBUFFER, sampleCount, m_internalRenderbufferFormat, size.width(), size.h
eight()); | 530 m_context->extensions()->renderbufferStorageMultisample(GL_RENDERBUFFER,
sampleCount, m_internalRenderbufferFormat, size.width(), size.height()); |
| 531 | 531 |
| 532 if (m_context->getError() == GraphicsContext3D::OUT_OF_MEMORY) | 532 if (m_context->getError() == GL_OUT_OF_MEMORY) |
| 533 return false; | 533 return false; |
| 534 | 534 |
| 535 m_context->framebufferRenderbuffer(GraphicsContext3D::FRAMEBUFFER, Graph
icsContext3D::COLOR_ATTACHMENT0, GraphicsContext3D::RENDERBUFFER, m_multisampleC
olorBuffer); | 535 m_context->framebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
GL_RENDERBUFFER, m_multisampleColorBuffer); |
| 536 resizeDepthStencil(size, sampleCount); | 536 resizeDepthStencil(size, sampleCount); |
| 537 if (m_context->checkFramebufferStatus(GraphicsContext3D::FRAMEBUFFER) !=
GraphicsContext3D::FRAMEBUFFER_COMPLETE) | 537 if (m_context->checkFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_
COMPLETE) |
| 538 return false; | 538 return false; |
| 539 } | 539 } |
| 540 | 540 |
| 541 return true; | 541 return true; |
| 542 } | 542 } |
| 543 | 543 |
| 544 void DrawingBuffer::resizeDepthStencil(const IntSize& size, int sampleCount) | 544 void DrawingBuffer::resizeDepthStencil(const IntSize& size, int sampleCount) |
| 545 { | 545 { |
| 546 if (m_attributes.depth && m_attributes.stencil && m_packedDepthStencilExtens
ionSupported) { | 546 if (m_attributes.depth && m_attributes.stencil && m_packedDepthStencilExtens
ionSupported) { |
| 547 if (!m_depthStencilBuffer) | 547 if (!m_depthStencilBuffer) |
| 548 m_depthStencilBuffer = m_context->createRenderbuffer(); | 548 m_depthStencilBuffer = m_context->createRenderbuffer(); |
| 549 m_context->bindRenderbuffer(GraphicsContext3D::RENDERBUFFER, m_depthSten
cilBuffer); | 549 m_context->bindRenderbuffer(GL_RENDERBUFFER, m_depthStencilBuffer); |
| 550 if (multisample()) | 550 if (multisample()) |
| 551 m_context->extensions()->renderbufferStorageMultisample(GraphicsCont
ext3D::RENDERBUFFER, sampleCount, Extensions3D::DEPTH24_STENCIL8, size.width(),
size.height()); | 551 m_context->extensions()->renderbufferStorageMultisample(GL_RENDERBUF
FER, sampleCount, Extensions3D::DEPTH24_STENCIL8, size.width(), size.height()); |
| 552 else | 552 else |
| 553 m_context->renderbufferStorage(GraphicsContext3D::RENDERBUFFER, Exte
nsions3D::DEPTH24_STENCIL8, size.width(), size.height()); | 553 m_context->renderbufferStorage(GL_RENDERBUFFER, Extensions3D::DEPTH2
4_STENCIL8, size.width(), size.height()); |
| 554 m_context->framebufferRenderbuffer(GraphicsContext3D::FRAMEBUFFER, Graph
icsContext3D::STENCIL_ATTACHMENT, GraphicsContext3D::RENDERBUFFER, m_depthStenci
lBuffer); | 554 m_context->framebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT
, GL_RENDERBUFFER, m_depthStencilBuffer); |
| 555 m_context->framebufferRenderbuffer(GraphicsContext3D::FRAMEBUFFER, Graph
icsContext3D::DEPTH_ATTACHMENT, GraphicsContext3D::RENDERBUFFER, m_depthStencilB
uffer); | 555 m_context->framebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
GL_RENDERBUFFER, m_depthStencilBuffer); |
| 556 } else { | 556 } else { |
| 557 if (m_attributes.depth) { | 557 if (m_attributes.depth) { |
| 558 if (!m_depthBuffer) | 558 if (!m_depthBuffer) |
| 559 m_depthBuffer = m_context->createRenderbuffer(); | 559 m_depthBuffer = m_context->createRenderbuffer(); |
| 560 m_context->bindRenderbuffer(GraphicsContext3D::RENDERBUFFER, m_depth
Buffer); | 560 m_context->bindRenderbuffer(GL_RENDERBUFFER, m_depthBuffer); |
| 561 if (multisample()) | 561 if (multisample()) |
| 562 m_context->extensions()->renderbufferStorageMultisample(Graphics
Context3D::RENDERBUFFER, sampleCount, GraphicsContext3D::DEPTH_COMPONENT16, size
.width(), size.height()); | 562 m_context->extensions()->renderbufferStorageMultisample(GL_RENDE
RBUFFER, sampleCount, GL_DEPTH_COMPONENT16, size.width(), size.height()); |
| 563 else | 563 else |
| 564 m_context->renderbufferStorage(GraphicsContext3D::RENDERBUFFER,
GraphicsContext3D::DEPTH_COMPONENT16, size.width(), size.height()); | 564 m_context->renderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONE
NT16, size.width(), size.height()); |
| 565 m_context->framebufferRenderbuffer(GraphicsContext3D::FRAMEBUFFER, G
raphicsContext3D::DEPTH_ATTACHMENT, GraphicsContext3D::RENDERBUFFER, m_depthBuff
er); | 565 m_context->framebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHME
NT, GL_RENDERBUFFER, m_depthBuffer); |
| 566 } | 566 } |
| 567 if (m_attributes.stencil) { | 567 if (m_attributes.stencil) { |
| 568 if (!m_stencilBuffer) | 568 if (!m_stencilBuffer) |
| 569 m_stencilBuffer = m_context->createRenderbuffer(); | 569 m_stencilBuffer = m_context->createRenderbuffer(); |
| 570 m_context->bindRenderbuffer(GraphicsContext3D::RENDERBUFFER, m_stenc
ilBuffer); | 570 m_context->bindRenderbuffer(GL_RENDERBUFFER, m_stencilBuffer); |
| 571 if (multisample()) | 571 if (multisample()) |
| 572 m_context->extensions()->renderbufferStorageMultisample(Graphics
Context3D::RENDERBUFFER, sampleCount, GraphicsContext3D::STENCIL_INDEX8, size.wi
dth(), size.height()); | 572 m_context->extensions()->renderbufferStorageMultisample(GL_RENDE
RBUFFER, sampleCount, GL_STENCIL_INDEX8, size.width(), size.height()); |
| 573 else | 573 else |
| 574 m_context->renderbufferStorage(GraphicsContext3D::RENDERBUFFER,
GraphicsContext3D::STENCIL_INDEX8, size.width(), size.height()); | 574 m_context->renderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX
8, size.width(), size.height()); |
| 575 m_context->framebufferRenderbuffer(GraphicsContext3D::FRAMEBUFFER, G
raphicsContext3D::STENCIL_ATTACHMENT, GraphicsContext3D::RENDERBUFFER, m_stencil
Buffer); | 575 m_context->framebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACH
MENT, GL_RENDERBUFFER, m_stencilBuffer); |
| 576 } | 576 } |
| 577 } | 577 } |
| 578 m_context->bindRenderbuffer(GraphicsContext3D::RENDERBUFFER, 0); | 578 m_context->bindRenderbuffer(GL_RENDERBUFFER, 0); |
| 579 } | 579 } |
| 580 | 580 |
| 581 | 581 |
| 582 | 582 |
| 583 void DrawingBuffer::clearFramebuffers(GC3Dbitfield clearMask) | 583 void DrawingBuffer::clearFramebuffers(GC3Dbitfield clearMask) |
| 584 { | 584 { |
| 585 if (!m_context) | 585 if (!m_context) |
| 586 return; | 586 return; |
| 587 | 587 |
| 588 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_multisampleFBO
? m_multisampleFBO : m_fbo); | 588 m_context->bindFramebuffer(GL_FRAMEBUFFER, m_multisampleFBO ? m_multisampleF
BO : m_fbo); |
| 589 | 589 |
| 590 m_context->clear(clearMask); | 590 m_context->clear(clearMask); |
| 591 | 591 |
| 592 // The multisample fbo was just cleared, but we also need to clear the non-m
ultisampled buffer too. | 592 // The multisample fbo was just cleared, but we also need to clear the non-m
ultisampled buffer too. |
| 593 if (m_multisampleFBO) { | 593 if (m_multisampleFBO) { |
| 594 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_fbo); | 594 m_context->bindFramebuffer(GL_FRAMEBUFFER, m_fbo); |
| 595 m_context->clear(GraphicsContext3D::COLOR_BUFFER_BIT); | 595 m_context->clear(GL_COLOR_BUFFER_BIT); |
| 596 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_multisample
FBO); | 596 m_context->bindFramebuffer(GL_FRAMEBUFFER, m_multisampleFBO); |
| 597 } | 597 } |
| 598 } | 598 } |
| 599 | 599 |
| 600 void DrawingBuffer::setSize(const IntSize& size) { | 600 void DrawingBuffer::setSize(const IntSize& size) { |
| 601 if (m_size == size) | 601 if (m_size == size) |
| 602 return; | 602 return; |
| 603 | 603 |
| 604 s_currentResourceUsePixels += pixelDelta(size); | 604 s_currentResourceUsePixels += pixelDelta(size); |
| 605 m_size = size; | 605 m_size = size; |
| 606 } | 606 } |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 } | 682 } |
| 683 break; | 683 break; |
| 684 } while (!adjustedSize.isEmpty()); | 684 } while (!adjustedSize.isEmpty()); |
| 685 | 685 |
| 686 setSize(adjustedSize); | 686 setSize(adjustedSize); |
| 687 | 687 |
| 688 if (adjustedSize.isEmpty()) | 688 if (adjustedSize.isEmpty()) |
| 689 return; | 689 return; |
| 690 } | 690 } |
| 691 | 691 |
| 692 m_context->disable(GraphicsContext3D::SCISSOR_TEST); | 692 m_context->disable(GL_SCISSOR_TEST); |
| 693 m_context->clearColor(0, 0, 0, 0); | 693 m_context->clearColor(0, 0, 0, 0); |
| 694 m_context->colorMask(true, true, true, true); | 694 m_context->colorMask(true, true, true, true); |
| 695 | 695 |
| 696 GC3Dbitfield clearMask = GraphicsContext3D::COLOR_BUFFER_BIT; | 696 GC3Dbitfield clearMask = GL_COLOR_BUFFER_BIT; |
| 697 if (m_attributes.depth) { | 697 if (m_attributes.depth) { |
| 698 m_context->clearDepth(1.0f); | 698 m_context->clearDepth(1.0f); |
| 699 clearMask |= GraphicsContext3D::DEPTH_BUFFER_BIT; | 699 clearMask |= GL_DEPTH_BUFFER_BIT; |
| 700 m_context->depthMask(true); | 700 m_context->depthMask(true); |
| 701 } | 701 } |
| 702 if (m_attributes.stencil) { | 702 if (m_attributes.stencil) { |
| 703 m_context->clearStencil(0); | 703 m_context->clearStencil(0); |
| 704 clearMask |= GraphicsContext3D::STENCIL_BUFFER_BIT; | 704 clearMask |= GL_STENCIL_BUFFER_BIT; |
| 705 m_context->stencilMaskSeparate(GraphicsContext3D::FRONT, 0xFFFFFFFF); | 705 m_context->stencilMaskSeparate(GL_FRONT, 0xFFFFFFFF); |
| 706 } | 706 } |
| 707 | 707 |
| 708 clearFramebuffers(clearMask); | 708 clearFramebuffers(clearMask); |
| 709 } | 709 } |
| 710 | 710 |
| 711 void DrawingBuffer::commit(long x, long y, long width, long height) | 711 void DrawingBuffer::commit(long x, long y, long width, long height) |
| 712 { | 712 { |
| 713 if (!m_context) | 713 if (!m_context) |
| 714 return; | 714 return; |
| 715 | 715 |
| 716 if (width < 0) | 716 if (width < 0) |
| 717 width = m_size.width(); | 717 width = m_size.width(); |
| 718 if (height < 0) | 718 if (height < 0) |
| 719 height = m_size.height(); | 719 height = m_size.height(); |
| 720 | 720 |
| 721 m_context->makeContextCurrent(); | 721 m_context->makeContextCurrent(); |
| 722 | 722 |
| 723 if (m_multisampleFBO && !m_contentsChangeCommitted) { | 723 if (m_multisampleFBO && !m_contentsChangeCommitted) { |
| 724 m_context->bindFramebuffer(Extensions3D::READ_FRAMEBUFFER, m_multisample
FBO); | 724 m_context->bindFramebuffer(Extensions3D::READ_FRAMEBUFFER, m_multisample
FBO); |
| 725 m_context->bindFramebuffer(Extensions3D::DRAW_FRAMEBUFFER, m_fbo); | 725 m_context->bindFramebuffer(Extensions3D::DRAW_FRAMEBUFFER, m_fbo); |
| 726 | 726 |
| 727 if (m_scissorEnabled) | 727 if (m_scissorEnabled) |
| 728 m_context->disable(GraphicsContext3D::SCISSOR_TEST); | 728 m_context->disable(GL_SCISSOR_TEST); |
| 729 | 729 |
| 730 // Use NEAREST, because there is no scale performed during the blit. | 730 // Use NEAREST, because there is no scale performed during the blit. |
| 731 m_context->extensions()->blitFramebuffer(x, y, width, height, x, y, widt
h, height, GraphicsContext3D::COLOR_BUFFER_BIT, GraphicsContext3D::NEAREST); | 731 m_context->extensions()->blitFramebuffer(x, y, width, height, x, y, widt
h, height, GL_COLOR_BUFFER_BIT, GL_NEAREST); |
| 732 | 732 |
| 733 if (m_scissorEnabled) | 733 if (m_scissorEnabled) |
| 734 m_context->enable(GraphicsContext3D::SCISSOR_TEST); | 734 m_context->enable(GL_SCISSOR_TEST); |
| 735 } | 735 } |
| 736 | 736 |
| 737 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_fbo); | 737 m_context->bindFramebuffer(GL_FRAMEBUFFER, m_fbo); |
| 738 m_contentsChangeCommitted = true; | 738 m_contentsChangeCommitted = true; |
| 739 } | 739 } |
| 740 | 740 |
| 741 void DrawingBuffer::restoreFramebufferBinding() | 741 void DrawingBuffer::restoreFramebufferBinding() |
| 742 { | 742 { |
| 743 if (!m_context || !m_framebufferBinding) | 743 if (!m_context || !m_framebufferBinding) |
| 744 return; | 744 return; |
| 745 | 745 |
| 746 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_framebufferBind
ing); | 746 m_context->bindFramebuffer(GL_FRAMEBUFFER, m_framebufferBinding); |
| 747 } | 747 } |
| 748 | 748 |
| 749 bool DrawingBuffer::multisample() const | 749 bool DrawingBuffer::multisample() const |
| 750 { | 750 { |
| 751 return m_attributes.antialias && m_multisampleExtensionSupported; | 751 return m_attributes.antialias && m_multisampleExtensionSupported; |
| 752 } | 752 } |
| 753 | 753 |
| 754 void DrawingBuffer::bind() | 754 void DrawingBuffer::bind() |
| 755 { | 755 { |
| 756 if (!m_context) | 756 if (!m_context) |
| 757 return; | 757 return; |
| 758 | 758 |
| 759 m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_multisampleFBO
? m_multisampleFBO : m_fbo); | 759 m_context->bindFramebuffer(GL_FRAMEBUFFER, m_multisampleFBO ? m_multisampleF
BO : m_fbo); |
| 760 } | 760 } |
| 761 | 761 |
| 762 } // namespace WebCore | 762 } // namespace WebCore |
| OLD | NEW |