Changeset 66777 in webkit
- Timestamp:
- Sep 3, 2010 4:24:14 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r66776 r66777 1 2010-09-02 Vangelis Kokkevis <vangelis@chromium.org> 2 3 Reviewed by Darin Fisher. 4 5 [chromium] Gracefully switch over to software compositing if the accelerated 6 compositor fails to initialize. LayerRendererChromium::create() will now return 0 7 if the GLES2Context passed to it is NULL or the LayerRendererChromium failed to initialize 8 hardware rendering. 9 https://bugs.webkit.org/show_bug.cgi?id=45124 10 11 Tested by forcing the creation of the gles2 context to fail and loading pages that normally trigger 12 the compositor. 13 14 * platform/graphics/chromium/LayerRendererChromium.cpp: 15 (WebCore::LayerRendererChromium::create): 16 (WebCore::LayerRendererChromium::LayerRendererChromium): 17 (WebCore::LayerRendererChromium::makeContextCurrent): 18 1 19 2010-09-03 Peter Kasting <pkasting@google.com> 2 20 -
trunk/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
r66746 r66777 78 78 PassOwnPtr<LayerRendererChromium> LayerRendererChromium::create(PassOwnPtr<GLES2Context> gles2Context) 79 79 { 80 return new LayerRendererChromium(gles2Context); 80 if (!gles2Context) 81 return 0; 82 83 OwnPtr<LayerRendererChromium> layerRenderer(new LayerRendererChromium(gles2Context)); 84 if (!layerRenderer->hardwareCompositing()) 85 return 0; 86 87 return layerRenderer.release(); 81 88 } 82 89 … … 92 99 , m_gles2Context(gles2Context) 93 100 { 94 m_hardwareCompositing = (m_gles2Context && initializeSharedObjects());101 m_hardwareCompositing = initializeSharedObjects(); 95 102 } 96 103 -
trunk/WebKit/chromium/ChangeLog
r66763 r66777 1 2010-09-02 Vangelis Kokkevis <vangelis@chromium.org> 2 3 Reviewed by Darin Fisher. 4 5 [chromium] Revert to software compositing if the accelerated 6 compositor fails to initialize. If we tried to initialize the compositor 7 for this WebView and failed, next time the associated chrome client is 8 asked whether it can do accelerated compositing it will return false. 9 https://bugs.webkit.org/show_bug.cgi?id=45124 10 11 * src/ChromeClientImpl.cpp: 12 (WebKit::ChromeClientImpl::allowsAcceleratedCompositing): 13 * src/ChromeClientImpl.h: 14 * src/WebViewImpl.cpp: 15 (WebKit::WebViewImpl::WebViewImpl): 16 (WebKit::WebViewImpl::paint): 17 (WebKit::WebViewImpl::allowsAcceleratedCompositing): 18 (WebKit::WebViewImpl::setIsAcceleratedCompositingActive): 19 (WebKit::WebViewImpl::getOnscreenGLES2Context): 20 * src/WebViewImpl.h: 21 1 22 2010-09-03 James Robinson <jamesr@chromium.org> 2 23 -
trunk/WebKit/chromium/src/ChromeClientImpl.cpp
r66746 r66777 751 751 m_webView->setRootLayerNeedsDisplay(); 752 752 } 753 754 bool ChromeClientImpl::allowsAcceleratedCompositing() const 755 { 756 return m_webView->allowsAcceleratedCompositing(); 757 } 753 758 #endif 754 759 -
trunk/WebKit/chromium/src/ChromeClientImpl.h
r66746 r66777 151 151 // to do an eager layout before the drawing. 152 152 virtual void scheduleCompositingLayerSync(); 153 154 // Returns true if accelerated compositing is supported. 155 virtual bool allowsAcceleratedCompositing() const; 153 156 #endif 154 157 -
trunk/WebKit/chromium/src/WebViewImpl.cpp
r66746 r66777 266 266 , m_layerRenderer(0) 267 267 , m_isAcceleratedCompositingActive(false) 268 , m_compositorCreationFailed(false) 268 269 #endif 269 270 #if ENABLE(INPUT_SPEECH) … … 970 971 971 972 // Ask the layer compositor to redraw all the layers. 973 ASSERT(m_layerRenderer->hardwareCompositing()); 972 974 m_layerRenderer->drawLayers(rect, visibleRect, contentRect, IntPoint(view->scrollX(), view->scrollY())); 973 975 } … … 2106 2108 2107 2109 #if USE(ACCELERATED_COMPOSITING) 2110 bool WebViewImpl::allowsAcceleratedCompositing() 2111 { 2112 return !m_compositorCreationFailed; 2113 } 2114 2108 2115 void WebViewImpl::setRootGraphicsLayer(WebCore::PlatformLayer* layer) 2109 2116 { … … 2120 2127 if (active) { 2121 2128 m_layerRenderer = LayerRendererChromium::create(getOnscreenGLES2Context()); 2122 if (m_layerRenderer ->hardwareCompositing()) {2129 if (m_layerRenderer) { 2123 2130 m_isAcceleratedCompositingActive = true; 2124 2131 … … 2127 2134 m_client->didInvalidateRect(IntRect(0, 0, m_size.width, m_size.height)); 2128 2135 } else { 2129 m_layerRenderer.clear();2130 2136 m_isAcceleratedCompositingActive = false; 2137 m_compositorCreationFailed = true; 2131 2138 } 2132 2139 } else { … … 2215 2222 PassOwnPtr<GLES2Context> WebViewImpl::getOnscreenGLES2Context() 2216 2223 { 2217 return GLES2Context::create(GLES2ContextInternal::create(gles2Context(), false)); 2224 WebGLES2Context* context = gles2Context(); 2225 if (!context) 2226 return 0; 2227 return GLES2Context::create(GLES2ContextInternal::create(context, false)); 2218 2228 } 2219 2229 -
trunk/WebKit/chromium/src/WebViewImpl.h
r66746 r66777 325 325 void setRootLayerNeedsDisplay(); 326 326 void setRootGraphicsLayer(WebCore::PlatformLayer*); 327 bool allowsAcceleratedCompositing(); 327 328 #endif 328 329 // Onscreen contexts display to the screen associated with this view. … … 513 514 OwnPtr<WebCore::LayerRendererChromium> m_layerRenderer; 514 515 bool m_isAcceleratedCompositingActive; 516 bool m_compositorCreationFailed; 515 517 #endif 516 518 static const WebInputEvent* m_currentInputEvent;
Note: See TracChangeset
for help on using the changeset viewer.