2014-08-21 18:04:04 +04:00
|
|
|
//
|
|
|
|
// Copyright (c) 2014 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.
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef UTIL_EGLWINDOW_H_
|
|
|
|
#define UTIL_EGLWINDOW_H_
|
|
|
|
|
|
|
|
#define GL_GLEXT_PROTOTYPES
|
|
|
|
|
|
|
|
#include <GLES3/gl3.h>
|
|
|
|
#include <GLES3/gl3ext.h>
|
|
|
|
#include <GLES2/gl2.h>
|
|
|
|
#include <GLES2/gl2ext.h>
|
|
|
|
#include <EGL/egl.h>
|
|
|
|
#include <EGL/eglext.h>
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
#include <list>
|
|
|
|
#include <cstdint>
|
|
|
|
#include <memory>
|
|
|
|
|
2014-08-26 21:16:38 +04:00
|
|
|
#include "shared_utils.h"
|
2014-08-21 18:04:04 +04:00
|
|
|
|
|
|
|
class OSWindow;
|
|
|
|
|
|
|
|
class EGLWindow
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
EGLWindow(size_t width, size_t height,
|
|
|
|
EGLint glesMajorVersion = 2,
|
|
|
|
EGLint requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE);
|
|
|
|
|
|
|
|
~EGLWindow();
|
|
|
|
|
2014-08-26 21:16:37 +04:00
|
|
|
void setClientVersion(EGLint glesMajorVersion) { mClientVersion = glesMajorVersion; }
|
|
|
|
void setWidth(size_t width) { mWidth = width; }
|
|
|
|
void setHeight(size_t height) { mHeight = height; }
|
2014-08-26 21:16:36 +04:00
|
|
|
void setConfigRedBits(int bits) { mRedBits = bits; }
|
|
|
|
void setConfigGreenBits(int bits) { mGreenBits = bits; }
|
|
|
|
void setConfigBlueBits(int bits) { mBlueBits = bits; }
|
|
|
|
void setConfigAlphaBits(int bits) { mAlphaBits = bits; }
|
|
|
|
void setConfigDepthBits(int bits) { mDepthBits = bits; }
|
|
|
|
void setConfigStencilBits(int bits) { mStencilBits = bits; }
|
|
|
|
void setMultisample(bool multisample) { mMultisample = multisample; }
|
|
|
|
void setSwapInterval(EGLint swapInterval) { mSwapInterval = swapInterval; }
|
|
|
|
|
2014-08-21 18:04:04 +04:00
|
|
|
void swap();
|
|
|
|
|
2014-08-26 21:16:37 +04:00
|
|
|
GLuint getClientVersion() const { return mClientVersion; }
|
2014-08-21 18:04:04 +04:00
|
|
|
EGLConfig getConfig() const;
|
|
|
|
EGLDisplay getDisplay() const;
|
|
|
|
EGLSurface getSurface() const;
|
|
|
|
EGLContext getContext() const;
|
|
|
|
size_t getWidth() const { return mWidth; }
|
|
|
|
size_t getHeight() const { return mHeight; }
|
2014-08-26 21:16:36 +04:00
|
|
|
int getConfigRedBits() const { return mRedBits; }
|
|
|
|
int getConfigGreenBits() const { return mGreenBits; }
|
|
|
|
int getConfigBlueBits() const { return mBlueBits; }
|
|
|
|
int getConfigAlphaBits() const { return mAlphaBits; }
|
|
|
|
int getConfigDepthBits() const { return mDepthBits; }
|
|
|
|
int getConfigStencilBits() const { return mStencilBits; }
|
|
|
|
bool isMultisample() const { return mMultisample; }
|
|
|
|
EGLint getSwapInterval() const { return mSwapInterval; }
|
2014-08-21 18:04:04 +04:00
|
|
|
|
2014-08-21 18:04:05 +04:00
|
|
|
bool initializeGL(const OSWindow *osWindow);
|
2014-08-21 18:04:04 +04:00
|
|
|
void destroyGL();
|
|
|
|
|
|
|
|
private:
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(EGLWindow);
|
|
|
|
|
|
|
|
EGLConfig mConfig;
|
|
|
|
EGLDisplay mDisplay;
|
|
|
|
EGLSurface mSurface;
|
|
|
|
EGLContext mContext;
|
|
|
|
|
|
|
|
GLuint mClientVersion;
|
|
|
|
EGLint mRequestedRenderer;
|
|
|
|
size_t mWidth;
|
|
|
|
size_t mHeight;
|
2014-08-26 21:16:36 +04:00
|
|
|
int mRedBits;
|
|
|
|
int mGreenBits;
|
|
|
|
int mBlueBits;
|
|
|
|
int mAlphaBits;
|
|
|
|
int mDepthBits;
|
|
|
|
int mStencilBits;
|
|
|
|
bool mMultisample;
|
|
|
|
EGLint mSwapInterval;
|
2014-08-21 18:04:04 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // UTIL_EGLWINDOW_H_
|