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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 // prepareTexture copies the contents of the off-screen render target in
to the texture | 90 // prepareTexture copies the contents of the off-screen render target in
to the texture |
91 // used by the compositor. | 91 // used by the compositor. |
92 // | 92 // |
93 m_context->prepareTexture(); | 93 m_context->prepareTexture(); |
94 m_context->markLayerComposited(); | 94 m_context->markLayerComposited(); |
95 m_contentsDirty = false; | 95 m_contentsDirty = false; |
96 m_textureUpdated = false; | 96 m_textureUpdated = false; |
97 } | 97 } |
98 } | 98 } |
99 | 99 |
| 100 bool WebGLLayerChromium::paintRenderedResultsToCanvas(ImageBuffer* imageBuffer) |
| 101 { |
| 102 if (m_textureUpdated || !layerRenderer() || !drawsContent()) |
| 103 return false; |
| 104 |
| 105 IntSize framebufferSize = m_context->getInternalFramebufferSize(); |
| 106 ASSERT(layerRendererContext()); |
| 107 |
| 108 // This would ideally be done in the webgl context, but that isn't possible
yet. |
| 109 Platform3DObject framebuffer = layerRendererContext()->createFramebuffer(); |
| 110 layerRendererContext()->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, fram
ebuffer); |
| 111 layerRendererContext()->framebufferTexture2D(GraphicsContext3D::FRAMEBUFFER,
GraphicsContext3D::COLOR_ATTACHMENT0, GraphicsContext3D::TEXTURE_2D, m_textureI
d, 0); |
| 112 |
| 113 Extensions3DChromium* extensions = static_cast<Extensions3DChromium*>(layerR
endererContext()->getExtensions()); |
| 114 extensions->paintFramebufferToCanvas(framebuffer, framebufferSize.width(), f
ramebufferSize.height(), !m_context->getContextAttributes().premultipliedAlpha,
imageBuffer); |
| 115 layerRendererContext()->deleteFramebuffer(framebuffer); |
| 116 return true; |
| 117 } |
| 118 |
100 void WebGLLayerChromium::setTextureUpdated() | 119 void WebGLLayerChromium::setTextureUpdated() |
101 { | 120 { |
102 m_textureUpdated = true; | 121 m_textureUpdated = true; |
103 // If WebGL commands are issued outside of a the animation callbacks, then u
se | 122 // If WebGL commands are issued outside of a the animation callbacks, then u
se |
104 // call rateLimitOffscreenContextCHROMIUM() to keep the context from getting
too far ahead. | 123 // call rateLimitOffscreenContextCHROMIUM() to keep the context from getting
too far ahead. |
105 if (layerRenderer() && !layerRenderer()->isAnimating() && m_contextSupportsR
ateLimitingExtension && !m_rateLimitingTimer.isActive()) | 124 if (layerRenderer() && !layerRenderer()->isAnimating() && m_contextSupportsR
ateLimitingExtension && !m_rateLimitingTimer.isActive()) |
106 m_rateLimitingTimer.startOneShot(0); | 125 m_rateLimitingTimer.startOneShot(0); |
107 } | 126 } |
108 | 127 |
109 void WebGLLayerChromium::setContext(const GraphicsContext3D* context) | 128 void WebGLLayerChromium::setContext(const GraphicsContext3D* context) |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 | 172 |
154 if (!m_context) | 173 if (!m_context) |
155 return; | 174 return; |
156 | 175 |
157 Extensions3DChromium* extensions = static_cast<Extensions3DChromium*>(m_cont
ext->getExtensions()); | 176 Extensions3DChromium* extensions = static_cast<Extensions3DChromium*>(m_cont
ext->getExtensions()); |
158 extensions->rateLimitOffscreenContextCHROMIUM(); | 177 extensions->rateLimitOffscreenContextCHROMIUM(); |
159 } | 178 } |
160 | 179 |
161 } | 180 } |
162 #endif // USE(ACCELERATED_COMPOSITING) | 181 #endif // USE(ACCELERATED_COMPOSITING) |
OLD | NEW |