OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/ca_layer_overlay.h" | 5 #include "cc/output/ca_layer_overlay.h" |
6 | 6 |
7 #include "base/metrics/histogram.h" | 7 #include "base/metrics/histogram.h" |
8 #include "cc/quads/io_surface_draw_quad.h" | |
9 #include "cc/quads/solid_color_draw_quad.h" | 8 #include "cc/quads/solid_color_draw_quad.h" |
10 #include "cc/quads/stream_video_draw_quad.h" | 9 #include "cc/quads/stream_video_draw_quad.h" |
11 #include "cc/quads/texture_draw_quad.h" | 10 #include "cc/quads/texture_draw_quad.h" |
12 #include "cc/quads/tile_draw_quad.h" | 11 #include "cc/quads/tile_draw_quad.h" |
13 #include "cc/resources/resource_provider.h" | 12 #include "cc/resources/resource_provider.h" |
14 #include "gpu/GLES2/gl2extchromium.h" | 13 #include "gpu/GLES2/gl2extchromium.h" |
15 | 14 |
16 namespace cc { | 15 namespace cc { |
17 | 16 |
18 namespace { | 17 namespace { |
(...skipping 13 matching lines...) Expand all Loading... |
32 CA_LAYER_FAILED_QUAD_TRANSFORM, | 31 CA_LAYER_FAILED_QUAD_TRANSFORM, |
33 CA_LAYER_FAILED_QUAD_CLIPPING, | 32 CA_LAYER_FAILED_QUAD_CLIPPING, |
34 CA_LAYER_FAILED_DEBUG_BORDER, | 33 CA_LAYER_FAILED_DEBUG_BORDER, |
35 CA_LAYER_FAILED_PICTURE_CONTENT, | 34 CA_LAYER_FAILED_PICTURE_CONTENT, |
36 CA_LAYER_FAILED_RENDER_PASS, | 35 CA_LAYER_FAILED_RENDER_PASS, |
37 CA_LAYER_FAILED_SURFACE_CONTENT, | 36 CA_LAYER_FAILED_SURFACE_CONTENT, |
38 CA_LAYER_FAILED_YUV_VIDEO_CONTENT, | 37 CA_LAYER_FAILED_YUV_VIDEO_CONTENT, |
39 CA_LAYER_FAILED_COUNT, | 38 CA_LAYER_FAILED_COUNT, |
40 }; | 39 }; |
41 | 40 |
42 CALayerResult FromIOSurfaceQuad(ResourceProvider* resource_provider, | |
43 const IOSurfaceDrawQuad* quad, | |
44 CALayerOverlay* ca_layer_overlay) { | |
45 unsigned resource_id = quad->io_surface_resource_id(); | |
46 if (!resource_provider->IsOverlayCandidate(resource_id)) | |
47 return CA_LAYER_FAILED_IO_SURFACE_NOT_CANDIDATE; | |
48 ca_layer_overlay->contents_resource_id = resource_id; | |
49 ca_layer_overlay->contents_rect = gfx::RectF(0, 0, 1, 1); | |
50 return CA_LAYER_SUCCESS; | |
51 } | |
52 | |
53 CALayerResult FromStreamVideoQuad(ResourceProvider* resource_provider, | 41 CALayerResult FromStreamVideoQuad(ResourceProvider* resource_provider, |
54 const StreamVideoDrawQuad* quad, | 42 const StreamVideoDrawQuad* quad, |
55 CALayerOverlay* ca_layer_overlay) { | 43 CALayerOverlay* ca_layer_overlay) { |
56 unsigned resource_id = quad->resource_id(); | 44 unsigned resource_id = quad->resource_id(); |
57 if (!resource_provider->IsOverlayCandidate(resource_id)) | 45 if (!resource_provider->IsOverlayCandidate(resource_id)) |
58 return CA_LAYER_FAILED_STREAM_VIDEO_NOT_CANDIDATE; | 46 return CA_LAYER_FAILED_STREAM_VIDEO_NOT_CANDIDATE; |
59 ca_layer_overlay->contents_resource_id = resource_id; | 47 ca_layer_overlay->contents_resource_id = resource_id; |
60 // TODO(ccameron): Support merging at least some basic transforms into the | 48 // TODO(ccameron): Support merging at least some basic transforms into the |
61 // layer transform. | 49 // layer transform. |
62 if (!quad->matrix.IsIdentity()) | 50 if (!quad->matrix.IsIdentity()) |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 quad->shared_quad_state->sorting_context_id; | 136 quad->shared_quad_state->sorting_context_id; |
149 ca_layer_overlay->is_clipped = quad->shared_quad_state->is_clipped; | 137 ca_layer_overlay->is_clipped = quad->shared_quad_state->is_clipped; |
150 ca_layer_overlay->clip_rect = gfx::RectF(quad->shared_quad_state->clip_rect); | 138 ca_layer_overlay->clip_rect = gfx::RectF(quad->shared_quad_state->clip_rect); |
151 | 139 |
152 ca_layer_overlay->opacity = quad->shared_quad_state->opacity; | 140 ca_layer_overlay->opacity = quad->shared_quad_state->opacity; |
153 ca_layer_overlay->bounds_rect = gfx::RectF(quad->rect); | 141 ca_layer_overlay->bounds_rect = gfx::RectF(quad->rect); |
154 ca_layer_overlay->transform = | 142 ca_layer_overlay->transform = |
155 quad->shared_quad_state->quad_to_target_transform.matrix(); | 143 quad->shared_quad_state->quad_to_target_transform.matrix(); |
156 | 144 |
157 switch (quad->material) { | 145 switch (quad->material) { |
158 case DrawQuad::IO_SURFACE_CONTENT: | |
159 return FromIOSurfaceQuad(resource_provider, | |
160 IOSurfaceDrawQuad::MaterialCast(quad), | |
161 ca_layer_overlay); | |
162 case DrawQuad::TEXTURE_CONTENT: | 146 case DrawQuad::TEXTURE_CONTENT: |
163 return FromTextureQuad(resource_provider, | 147 return FromTextureQuad(resource_provider, |
164 TextureDrawQuad::MaterialCast(quad), | 148 TextureDrawQuad::MaterialCast(quad), |
165 ca_layer_overlay); | 149 ca_layer_overlay); |
166 case DrawQuad::TILED_CONTENT: | 150 case DrawQuad::TILED_CONTENT: |
167 return FromTileQuad(resource_provider, TileDrawQuad::MaterialCast(quad), | 151 return FromTileQuad(resource_provider, TileDrawQuad::MaterialCast(quad), |
168 ca_layer_overlay); | 152 ca_layer_overlay); |
169 case DrawQuad::SOLID_COLOR: | 153 case DrawQuad::SOLID_COLOR: |
170 return FromSolidColorDrawQuad(SolidColorDrawQuad::MaterialCast(quad), | 154 return FromSolidColorDrawQuad(SolidColorDrawQuad::MaterialCast(quad), |
171 ca_layer_overlay, skip); | 155 ca_layer_overlay, skip); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 CA_LAYER_FAILED_COUNT); | 224 CA_LAYER_FAILED_COUNT); |
241 | 225 |
242 if (result != CA_LAYER_SUCCESS) { | 226 if (result != CA_LAYER_SUCCESS) { |
243 ca_layer_overlays->clear(); | 227 ca_layer_overlays->clear(); |
244 return false; | 228 return false; |
245 } | 229 } |
246 return true; | 230 return true; |
247 } | 231 } |
248 | 232 |
249 } // namespace cc | 233 } // namespace cc |
OLD | NEW |