// // 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. // #include "test_utils/angle_test_configs.h" namespace angle { PlatformParameters::PlatformParameters() : PlatformParameters(2, 0, EGLPlatformParameters()) { } PlatformParameters::PlatformParameters(EGLint majorVersion, EGLint minorVersion, const EGLPlatformParameters &eglPlatformParameters) : majorVersion(majorVersion), minorVersion(minorVersion), eglParameters(eglPlatformParameters) { } EGLint PlatformParameters::getRenderer() const { return eglParameters.renderer; } bool operator<(const PlatformParameters &a, const PlatformParameters &b) { if (a.majorVersion != b.majorVersion) { return a.majorVersion < b.majorVersion; } if (a.minorVersion != b.minorVersion) { return a.minorVersion < b.minorVersion; } return a.eglParameters < b.eglParameters; } bool operator==(const PlatformParameters &a, const PlatformParameters &b) { return (a.majorVersion == b.majorVersion) && (a.minorVersion == b.minorVersion) && (a.eglParameters == b.eglParameters); } std::ostream &operator<<(std::ostream& stream, const PlatformParameters &pp) { stream << "ES" << pp.majorVersion << "_" ; if (pp.minorVersion != 0) { stream << pp.minorVersion << "_"; } switch (pp.eglParameters.renderer) { case EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE: stream << "D3D9"; break; case EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE: stream << "D3D11"; break; case EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE: stream << "OPENGL"; break; case EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE: stream << "OPENGLES"; break; case EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE: stream << "DEFAULT"; break; default: UNREACHABLE(); break; } if (pp.eglParameters.majorVersion != EGL_DONT_CARE) { stream << "_" << pp.eglParameters.majorVersion; } if (pp.eglParameters.minorVersion != EGL_DONT_CARE) { stream << "_" << pp.eglParameters.minorVersion; } switch (pp.eglParameters.deviceType) { case EGL_DONT_CARE: case EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE: // default break; case EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE: stream << "_NULL"; break; case EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE: stream << "_REFERENCE"; break; case EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE: stream << "_WARP"; break; default: UNREACHABLE(); break; } switch (pp.eglParameters.presentPath) { case EGL_EXPERIMENTAL_PRESENT_PATH_COPY_ANGLE: stream << "_PRESENT_PATH_COPY"; break; case EGL_EXPERIMENTAL_PRESENT_PATH_FAST_ANGLE: stream << "_PRESENT_PATH_FAST"; break; case EGL_DONT_CARE: // default break; default: UNREACHABLE(); break; } return stream; } // EGL platforms namespace egl_platform { EGLPlatformParameters DEFAULT() { return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE); } EGLPlatformParameters DEFAULT_NULL() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE); } EGLPlatformParameters D3D9() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE); } EGLPlatformParameters D3D9_NULL() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE); } EGLPlatformParameters D3D9_REFERENCE() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE); } EGLPlatformParameters D3D11() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE); } EGLPlatformParameters D3D11(EGLenum presentPath) { return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE, presentPath); } EGLPlatformParameters D3D11_FL11_1() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 11, 1, EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE); } EGLPlatformParameters D3D11_FL11_0() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 11, 0, EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE); } EGLPlatformParameters D3D11_FL10_1() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 10, 1, EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE); } EGLPlatformParameters D3D11_FL10_0() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 10, 0, EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE); } EGLPlatformParameters D3D11_FL9_3() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 9, 3, EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE); } EGLPlatformParameters D3D11_NULL() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE); } EGLPlatformParameters D3D11_WARP() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE); } EGLPlatformParameters D3D11_FL11_1_WARP() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 11, 1, EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE); } EGLPlatformParameters D3D11_FL11_0_WARP() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 11, 0, EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE); } EGLPlatformParameters D3D11_FL10_1_WARP() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 10, 1, EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE); } EGLPlatformParameters D3D11_FL10_0_WARP() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 10, 0, EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE); } EGLPlatformParameters D3D11_FL9_3_WARP() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 9, 3, EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE); } EGLPlatformParameters D3D11_REFERENCE() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE); } EGLPlatformParameters D3D11_FL11_1_REFERENCE() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 11, 1, EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE); } EGLPlatformParameters D3D11_FL11_0_REFERENCE() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 11, 0, EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE); } EGLPlatformParameters D3D11_FL10_1_REFERENCE() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 10, 1, EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE); } EGLPlatformParameters D3D11_FL10_0_REFERENCE() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 10, 0, EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE); } EGLPlatformParameters D3D11_FL9_3_REFERENCE() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, 9, 3, EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE); } EGLPlatformParameters OPENGL() { return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE); } EGLPlatformParameters OPENGL(EGLint major, EGLint minor) { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE, major, minor, EGL_DONT_CARE); } EGLPlatformParameters OPENGL_NULL() { return EGLPlatformParameters( EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE, 0, 0, EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE); } EGLPlatformParameters OPENGLES() { return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE); } EGLPlatformParameters OPENGLES(EGLint major, EGLint minor) { return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE, major, minor, EGL_DONT_CARE); } } // namespace egl_platform // ANGLE tests platforms PlatformParameters ES2_D3D9() { return PlatformParameters(2, 0, egl_platform::D3D9()); } PlatformParameters ES2_D3D9_REFERENCE() { return PlatformParameters(2, 0, egl_platform::D3D9_REFERENCE()); } PlatformParameters ES2_D3D11() { return PlatformParameters(2, 0, egl_platform::D3D11()); } PlatformParameters ES2_D3D11(EGLenum presentPath) { return PlatformParameters(2, 0, egl_platform::D3D11(presentPath)); } PlatformParameters ES2_D3D11_FL11_0() { return PlatformParameters(2, 0, egl_platform::D3D11_FL11_0()); } PlatformParameters ES2_D3D11_FL10_1() { return PlatformParameters(2, 0, egl_platform::D3D11_FL10_1()); } PlatformParameters ES2_D3D11_FL10_0() { return PlatformParameters(2, 0, egl_platform::D3D11_FL10_0()); } PlatformParameters ES2_D3D11_FL9_3() { return PlatformParameters(2, 0, egl_platform::D3D11_FL9_3()); } PlatformParameters ES2_D3D11_WARP() { return PlatformParameters(2, 0, egl_platform::D3D11_WARP()); } PlatformParameters ES2_D3D11_FL11_0_WARP() { return PlatformParameters(2, 0, egl_platform::D3D11_FL11_0_WARP()); } PlatformParameters ES2_D3D11_FL10_1_WARP() { return PlatformParameters(2, 0, egl_platform::D3D11_FL10_1_WARP()); } PlatformParameters ES2_D3D11_FL10_0_WARP() { return PlatformParameters(2, 0, egl_platform::D3D11_FL10_0_WARP()); } PlatformParameters ES2_D3D11_FL9_3_WARP() { return PlatformParameters(2, 0, egl_platform::D3D11_FL9_3_WARP()); } PlatformParameters ES2_D3D11_REFERENCE() { return PlatformParameters(2, 0, egl_platform::D3D11_REFERENCE()); } PlatformParameters ES2_D3D11_FL11_0_REFERENCE() { return PlatformParameters(2, 0, egl_platform::D3D11_FL11_0_REFERENCE()); } PlatformParameters ES2_D3D11_FL10_1_REFERENCE() { return PlatformParameters(2, 0, egl_platform::D3D11_FL10_1_REFERENCE()); } PlatformParameters ES2_D3D11_FL10_0_REFERENCE() { return PlatformParameters(2, 0, egl_platform::D3D11_FL10_0_REFERENCE()); } PlatformParameters ES2_D3D11_FL9_3_REFERENCE() { return PlatformParameters(2, 0, egl_platform::D3D11_FL9_3_REFERENCE()); } PlatformParameters ES3_D3D11() { return PlatformParameters(3, 0, egl_platform::D3D11()); } PlatformParameters ES3_D3D11_FL11_1() { return PlatformParameters(3, 0, egl_platform::D3D11_FL11_1()); } PlatformParameters ES3_D3D11_FL11_0() { return PlatformParameters(3, 0, egl_platform::D3D11_FL11_0()); } PlatformParameters ES3_D3D11_FL10_1() { return PlatformParameters(3, 0, egl_platform::D3D11_FL10_1()); } PlatformParameters ES3_D3D11_FL10_0() { return PlatformParameters(3, 0, egl_platform::D3D11_FL10_0()); } PlatformParameters ES3_D3D11_WARP() { return PlatformParameters(3, 0, egl_platform::D3D11_WARP()); } PlatformParameters ES3_D3D11_FL11_1_WARP() { return PlatformParameters(3, 0, egl_platform::D3D11_FL11_1_WARP()); } PlatformParameters ES3_D3D11_FL11_0_WARP() { return PlatformParameters(3, 0, egl_platform::D3D11_FL11_0_WARP()); } PlatformParameters ES3_D3D11_FL10_1_WARP() { return PlatformParameters(3, 0, egl_platform::D3D11_FL10_1_WARP()); } PlatformParameters ES3_D3D11_FL10_0_WARP() { return PlatformParameters(3, 0, egl_platform::D3D11_FL10_0_WARP()); } PlatformParameters ES3_D3D11_REFERENCE() { return PlatformParameters(3, 0, egl_platform::D3D11_REFERENCE()); } PlatformParameters ES3_D3D11_FL11_1_REFERENCE() { return PlatformParameters(3, 0, egl_platform::D3D11_FL11_1_REFERENCE()); } PlatformParameters ES3_D3D11_FL11_0_REFERENCE() { return PlatformParameters(3, 0, egl_platform::D3D11_FL11_0_REFERENCE()); } PlatformParameters ES3_D3D11_FL10_1_REFERENCE() { return PlatformParameters(3, 0, egl_platform::D3D11_FL10_1_REFERENCE()); } PlatformParameters ES3_D3D11_FL10_0_REFERENCE() { return PlatformParameters(3, 0, egl_platform::D3D11_FL10_0_REFERENCE()); } PlatformParameters ES2_OPENGLES() { return PlatformParameters(2, 0, egl_platform::OPENGLES()); } PlatformParameters ES2_OPENGLES(EGLint major, EGLint minor) { return PlatformParameters(2, 0, egl_platform::OPENGLES(major, minor)); } PlatformParameters ES3_OPENGLES() { return PlatformParameters(3, 0, egl_platform::OPENGLES()); } PlatformParameters ES3_OPENGLES(EGLint major, EGLint minor) { return PlatformParameters(3, 0, egl_platform::OPENGLES(major, minor)); } PlatformParameters ES31_OPENGLES() { return PlatformParameters(3, 1, egl_platform::OPENGLES()); } PlatformParameters ES31_OPENGLES(EGLint major, EGLint minor) { return PlatformParameters(3, 1, egl_platform::OPENGLES(major, minor)); } PlatformParameters ES2_OPENGL() { return PlatformParameters(2, 0, egl_platform::OPENGL()); } PlatformParameters ES2_OPENGL(EGLint major, EGLint minor) { return PlatformParameters(2, 0, egl_platform::OPENGL(major, minor)); } PlatformParameters ES3_OPENGL() { return PlatformParameters(3, 0, egl_platform::OPENGL()); } PlatformParameters ES3_OPENGL(EGLint major, EGLint minor) { return PlatformParameters(3, 0, egl_platform::OPENGL(major, minor)); } PlatformParameters ES31_OPENGL() { return PlatformParameters(3, 1, egl_platform::OPENGL()); } PlatformParameters ES31_OPENGL(EGLint major, EGLint minor) { return PlatformParameters(3, 1, egl_platform::OPENGL(major, minor)); } } // namespace angle