Chromium Code Reviews| 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; |