| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |