1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // Copyright (c) 2013 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef UI_GL_GL_IMAGE_EGL_H_
- #define UI_GL_GL_IMAGE_EGL_H_
- #include <EGL/eglplatform.h>
- #include "base/memory/raw_ptr.h"
- #include "base/threading/thread_checker.h"
- #include "ui/gl/gl_export.h"
- #include "ui/gl/gl_image.h"
- namespace gl {
- // Abstract base class for EGL-based images.
- class GL_EXPORT GLImageEGL : public GLImage {
- public:
- explicit GLImageEGL(const gfx::Size& size);
- GLImageEGL(const GLImageEGL&) = delete;
- GLImageEGL& operator=(const GLImageEGL&) = delete;
- // Overridden from GLImage:
- gfx::Size GetSize() override;
- void* GetEGLImage() const override;
- BindOrCopy ShouldBindOrCopy() override;
- bool BindTexImage(unsigned target) override;
- void ReleaseTexImage(unsigned target) override {}
- protected:
- ~GLImageEGL() override;
- // Same semantic as specified for eglCreateImageKHR. There two main usages:
- // 1- When using the |target| EGL_GL_TEXTURE_2D_KHR it is required to pass
- // a valid |context|. This allows to create an EGLImage from a GL texture.
- // Then this EGLImage can be converted to an external resource to be shared
- // with other client APIs.
- // 2- When using the |target| EGL_NATIVE_PIXMAP_KHR or EGL_LINUX_DMA_BUF_EXT
- // it is required to pass EGL_NO_CONTEXT. This allows to create an EGLImage
- // from an external resource. Then this EGLImage can be converted to a GL
- // texture.
- bool Initialize(void* context /* EGLContext */,
- unsigned target /* EGLenum */,
- void* buffer /* EGLClientBuffer */,
- const EGLint* attrs);
- raw_ptr<void> egl_image_ /* EGLImageKHR */;
- const gfx::Size size_;
- base::ThreadChecker thread_checker_;
- };
- } // namespace gl
- #endif // UI_GL_GL_IMAGE_EGL_H_
|