Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index b3911f86ac186be311f4a8878bd179a1853fdd51..351708c361c427722cf724556c37b489bab389f9 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -572,7 +572,10 @@ static DrawMode GetDrawMode(OutputSurface* output_surface) { |
return DRAW_MODE_HARDWARE; |
} else { |
DCHECK_EQ(!output_surface->software_device(), |
- output_surface->capabilities().delegated_rendering); |
+ output_surface->capabilities().delegated_rendering && |
+ !output_surface->capabilities().deferred_gl_initialization) |
+ << output_surface->capabilities().delegated_rendering << " " |
+ << output_surface->capabilities().deferred_gl_initialization; |
return DRAW_MODE_SOFTWARE; |
} |
} |
@@ -1812,13 +1815,12 @@ void LayerTreeHostImpl::ReleaseTreeResources() { |
void LayerTreeHostImpl::CreateAndSetRenderer( |
OutputSurface* output_surface, |
- ResourceProvider* resource_provider, |
- bool skip_gl_renderer) { |
+ ResourceProvider* resource_provider) { |
DCHECK(!renderer_); |
if (output_surface->capabilities().delegated_rendering) { |
renderer_ = DelegatingRenderer::Create( |
this, &settings_, output_surface, resource_provider); |
- } else if (output_surface->context_provider() && !skip_gl_renderer) { |
+ } else if (output_surface->context_provider()) { |
renderer_ = GLRenderer::Create(this, |
&settings_, |
output_surface, |
@@ -1945,9 +1947,7 @@ bool LayerTreeHostImpl::InitializeRenderer( |
if (output_surface->capabilities().deferred_gl_initialization) |
EnforceZeroBudget(true); |
- bool skip_gl_renderer = false; |
- CreateAndSetRenderer( |
- output_surface.get(), resource_provider.get(), skip_gl_renderer); |
+ CreateAndSetRenderer(output_surface.get(), resource_provider.get()); |
transfer_buffer_memory_limit_ = |
GetMaxTransferBufferUsageBytes(output_surface->context_provider().get()); |
@@ -2015,9 +2015,7 @@ void LayerTreeHostImpl::DeferredInitialize() { |
resource_provider_->InitializeGL(); |
- bool skip_gl_renderer = false; |
- CreateAndSetRenderer( |
- output_surface_.get(), resource_provider_.get(), skip_gl_renderer); |
+ CreateAndSetRenderer(output_surface_.get(), resource_provider_.get()); |
EnforceZeroBudget(false); |
client_->SetNeedsCommitOnImplThread(); |
@@ -2037,9 +2035,8 @@ void LayerTreeHostImpl::ReleaseGL() { |
staging_resource_pool_.reset(); |
resource_provider_->InitializeSoftware(); |
- bool skip_gl_renderer = true; |
- CreateAndSetRenderer( |
- output_surface_.get(), resource_provider_.get(), skip_gl_renderer); |
+ output_surface_->ReleaseContextProvider(); |
+ CreateAndSetRenderer(output_surface_.get(), resource_provider_.get()); |
EnforceZeroBudget(true); |
DCHECK(GetRendererCapabilities().using_map_image); |