| Index: ui/gl/io_surface_support_mac.cc
|
| diff --git a/ui/gl/io_surface_support_mac.cc b/ui/gl/io_surface_support_mac.cc
|
| index 077eb817e62f5ffd14edc74b335a6de744a40713..a7aeae85f8e5ca828aed8e15520041787dd09ff3 100644
|
| --- a/ui/gl/io_surface_support_mac.cc
|
| +++ b/ui/gl/io_surface_support_mac.cc
|
| @@ -14,6 +14,15 @@ 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 size_t (*IOSurfaceGetBytesPerRowPtr)(CFTypeRef io_surface);
|
| +typedef void* (*IOSurfaceGetBaseAddressPtr)(CFTypeRef io_surface);
|
| +typedef IOReturn (*IOSurfaceLockPtr)(CFTypeRef io_surface,
|
| + uint32 options,
|
| + uint32* seed);
|
| +typedef IOReturn (*IOSurfaceUnlockPtr)(CFTypeRef io_surface,
|
| + uint32 options,
|
| + uint32* seed);
|
| +
|
| typedef CGLError (*CGLTexImageIOSurface2DProcPtr)(CGLContextObj ctx,
|
| GLenum target,
|
| GLenum internal_format,
|
| @@ -37,6 +46,7 @@ class IOSurfaceSupportImpl : public IOSurfaceSupport {
|
| virtual CFStringRef GetKIOSurfaceWidth() OVERRIDE;
|
| virtual CFStringRef GetKIOSurfaceHeight() OVERRIDE;
|
| virtual CFStringRef GetKIOSurfaceBytesPerElement() OVERRIDE;
|
| + virtual CFStringRef GetKIOSurfacePixelFormat() OVERRIDE;
|
| virtual CFStringRef GetKIOSurfaceIsGlobal() OVERRIDE;
|
|
|
| virtual CFTypeRef IOSurfaceCreate(CFDictionaryRef properties) OVERRIDE;
|
| @@ -47,6 +57,15 @@ class IOSurfaceSupportImpl : public IOSurfaceSupport {
|
|
|
| virtual size_t IOSurfaceGetWidth(CFTypeRef io_surface) OVERRIDE;
|
| virtual size_t IOSurfaceGetHeight(CFTypeRef io_surface) OVERRIDE;
|
| + virtual size_t IOSurfaceGetBytesPerRow(CFTypeRef io_surface) OVERRIDE;
|
| + virtual void* IOSurfaceGetBaseAddress(CFTypeRef io_surface) OVERRIDE;
|
| +
|
| + virtual IOReturn IOSurfaceLock(CFTypeRef io_surface,
|
| + uint32 options,
|
| + uint32* seed) OVERRIDE;
|
| + virtual IOReturn IOSurfaceUnlock(CFTypeRef io_surface,
|
| + uint32 options,
|
| + uint32* seed) OVERRIDE;
|
|
|
| virtual CGLError CGLTexImageIOSurface2D(CGLContextObj ctx,
|
| GLenum target,
|
| @@ -73,6 +92,7 @@ class IOSurfaceSupportImpl : public IOSurfaceSupport {
|
| CFStringRef k_io_surface_width_;
|
| CFStringRef k_io_surface_height_;
|
| CFStringRef k_io_surface_bytes_per_element_;
|
| + CFStringRef k_io_surface_pixel_format_;
|
| CFStringRef k_io_surface_is_global_;
|
| IOSurfaceCreateProcPtr io_surface_create_;
|
| IOSurfaceGetIDProcPtr io_surface_get_id_;
|
| @@ -81,6 +101,10 @@ class IOSurfaceSupportImpl : public IOSurfaceSupport {
|
| IOSurfaceLookupFromMachPortProcPtr io_surface_lookup_from_mach_port_;
|
| IOSurfaceGetWidthPtr io_surface_get_width_;
|
| IOSurfaceGetHeightPtr io_surface_get_height_;
|
| + IOSurfaceGetBytesPerRowPtr io_surface_get_bytes_per_row_;
|
| + IOSurfaceGetBaseAddressPtr io_surface_get_base_address_;
|
| + IOSurfaceLockPtr io_surface_lock_;
|
| + IOSurfaceUnlockPtr io_surface_unlock_;
|
| CGLTexImageIOSurface2DProcPtr cgl_tex_image_io_surface_2d_;
|
| CVPixelBufferGetIOSurfaceProcPtr cv_pixel_buffer_get_io_surface_;
|
| bool initialized_successfully_;
|
| @@ -108,6 +132,10 @@ CFStringRef IOSurfaceSupportImpl::GetKIOSurfaceBytesPerElement() {
|
| return k_io_surface_bytes_per_element_;
|
| }
|
|
|
| +CFStringRef IOSurfaceSupportImpl::GetKIOSurfacePixelFormat() {
|
| + return k_io_surface_pixel_format_;
|
| +}
|
| +
|
| CFStringRef IOSurfaceSupportImpl::GetKIOSurfaceIsGlobal() {
|
| return k_io_surface_is_global_;
|
| }
|
| @@ -142,6 +170,25 @@ size_t IOSurfaceSupportImpl::IOSurfaceGetHeight(CFTypeRef io_surface) {
|
| return io_surface_get_height_(io_surface);
|
| }
|
|
|
| +size_t IOSurfaceSupportImpl::IOSurfaceGetBytesPerRow(CFTypeRef io_surface) {
|
| + return io_surface_get_bytes_per_row_(io_surface);
|
| +}
|
| +
|
| +void* IOSurfaceSupportImpl::IOSurfaceGetBaseAddress(CFTypeRef io_surface) {
|
| + return io_surface_get_base_address_(io_surface);
|
| +}
|
| +
|
| +IOReturn IOSurfaceSupportImpl::IOSurfaceLock(CFTypeRef io_surface,
|
| + uint32 options,
|
| + uint32* seed) {
|
| + return io_surface_lock_(io_surface, options, seed);
|
| +}
|
| +
|
| +IOReturn IOSurfaceSupportImpl::IOSurfaceUnlock(CFTypeRef io_surface,
|
| + uint32 options,
|
| + uint32* seed) {
|
| + return io_surface_unlock_(io_surface, options, seed);
|
| +}
|
|
|
| CGLError IOSurfaceSupportImpl::CGLTexImageIOSurface2D(CGLContextObj ctx,
|
| GLenum target,
|
| @@ -175,6 +222,7 @@ IOSurfaceSupportImpl::IOSurfaceSupportImpl()
|
| k_io_surface_width_(NULL),
|
| k_io_surface_height_(NULL),
|
| k_io_surface_bytes_per_element_(NULL),
|
| + k_io_surface_pixel_format_(NULL),
|
| k_io_surface_is_global_(NULL),
|
| io_surface_create_(NULL),
|
| io_surface_get_id_(NULL),
|
| @@ -183,6 +231,10 @@ IOSurfaceSupportImpl::IOSurfaceSupportImpl()
|
| io_surface_lookup_from_mach_port_(NULL),
|
| io_surface_get_width_(NULL),
|
| io_surface_get_height_(NULL),
|
| + io_surface_get_bytes_per_row_(NULL),
|
| + io_surface_get_base_address_(NULL),
|
| + io_surface_lock_(NULL),
|
| + io_surface_unlock_(NULL),
|
| cgl_tex_image_io_surface_2d_(NULL),
|
| cv_pixel_buffer_get_io_surface_(NULL),
|
| initialized_successfully_(false) {
|
| @@ -206,6 +258,8 @@ IOSurfaceSupportImpl::IOSurfaceSupportImpl()
|
| void* surface_height_ptr = dlsym(iosurface_handle_, "kIOSurfaceHeight");
|
| void* surface_bytes_per_element_ptr =
|
| dlsym(iosurface_handle_, "kIOSurfaceBytesPerElement");
|
| + void* surface_pixel_format_ptr =
|
| + dlsym(iosurface_handle_, "kIOSurfacePixelFormat");
|
| void* surface_is_global_ptr =
|
| dlsym(iosurface_handle_, "kIOSurfaceIsGlobal");
|
| void* surface_create_ptr = dlsym(iosurface_handle_, "IOSurfaceCreate");
|
| @@ -219,6 +273,12 @@ IOSurfaceSupportImpl::IOSurfaceSupportImpl()
|
| dlsym(iosurface_handle_, "IOSurfaceGetWidth");
|
| void* io_surface_get_height_ptr =
|
| dlsym(iosurface_handle_, "IOSurfaceGetHeight");
|
| + void* io_surface_get_bytes_per_row_ptr =
|
| + dlsym(iosurface_handle_, "IOSurfaceGetBytesPerRow");
|
| + void* io_surface_get_base_address_ptr =
|
| + dlsym(iosurface_handle_, "IOSurfaceGetBaseAddress");
|
| + void* io_surface_lock_ptr = dlsym(iosurface_handle_, "IOSurfaceLock");
|
| + void* io_surface_unlock_ptr = dlsym(iosurface_handle_, "IOSurfaceUnlock");
|
| void* tex_image_io_surface_2d_ptr =
|
| dlsym(opengl_handle_, "CGLTexImageIOSurface2D");
|
| void* cv_pixel_buffer_get_io_surface =
|
| @@ -226,6 +286,7 @@ IOSurfaceSupportImpl::IOSurfaceSupportImpl()
|
| if (!surface_width_ptr ||
|
| !surface_height_ptr ||
|
| !surface_bytes_per_element_ptr ||
|
| + !surface_pixel_format_ptr ||
|
| !surface_is_global_ptr ||
|
| !surface_create_ptr ||
|
| !surface_get_id_ptr ||
|
| @@ -234,6 +295,10 @@ IOSurfaceSupportImpl::IOSurfaceSupportImpl()
|
| !surface_lookup_from_mach_port_ptr ||
|
| !io_surface_get_width_ptr ||
|
| !io_surface_get_height_ptr ||
|
| + !io_surface_get_bytes_per_row_ptr ||
|
| + !io_surface_get_base_address_ptr ||
|
| + !io_surface_lock_ptr ||
|
| + !io_surface_unlock_ptr ||
|
| !tex_image_io_surface_2d_ptr ||
|
| !cv_pixel_buffer_get_io_surface) {
|
| CloseLibraryHandles();
|
| @@ -244,6 +309,8 @@ IOSurfaceSupportImpl::IOSurfaceSupportImpl()
|
| 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_pixel_format_ =
|
| + *static_cast<CFStringRef*>(surface_pixel_format_ptr);
|
| k_io_surface_is_global_ = *static_cast<CFStringRef*>(surface_is_global_ptr);
|
| io_surface_create_ = reinterpret_cast<IOSurfaceCreateProcPtr>(
|
| surface_create_ptr);
|
| @@ -263,6 +330,15 @@ IOSurfaceSupportImpl::IOSurfaceSupportImpl()
|
| io_surface_get_height_ =
|
| reinterpret_cast<IOSurfaceGetHeightPtr>(
|
| io_surface_get_height_ptr);
|
| + io_surface_get_bytes_per_row_ =
|
| + reinterpret_cast<IOSurfaceGetBytesPerRowPtr>(
|
| + io_surface_get_bytes_per_row_ptr);
|
| + io_surface_get_base_address_ =
|
| + reinterpret_cast<IOSurfaceGetBaseAddressPtr>(
|
| + io_surface_get_base_address_ptr);
|
| + io_surface_lock_ = reinterpret_cast<IOSurfaceLockPtr>(io_surface_lock_ptr);
|
| + io_surface_unlock_ = reinterpret_cast<IOSurfaceUnlockPtr>(
|
| + io_surface_unlock_ptr);
|
| cgl_tex_image_io_surface_2d_ =
|
| reinterpret_cast<CGLTexImageIOSurface2DProcPtr>(
|
| tex_image_io_surface_2d_ptr);
|
|
|