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