OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/output/dc_layer_overlay.h" | 5 #include "cc/output/dc_layer_overlay.h" |
6 | 6 |
7 #include "cc/base/math_util.h" | 7 #include "cc/base/math_util.h" |
8 #include "cc/quads/solid_color_draw_quad.h" | 8 #include "cc/quads/solid_color_draw_quad.h" |
9 #include "cc/quads/yuv_video_draw_quad.h" | 9 #include "cc/quads/yuv_video_draw_quad.h" |
10 #include "cc/resources/resource_provider.h" | 10 #include "cc/resources/resource_provider.h" |
11 #include "gpu/GLES2/gl2extchromium.h" | 11 #include "gpu/GLES2/gl2extchromium.h" |
12 #include "ui/gfx/geometry/rect_conversions.h" | 12 #include "ui/gfx/geometry/rect_conversions.h" |
13 #include "ui/gl/gl_switches.h" | 13 #include "ui/gl/gl_switches.h" |
14 | 14 |
15 namespace cc { | 15 namespace cc { |
16 | 16 |
17 namespace { | 17 namespace { |
18 | 18 |
19 DCLayerOverlayProcessor::DCLayerResult FromYUVQuad( | 19 DCLayerOverlayProcessor::DCLayerResult FromYUVQuad( |
20 ResourceProvider* resource_provider, | 20 ResourceProvider* resource_provider, |
21 const YUVVideoDrawQuad* quad, | 21 const YUVVideoDrawQuad* quad, |
22 DCLayerOverlay* ca_layer_overlay) { | 22 DCLayerOverlay* dc_layer_overlay) { |
23 for (const auto& resource : quad->resources) { | 23 for (const auto& resource : quad->resources) { |
24 if (!resource_provider->IsOverlayCandidate(resource)) | 24 if (!resource_provider->IsOverlayCandidate(resource)) |
25 return DCLayerOverlayProcessor::DC_LAYER_FAILED_TEXTURE_NOT_CANDIDATE; | 25 return DCLayerOverlayProcessor::DC_LAYER_FAILED_TEXTURE_NOT_CANDIDATE; |
26 } | 26 } |
27 ca_layer_overlay->resources = quad->resources; | 27 dc_layer_overlay->resources = quad->resources; |
28 ca_layer_overlay->contents_rect = quad->ya_tex_coord_rect; | 28 dc_layer_overlay->contents_rect = quad->ya_tex_coord_rect; |
29 ca_layer_overlay->filter = GL_LINEAR; | 29 dc_layer_overlay->filter = GL_LINEAR; |
| 30 dc_layer_overlay->color_space = quad->video_color_space; |
30 return DCLayerOverlayProcessor::DC_LAYER_SUCCESS; | 31 return DCLayerOverlayProcessor::DC_LAYER_SUCCESS; |
31 } | 32 } |
32 | 33 |
33 // This returns the smallest rectangle in target space that contains the quad. | 34 // This returns the smallest rectangle in target space that contains the quad. |
34 gfx::RectF ClippedQuadRectangle(const DrawQuad* quad) { | 35 gfx::RectF ClippedQuadRectangle(const DrawQuad* quad) { |
35 gfx::RectF quad_rect = MathUtil::MapClippedRect( | 36 gfx::RectF quad_rect = MathUtil::MapClippedRect( |
36 quad->shared_quad_state->quad_to_target_transform, | 37 quad->shared_quad_state->quad_to_target_transform, |
37 gfx::RectF(quad->rect)); | 38 gfx::RectF(quad->rect)); |
38 if (quad->shared_quad_state->is_clipped) | 39 if (quad->shared_quad_state->is_clipped) |
39 quad_rect.Intersect(gfx::RectF(quad->shared_quad_state->clip_rect)); | 40 quad_rect.Intersect(gfx::RectF(quad->shared_quad_state->clip_rect)); |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 ca_layer_overlays->push_back(ca_layer); | 199 ca_layer_overlays->push_back(ca_layer); |
199 // Only allow one overlay for now. | 200 // Only allow one overlay for now. |
200 break; | 201 break; |
201 } | 202 } |
202 damage_rect->Intersect(gfx::ToEnclosingRect(display_rect)); | 203 damage_rect->Intersect(gfx::ToEnclosingRect(display_rect)); |
203 previous_frame_underlay_rect_ = this_frame_underlay_rect; | 204 previous_frame_underlay_rect_ = this_frame_underlay_rect; |
204 previous_display_rect_ = display_rect; | 205 previous_display_rect_ = display_rect; |
205 } | 206 } |
206 | 207 |
207 } // namespace cc | 208 } // namespace cc |
OLD | NEW |