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; |