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

Unified Diff: cc/layers/picture_layer_impl.cc

Issue 1731373002: Allow to have a transparent UA dependent background. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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/layers/picture_layer_impl.cc
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index 695f539b5ea62f944a4ffe35bec48a899b06749b..41815ca2e9df62aa681a0e483ec6eef31fc21a15 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -34,6 +34,11 @@
#include "ui/gfx/geometry/rect_conversions.h"
#include "ui/gfx/geometry/size_conversions.h"
+#if defined(USE_X11) && !defined(OS_CHROMEOS)
+#include "base/command_line.h"
+#include "ui/gfx/x/x11_switches.h"
+#endif
+
namespace {
// This must be > 1 as we multiply or divide by this to find a new raster
// scale during pinch.
@@ -80,8 +85,18 @@ PictureLayerImpl::PictureLayerImpl(
was_screen_space_transform_animating_(false),
only_used_low_res_last_append_quads_(false),
is_mask_(is_mask),
- nearest_neighbor_(false) {
+ nearest_neighbor_(false),
+ has_alpha_channel_(true) {
layer_tree_impl()->RegisterPictureLayerImpl(this);
+
+#if defined(USE_X11) && !defined(OS_CHROMEOS)
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kWindowDepth)) {
+ has_alpha_channel_ =
+ base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+ switches::kWindowDepth) == "32";
+ }
+#endif
trchen 2016/02/25 02:30:12 This doesn't make sense to me. Why does it have to
Julien Isorce Samsung 2016/02/25 11:33:55 You are right it should be static but I found this
}
PictureLayerImpl::~PictureLayerImpl() {
@@ -312,12 +327,15 @@ void PictureLayerImpl::AppendQuads(RenderPass* render_pass,
append_quads_data->num_incomplete_tiles++;
}
+ const bool needs_blending =
+ has_alpha_channel_ && render_pass->has_transparent_background;
TileDrawQuad* quad =
render_pass->CreateAndAppendDrawQuad<TileDrawQuad>();
- quad->SetNew(shared_quad_state, geometry_rect, opaque_rect,
- visible_geometry_rect, draw_info.resource_id(),
- texture_rect, draw_info.resource_size(),
- draw_info.contents_swizzled(), nearest_neighbor_);
+ quad->SetAll(shared_quad_state, geometry_rect, opaque_rect,
+ visible_geometry_rect, needs_blending,
trchen 2016/02/25 02:30:12 It doesn't make sense to force blending here, and
Julien Isorce Samsung 2016/02/25 11:33:55 For now all of this is still not clear to me. I'll
+ draw_info.resource_id(), texture_rect,
+ draw_info.resource_size(), draw_info.contents_swizzled(),
+ nearest_neighbor_);
ValidateQuadResources(quad);
iter->draw_info().set_was_ever_used_to_draw();
has_draw_quad = true;

Powered by Google App Engine
This is Rietveld 408576698