Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / ui / gl / gl_image_android_native_buffer.h
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
5 #ifndef UI_GL_GL_IMAGE_ANDROID_NATIVE_BUFFER_H_
6 #define UI_GL_GL_IMAGE_ANDROID_NATIVE_BUFFER_H_
7
8 #include "ui/gl/gl_image_egl.h"
9
10 namespace gfx {
11
12 class GL_EXPORT GLImageAndroidNativeBuffer : public GLImageEGL {
13  public:
14   explicit GLImageAndroidNativeBuffer(const gfx::Size& size);
15
16   bool Initialize(EGLClientBuffer native_buffer);
17
18   // Overridden from GLImage:
19   virtual void Destroy(bool have_context) OVERRIDE;
20   virtual bool BindTexImage(unsigned target) OVERRIDE;
21   virtual void WillUseTexImage() OVERRIDE;
22   virtual void DidUseTexImage() OVERRIDE;
23   virtual void SetReleaseAfterUse() OVERRIDE;
24   virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
25                                     int z_order,
26                                     OverlayTransform transform,
27                                     const Rect& bounds_rect,
28                                     const RectF& crop_rect) OVERRIDE;
29
30  protected:
31   virtual ~GLImageAndroidNativeBuffer();
32
33  private:
34   bool release_after_use_;
35   bool in_use_;
36   unsigned target_;
37   EGLImageKHR egl_image_for_unbind_;
38   GLuint texture_id_for_unbind_;
39
40   DISALLOW_COPY_AND_ASSIGN(GLImageAndroidNativeBuffer);
41 };
42
43 }  // namespace gfx
44
45 #endif  // UI_GL_GL_IMAGE_ANDROID_NATIVE_BUFFER_H_