14ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 24ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 34ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// found in the LICENSE file. 44ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 54ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#ifndef UI_GL_GL_IMAGE_SURFACE_TEXTURE_H_ 64ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#define UI_GL_GL_IMAGE_SURFACE_TEXTURE_H_ 74ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 84ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "base/memory/ref_counted.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/gfx/gpu_memory_buffer.h" 104ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "ui/gl/gl_bindings.h" 114ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "ui/gl/gl_image.h" 124ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 134ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochnamespace gfx { 144ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 154ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochclass SurfaceTexture; 164ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 174ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochclass GL_EXPORT GLImageSurfaceTexture : public GLImage { 184ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch public: 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) explicit GLImageSurfaceTexture(const gfx::Size& size); 204ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool Initialize(const gfx::GpuMemoryBufferHandle& handle); 224ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 234ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch // Overridden from GLImage: 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void Destroy(bool have_context) OVERRIDE; 254ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual gfx::Size GetSize() OVERRIDE; 264ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual bool BindTexImage(unsigned target) OVERRIDE; 274ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual void ReleaseTexImage(unsigned target) OVERRIDE {} 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CopyTexImage(unsigned target) OVERRIDE; 294ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual void WillUseTexImage() OVERRIDE {} 304ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual void DidUseTexImage() OVERRIDE {} 314ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual void WillModifyTexImage() OVERRIDE {} 324ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual void DidModifyTexImage() OVERRIDE {} 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget, 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int z_order, 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) OverlayTransform transform, 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const Rect& bounds_rect, 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const RectF& crop_rect) OVERRIDE; 384ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 394ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch protected: 404ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual ~GLImageSurfaceTexture(); 414ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 424ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch private: 434ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch scoped_refptr<SurfaceTexture> surface_texture_; 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const gfx::Size size_; 454ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch GLint texture_id_; 464ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 474ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch DISALLOW_COPY_AND_ASSIGN(GLImageSurfaceTexture); 484ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch}; 494ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 504ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch} // namespace gfx 514ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 524ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#endif // UI_GL_GL_IMAGE_SURFACE_TEXTURE_H_ 53