Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / ui / gl / gl_image_io_surface.h
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
14 namespace gfx {
15
16 class GL_EXPORT GLImageIOSurface : public GLImage {
17  public:
18   explicit GLImageIOSurface(const gfx::Size& size);
19
20   bool Initialize(const gfx::GpuMemoryBufferHandle& handle);
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 void WillUseTexImage() OVERRIDE {}
28   virtual void DidUseTexImage() OVERRIDE {}
29   virtual void WillModifyTexImage() OVERRIDE {}
30   virtual void DidModifyTexImage() OVERRIDE {}
31   virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
32                                     int z_order,
33                                     OverlayTransform transform,
34                                     const Rect& bounds_rect,
35                                     const RectF& crop_rect) OVERRIDE;
36
37  protected:
38   virtual ~GLImageIOSurface();
39
40  private:
41   base::ScopedCFTypeRef<IOSurfaceRef> io_surface_;
42   const gfx::Size size_;
43
44   DISALLOW_COPY_AND_ASSIGN(GLImageIOSurface);
45 };
46
47 }  // namespace gfx
48
49 #endif  // UI_GL_GL_IMAGE_IO_SURFACE_H_