1// Copyright 2013 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 5#ifndef UI_GL_GL_IMAGE_IO_SURFACE_H_ 6#define UI_GL_GL_IMAGE_IO_SURFACE_H_ 7 8#include <IOSurface/IOSurfaceAPI.h> 9 10#include "base/mac/scoped_cftyperef.h" 11#include "ui/gfx/gpu_memory_buffer.h" 12#include "ui/gl/gl_image.h" 13 14namespace gfx { 15 16class GL_EXPORT GLImageIOSurface : public GLImage { 17 public: 18 explicit GLImageIOSurface(const gfx::Size& size); 19 20 bool Initialize(IOSurfaceRef io_surface); 21 22 // Overridden from GLImage: 23 virtual void Destroy(bool have_context) OVERRIDE; 24 virtual gfx::Size GetSize() OVERRIDE; 25 virtual bool BindTexImage(unsigned target) OVERRIDE; 26 virtual void ReleaseTexImage(unsigned target) OVERRIDE {} 27 virtual bool CopyTexImage(unsigned target) OVERRIDE; 28 virtual void WillUseTexImage() OVERRIDE {} 29 virtual void DidUseTexImage() OVERRIDE {} 30 virtual void WillModifyTexImage() OVERRIDE {} 31 virtual void DidModifyTexImage() OVERRIDE {} 32 virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget, 33 int z_order, 34 OverlayTransform transform, 35 const Rect& bounds_rect, 36 const RectF& crop_rect) OVERRIDE; 37 38 protected: 39 virtual ~GLImageIOSurface(); 40 41 private: 42 base::ScopedCFTypeRef<IOSurfaceRef> io_surface_; 43 const gfx::Size size_; 44 45 DISALLOW_COPY_AND_ASSIGN(GLImageIOSurface); 46}; 47 48} // namespace gfx 49 50#endif // UI_GL_GL_IMAGE_IO_SURFACE_H_ 51