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

Side by Side Diff: content/common/gpu/image_transport_surface_mac.mm

Issue 347653005: Make cross-process CALayers work on Mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@image_transport_1
Patch Set: Incorporate review feedback Created 6 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/common/gpu/image_transport_surface_fbo_mac.h" 5 #include "content/common/gpu/image_transport_surface_fbo_mac.h"
6 6
7 #include "content/common/gpu/gpu_messages.h" 7 #include "content/common/gpu/gpu_messages.h"
8 #include "content/common/gpu/image_transport_surface_iosurface_mac.h" 8 #include "content/common/gpu/image_transport_surface_iosurface_mac.h"
9 #include "content/common/gpu/image_transport_surface_calayer_mac.h"
9 #include "ui/gfx/native_widget_types.h" 10 #include "ui/gfx/native_widget_types.h"
10 #include "ui/gl/gl_context.h" 11 #include "ui/gl/gl_context.h"
11 #include "ui/gl/gl_implementation.h" 12 #include "ui/gl/gl_implementation.h"
12 #include "ui/gl/gl_surface_osmesa.h" 13 #include "ui/gl/gl_surface_osmesa.h"
13 14
14 namespace content { 15 namespace content {
15 namespace { 16 namespace {
16 17
17 // A subclass of GLSurfaceOSMesa that doesn't print an error message when 18 // A subclass of GLSurfaceOSMesa that doesn't print an error message when
18 // SwapBuffers() is called. 19 // SwapBuffers() is called.
(...skipping 22 matching lines...) Expand all
41 scoped_refptr<gfx::GLSurface> ImageTransportSurface::CreateNativeSurface( 42 scoped_refptr<gfx::GLSurface> ImageTransportSurface::CreateNativeSurface(
42 GpuChannelManager* manager, 43 GpuChannelManager* manager,
43 GpuCommandBufferStub* stub, 44 GpuCommandBufferStub* stub,
44 const gfx::GLSurfaceHandle& surface_handle) { 45 const gfx::GLSurfaceHandle& surface_handle) {
45 DCHECK(surface_handle.transport_type == gfx::NATIVE_DIRECT || 46 DCHECK(surface_handle.transport_type == gfx::NATIVE_DIRECT ||
46 surface_handle.transport_type == gfx::NATIVE_TRANSPORT); 47 surface_handle.transport_type == gfx::NATIVE_TRANSPORT);
47 48
48 switch (gfx::GetGLImplementation()) { 49 switch (gfx::GetGLImplementation()) {
49 case gfx::kGLImplementationDesktopGL: 50 case gfx::kGLImplementationDesktopGL:
50 case gfx::kGLImplementationAppleGL: 51 case gfx::kGLImplementationAppleGL:
52 // TODO(ccameron): If the remote layer API is supported on this system,
53 // use a CALayerStorageProvider instead of an IOSurfaceStorageProvider.
51 return scoped_refptr<gfx::GLSurface>(new ImageTransportSurfaceFBO( 54 return scoped_refptr<gfx::GLSurface>(new ImageTransportSurfaceFBO(
52 new IOSurfaceStorageProvider, manager, stub, surface_handle.handle)); 55 new IOSurfaceStorageProvider, manager, stub, surface_handle.handle));
53 default: 56 default:
54 // Content shell in DRT mode spins up a gpu process which needs an 57 // Content shell in DRT mode spins up a gpu process which needs an
55 // image transport surface, but that surface isn't used to read pixel 58 // image transport surface, but that surface isn't used to read pixel
56 // baselines. So this is mostly a dummy surface. 59 // baselines. So this is mostly a dummy surface.
57 if (!g_allow_os_mesa) { 60 if (!g_allow_os_mesa) {
58 NOTREACHED(); 61 NOTREACHED();
59 return scoped_refptr<gfx::GLSurface>(); 62 return scoped_refptr<gfx::GLSurface>();
60 } 63 }
61 scoped_refptr<gfx::GLSurface> surface(new DRTSurfaceOSMesa()); 64 scoped_refptr<gfx::GLSurface> surface(new DRTSurfaceOSMesa());
62 if (!surface.get() || !surface->Initialize()) 65 if (!surface.get() || !surface->Initialize())
63 return surface; 66 return surface;
64 return scoped_refptr<gfx::GLSurface>(new PassThroughImageTransportSurface( 67 return scoped_refptr<gfx::GLSurface>(new PassThroughImageTransportSurface(
65 manager, stub, surface.get())); 68 manager, stub, surface.get()));
66 } 69 }
67 } 70 }
68 71
69 // static 72 // static
70 void ImageTransportSurface::SetAllowOSMesaForTesting(bool allow) { 73 void ImageTransportSurface::SetAllowOSMesaForTesting(bool allow) {
71 g_allow_os_mesa = allow; 74 g_allow_os_mesa = allow;
72 } 75 }
73 76
74 } // namespace content 77 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698