summaryrefslogtreecommitdiffstats
path: root/ui/surface
diff options
context:
space:
mode:
authordanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-19 00:48:27 +0000
committerdanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-19 00:48:27 +0000
commit423e644f968f8a13dbc54dc9113d4aa7ce5dad8f (patch)
treeeae826909e515f7a699b2a53776a07a1768fa233 /ui/surface
parent0390b81932bb0d95ecc0250706854adc11f4f2c2 (diff)
downloadchromium_src-423e644f968f8a13dbc54dc9113d4aa7ce5dad8f.zip
chromium_src-423e644f968f8a13dbc54dc9113d4aa7ce5dad8f.tar.gz
chromium_src-423e644f968f8a13dbc54dc9113d4aa7ce5dad8f.tar.bz2
Move io_surface_support_mac to ui/gl.
This removes a dependency on media/ via ui/surface from gpu.gyp, allowing media to use gpu.gyp for gpu::Mailbox. R=piman@chromium.org, sky@chromium.org BUG=179729 Review URL: https://codereview.chromium.org/17381009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@207129 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/surface')
-rw-r--r--ui/surface/accelerated_surface_mac.cc2
-rw-r--r--ui/surface/io_surface_support_mac.cc303
-rw-r--r--ui/surface/io_surface_support_mac.h73
-rw-r--r--ui/surface/surface.gyp2
4 files changed, 1 insertions, 379 deletions
diff --git a/ui/surface/accelerated_surface_mac.cc b/ui/surface/accelerated_surface_mac.cc
index 239836a..ce80eb0 100644
--- a/ui/surface/accelerated_surface_mac.cc
+++ b/ui/surface/accelerated_surface_mac.cc
@@ -11,8 +11,8 @@
#include "ui/gl/gl_context.h"
#include "ui/gl/gl_implementation.h"
#include "ui/gl/gl_surface.h"
+#include "ui/gl/io_surface_support_mac.h"
#include "ui/gl/scoped_make_current.h"
-#include "ui/surface/io_surface_support_mac.h"
AcceleratedSurface::AcceleratedSurface()
: io_surface_id_(0),
diff --git a/ui/surface/io_surface_support_mac.cc b/ui/surface/io_surface_support_mac.cc
deleted file mode 100644
index 53376e5..0000000
--- a/ui/surface/io_surface_support_mac.cc
+++ /dev/null
@@ -1,303 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <dlfcn.h>
-
-#include "base/memory/singleton.h"
-#include "ui/surface/io_surface_support_mac.h"
-
-typedef CFTypeRef (*IOSurfaceCreateProcPtr)(CFDictionaryRef properties);
-typedef uint32 (*IOSurfaceGetIDProcPtr)(CFTypeRef io_surface);
-typedef CFTypeRef (*IOSurfaceLookupProcPtr)(uint32 io_surface_id);
-typedef mach_port_t (*IOSurfaceCreateMachPortProcPtr)(CFTypeRef io_surface);
-typedef CFTypeRef (*IOSurfaceLookupFromMachPortProcPtr)(mach_port_t port);
-typedef size_t (*IOSurfaceGetWidthPtr)(CFTypeRef io_surface);
-typedef size_t (*IOSurfaceGetHeightPtr)(CFTypeRef io_surface);
-typedef CGLError (*CGLTexImageIOSurface2DProcPtr)(CGLContextObj ctx,
- GLenum target,
- GLenum internal_format,
- GLsizei width,
- GLsizei height,
- GLenum format,
- GLenum type,
- CFTypeRef io_surface,
- GLuint plane);
-typedef CFTypeRef (*CVPixelBufferGetIOSurfaceProcPtr)(
- CVPixelBufferRef pixel_buffer);
-
-class IOSurfaceSupportImpl : public IOSurfaceSupport {
- public:
- static IOSurfaceSupportImpl* GetInstance();
-
- bool InitializedSuccessfully() {
- return initialized_successfully_;
- }
-
- virtual CFStringRef GetKIOSurfaceWidth() OVERRIDE;
- virtual CFStringRef GetKIOSurfaceHeight() OVERRIDE;
- virtual CFStringRef GetKIOSurfaceBytesPerElement() OVERRIDE;
- virtual CFStringRef GetKIOSurfaceIsGlobal() OVERRIDE;
-
- virtual CFTypeRef IOSurfaceCreate(CFDictionaryRef properties) OVERRIDE;
- virtual uint32 IOSurfaceGetID(CFTypeRef io_surface) OVERRIDE;
- virtual CFTypeRef IOSurfaceLookup(uint32 io_surface_id) OVERRIDE;
- virtual mach_port_t IOSurfaceCreateMachPort(CFTypeRef io_surface) OVERRIDE;
- virtual CFTypeRef IOSurfaceLookupFromMachPort(mach_port_t port) OVERRIDE;
-
- virtual size_t IOSurfaceGetWidth(CFTypeRef io_surface) OVERRIDE;
- virtual size_t IOSurfaceGetHeight(CFTypeRef io_surface) OVERRIDE;
-
- virtual CGLError CGLTexImageIOSurface2D(CGLContextObj ctx,
- GLenum target,
- GLenum internal_format,
- GLsizei width,
- GLsizei height,
- GLenum format,
- GLenum type,
- CFTypeRef io_surface,
- GLuint plane) OVERRIDE;
-
- virtual CFTypeRef CVPixelBufferGetIOSurface(
- CVPixelBufferRef pixel_buffer) OVERRIDE;
-
- private:
- IOSurfaceSupportImpl();
- virtual ~IOSurfaceSupportImpl();
-
- void CloseLibraryHandles();
-
- void* iosurface_handle_;
- void* opengl_handle_;
- void* core_video_handle_;
- CFStringRef k_io_surface_width_;
- CFStringRef k_io_surface_height_;
- CFStringRef k_io_surface_bytes_per_element_;
- CFStringRef k_io_surface_is_global_;
- IOSurfaceCreateProcPtr io_surface_create_;
- IOSurfaceGetIDProcPtr io_surface_get_id_;
- IOSurfaceLookupProcPtr io_surface_lookup_;
- IOSurfaceCreateMachPortProcPtr io_surface_create_mach_port_;
- IOSurfaceLookupFromMachPortProcPtr io_surface_lookup_from_mach_port_;
- IOSurfaceGetWidthPtr io_surface_get_width_;
- IOSurfaceGetHeightPtr io_surface_get_height_;
- CGLTexImageIOSurface2DProcPtr cgl_tex_image_io_surface_2d_;
- CVPixelBufferGetIOSurfaceProcPtr cv_pixel_buffer_get_io_surface_;
- bool initialized_successfully_;
-
- friend struct DefaultSingletonTraits<IOSurfaceSupportImpl>;
- DISALLOW_COPY_AND_ASSIGN(IOSurfaceSupportImpl);
-};
-
-IOSurfaceSupportImpl* IOSurfaceSupportImpl::GetInstance() {
- IOSurfaceSupportImpl* impl = Singleton<IOSurfaceSupportImpl>::get();
- if (impl->InitializedSuccessfully())
- return impl;
- return NULL;
-}
-
-CFStringRef IOSurfaceSupportImpl::GetKIOSurfaceWidth() {
- return k_io_surface_width_;
-}
-
-CFStringRef IOSurfaceSupportImpl::GetKIOSurfaceHeight() {
- return k_io_surface_height_;
-}
-
-CFStringRef IOSurfaceSupportImpl::GetKIOSurfaceBytesPerElement() {
- return k_io_surface_bytes_per_element_;
-}
-
-CFStringRef IOSurfaceSupportImpl::GetKIOSurfaceIsGlobal() {
- return k_io_surface_is_global_;
-}
-
-CFTypeRef IOSurfaceSupportImpl::IOSurfaceCreate(CFDictionaryRef properties) {
- return io_surface_create_(properties);
-}
-
-uint32 IOSurfaceSupportImpl::IOSurfaceGetID(
- CFTypeRef io_surface) {
- return io_surface_get_id_(io_surface);
-}
-
-CFTypeRef IOSurfaceSupportImpl::IOSurfaceLookup(uint32 io_surface_id) {
- return io_surface_lookup_(io_surface_id);
-}
-
-mach_port_t IOSurfaceSupportImpl::IOSurfaceCreateMachPort(
- CFTypeRef io_surface) {
- return io_surface_create_mach_port_(io_surface);
-}
-
-CFTypeRef IOSurfaceSupportImpl::IOSurfaceLookupFromMachPort(mach_port_t port) {
- return io_surface_lookup_from_mach_port_(port);
-}
-
-size_t IOSurfaceSupportImpl::IOSurfaceGetWidth(CFTypeRef io_surface) {
- return io_surface_get_width_(io_surface);
-}
-
-size_t IOSurfaceSupportImpl::IOSurfaceGetHeight(CFTypeRef io_surface) {
- return io_surface_get_height_(io_surface);
-}
-
-
-CGLError IOSurfaceSupportImpl::CGLTexImageIOSurface2D(CGLContextObj ctx,
- GLenum target,
- GLenum internal_format,
- GLsizei width,
- GLsizei height,
- GLenum format,
- GLenum type,
- CFTypeRef io_surface,
- GLuint plane) {
- return cgl_tex_image_io_surface_2d_(ctx,
- target,
- internal_format,
- width,
- height,
- format,
- type,
- io_surface,
- plane);
-}
-
-CFTypeRef IOSurfaceSupportImpl::CVPixelBufferGetIOSurface(
- CVPixelBufferRef pixel_buffer) {
- return cv_pixel_buffer_get_io_surface_(pixel_buffer);
-}
-
-IOSurfaceSupportImpl::IOSurfaceSupportImpl()
- : iosurface_handle_(NULL),
- opengl_handle_(NULL),
- core_video_handle_(NULL),
- k_io_surface_width_(NULL),
- k_io_surface_height_(NULL),
- k_io_surface_bytes_per_element_(NULL),
- k_io_surface_is_global_(NULL),
- io_surface_create_(NULL),
- io_surface_get_id_(NULL),
- io_surface_lookup_(NULL),
- io_surface_create_mach_port_(NULL),
- io_surface_lookup_from_mach_port_(NULL),
- io_surface_get_width_(NULL),
- io_surface_get_height_(NULL),
- cgl_tex_image_io_surface_2d_(NULL),
- cv_pixel_buffer_get_io_surface_(NULL),
- initialized_successfully_(false) {
- iosurface_handle_ = dlopen(
- "/System/Library/Frameworks/IOSurface.framework/IOSurface",
- RTLD_LAZY | RTLD_LOCAL);
- opengl_handle_ = dlopen(
- "/System/Library/Frameworks/OpenGL.framework/OpenGL",
- RTLD_LAZY | RTLD_LOCAL);
- core_video_handle_ = dlopen(
- "/System/Library/Frameworks/CoreVideo.framework/CoreVideo",
- RTLD_LAZY | RTLD_LOCAL);
- if (!iosurface_handle_ ||
- !opengl_handle_ ||
- !core_video_handle_) {
- CloseLibraryHandles();
- return;
- }
-
- void* surface_width_ptr = dlsym(iosurface_handle_, "kIOSurfaceWidth");
- void* surface_height_ptr = dlsym(iosurface_handle_, "kIOSurfaceHeight");
- void* surface_bytes_per_element_ptr =
- dlsym(iosurface_handle_, "kIOSurfaceBytesPerElement");
- void* surface_is_global_ptr =
- dlsym(iosurface_handle_, "kIOSurfaceIsGlobal");
- void* surface_create_ptr = dlsym(iosurface_handle_, "IOSurfaceCreate");
- void* surface_get_id_ptr = dlsym(iosurface_handle_, "IOSurfaceGetID");
- void* surface_lookup_ptr = dlsym(iosurface_handle_, "IOSurfaceLookup");
- void* surface_create_mach_port_ptr =
- dlsym(iosurface_handle_, "IOSurfaceCreateMachPort");
- void* surface_lookup_from_mach_port_ptr =
- dlsym(iosurface_handle_, "IOSurfaceLookupFromMachPort");
- void* io_surface_get_width_ptr =
- dlsym(iosurface_handle_, "IOSurfaceGetWidth");
- void* io_surface_get_height_ptr =
- dlsym(iosurface_handle_, "IOSurfaceGetHeight");
- void* tex_image_io_surface_2d_ptr =
- dlsym(opengl_handle_, "CGLTexImageIOSurface2D");
- void* cv_pixel_buffer_get_io_surface =
- dlsym(core_video_handle_, "CVPixelBufferGetIOSurface");
- if (!surface_width_ptr ||
- !surface_height_ptr ||
- !surface_bytes_per_element_ptr ||
- !surface_is_global_ptr ||
- !surface_create_ptr ||
- !surface_get_id_ptr ||
- !surface_lookup_ptr ||
- !surface_create_mach_port_ptr ||
- !surface_lookup_from_mach_port_ptr ||
- !io_surface_get_width_ptr ||
- !io_surface_get_height_ptr ||
- !tex_image_io_surface_2d_ptr ||
- !cv_pixel_buffer_get_io_surface) {
- CloseLibraryHandles();
- return;
- }
-
- k_io_surface_width_ = *static_cast<CFStringRef*>(surface_width_ptr);
- k_io_surface_height_ = *static_cast<CFStringRef*>(surface_height_ptr);
- k_io_surface_bytes_per_element_ =
- *static_cast<CFStringRef*>(surface_bytes_per_element_ptr);
- k_io_surface_is_global_ = *static_cast<CFStringRef*>(surface_is_global_ptr);
- io_surface_create_ = reinterpret_cast<IOSurfaceCreateProcPtr>(
- surface_create_ptr);
- io_surface_get_id_ =
- reinterpret_cast<IOSurfaceGetIDProcPtr>(surface_get_id_ptr);
- io_surface_lookup_ =
- reinterpret_cast<IOSurfaceLookupProcPtr>(surface_lookup_ptr);
- io_surface_create_mach_port_ =
- reinterpret_cast<IOSurfaceCreateMachPortProcPtr>(
- surface_create_mach_port_ptr);
- io_surface_lookup_from_mach_port_ =
- reinterpret_cast<IOSurfaceLookupFromMachPortProcPtr>(
- surface_lookup_from_mach_port_ptr);
- io_surface_get_width_ =
- reinterpret_cast<IOSurfaceGetWidthPtr>(
- io_surface_get_width_ptr);
- io_surface_get_height_ =
- reinterpret_cast<IOSurfaceGetHeightPtr>(
- io_surface_get_height_ptr);
- cgl_tex_image_io_surface_2d_ =
- reinterpret_cast<CGLTexImageIOSurface2DProcPtr>(
- tex_image_io_surface_2d_ptr);
- cv_pixel_buffer_get_io_surface_ =
- reinterpret_cast<CVPixelBufferGetIOSurfaceProcPtr>(
- cv_pixel_buffer_get_io_surface);
- initialized_successfully_ = true;
-}
-
-IOSurfaceSupportImpl::~IOSurfaceSupportImpl() {
- CloseLibraryHandles();
-}
-
-void IOSurfaceSupportImpl::CloseLibraryHandles() {
- if (iosurface_handle_) {
- dlclose(iosurface_handle_);
- iosurface_handle_ = NULL;
- }
- if (opengl_handle_) {
- dlclose(opengl_handle_);
- opengl_handle_ = NULL;
- }
- if (core_video_handle_) {
- dlclose(core_video_handle_);
- core_video_handle_ = NULL;
- }
-}
-
-IOSurfaceSupport* IOSurfaceSupport::Initialize() {
- return IOSurfaceSupportImpl::GetInstance();
-}
-
-IOSurfaceSupport::IOSurfaceSupport() {
-}
-
-IOSurfaceSupport::~IOSurfaceSupport() {
-}
-
diff --git a/ui/surface/io_surface_support_mac.h b/ui/surface/io_surface_support_mac.h
deleted file mode 100644
index 3f6d6bb..0000000
--- a/ui/surface/io_surface_support_mac.h
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_SURFACE_IO_SURFACE_SUPPORT_MAC_H_
-#define UI_SURFACE_IO_SURFACE_SUPPORT_MAC_H_
-
-#include <CoreFoundation/CoreFoundation.h>
-#include <CoreVideo/CoreVideo.h>
-#include <mach/mach.h>
-#include <OpenGL/OpenGL.h>
-
-#include "base/basictypes.h"
-#include "ui/surface/surface_export.h"
-
-// This Mac OS X-specific class provides dynamically-linked access to
-// IOSurface.framework, which is only available on 10.6 and later.
-// Since Chromium is built on 10.5 we must dynamically look up all of
-// the entry points we need in this framework.
-
-// See IOSurface/IOSurfaceAPI.h and OpenGL/CGLIOSurface.h on 10.6 for
-// documentation of the fields and methods of this class.
-
-class SURFACE_EXPORT IOSurfaceSupport {
- public:
- // Returns an instance of the IOSurfaceSupport class if the
- // operating system supports it, NULL otherwise. It is safe to call
- // this multiple times.
- static IOSurfaceSupport* Initialize();
-
- virtual CFStringRef GetKIOSurfaceWidth() = 0;
- virtual CFStringRef GetKIOSurfaceHeight() = 0;
- virtual CFStringRef GetKIOSurfaceBytesPerElement() = 0;
- virtual CFStringRef GetKIOSurfaceIsGlobal() = 0;
-
- virtual CFTypeRef IOSurfaceCreate(CFDictionaryRef properties) = 0;
-
- // The following two APIs assume the IOSurface was created with the
- // kIOSurfaceIsGlobal key set to true
- virtual uint32 IOSurfaceGetID(CFTypeRef io_surface) = 0;
- virtual CFTypeRef IOSurfaceLookup(uint32 io_surface_id) = 0;
-
- // The following two APIs are more robust and secure, but
- // unfortunately it looks like it will be a lot of work to correctly
- // transmit a mach port from process to process (possibly requiring
- // a side channel for or extension of the Chrome IPC mechanism)
- virtual mach_port_t IOSurfaceCreateMachPort(CFTypeRef io_surface) = 0;
- virtual CFTypeRef IOSurfaceLookupFromMachPort(mach_port_t port) = 0;
-
- virtual size_t IOSurfaceGetWidth(CFTypeRef io_surface) = 0;
- virtual size_t IOSurfaceGetHeight(CFTypeRef io_surface) = 0;
-
- virtual CGLError CGLTexImageIOSurface2D(CGLContextObj ctx,
- GLenum target,
- GLenum internal_format,
- GLsizei width,
- GLsizei height,
- GLenum format,
- GLenum type,
- CFTypeRef io_surface,
- GLuint plane) = 0;
-
- virtual CFTypeRef CVPixelBufferGetIOSurface(
- CVPixelBufferRef pixel_buffer) = 0;
-
- protected:
- IOSurfaceSupport();
- virtual ~IOSurfaceSupport();
-
- DISALLOW_COPY_AND_ASSIGN(IOSurfaceSupport);
-};
-
-#endif // UI_SURFACE_IO_SURFACE_SUPPORT_MAC_H_
diff --git a/ui/surface/surface.gyp b/ui/surface/surface.gyp
index 2c7ba5e..5887e06 100644
--- a/ui/surface/surface.gyp
+++ b/ui/surface/surface.gyp
@@ -74,8 +74,6 @@
'accelerated_surface_win.h',
'd3d9_utils_win.cc',
'd3d9_utils_win.h',
- 'io_surface_support_mac.cc',
- 'io_surface_support_mac.h',
'surface_export.h',
'surface_switches.h',
'surface_switches.cc',