| 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 |