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 | 13 |
14 namespace cc { | 14 namespace cc { |
15 | 15 |
16 namespace { | 16 namespace { |
17 | 17 |
18 DCLayerOverlayProcessor::DCLayerResult FromYUVQuad( | 18 DCLayerOverlayProcessor::DCLayerResult FromYUVQuad( |
19 ResourceProvider* resource_provider, | 19 ResourceProvider* resource_provider, |
20 const YUVVideoDrawQuad* quad, | 20 const YUVVideoDrawQuad* quad, |
21 DCLayerOverlay* ca_layer_overlay) { | 21 DCLayerOverlay* ca_layer_overlay) { |
22 unsigned resource_id = quad->y_plane_resource_id(); | 22 for (const auto& resource : quad->resources) { |
23 if (!resource_provider->IsOverlayCandidate(resource_id)) | 23 if (!resource_provider->IsOverlayCandidate(resource)) |
24 return DCLayerOverlayProcessor::DC_LAYER_FAILED_TEXTURE_NOT_CANDIDATE; | 24 return DCLayerOverlayProcessor::DC_LAYER_FAILED_TEXTURE_NOT_CANDIDATE; |
25 ca_layer_overlay->contents_resource_id = resource_id; | 25 } |
| 26 ca_layer_overlay->resources = quad->resources; |
26 ca_layer_overlay->contents_rect = quad->ya_tex_coord_rect; | 27 ca_layer_overlay->contents_rect = quad->ya_tex_coord_rect; |
27 ca_layer_overlay->filter = GL_LINEAR; | 28 ca_layer_overlay->filter = GL_LINEAR; |
28 return DCLayerOverlayProcessor::DC_LAYER_SUCCESS; | 29 return DCLayerOverlayProcessor::DC_LAYER_SUCCESS; |
29 } | 30 } |
30 | 31 |
31 // Find a rectangle containing all the quads in a list that occlude the area | 32 // Find a rectangle containing all the quads in a list that occlude the area |
32 // in target_quad. | 33 // in target_quad. |
33 gfx::RectF GetOcclusionBounds(const gfx::RectF& target_quad, | 34 gfx::RectF GetOcclusionBounds(const gfx::RectF& target_quad, |
34 QuadList::ConstIterator quad_list_begin, | 35 QuadList::ConstIterator quad_list_begin, |
35 QuadList::ConstIterator quad_list_end) { | 36 QuadList::ConstIterator quad_list_end) { |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 ca_layer_overlays->push_back(ca_layer); | 180 ca_layer_overlays->push_back(ca_layer); |
180 // Only allow one overlay for now. | 181 // Only allow one overlay for now. |
181 break; | 182 break; |
182 } | 183 } |
183 damage_rect->Intersect(gfx::ToEnclosingRect(display_rect)); | 184 damage_rect->Intersect(gfx::ToEnclosingRect(display_rect)); |
184 previous_frame_underlay_rect_ = this_frame_underlay_rect; | 185 previous_frame_underlay_rect_ = this_frame_underlay_rect; |
185 previous_display_rect_ = display_rect; | 186 previous_display_rect_ = display_rect; |
186 } | 187 } |
187 | 188 |
188 } // namespace cc | 189 } // namespace cc |
OLD | NEW |