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

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: tiny clean up 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 851885b80b3b9685c402507c93e96d2f54ffb7b8..3cae6fdb42d1c7b03eb2b4ee936fd90bf1555b68 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -244,6 +244,7 @@ LayerTreeHostImpl::LayerTreeHostImpl(
device_scale_factor_(1.f),
overhang_ui_resource_id_(0),
overdraw_bottom_height_(0.f),
+ resourceless_software_draw_(false),
device_viewport_valid_for_tile_management_(true),
begin_impl_frame_interval_(BeginFrameArgs::DefaultInterval()),
animation_registrar_(AnimationRegistrar::Create()),
@@ -549,8 +550,9 @@ void LayerTreeHostImpl::FrameData::AppendRenderPass(
render_passes.push_back(render_pass.Pass());
}
-static DrawMode GetDrawMode(OutputSurface* output_surface) {
- if (output_surface->ForcedDrawToSoftwareDevice()) {
+static DrawMode GetDrawMode(bool resourceless_software,
danakj 2014/07/09 17:21:07 how about making this not static, and stop passing
boliu 2014/07/09 20:59:50 Done.
+ OutputSurface* output_surface) {
+ if (resourceless_software) {
return DRAW_MODE_RESOURCELESS_SOFTWARE;
} else if (output_surface->context_provider()) {
return DRAW_MODE_HARDWARE;
@@ -778,7 +780,8 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(
int layers_drawn = 0;
- const DrawMode draw_mode = GetDrawMode(output_surface_.get());
+ const DrawMode draw_mode =
+ GetDrawMode(resourceless_software_draw_, output_surface_.get());
LayerIteratorType end =
LayerIteratorType::End(frame->render_surface_layer_list);
@@ -915,7 +918,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(
DCHECK(!frame->render_passes.empty());
// Should only have one render pass in resourceless software mode.
- if (output_surface_->ForcedDrawToSoftwareDevice())
+ if (resourceless_software_draw_)
danakj 2014/07/09 17:21:07 can you change this to be based on the draw_mode,
boliu 2014/07/09 20:59:50 Done.
DCHECK_EQ(1u, frame->render_passes.size());
return draw_result;
@@ -1305,14 +1308,17 @@ void LayerTreeHostImpl::SetExternalDrawConstraints(
const gfx::Transform& transform,
const gfx::Rect& viewport,
const gfx::Rect& clip,
+ bool resourceless_software_draw,
bool valid_for_tile_management) {
- if (external_transform_ != transform || external_viewport_ != viewport) {
+ if (external_transform_ != transform || external_viewport_ != viewport ||
+ resourceless_software_draw_ != resourceless_software_draw) {
brianderson 2014/07/08 21:26:12 Is this the part that fixes the bug? Was the poin
boliu 2014/07/08 21:31:14 Yes
active_tree_->set_needs_update_draw_properties();
}
external_transform_ = transform;
external_viewport_ = viewport;
external_clip_ = clip;
+ resourceless_software_draw_ = resourceless_software_draw;
device_viewport_valid_for_tile_management_ = valid_for_tile_management;
}
@@ -1462,10 +1468,11 @@ void LayerTreeHostImpl::DrawLayers(FrameData* frame,
if (active_tree_->hud_layer()) {
TRACE_EVENT0("cc", "DrawLayers.UpdateHudTexture");
active_tree_->hud_layer()->UpdateHudTexture(
- GetDrawMode(output_surface_.get()), resource_provider_.get());
+ GetDrawMode(resourceless_software_draw_, output_surface_.get()),
danakj 2014/07/09 17:21:07 can you move this GetDrawMode up above the if stat
boliu 2014/07/09 20:59:50 Done.
+ resource_provider_.get());
}
- if (output_surface_->ForcedDrawToSoftwareDevice()) {
+ if (resourceless_software_draw_) {
bool disable_picture_quad_image_filtering =
IsCurrentlyScrolling() || needs_animate_layers();

Powered by Google App Engine
This is Rietveld 408576698