blob: e39a49d0f7385acd0549f2558ff0621e91a2b13c [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.
//
#ifndef ANGLE_TEST_CONFIGS_H_
#define ANGLE_TEST_CONFIGS_H_
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include "common/debug.h"
#include "EGLWindow.h"
namespace angle
{
struct PlatformParameters
{
PlatformParameters(EGLint clientVersion,
const EGLPlatformParameters &eglPlatformParameters)
: mClientVersion(clientVersion),
mEGLPlatformParameters(eglPlatformParameters)
{
}
EGLint mClientVersion;
EGLPlatformParameters mEGLPlatformParameters;
};
inline std::ostream &operator<<(std::ostream& stream,
const PlatformParameters &pp)
{
stream << "ES" << pp.mClientVersion << "_";
switch (pp.mEGLPlatformParameters.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 << "GLES";
break;
default:
UNREACHABLE();
break;
}
if (pp.mEGLPlatformParameters.majorVersion != EGL_DONT_CARE)
{
stream << "_" << pp.mEGLPlatformParameters.majorVersion;
}
if (pp.mEGLPlatformParameters.minorVersion != EGL_DONT_CARE)
{
stream << "_" << pp.mEGLPlatformParameters.minorVersion;
}
switch (pp.mEGLPlatformParameters.deviceType)
{
case EGL_DONT_CARE:
case EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE:
// default
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;
}
return stream;
}
inline PlatformParameters ES2_D3D9()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE,
EGL_DONT_CARE, EGL_DONT_CARE,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D9_REFERENCE()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE,
EGL_DONT_CARE, EGL_DONT_CARE,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
EGL_DONT_CARE, EGL_DONT_CARE,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_FL11_0()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
11, 0,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_FL10_1()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
10, 1,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_FL10_0()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
10, 0,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_FL9_3()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
9, 3,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_WARP()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
EGL_DONT_CARE, EGL_DONT_CARE,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_FL11_0_WARP()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
11, 0,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_FL10_1_WARP()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
10, 1,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_FL10_0_WARP()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
10, 0,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_FL9_3_WARP()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
9, 3,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_REFERENCE()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
EGL_DONT_CARE, EGL_DONT_CARE,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_FL11_0_REFERENCE()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
11, 0,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_FL10_1_REFERENCE()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
10, 1,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_FL10_0_REFERENCE()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
10, 0,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_D3D11_FL9_3_REFERENCE()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
9, 3,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES3_D3D11()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
EGL_DONT_CARE, EGL_DONT_CARE,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_FL11_1()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
11, 1,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_FL11_0()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
11, 0,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_FL10_1()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
10, 1,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_FL10_0()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
10, 0,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_WARP()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
EGL_DONT_CARE, EGL_DONT_CARE,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_FL11_1_WARP()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
11, 1,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_FL11_0_WARP()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
11, 0,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_FL10_1_WARP()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
10, 1,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_FL10_0_WARP()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
10, 0,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_REFERENCE()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
EGL_DONT_CARE, EGL_DONT_CARE,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_FL11_1_REFERENCE()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
11, 1,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_FL11_0_REFERENCE()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
11, 0,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_FL10_1_REFERENCE()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
10, 1,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_D3D11_FL10_0_REFERENCE()
{
EGLPlatformParameters eglParams(
EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
10, 0,
EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES2_OPENGL()
{
EGLPlatformParameters eglParams(EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES2_OPENGLES()
{
EGLPlatformParameters eglParams(EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE);
return PlatformParameters(2, eglParams);
}
inline PlatformParameters ES3_OPENGL()
{
EGLPlatformParameters eglParams(EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE);
return PlatformParameters(3, eglParams);
}
inline PlatformParameters ES3_OPENGLES()
{
EGLPlatformParameters eglParams(EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE);
return PlatformParameters(3, eglParams);
}
#define ANGLE_INSTANTIATE_TEST(testName, ...) \
INSTANTIATE_TEST_CASE_P(, testName, testing::Values(__VA_ARGS__));
} // namespace angle
#endif // ANGLE_TEST_CONFIGS_H_