Hash :
2031e215
Author :
Date :
2022-12-02T15:30:54
Fixes for Vulkan secondaries build. Includes the defined name of the alternate library in every build, so that platforms without Vulkan still have access to the library name define. Also fixes checks for the ANGLE driver in the tests to work with the new secondaries enum. This will let developers run trace tests with the vulkan secondaries library. Bug: angleproject:6811 Change-Id: If3846d68e532238f0b1c1c506638867a23fb4357 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4076513 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
//
// 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 "angle_features_autogen.h"
#include <string>
#include <tuple>
#include <vector>
namespace angle
{
struct PlatformMethods;
// The GLES driver type determines what shared object we use to load the GLES entry points.
// AngleEGL loads from ANGLE's version of libEGL, libGLESv2, and libGLESv1_CM.
// SystemEGL uses the system copies of libEGL, libGLESv2, and libGLESv1_CM.
// SystemWGL loads Windows GL with the GLES compatibility extensions. See util/WGLWindow.h.
enum class GLESDriverType
{
AngleEGL,
AngleVulkanSecondariesEGL,
SystemEGL,
SystemWGL,
ZinkEGL,
};
inline bool IsANGLE(angle::GLESDriverType driverType)
{
return driverType == angle::GLESDriverType::AngleEGL ||
driverType == angle::GLESDriverType::AngleVulkanSecondariesEGL;
}
GLESDriverType GetDriverTypeFromString(const char *driverName, GLESDriverType defaultDriverType);
} // 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, robustness, displayPowerPreference,
disabledFeatureOverrides, enabledFeatureOverrides, platformMethods);
}
// Helpers to enable and disable ANGLE features. Expects a kFeature* value from
// angle_features_autogen.h.
EGLPlatformParameters &enable(angle::Feature feature)
{
enabledFeatureOverrides.push_back(feature);
return *this;
}
EGLPlatformParameters &disable(angle::Feature feature)
{
disabledFeatureOverrides.push_back(feature);
return *this;
}
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 robustness = EGL_DONT_CARE;
EGLint displayPowerPreference = EGL_DONT_CARE;
std::vector<angle::Feature> enabledFeatureOverrides;
std::vector<angle::Feature> disabledFeatureOverrides;
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_