1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// found in the LICENSE file.
4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#ifndef UI_GL_GL_IMAGE_IO_SURFACE_H_
6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define UI_GL_GL_IMAGE_IO_SURFACE_H_
7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include <IOSurface/IOSurfaceAPI.h>
946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/mac/scoped_cftyperef.h"
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/gfx/gpu_memory_buffer.h"
12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "ui/gl/gl_image.h"
13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace gfx {
15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class GL_EXPORT GLImageIOSurface : public GLImage {
17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public:
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  explicit GLImageIOSurface(const gfx::Size& size);
19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  bool Initialize(IOSurfaceRef io_surface);
21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // Overridden from GLImage:
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void Destroy(bool have_context) OVERRIDE;
24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual gfx::Size GetSize() OVERRIDE;
25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual bool BindTexImage(unsigned target) OVERRIDE;
26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void ReleaseTexImage(unsigned target) OVERRIDE {}
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual bool CopyTexImage(unsigned target) OVERRIDE;
28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void WillUseTexImage() OVERRIDE {}
29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void DidUseTexImage() OVERRIDE {}
30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void WillModifyTexImage() OVERRIDE {}
31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void DidModifyTexImage() OVERRIDE {}
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                    int z_order,
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                    OverlayTransform transform,
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                    const Rect& bounds_rect,
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                    const RectF& crop_rect) OVERRIDE;
37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) protected:
39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual ~GLImageIOSurface();
40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private:
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  base::ScopedCFTypeRef<IOSurfaceRef> io_surface_;
435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  const gfx::Size size_;
44a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
45a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(GLImageIOSurface);
46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)};
47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}  // namespace gfx
49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif  // UI_GL_GL_IMAGE_IO_SURFACE_H_
51