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

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 20185002: ContextProvider in OutputSurface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: contextprovider: android Created 7 years, 4 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 | Annotate | Revision Log
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 "cc/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 459
460 void LayerTreeHostImpl::FrameData::AppendRenderPass( 460 void LayerTreeHostImpl::FrameData::AppendRenderPass(
461 scoped_ptr<RenderPass> render_pass) { 461 scoped_ptr<RenderPass> render_pass) {
462 render_passes_by_id[render_pass->id] = render_pass.get(); 462 render_passes_by_id[render_pass->id] = render_pass.get();
463 render_passes.push_back(render_pass.Pass()); 463 render_passes.push_back(render_pass.Pass());
464 } 464 }
465 465
466 static DrawMode GetDrawMode(OutputSurface* output_surface) { 466 static DrawMode GetDrawMode(OutputSurface* output_surface) {
467 if (output_surface->ForcedDrawToSoftwareDevice()) { 467 if (output_surface->ForcedDrawToSoftwareDevice()) {
468 return DRAW_MODE_RESOURCELESS_SOFTWARE; 468 return DRAW_MODE_RESOURCELESS_SOFTWARE;
469 } else if (output_surface->context3d()) { 469 } else if (output_surface->context_provider()) {
470 return DRAW_MODE_HARDWARE; 470 return DRAW_MODE_HARDWARE;
471 } else { 471 } else {
472 DCHECK(output_surface->software_device()); 472 DCHECK(output_surface->software_device());
473 return DRAW_MODE_SOFTWARE; 473 return DRAW_MODE_SOFTWARE;
474 } 474 }
475 } 475 }
476 476
477 static void AppendQuadsForLayer(RenderPass* target_render_pass, 477 static void AppendQuadsForLayer(RenderPass* target_render_pass,
478 LayerImpl* layer, 478 LayerImpl* layer,
479 const OcclusionTrackerImpl& occlusion_tracker, 479 const OcclusionTrackerImpl& occlusion_tracker,
(...skipping 1087 matching lines...) Expand 10 before | Expand all | Expand 10 after
1567 } 1567 }
1568 1568
1569 void LayerTreeHostImpl::CreateAndSetRenderer( 1569 void LayerTreeHostImpl::CreateAndSetRenderer(
1570 OutputSurface* output_surface, 1570 OutputSurface* output_surface,
1571 ResourceProvider* resource_provider, 1571 ResourceProvider* resource_provider,
1572 bool skip_gl_renderer) { 1572 bool skip_gl_renderer) {
1573 DCHECK(!renderer_); 1573 DCHECK(!renderer_);
1574 if (output_surface->capabilities().delegated_rendering) { 1574 if (output_surface->capabilities().delegated_rendering) {
1575 renderer_ = 1575 renderer_ =
1576 DelegatingRenderer::Create(this, output_surface, resource_provider); 1576 DelegatingRenderer::Create(this, output_surface, resource_provider);
1577 } else if (output_surface->context3d() && !skip_gl_renderer) { 1577 } else if (output_surface->context_provider() && !skip_gl_renderer) {
1578 renderer_ = GLRenderer::Create(this, 1578 renderer_ = GLRenderer::Create(this,
1579 output_surface, 1579 output_surface,
1580 resource_provider, 1580 resource_provider,
1581 settings_.highp_threshold_min, 1581 settings_.highp_threshold_min,
1582 settings_.force_direct_layer_drawing); 1582 settings_.force_direct_layer_drawing);
1583 } else if (output_surface->software_device()) { 1583 } else if (output_surface->software_device()) {
1584 renderer_ = 1584 renderer_ =
1585 SoftwareRenderer::Create(this, output_surface, resource_provider); 1585 SoftwareRenderer::Create(this, output_surface, resource_provider);
1586 } 1586 }
1587 1587
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1678 pending_tree_->set_needs_update_draw_properties(); 1678 pending_tree_->set_needs_update_draw_properties();
1679 1679
1680 return true; 1680 return true;
1681 } 1681 }
1682 1682
1683 bool LayerTreeHostImpl::DeferredInitialize( 1683 bool LayerTreeHostImpl::DeferredInitialize(
1684 scoped_refptr<ContextProvider> offscreen_context_provider) { 1684 scoped_refptr<ContextProvider> offscreen_context_provider) {
1685 DCHECK(output_surface_->capabilities().deferred_gl_initialization); 1685 DCHECK(output_surface_->capabilities().deferred_gl_initialization);
1686 DCHECK(settings_.impl_side_painting); 1686 DCHECK(settings_.impl_side_painting);
1687 DCHECK(settings_.solid_color_scrollbars); 1687 DCHECK(settings_.solid_color_scrollbars);
1688 DCHECK(output_surface_->context3d()); 1688 DCHECK(output_surface_->context_provider());
1689 1689
1690 ReleaseTreeResources(); 1690 ReleaseTreeResources();
1691 renderer_.reset(); 1691 renderer_.reset();
1692 resource_provider_->InitializeGL(); 1692 resource_provider_->InitializeGL();
1693 bool skip_gl_renderer = false; 1693 bool skip_gl_renderer = false;
1694 CreateAndSetRenderer( 1694 CreateAndSetRenderer(
1695 output_surface_.get(), resource_provider_.get(), skip_gl_renderer); 1695 output_surface_.get(), resource_provider_.get(), skip_gl_renderer);
1696 1696
1697 bool success = !!renderer_.get(); 1697 bool success = !!renderer_.get();
1698 client_->DidTryInitializeRendererOnImplThread(success, 1698 client_->DidTryInitializeRendererOnImplThread(success,
1699 offscreen_context_provider); 1699 offscreen_context_provider);
1700 if (success) { 1700 if (success) {
1701 EnforceZeroBudget(false); 1701 EnforceZeroBudget(false);
1702 client_->SetNeedsCommitOnImplThread(); 1702 client_->SetNeedsCommitOnImplThread();
1703 } 1703 }
1704 return success; 1704 return success;
1705 } 1705 }
1706 1706
1707 void LayerTreeHostImpl::ReleaseGL() { 1707 void LayerTreeHostImpl::ReleaseGL() {
1708 DCHECK(output_surface_->capabilities().deferred_gl_initialization); 1708 DCHECK(output_surface_->capabilities().deferred_gl_initialization);
1709 DCHECK(settings_.impl_side_painting); 1709 DCHECK(settings_.impl_side_painting);
1710 DCHECK(settings_.solid_color_scrollbars); 1710 DCHECK(settings_.solid_color_scrollbars);
1711 DCHECK(output_surface_->context3d()); 1711 DCHECK(output_surface_->context_provider());
1712 1712
1713 ReleaseTreeResources(); 1713 ReleaseTreeResources();
1714 renderer_.reset(); 1714 renderer_.reset();
1715 tile_manager_.reset(); 1715 tile_manager_.reset();
1716 resource_provider_->InitializeSoftware(); 1716 resource_provider_->InitializeSoftware();
1717 1717
1718 bool skip_gl_renderer = true; 1718 bool skip_gl_renderer = true;
1719 CreateAndSetRenderer( 1719 CreateAndSetRenderer(
1720 output_surface_.get(), resource_provider_.get(), skip_gl_renderer); 1720 output_surface_.get(), resource_provider_.get(), skip_gl_renderer);
1721 DCHECK(renderer_); 1721 DCHECK(renderer_);
(...skipping 798 matching lines...) Expand 10 before | Expand all | Expand 10 after
2520 2520
2521 ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource( 2521 ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource(
2522 UIResourceId uid) const { 2522 UIResourceId uid) const {
2523 UIResourceMap::const_iterator iter = ui_resource_map_.find(uid); 2523 UIResourceMap::const_iterator iter = ui_resource_map_.find(uid);
2524 if (iter != ui_resource_map_.end()) 2524 if (iter != ui_resource_map_.end())
2525 return iter->second; 2525 return iter->second;
2526 return 0; 2526 return 0;
2527 } 2527 }
2528 2528
2529 } // namespace cc 2529 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698