blob: 0e7e1382c5dbd4154a3e8bffc29651d632a5092d [file] [log] [blame]
//
// 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_DEFAULT_ANGLE:
stream << "DEFAULT";
break;
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_NULL_ANGLE:
stream << "NULL";
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_VULKAN_ANGLE:
stream << "VULKAN";
break;
default:
stream << "UNDEFINED";
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);
}
EGLPlatformParameters VULKAN()
{
return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE);
}
} // 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 ES31_D3D11()
{
return PlatformParameters(3, 1, egl_platform::D3D11());
}
PlatformParameters ES31_D3D11_FL11_1()
{
return PlatformParameters(3, 1, egl_platform::D3D11_FL11_1());
}
PlatformParameters ES31_D3D11_FL11_0()
{
return PlatformParameters(3, 1, egl_platform::D3D11_FL11_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_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 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));
}
PlatformParameters ES2_NULL()
{
return PlatformParameters(2, 0, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
}
PlatformParameters ES3_NULL()
{
return PlatformParameters(3, 0, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
}
PlatformParameters ES31_NULL()
{
return PlatformParameters(3, 1, EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE));
}
PlatformParameters ES2_VULKAN()
{
return PlatformParameters(2, 0, egl_platform::VULKAN());
}
} // namespace angle