Edit

kc3-lang/angle/src/libANGLE/renderer/gl/wgl/PbufferSurfaceWGL.h

Branch :

  • Show log

    Commit

  • Author : Geoff Lang
    Date : 2018-05-09 11:32:46
    Hash : 6110763f
    Message : Refactor the GL surfaces and framebuffers to not hold renderer objects. BUG=angleproject:2464 Change-Id: I20aabeef3de6cf1fc13a29b6220e040aa83184d7 Reviewed-on: https://chromium-review.googlesource.com/1039986 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>

  • src/libANGLE/renderer/gl/wgl/PbufferSurfaceWGL.h
  • //
    // Copyright (c) 2015 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.
    //
    
    // PBufferSurfaceWGL.h: WGL implementation of egl::Surface for PBuffers
    
    #ifndef LIBANGLE_RENDERER_GL_WGL_PBUFFERSURFACEWGL_H_
    #define LIBANGLE_RENDERER_GL_WGL_PBUFFERSURFACEWGL_H_
    
    #include "libANGLE/renderer/gl/wgl/SurfaceWGL.h"
    
    #include <GL/wglext.h>
    
    namespace rx
    {
    
    class FunctionsWGL;
    
    class PbufferSurfaceWGL : public SurfaceWGL
    {
      public:
        PbufferSurfaceWGL(const egl::SurfaceState &state,
                          EGLint width,
                          EGLint height,
                          EGLenum textureFormat,
                          EGLenum textureTarget,
                          bool largest,
                          int pixelFormat,
                          HDC deviceContext,
                          const FunctionsWGL *functions);
        ~PbufferSurfaceWGL() override;
    
        egl::Error initialize(const egl::Display *display) override;
        egl::Error makeCurrent() override;
    
        egl::Error swap(const gl::Context *context) override;
        egl::Error postSubBuffer(const gl::Context *context,
                                 EGLint x,
                                 EGLint y,
                                 EGLint width,
                                 EGLint height) override;
        egl::Error querySurfacePointerANGLE(EGLint attribute, void **value) override;
        egl::Error bindTexImage(const gl::Context *context,
                                gl::Texture *texture,
                                EGLint buffer) override;
        egl::Error releaseTexImage(const gl::Context *context, EGLint buffer) override;
        void setSwapInterval(EGLint interval) override;
    
        EGLint getWidth() const override;
        EGLint getHeight() const override;
    
        EGLint isPostSubBufferSupported() const override;
        EGLint getSwapBehavior() const override;
    
        HDC getDC() const override;
    
      private:
        EGLint mWidth;
        EGLint mHeight;
        bool mLargest;
        EGLenum mTextureFormat;
        EGLenum mTextureTarget;
    
        int mPixelFormat;
    
        HDC mParentDeviceContext;
    
        HPBUFFERARB mPbuffer;
        HDC mPbufferDeviceContext;
    
        const FunctionsWGL *mFunctionsWGL;
    };
    
    }
    
    #endif // LIBANGLE_RENDERER_GL_WGL_PBUFFERSURFACEWGL_H_