image_transport_surface_mac.mm 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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
  3. // found in the LICENSE file.
  4. #include "gpu/ipc/service/image_transport_surface.h"
  5. #include "base/threading/thread_task_runner_handle.h"
  6. #include "gpu/ipc/service/image_transport_surface_overlay_mac.h"
  7. #include "gpu/ipc/service/pass_through_image_transport_surface.h"
  8. #include "ui/gfx/native_widget_types.h"
  9. #include "ui/gl/buildflags.h"
  10. #include "ui/gl/gl_surface_stub.h"
  11. namespace gpu {
  12. // static
  13. scoped_refptr<gl::GLSurface> ImageTransportSurface::CreateNativeSurface(
  14. gl::GLDisplay* display,
  15. base::WeakPtr<ImageTransportSurfaceDelegate> delegate,
  16. SurfaceHandle surface_handle,
  17. gl::GLSurfaceFormat format) {
  18. DCHECK_NE(surface_handle, kNullSurfaceHandle);
  19. switch (gl::GetGLImplementation()) {
  20. case gl::kGLImplementationDesktopGL:
  21. case gl::kGLImplementationDesktopGLCoreProfile:
  22. return base::WrapRefCounted<gl::GLSurface>(
  23. new ImageTransportSurfaceOverlayMac(delegate));
  24. #if defined(USE_EGL)
  25. case gl::kGLImplementationEGLGLES2:
  26. case gl::kGLImplementationEGLANGLE:
  27. return base::WrapRefCounted<gl::GLSurface>(
  28. new ImageTransportSurfaceOverlayMacEGL(
  29. display->GetAs<gl::GLDisplayEGL>(), delegate));
  30. #endif
  31. case gl::kGLImplementationMockGL:
  32. case gl::kGLImplementationStubGL:
  33. return base::WrapRefCounted<gl::GLSurface>(new gl::GLSurfaceStub);
  34. default:
  35. return nullptr;
  36. }
  37. }
  38. } // namespace gpu