Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(783)

Side by Side Diff: gpu/ipc/service/image_transport_surface_overlay_mac.mm

Issue 2006923006: Move all CARendererLayerTree parameters to separate struct. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "gpu/ipc/service/image_transport_surface_overlay_mac.h" 5 #include "gpu/ipc/service/image_transport_surface_overlay_mac.h"
6 6
7 #include <CoreGraphics/CoreGraphics.h> 7 #include <CoreGraphics/CoreGraphics.h>
8 #include <IOSurface/IOSurface.h> 8 #include <IOSurface/IOSurface.h>
9 #include <OpenGL/CGLRenderers.h> 9 #include <OpenGL/CGLRenderers.h>
10 #include <OpenGL/CGLTypes.h> 10 #include <OpenGL/CGLTypes.h>
11 #include <OpenGL/gl.h> 11 #include <OpenGL/gl.h>
12 #include <stddef.h> 12 #include <stddef.h>
13 13
14 #include <algorithm> 14 #include <algorithm>
15 15
16 // This type consistently causes problem on Mac, and needs to be dealt with 16 // This type consistently causes problem on Mac, and needs to be dealt with
17 // in a systemic way. 17 // in a systemic way.
18 // http://crbug.com/517208 18 // http://crbug.com/517208
19 #ifndef GL_OES_EGL_image 19 #ifndef GL_OES_EGL_image
20 typedef void* GLeglImageOES; 20 typedef void* GLeglImageOES;
21 #endif 21 #endif
22 22
23 #include "base/bind.h" 23 #include "base/bind.h"
24 #include "base/bind_helpers.h" 24 #include "base/bind_helpers.h"
25 #include "base/mac/scoped_cftyperef.h"
26 #include "base/trace_event/trace_event.h" 25 #include "base/trace_event/trace_event.h"
27 #include "gpu/ipc/common/gpu_messages.h" 26 #include "gpu/ipc/common/gpu_messages.h"
28 #include "gpu/ipc/service/gpu_channel_manager.h" 27 #include "gpu/ipc/service/gpu_channel_manager.h"
29 #include "gpu/ipc/service/gpu_channel_manager_delegate.h" 28 #include "gpu/ipc/service/gpu_channel_manager_delegate.h"
30 #include "ui/accelerated_widget_mac/ca_layer_tree_coordinator.h" 29 #include "ui/accelerated_widget_mac/ca_layer_tree_coordinator.h"
31 #include "ui/accelerated_widget_mac/io_surface_context.h" 30 #include "ui/accelerated_widget_mac/io_surface_context.h"
32 #include "ui/base/cocoa/animation_utils.h" 31 #include "ui/base/cocoa/animation_utils.h"
33 #include "ui/base/cocoa/remote_layer_api.h" 32 #include "ui/base/cocoa/remote_layer_api.h"
34 #include "ui/gfx/geometry/rect_conversions.h" 33 #include "ui/gfx/geometry/rect_conversions.h"
35 #include "ui/gfx/swap_result.h" 34 #include "ui/gfx/swap_result.h"
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 } 291 }
293 if (z_order) { 292 if (z_order) {
294 DLOG(ERROR) << "Invalid non-zero Z order."; 293 DLOG(ERROR) << "Invalid non-zero Z order.";
295 return false; 294 return false;
296 } 295 }
297 return ca_layer_tree_coordinator_->SetPendingGLRendererBackbuffer( 296 return ca_layer_tree_coordinator_->SetPendingGLRendererBackbuffer(
298 static_cast<gl::GLImageIOSurface*>(image)->io_surface()); 297 static_cast<gl::GLImageIOSurface*>(image)->io_surface());
299 } 298 }
300 299
301 bool ImageTransportSurfaceOverlayMac::ScheduleCALayer( 300 bool ImageTransportSurfaceOverlayMac::ScheduleCALayer(
302 gl::GLImage* contents_image, 301 const ui::CARendererLayerParams& params) {
303 const gfx::RectF& contents_rect,
304 float opacity,
305 unsigned background_color,
306 unsigned edge_aa_mask,
307 const gfx::RectF& rect,
308 bool is_clipped,
309 const gfx::RectF& clip_rect,
310 const gfx::Transform& transform,
311 int sorting_context_id,
312 unsigned filter) {
313 base::ScopedCFTypeRef<IOSurfaceRef> io_surface;
314 base::ScopedCFTypeRef<CVPixelBufferRef> cv_pixel_buffer;
315 if (contents_image) {
316 gl::GLImageIOSurface* io_surface_image =
317 static_cast<gl::GLImageIOSurface*>(contents_image);
318 io_surface = io_surface_image->io_surface();
319 cv_pixel_buffer = io_surface_image->cv_pixel_buffer();
320 }
321 return ca_layer_tree_coordinator_->GetPendingCARendererLayerTree() 302 return ca_layer_tree_coordinator_->GetPendingCARendererLayerTree()
322 ->ScheduleCALayer(is_clipped, gfx::ToEnclosingRect(clip_rect), 303 ->ScheduleCALayer(params);
323 sorting_context_id, transform, io_surface,
324 cv_pixel_buffer, contents_rect,
325 gfx::ToEnclosingRect(rect), background_color,
326 edge_aa_mask, opacity, filter);
327 } 304 }
328 305
329 bool ImageTransportSurfaceOverlayMac::IsSurfaceless() const { 306 bool ImageTransportSurfaceOverlayMac::IsSurfaceless() const {
330 return true; 307 return true;
331 } 308 }
332 309
333 bool ImageTransportSurfaceOverlayMac::Resize(const gfx::Size& pixel_size, 310 bool ImageTransportSurfaceOverlayMac::Resize(const gfx::Size& pixel_size,
334 float scale_factor, 311 float scale_factor,
335 bool has_alpha) { 312 bool has_alpha) {
336 pixel_size_ = pixel_size; 313 pixel_size_ = pixel_size;
(...skipping 18 matching lines...) Expand all
355 gl_renderer_id_ = context_renderer_id & kCGLRendererIDMatchingMask; 332 gl_renderer_id_ = context_renderer_id & kCGLRendererIDMatchingMask;
356 333
357 // Post a task holding a reference to the new GL context. The reason for 334 // Post a task holding a reference to the new GL context. The reason for
358 // this is to avoid creating-then-destroying the context for every image 335 // this is to avoid creating-then-destroying the context for every image
359 // transport surface that is observing the GPU switch. 336 // transport surface that is observing the GPU switch.
360 base::MessageLoop::current()->PostTask( 337 base::MessageLoop::current()->PostTask(
361 FROM_HERE, base::Bind(&IOSurfaceContextNoOp, context_on_new_gpu)); 338 FROM_HERE, base::Bind(&IOSurfaceContextNoOp, context_on_new_gpu));
362 } 339 }
363 340
364 } // namespace gpu 341 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698