| // |
| // Copyright 2018 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. |
| // |
| // EGLPlatformParameters: Basic description of an EGL device. |
| |
| #ifndef UTIL_EGLPLATFORMPARAMETERS_H_ |
| #define UTIL_EGLPLATFORMPARAMETERS_H_ |
| |
| #include "util/util_gl.h" |
| |
| #include <tuple> |
| |
| namespace angle |
| { |
| struct PlatformMethods; |
| } // namespace angle |
| |
| struct EGLPlatformParameters |
| { |
| EGLPlatformParameters() = default; |
| |
| explicit EGLPlatformParameters(EGLint renderer) : renderer(renderer) {} |
| |
| EGLPlatformParameters(EGLint renderer, |
| EGLint majorVersion, |
| EGLint minorVersion, |
| EGLint deviceType) |
| : renderer(renderer), |
| majorVersion(majorVersion), |
| minorVersion(minorVersion), |
| deviceType(deviceType) |
| {} |
| |
| EGLPlatformParameters(EGLint renderer, |
| EGLint majorVersion, |
| EGLint minorVersion, |
| EGLint deviceType, |
| EGLint presentPath) |
| : renderer(renderer), |
| majorVersion(majorVersion), |
| minorVersion(minorVersion), |
| deviceType(deviceType), |
| presentPath(presentPath) |
| {} |
| |
| auto tie() const |
| { |
| return std::tie(renderer, majorVersion, minorVersion, deviceType, presentPath, |
| debugLayersEnabled, contextVirtualization, commandGraphFeature, |
| transformFeedbackFeature, platformMethods); |
| } |
| |
| EGLint renderer = EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE; |
| EGLint majorVersion = EGL_DONT_CARE; |
| EGLint minorVersion = EGL_DONT_CARE; |
| EGLint deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE; |
| EGLint presentPath = EGL_DONT_CARE; |
| EGLint debugLayersEnabled = EGL_DONT_CARE; |
| EGLint contextVirtualization = EGL_DONT_CARE; |
| EGLint commandGraphFeature = EGL_DONT_CARE; |
| EGLint transformFeedbackFeature = EGL_DONT_CARE; |
| angle::PlatformMethods *platformMethods = nullptr; |
| }; |
| |
| inline bool operator<(const EGLPlatformParameters &a, const EGLPlatformParameters &b) |
| { |
| return a.tie() < b.tie(); |
| } |
| |
| inline bool operator==(const EGLPlatformParameters &a, const EGLPlatformParameters &b) |
| { |
| return a.tie() == b.tie(); |
| } |
| |
| inline bool operator!=(const EGLPlatformParameters &a, const EGLPlatformParameters &b) |
| { |
| return a.tie() != b.tie(); |
| } |
| |
| #endif // UTIL_EGLPLATFORMPARAMETERS_H_ |