15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef UI_GL_GL_IMAGE_MEMORY_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define UI_GL_GL_IMAGE_MEMORY_H_ 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/gl/gl_image.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(OS_WIN) || defined(USE_X11) || defined(OS_ANDROID) || \ 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) defined(USE_OZONE) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <EGL/egl.h> 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <EGL/eglext.h> 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace gfx { 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class GL_EXPORT GLImageMemory : public GLImage { 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GLImageMemory(const gfx::Size& size, unsigned internalformat); 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool Initialize(const unsigned char* memory); 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Overridden from GLImage: 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void Destroy(bool have_context) OVERRIDE; 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual gfx::Size GetSize() OVERRIDE; 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual bool BindTexImage(unsigned target) OVERRIDE; 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void ReleaseTexImage(unsigned target) OVERRIDE {} 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CopyTexImage(unsigned target) OVERRIDE; 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void WillUseTexImage() OVERRIDE; 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void DidUseTexImage() OVERRIDE; 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void WillModifyTexImage() OVERRIDE {} 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void DidModifyTexImage() OVERRIDE {} 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget, 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int z_order, 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) OverlayTransform transform, 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const Rect& bounds_rect, 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const RectF& crop_rect) OVERRIDE; 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) protected: 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~GLImageMemory(); 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool HasValidFormat() const; 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) size_t Bytes() const; 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) private: 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void DoBindTexImage(unsigned target); 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const unsigned char* memory_; 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const gfx::Size size_; 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const unsigned internalformat_; 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool in_use_; 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci unsigned target_; 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool need_do_bind_tex_image_; 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(OS_WIN) || defined(USE_X11) || defined(OS_ANDROID) || \ 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) defined(USE_OZONE) 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) unsigned egl_texture_id_; 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EGLImageKHR egl_image_; 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(GLImageMemory); 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace gfx 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // UI_GL_GL_IMAGE_MEMORY_H_ 67