summaryrefslogtreecommitdiff
path: root/Source/ThirdParty/ANGLE/util/EGLWindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/ThirdParty/ANGLE/util/EGLWindow.h')
-rw-r--r--Source/ThirdParty/ANGLE/util/EGLWindow.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/Source/ThirdParty/ANGLE/util/EGLWindow.h b/Source/ThirdParty/ANGLE/util/EGLWindow.h
new file mode 100644
index 000000000..2ee7cb332
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/util/EGLWindow.h
@@ -0,0 +1,129 @@
+//
+// 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_
+
+#include <list>
+#include <memory>
+#include <stdint.h>
+#include <string>
+
+#include <export.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+#include <GLES3/gl3.h>
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+
+#include "common/angleutils.h"
+
+class OSWindow;
+
+// A hidden define used in some renderers (currently D3D-only)
+// to init a no-op renderer. Useful for performance testing.
+#ifndef EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE
+#define EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE 0x6AC0
+#endif
+
+struct ANGLE_EXPORT EGLPlatformParameters
+{
+ EGLint renderer;
+ EGLint majorVersion;
+ EGLint minorVersion;
+ EGLint deviceType;
+ EGLint presentPath;
+
+ EGLPlatformParameters();
+ explicit EGLPlatformParameters(EGLint renderer);
+ EGLPlatformParameters(EGLint renderer, EGLint majorVersion, EGLint minorVersion, EGLint deviceType);
+ EGLPlatformParameters(EGLint renderer,
+ EGLint majorVersion,
+ EGLint minorVersion,
+ EGLint deviceType,
+ EGLint presentPath);
+};
+
+ANGLE_EXPORT bool operator<(const EGLPlatformParameters &a, const EGLPlatformParameters &b);
+ANGLE_EXPORT bool operator==(const EGLPlatformParameters &a, const EGLPlatformParameters &b);
+
+class ANGLE_EXPORT EGLWindow : angle::NonCopyable
+{
+ public:
+ EGLWindow(EGLint glesMajorVersion,
+ EGLint glesMinorVersion,
+ const EGLPlatformParameters &platform);
+
+ ~EGLWindow();
+
+ 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 setDebugEnabled(bool debug) { mDebug = debug; }
+ void setNoErrorEnabled(bool noError) { mNoError = noError; }
+ void setWebGLCompatibilityEnabled(bool webglCompatibility)
+ {
+ mWebGLCompatibility = webglCompatibility;
+ }
+ void setBindGeneratesResource(bool bindGeneratesResource)
+ {
+ mBindGeneratesResource = bindGeneratesResource;
+ }
+ void setSwapInterval(EGLint swapInterval) { mSwapInterval = swapInterval; }
+
+ static EGLBoolean FindEGLConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *config);
+
+ void swap();
+
+ EGLint getClientMajorVersion() const { return mClientMajorVersion; }
+ EGLint getClientMinorVersion() const { return mClientMinorVersion; }
+ const EGLPlatformParameters &getPlatform() const { return mPlatform; }
+ EGLConfig getConfig() const;
+ EGLDisplay getDisplay() const;
+ EGLSurface getSurface() const;
+ EGLContext getContext() const;
+ 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; }
+ bool isDebugEnabled() const { return mDebug; }
+ EGLint getSwapInterval() const { return mSwapInterval; }
+
+ bool initializeGL(OSWindow *osWindow);
+ void destroyGL();
+ bool isGLInitialized() const;
+
+ private:
+ EGLConfig mConfig;
+ EGLDisplay mDisplay;
+ EGLSurface mSurface;
+ EGLContext mContext;
+
+ EGLint mClientMajorVersion;
+ EGLint mClientMinorVersion;
+ EGLPlatformParameters mPlatform;
+ int mRedBits;
+ int mGreenBits;
+ int mBlueBits;
+ int mAlphaBits;
+ int mDepthBits;
+ int mStencilBits;
+ bool mMultisample;
+ bool mDebug;
+ bool mNoError;
+ bool mWebGLCompatibility;
+ bool mBindGeneratesResource;
+ EGLint mSwapInterval;
+};
+
+#endif // UTIL_EGLWINDOW_H_