// // Copyright 2018 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // ImageGL.h: Defines the rx::ImageGL class, the GL implementation of EGL images #ifndef LIBANGLE_RENDERER_GL_IMAGEGL_H_ #define LIBANGLE_RENDERER_GL_IMAGEGL_H_ #include "common/PackedEnums.h" #include "libANGLE/renderer/ImageImpl.h" namespace rx { class TextureGL; class RenderbufferGL; class ImageGL : public ImageImpl { public: ImageGL(const egl::ImageState &state); ~ImageGL() override; // TextureGL does not have access to all the parameters needed to implement // glEGLImageTargetTexture2DOES or glEGLImageTargetRenderbufferStorageOES. This allows the Image // to implement these functions because it holds the native EGLimage or emulated object. virtual angle::Result setTexture2D(const gl::Context *context, gl::TextureType type, TextureGL *texture, GLenum *outInternalFormat) = 0; virtual angle::Result setRenderbufferStorage(const gl::Context *context, RenderbufferGL *renderbuffer, GLenum *outInternalFormat) = 0; }; } // namespace rx #endif // LIBANGLE_RENDERER_GL_IMAGEGL_H_