Home | History | Annotate | Download | only in util
      1 //
      2 // Copyright (c) 2014 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 #ifndef UTIL_EGLWINDOW_H_
      8 #define UTIL_EGLWINDOW_H_
      9 
     10 #define GL_GLEXT_PROTOTYPES
     11 
     12 #include <GLES3/gl3.h>
     13 #include <GLES3/gl3ext.h>
     14 #include <GLES2/gl2.h>
     15 #include <GLES2/gl2ext.h>
     16 #include <EGL/egl.h>
     17 #include <EGL/eglext.h>
     18 
     19 #include <string>
     20 #include <list>
     21 #include <cstdint>
     22 #include <memory>
     23 
     24 #include "shared_utils.h"
     25 
     26 class OSWindow;
     27 
     28 class EGLWindow
     29 {
     30   public:
     31     EGLWindow(size_t width, size_t height,
     32               EGLint glesMajorVersion = 2,
     33               EGLint requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE);
     34 
     35     ~EGLWindow();
     36 
     37     void setClientVersion(EGLint glesMajorVersion) { mClientVersion = glesMajorVersion; }
     38     void setWidth(size_t width) { mWidth = width; }
     39     void setHeight(size_t height) { mHeight = height; }
     40     void setConfigRedBits(int bits) { mRedBits = bits; }
     41     void setConfigGreenBits(int bits) { mGreenBits = bits; }
     42     void setConfigBlueBits(int bits) { mBlueBits = bits; }
     43     void setConfigAlphaBits(int bits) { mAlphaBits = bits; }
     44     void setConfigDepthBits(int bits) { mDepthBits = bits; }
     45     void setConfigStencilBits(int bits) { mStencilBits = bits; }
     46     void setMultisample(bool multisample) { mMultisample = multisample; }
     47     void setSwapInterval(EGLint swapInterval) { mSwapInterval = swapInterval; }
     48 
     49     void swap();
     50 
     51     GLuint getClientVersion() const { return mClientVersion; }
     52     EGLConfig getConfig() const;
     53     EGLDisplay getDisplay() const;
     54     EGLSurface getSurface() const;
     55     EGLContext getContext() const;
     56     size_t getWidth() const { return mWidth; }
     57     size_t getHeight() const { return mHeight; }
     58     int getConfigRedBits() const { return mRedBits; }
     59     int getConfigGreenBits() const { return mGreenBits; }
     60     int getConfigBlueBits() const { return mBlueBits; }
     61     int getConfigAlphaBits() const { return mAlphaBits; }
     62     int getConfigDepthBits() const { return mDepthBits; }
     63     int getConfigStencilBits() const { return mStencilBits; }
     64     bool isMultisample() const { return mMultisample; }
     65     EGLint getSwapInterval() const { return mSwapInterval; }
     66 
     67     bool initializeGL(const OSWindow *osWindow);
     68     void destroyGL();
     69 
     70   private:
     71     DISALLOW_COPY_AND_ASSIGN(EGLWindow);
     72 
     73     EGLConfig mConfig;
     74     EGLDisplay mDisplay;
     75     EGLSurface mSurface;
     76     EGLContext mContext;
     77 
     78     GLuint mClientVersion;
     79     EGLint mRequestedRenderer;
     80     size_t mWidth;
     81     size_t mHeight;
     82     int mRedBits;
     83     int mGreenBits;
     84     int mBlueBits;
     85     int mAlphaBits;
     86     int mDepthBits;
     87     int mStencilBits;
     88     bool mMultisample;
     89     EGLint mSwapInterval;
     90 };
     91 
     92 #endif // UTIL_EGLWINDOW_H_
     93