Index: gpu/command_buffer/service/gles2_cmd_decoder.cc |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
index 6d4bacbfa7f941e3cfcf8a1855a3e1b36c2770ab..ee8a1812563533c5a72f01753ae1f2f18ad5565a 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
@@ -62,8 +62,10 @@ |
#include "gpu/command_buffer/service/vertex_array_manager.h" |
#include "gpu/command_buffer/service/vertex_attrib_manager.h" |
#include "third_party/smhasher/src/City.h" |
+#include "ui/accelerated_widget_mac/ca_renderer_layer_params.h" |
#include "ui/gfx/geometry/point.h" |
#include "ui/gfx/geometry/rect.h" |
+#include "ui/gfx/geometry/rect_conversions.h" |
#include "ui/gfx/geometry/size.h" |
#include "ui/gfx/overlay_transform.h" |
#include "ui/gfx/transform.h" |
@@ -10331,10 +10333,22 @@ error::Error GLES2DecoderImpl::HandleScheduleCALayerCHROMIUM( |
mem[13], mem[17], mem[21], mem[25], |
mem[14], mem[18], mem[22], mem[26], |
mem[15], mem[19], mem[23], mem[27]); |
- if (!surface_->ScheduleCALayer( |
- image, contents_rect, c.opacity, c.background_color, c.edge_aa_mask, |
- bounds_rect, c.is_clipped ? true : false, clip_rect, transform, |
- c.sorting_context_id, filter)) { |
+ |
piman
2016/06/28 00:28:09
This, and the headers will now need to be in a #if
kirr
2016/06/28 10:25:48
Done.
Thanks. I've replaced mac-specific surfaces
|
+ base::ScopedCFTypeRef<IOSurfaceRef> io_surface; |
+ base::ScopedCFTypeRef<CVPixelBufferRef> cv_pixel_buffer; |
+ if (image) { |
+ gl::GLImageIOSurface* io_surface_image = |
+ static_cast<gl::GLImageIOSurface*>(image); |
ccameron
2016/06/28 00:05:14
Add a TODO(ccameron): Remove this cast (crbug.com/
kirr
2016/06/28 10:25:48
Done.
|
+ io_surface = io_surface_image->io_surface(); |
+ cv_pixel_buffer = io_surface_image->cv_pixel_buffer(); |
+ } |
+ |
+ ui::CARendererLayerParams params = ui::CARendererLayerParams( |
+ c.is_clipped ? true : false, gfx::ToEnclosingRect(clip_rect), |
+ c.sorting_context_id, transform, io_surface, cv_pixel_buffer, |
+ contents_rect, gfx::ToEnclosingRect(bounds_rect), c.background_color, |
+ c.edge_aa_mask, c.opacity, filter); |
+ if (!surface_->ScheduleCALayer(params)) { |
LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glScheduleCALayerCHROMIUM", |
"failed to schedule CALayer"); |
} |