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

Side by Side Diff: cc/CCLayerTreeHostImpl.cpp

Issue 10918258: Add CC software renderer. (Closed) Base URL: http://git.chromium.org/chromium/src.git@gladapter
Patch Set: Change to OutputDevice API and remove "using namespace WebKit" Created 8 years, 3 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 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 6
7 #include "CCLayerTreeHostImpl.h" 7 #include "CCLayerTreeHostImpl.h"
8 8
9 #include "CCAppendQuadsData.h" 9 #include "CCAppendQuadsData.h"
10 #include "CCDamageTracker.h" 10 #include "CCDamageTracker.h"
11 #include "CCDebugRectHistory.h" 11 #include "CCDebugRectHistory.h"
12 #include "CCDelayBasedTimeSource.h" 12 #include "CCDelayBasedTimeSource.h"
13 #include "CCFontAtlas.h" 13 #include "CCFontAtlas.h"
14 #include "CCFrameRateCounter.h" 14 #include "CCFrameRateCounter.h"
15 #include "CCHeadsUpDisplayLayerImpl.h" 15 #include "CCHeadsUpDisplayLayerImpl.h"
16 #include "CCLayerIterator.h" 16 #include "CCLayerIterator.h"
17 #include "CCLayerTreeHost.h" 17 #include "CCLayerTreeHost.h"
18 #include "CCLayerTreeHostCommon.h" 18 #include "CCLayerTreeHostCommon.h"
19 #include "CCMathUtil.h" 19 #include "CCMathUtil.h"
20 #include "CCOverdrawMetrics.h" 20 #include "CCOverdrawMetrics.h"
21 #include "CCPageScaleAnimation.h" 21 #include "CCPageScaleAnimation.h"
22 #include "CCPrioritizedTextureManager.h" 22 #include "CCPrioritizedTextureManager.h"
23 #include "CCRenderPassDrawQuad.h" 23 #include "CCRenderPassDrawQuad.h"
24 #include "CCRendererGL.h" 24 #include "CCRendererGL.h"
25 #include "CCRendererSoftware.h"
25 #include "CCRenderingStats.h" 26 #include "CCRenderingStats.h"
26 #include "CCScrollbarAnimationController.h" 27 #include "CCScrollbarAnimationController.h"
27 #include "CCScrollbarLayerImpl.h" 28 #include "CCScrollbarLayerImpl.h"
28 #include "CCSettings.h" 29 #include "CCSettings.h"
29 #include "CCSingleThreadProxy.h" 30 #include "CCSingleThreadProxy.h"
30 #include "TraceEvent.h" 31 #include "TraceEvent.h"
31 #include <wtf/CurrentTime.h> 32 #include <wtf/CurrentTime.h>
32 33
33 using WebKit::WebTransformationMatrix; 34 using WebKit::WebTransformationMatrix;
34 35
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 m_renderer->setVisible(visible); 673 m_renderer->setVisible(visible);
673 674
674 setBackgroundTickingEnabled(!m_visible && m_needsAnimateLayers); 675 setBackgroundTickingEnabled(!m_visible && m_needsAnimateLayers);
675 } 676 }
676 677
677 bool CCLayerTreeHostImpl::initializeRenderer(PassOwnPtr<CCGraphicsContext> conte xt, TextureUploaderOption textureUploader) 678 bool CCLayerTreeHostImpl::initializeRenderer(PassOwnPtr<CCGraphicsContext> conte xt, TextureUploaderOption textureUploader)
678 { 679 {
679 if (!context->bindToClient(this)) 680 if (!context->bindToClient(this))
680 return false; 681 return false;
681 682
682 WebKit::WebGraphicsContext3D* context3d = context->context3D();
683
684 if (!context3d) {
685 // FIXME: Implement this path for software compositing.
686 return false;
687 }
688
689 OwnPtr<CCGraphicsContext> contextRef(context); 683 OwnPtr<CCGraphicsContext> contextRef(context);
690 OwnPtr<CCResourceProvider> resourceProvider = CCResourceProvider::create(con textRef.get()); 684 OwnPtr<CCResourceProvider> resourceProvider = CCResourceProvider::create(con textRef.get());
691 OwnPtr<CCRendererGL> renderer; 685
692 if (resourceProvider.get()) 686 OwnPtr<CCRenderer> renderer;
693 renderer = CCRendererGL::create(this, resourceProvider.get(), textureUpl oader); 687 if (resourceProvider.get()) {
688 if (contextRef->context3D())
689 renderer = CCRendererGL::create(this, resourceProvider.get(), textur eUploader);
690 else if (contextRef->softwareDevice())
691 renderer = CCRendererSoftware::create(this, resourceProvider.get(), contextRef->softwareDevice());
danakj 2012/09/19 18:35:14 Should there be an else { ASSERT_NOT_REACHED(); }
aelias_OOO_until_Jul13 2012/09/19 19:58:27 The release() will not crash given a NULL pointer.
danakj 2012/09/19 20:06:18 ah ok! right it didn't worry about else before eit
692 }
694 693
695 // Since we now have a new context/renderer, we cannot continue to use the o ld 694 // Since we now have a new context/renderer, we cannot continue to use the o ld
696 // resources (i.e. renderSurfaces and texture IDs). 695 // resources (i.e. renderSurfaces and texture IDs).
697 if (m_rootLayerImpl) { 696 if (m_rootLayerImpl) {
698 clearRenderSurfaces(); 697 clearRenderSurfaces();
699 sendDidLoseContextRecursive(m_rootLayerImpl.get()); 698 sendDidLoseContextRecursive(m_rootLayerImpl.get());
700 } 699 }
701 700
702 m_renderer = renderer.release(); 701 m_renderer = renderer.release();
703 m_resourceProvider = resourceProvider.release(); 702 m_resourceProvider = resourceProvider.release();
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 1262
1264 CCScrollbarAnimationController* scrollbarController = layer->scrollbarAnimat ionController(); 1263 CCScrollbarAnimationController* scrollbarController = layer->scrollbarAnimat ionController();
1265 if (scrollbarController && scrollbarController->animate(monotonicTime)) 1264 if (scrollbarController && scrollbarController->animate(monotonicTime))
1266 m_client->setNeedsRedrawOnImplThread(); 1265 m_client->setNeedsRedrawOnImplThread();
1267 1266
1268 for (size_t i = 0; i < layer->children().size(); ++i) 1267 for (size_t i = 0; i < layer->children().size(); ++i)
1269 animateScrollbarsRecursive(layer->children()[i].get(), monotonicTime); 1268 animateScrollbarsRecursive(layer->children()[i].get(), monotonicTime);
1270 } 1269 }
1271 1270
1272 } // namespace cc 1271 } // namespace cc
OLDNEW
« no previous file with comments | « cc/CCDirectRenderer.cpp ('k') | cc/CCRendererGL.h » ('j') | cc/CCRendererSoftware.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698