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

Unified Diff: cc/trees/layer_tree_host_impl.cc

Issue 376683004: Pass resourceless software mode in BeginFrameArgs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comment, clang-format Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
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 c3738e594734e6b5fd7df5d2fe9e6ca0191ba22e..b87440036e937a762db74f955fc8506a58bf7d65 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -246,7 +246,7 @@ LayerTreeHostImpl::LayerTreeHostImpl(
device_scale_factor_(1.f),
overhang_ui_resource_id_(0),
overdraw_bottom_height_(0.f),
- device_viewport_valid_for_tile_management_(true),
+ resourceless_software_draw_(false),
begin_impl_frame_interval_(BeginFrameArgs::DefaultInterval()),
animation_registrar_(AnimationRegistrar::Create()),
rendering_stats_instrumentation_(rendering_stats_instrumentation),
@@ -569,17 +569,17 @@ void LayerTreeHostImpl::FrameData::AppendRenderPass(
render_passes.push_back(render_pass.Pass());
}
-static DrawMode GetDrawMode(OutputSurface* output_surface) {
- if (output_surface->ForcedDrawToSoftwareDevice()) {
+DrawMode LayerTreeHostImpl::GetDrawMode() const {
+ if (resourceless_software_draw_) {
return DRAW_MODE_RESOURCELESS_SOFTWARE;
- } else if (output_surface->context_provider()) {
+ } else if (output_surface_->context_provider()) {
return DRAW_MODE_HARDWARE;
} else {
- DCHECK_EQ(!output_surface->software_device(),
- output_surface->capabilities().delegated_rendering &&
- !output_surface->capabilities().deferred_gl_initialization)
- << output_surface->capabilities().delegated_rendering << " "
- << output_surface->capabilities().deferred_gl_initialization;
+ DCHECK_EQ(!output_surface_->software_device(),
+ 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;
}
}
@@ -798,7 +798,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(
int layers_drawn = 0;
- const DrawMode draw_mode = GetDrawMode(output_surface_.get());
+ const DrawMode draw_mode = GetDrawMode();
LayerIteratorType end =
LayerIteratorType::End(frame->render_surface_layer_list);
@@ -935,8 +935,9 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(
DCHECK(!frame->render_passes.empty());
// Should only have one render pass in resourceless software mode.
- if (output_surface_->ForcedDrawToSoftwareDevice())
- DCHECK_EQ(1u, frame->render_passes.size());
+ DCHECK(draw_mode != DRAW_MODE_RESOURCELESS_SOFTWARE ||
+ frame->render_passes.size() == 1u)
+ << frame->render_passes.size();
return draw_result;
}
@@ -1325,15 +1326,16 @@ void LayerTreeHostImpl::SetExternalDrawConstraints(
const gfx::Transform& transform,
const gfx::Rect& viewport,
const gfx::Rect& clip,
- bool valid_for_tile_management) {
- if (external_transform_ != transform || external_viewport_ != viewport) {
+ bool resourceless_software_draw) {
+ if (external_transform_ != transform || external_viewport_ != viewport ||
+ resourceless_software_draw_ != resourceless_software_draw) {
active_tree_->set_needs_update_draw_properties();
}
external_transform_ = transform;
external_viewport_ = viewport;
external_clip_ = clip;
- device_viewport_valid_for_tile_management_ = valid_for_tile_management;
+ resourceless_software_draw_ = resourceless_software_draw;
}
void LayerTreeHostImpl::SetNeedsRedrawRect(const gfx::Rect& damage_rect) {
@@ -1476,16 +1478,18 @@ void LayerTreeHostImpl::DrawLayers(FrameData* frame,
TracedValue::FromValue(AsValueWithFrame(frame).release()));
}
+ const DrawMode draw_mode = GetDrawMode();
+
// Because the contents of the HUD depend on everything else in the frame, the
// contents of its texture are updated as the last thing before the frame is
// drawn.
if (active_tree_->hud_layer()) {
TRACE_EVENT0("cc", "DrawLayers.UpdateHudTexture");
- active_tree_->hud_layer()->UpdateHudTexture(
- GetDrawMode(output_surface_.get()), resource_provider_.get());
+ active_tree_->hud_layer()->UpdateHudTexture(draw_mode,
+ resource_provider_.get());
}
- if (output_surface_->ForcedDrawToSoftwareDevice()) {
+ if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE) {
bool disable_picture_quad_image_filtering =
IsCurrentlyScrolling() || needs_animate_layers();

Powered by Google App Engine
This is Rietveld 408576698