Index: components/exo/surface.cc |
diff --git a/components/exo/surface.cc b/components/exo/surface.cc |
index 1e2026c28a34218ae05c622a10ee3b88aa339a48..ab4cf7b60c9256fe7fec22ef40e6c162558a8ad8 100644 |
--- a/components/exo/surface.cc |
+++ b/components/exo/surface.cc |
@@ -791,24 +791,27 @@ void Surface::UpdateSurface(bool full_damage) { |
std::unique_ptr<cc::DelegatedFrameData> delegated_frame( |
new cc::DelegatedFrameData); |
if (current_resource_.id) { |
- cc::TextureDrawQuad* texture_quad = |
- render_pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>(); |
- float vertex_opacity[4] = {1.0, 1.0, 1.0, 1.0}; |
- gfx::Rect opaque_rect; |
- if (state_.blend_mode == SkXfermode::kSrc_Mode || |
- state_.opaque_region.contains(gfx::RectToSkIRect(quad_rect))) { |
- opaque_rect = quad_rect; |
- } else if (state_.opaque_region.isRect()) { |
- opaque_rect = gfx::SkIRectToRect(state_.opaque_region.getBounds()); |
+ // Texture quad is only needed if buffer is not fully transparent. |
+ if (state_.alpha) { |
+ cc::TextureDrawQuad* texture_quad = |
+ render_pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>(); |
+ float vertex_opacity[4] = {1.0, 1.0, 1.0, 1.0}; |
+ gfx::Rect opaque_rect; |
+ if (state_.blend_mode == SkXfermode::kSrc_Mode || |
+ state_.opaque_region.contains(gfx::RectToSkIRect(quad_rect))) { |
+ opaque_rect = quad_rect; |
+ } else if (state_.opaque_region.isRect()) { |
+ opaque_rect = gfx::SkIRectToRect(state_.opaque_region.getBounds()); |
+ } |
+ |
+ texture_quad->SetNew(quad_state, quad_rect, opaque_rect, quad_rect, |
+ current_resource_.id, true, uv_top_left, |
+ uv_bottom_right, SK_ColorTRANSPARENT, vertex_opacity, |
+ false, false, state_.only_visible_on_secure_output); |
+ if (current_resource_.is_overlay_candidate) |
+ texture_quad->set_resource_size_in_pixels(current_resource_.size); |
+ delegated_frame->resource_list.push_back(current_resource_); |
} |
- |
- texture_quad->SetNew(quad_state, quad_rect, opaque_rect, quad_rect, |
- current_resource_.id, true, uv_top_left, |
- uv_bottom_right, SK_ColorTRANSPARENT, vertex_opacity, |
- false, false, state_.only_visible_on_secure_output); |
- if (current_resource_.is_overlay_candidate) |
- texture_quad->set_resource_size_in_pixels(current_resource_.size); |
- delegated_frame->resource_list.push_back(current_resource_); |
} else { |
cc::SolidColorDrawQuad* solid_quad = |
render_pass->CreateAndAppendDrawQuad<cc::SolidColorDrawQuad>(); |