1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef UI_GL_GL_IMAGE_EGL_H_
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define UI_GL_GL_IMAGE_EGL_H_
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ui/gl/gl_bindings.h"
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/gl/gl_image.h"
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace gfx {
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class GL_EXPORT GLImageEGL : public GLImage {
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public:
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  explicit GLImageEGL(const gfx::Size& size);
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  bool Initialize(EGLenum target, EGLClientBuffer buffer, const EGLint* attrs);
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // Overridden from GLImage:
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void Destroy(bool have_context) OVERRIDE;
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual gfx::Size GetSize() OVERRIDE;
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual bool BindTexImage(unsigned target) OVERRIDE;
23effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void ReleaseTexImage(unsigned target) OVERRIDE {}
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual bool CopyTexImage(unsigned target) OVERRIDE;
25effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void WillUseTexImage() OVERRIDE {}
26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void DidUseTexImage() OVERRIDE {}
27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void WillModifyTexImage() OVERRIDE {}
28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void DidModifyTexImage() OVERRIDE {}
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                    int z_order,
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                    OverlayTransform transform,
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                    const Rect& bounds_rect,
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                    const RectF& crop_rect) OVERRIDE;
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected:
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual ~GLImageEGL();
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EGLImageKHR egl_image_;
395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  const gfx::Size size_;
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch private:
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(GLImageEGL);
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace gfx
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif  // UI_GL_GL_IMAGE_EGL_H_
48