// // 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 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, transformFeedbackFeature, allocateNonZeroMemoryFeature, platformMethods, robustness); } 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 robustness = EGL_DONT_CARE; EGLint transformFeedbackFeature = EGL_DONT_CARE; EGLint allocateNonZeroMemoryFeature = 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_