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 10namespace gfx { 11 12class 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_ 46