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_SURFACE_TEXTURE_H_ 6#define UI_GL_GL_IMAGE_SURFACE_TEXTURE_H_ 7 8#include "base/memory/ref_counted.h" 9#include "ui/gfx/gpu_memory_buffer.h" 10#include "ui/gl/gl_bindings.h" 11#include "ui/gl/gl_image.h" 12 13namespace gfx { 14 15class SurfaceTexture; 16 17class GL_EXPORT GLImageSurfaceTexture : public GLImage { 18 public: 19 explicit GLImageSurfaceTexture(const gfx::Size& size); 20 21 bool Initialize(const gfx::GpuMemoryBufferHandle& handle); 22 23 // Overridden from GLImage: 24 virtual void Destroy(bool have_context) OVERRIDE; 25 virtual gfx::Size GetSize() OVERRIDE; 26 virtual bool BindTexImage(unsigned target) OVERRIDE; 27 virtual void ReleaseTexImage(unsigned target) OVERRIDE {} 28 virtual bool CopyTexImage(unsigned target) OVERRIDE; 29 virtual void WillUseTexImage() OVERRIDE {} 30 virtual void DidUseTexImage() OVERRIDE {} 31 virtual void WillModifyTexImage() OVERRIDE {} 32 virtual void DidModifyTexImage() OVERRIDE {} 33 virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget, 34 int z_order, 35 OverlayTransform transform, 36 const Rect& bounds_rect, 37 const RectF& crop_rect) OVERRIDE; 38 39 protected: 40 virtual ~GLImageSurfaceTexture(); 41 42 private: 43 scoped_refptr<SurfaceTexture> surface_texture_; 44 const gfx::Size size_; 45 GLint texture_id_; 46 47 DISALLOW_COPY_AND_ASSIGN(GLImageSurfaceTexture); 48}; 49 50} // namespace gfx 51 52#endif // UI_GL_GL_IMAGE_SURFACE_TEXTURE_H_ 53