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

Side by Side Diff: Source/WebCore/platform/graphics/chromium/WebGLLayerChromium.cpp

Issue 7274032: Merge 89635 - 2011-06-23 John Bates <jbates@google.com> (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/782/
Patch Set: Created 9 years, 5 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) 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 , m_textureUpdated(false) 54 , m_textureUpdated(false)
55 { 55 {
56 } 56 }
57 57
58 WebGLLayerChromium::~WebGLLayerChromium() 58 WebGLLayerChromium::~WebGLLayerChromium()
59 { 59 {
60 if (m_context && layerRenderer()) 60 if (m_context && layerRenderer())
61 layerRenderer()->removeChildContext(m_context); 61 layerRenderer()->removeChildContext(m_context);
62 } 62 }
63 63
64 bool WebGLLayerChromium::drawsContent() const
65 {
66 return (m_context && m_context->getExtensions()->getGraphicsResetStatusARB() == GraphicsContext3D::NO_ERROR);
67 }
68
64 void WebGLLayerChromium::updateCompositorResources() 69 void WebGLLayerChromium::updateCompositorResources()
65 { 70 {
66 if (!m_context) 71 if (!drawsContent())
67 return; 72 return;
68 73
69 if (!m_contentsDirty) 74 if (!m_contentsDirty)
70 return; 75 return;
71 76
72 GraphicsContext3D* rendererContext = layerRendererContext(); 77 GraphicsContext3D* rendererContext = layerRendererContext();
73 if (m_textureChanged) { 78 if (m_textureChanged) {
74 rendererContext->bindTexture(GraphicsContext3D::TEXTURE_2D, m_textureId) ; 79 rendererContext->bindTexture(GraphicsContext3D::TEXTURE_2D, m_textureId) ;
75 // Set the min-mag filters to linear and wrap modes to GL_CLAMP_TO_EDGE 80 // Set the min-mag filters to linear and wrap modes to GL_CLAMP_TO_EDGE
76 // to get around NPOT texture limitations of GLES. 81 // to get around NPOT texture limitations of GLES.
(...skipping 19 matching lines...) Expand all
96 { 101 {
97 m_textureUpdated = true; 102 m_textureUpdated = true;
98 // If WebGL commands are issued outside of a the animation callbacks, then u se 103 // If WebGL commands are issued outside of a the animation callbacks, then u se
99 // call rateLimitOffscreenContextCHROMIUM() to keep the context from getting too far ahead. 104 // call rateLimitOffscreenContextCHROMIUM() to keep the context from getting too far ahead.
100 if (layerRenderer() && !layerRenderer()->isAnimating() && m_contextSupportsR ateLimitingExtension && !m_rateLimitingTimer.isActive()) 105 if (layerRenderer() && !layerRenderer()->isAnimating() && m_contextSupportsR ateLimitingExtension && !m_rateLimitingTimer.isActive())
101 m_rateLimitingTimer.startOneShot(0); 106 m_rateLimitingTimer.startOneShot(0);
102 } 107 }
103 108
104 void WebGLLayerChromium::setContext(const GraphicsContext3D* context) 109 void WebGLLayerChromium::setContext(const GraphicsContext3D* context)
105 { 110 {
106 if (m_context != context && layerRenderer()) { 111 bool contextChanged = (m_context != context);
112 if (contextChanged && layerRenderer()) {
107 if (m_context) 113 if (m_context)
108 layerRenderer()->removeChildContext(m_context); 114 layerRenderer()->removeChildContext(m_context);
109 if (context) 115 if (context)
110 layerRenderer()->addChildContext(const_cast<GraphicsContext3D*>(cont ext)); 116 layerRenderer()->addChildContext(const_cast<GraphicsContext3D*>(cont ext));
111 } 117 }
112 118
113 m_context = const_cast<GraphicsContext3D*>(context); 119 m_context = const_cast<GraphicsContext3D*>(context);
114 120
115 if (!m_context) 121 if (!m_context)
116 return; 122 return;
117 123
118 unsigned int textureId = m_context->platformTexture(); 124 unsigned int textureId = m_context->platformTexture();
119 if (textureId != m_textureId) { 125 if (textureId != m_textureId || contextChanged) {
120 m_textureChanged = true; 126 m_textureChanged = true;
121 m_textureUpdated = true; 127 m_textureUpdated = true;
122 } 128 }
123 m_textureId = textureId; 129 m_textureId = textureId;
124 GraphicsContext3D::Attributes attributes = m_context->getContextAttributes() ; 130 GraphicsContext3D::Attributes attributes = m_context->getContextAttributes() ;
125 m_hasAlpha = attributes.alpha; 131 m_hasAlpha = attributes.alpha;
126 m_premultipliedAlpha = attributes.premultipliedAlpha; 132 m_premultipliedAlpha = attributes.premultipliedAlpha;
127 m_contextSupportsRateLimitingExtension = m_context->getExtensions()->support s("GL_CHROMIUM_rate_limit_offscreen_context"); 133 m_contextSupportsRateLimitingExtension = m_context->getExtensions()->support s("GL_CHROMIUM_rate_limit_offscreen_context");
128 } 134 }
129 135
(...skipping 17 matching lines...) Expand all
147 153
148 if (!m_context) 154 if (!m_context)
149 return; 155 return;
150 156
151 Extensions3DChromium* extensions = static_cast<Extensions3DChromium*>(m_cont ext->getExtensions()); 157 Extensions3DChromium* extensions = static_cast<Extensions3DChromium*>(m_cont ext->getExtensions());
152 extensions->rateLimitOffscreenContextCHROMIUM(); 158 extensions->rateLimitOffscreenContextCHROMIUM();
153 } 159 }
154 160
155 } 161 }
156 #endif // USE(ACCELERATED_COMPOSITING) 162 #endif // USE(ACCELERATED_COMPOSITING)
OLDNEW
« no previous file with comments | « Source/WebCore/platform/graphics/chromium/WebGLLayerChromium.h ('k') | Source/WebKit/chromium/ChangeLog » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698