OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "ui/accelerated_widget_mac/ca_renderer_layer_tree.h" | 5 #include "ui/accelerated_widget_mac/ca_renderer_layer_tree.h" |
6 | 6 |
7 #include <AVFoundation/AVFoundation.h> | 7 #include <AVFoundation/AVFoundation.h> |
8 #include <CoreMedia/CoreMedia.h> | 8 #include <CoreMedia/CoreMedia.h> |
9 #include <CoreVideo/CoreVideo.h> | 9 #include <CoreVideo/CoreVideo.h> |
10 #include <GLES2/gl2extchromium.h> | 10 #include <GLES2/gl2extchromium.h> |
11 | 11 |
12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
| 13 #include "base/mac/mac_util.h" |
13 #include "base/mac/sdk_forward_declarations.h" | 14 #include "base/mac/sdk_forward_declarations.h" |
14 #include "base/trace_event/trace_event.h" | 15 #include "base/trace_event/trace_event.h" |
15 #include "third_party/skia/include/core/SkColor.h" | 16 #include "third_party/skia/include/core/SkColor.h" |
16 #include "ui/base/cocoa/animation_utils.h" | 17 #include "ui/base/cocoa/animation_utils.h" |
17 #include "ui/base/ui_base_switches.h" | 18 #include "ui/base/ui_base_switches.h" |
18 #include "ui/gfx/geometry/dip_util.h" | 19 #include "ui/gfx/geometry/dip_util.h" |
19 | 20 |
20 #if !defined(MAC_OS_X_VERSION_10_8) || \ | 21 #if !defined(MAC_OS_X_VERSION_10_8) || \ |
21 MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8 | 22 MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8 |
22 extern NSString* const AVLayerVideoGravityResize; | 23 extern NSString* const AVLayerVideoGravityResize; |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 ca_edge_aa_mask |= kCALayerTopEdge; | 321 ca_edge_aa_mask |= kCALayerTopEdge; |
321 if (edge_aa_mask & GL_CA_LAYER_EDGE_BOTTOM_CHROMIUM) | 322 if (edge_aa_mask & GL_CA_LAYER_EDGE_BOTTOM_CHROMIUM) |
322 ca_edge_aa_mask |= kCALayerBottomEdge; | 323 ca_edge_aa_mask |= kCALayerBottomEdge; |
323 } | 324 } |
324 | 325 |
325 // Only allow 4:2:0 frames which fill the layer's contents to be promoted to | 326 // Only allow 4:2:0 frames which fill the layer's contents to be promoted to |
326 // AV layers. | 327 // AV layers. |
327 if (IOSurfaceGetPixelFormat(io_surface) == | 328 if (IOSurfaceGetPixelFormat(io_surface) == |
328 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange && | 329 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange && |
329 contents_rect == gfx::RectF(0, 0, 1, 1)) { | 330 contents_rect == gfx::RectF(0, 0, 1, 1)) { |
330 use_av_layer = true; | 331 // Disable AVSampleBufferDisplayLayer on <10.11 due to reports of memory |
| 332 // leaks on 10.9. |
| 333 // https://crbug.com/631485 |
| 334 if (base::mac::IsOSElCapitanOrLater()) |
| 335 use_av_layer = true; |
331 } | 336 } |
332 } | 337 } |
333 | 338 |
334 CARendererLayerTree::ContentLayer::ContentLayer(ContentLayer&& layer) | 339 CARendererLayerTree::ContentLayer::ContentLayer(ContentLayer&& layer) |
335 : io_surface(layer.io_surface), | 340 : io_surface(layer.io_surface), |
336 cv_pixel_buffer(layer.cv_pixel_buffer), | 341 cv_pixel_buffer(layer.cv_pixel_buffer), |
337 contents_rect(layer.contents_rect), | 342 contents_rect(layer.contents_rect), |
338 rect(layer.rect), | 343 rect(layer.rect), |
339 background_color(layer.background_color), | 344 background_color(layer.background_color), |
340 ca_edge_aa_mask(layer.ca_edge_aa_mask), | 345 ca_edge_aa_mask(layer.ca_edge_aa_mask), |
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
657 } else { | 662 } else { |
658 // Grey represents a CALayer that has not changed. | 663 // Grey represents a CALayer that has not changed. |
659 color.reset(CGColorCreateGenericRGB(0.5, 0.5, 0.5, 1)); | 664 color.reset(CGColorCreateGenericRGB(0.5, 0.5, 0.5, 1)); |
660 } | 665 } |
661 [ca_layer setBorderWidth:1]; | 666 [ca_layer setBorderWidth:1]; |
662 [ca_layer setBorderColor:color]; | 667 [ca_layer setBorderColor:color]; |
663 } | 668 } |
664 } | 669 } |
665 | 670 |
666 } // namespace ui | 671 } // namespace ui |
OLD | NEW |