1 // 2 // Copyright 2015 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 7 // PBufferSurfaceCGL.h: an implementation of egl::Surface for PBuffers for the CLG backend, 8 // currently implemented using renderbuffers 9 10 #ifndef LIBANGLE_RENDERER_GL_CGL_PBUFFERSURFACECGL_H_ 11 #define LIBANGLE_RENDERER_GL_CGL_PBUFFERSURFACECGL_H_ 12 13 #include "libANGLE/renderer/gl/SurfaceGL.h" 14 15 namespace rx 16 { 17 18 class FunctionsGL; 19 class RendererGL; 20 class StateManagerGL; 21 22 class PbufferSurfaceCGL : public SurfaceGL 23 { 24 public: 25 PbufferSurfaceCGL(const egl::SurfaceState &state, 26 RendererGL *renderer, 27 EGLint width, 28 EGLint height); 29 ~PbufferSurfaceCGL() override; 30 31 egl::Error initialize(const egl::Display *display) override; 32 egl::Error makeCurrent(const gl::Context *context) override; 33 34 egl::Error swap(const gl::Context *context) override; 35 egl::Error postSubBuffer(const gl::Context *context, 36 EGLint x, 37 EGLint y, 38 EGLint width, 39 EGLint height) override; 40 egl::Error querySurfacePointerANGLE(EGLint attribute, void **value) override; 41 egl::Error bindTexImage(const gl::Context *context, 42 gl::Texture *texture, 43 EGLint buffer) override; 44 egl::Error releaseTexImage(const gl::Context *context, EGLint buffer) override; 45 void setSwapInterval(const egl::Display *display, EGLint interval) override; 46 47 EGLint getWidth() const override; 48 EGLint getHeight() const override; 49 50 EGLint isPostSubBufferSupported() const override; 51 EGLint getSwapBehavior() const override; 52 53 egl::Error attachToFramebuffer(const gl::Context *context, 54 gl::Framebuffer *framebuffer) override; 55 egl::Error detachFromFramebuffer(const gl::Context *context, 56 gl::Framebuffer *framebuffer) override; 57 58 private: 59 unsigned mWidth; 60 unsigned mHeight; 61 62 // TODO(geofflang): Don't store these, they are potentially specific to a single GL context. 63 // http://anglebug.com/40096492 64 const FunctionsGL *mFunctions; 65 StateManagerGL *mStateManager; 66 67 GLuint mFramebuffer; 68 GLuint mColorRenderbuffer; 69 GLuint mDSRenderbuffer; 70 }; 71 72 } // namespace rx 73 74 #endif // LIBANGLE_RENDERER_GL_CGL_PBUFFERSURFACECGL_H_ 75