Skip to content

Commit

Permalink
Log EGL attribute feature overrides
Browse files Browse the repository at this point in the history
Log the ANGLE feature overrides performed by the EGL attributes when
creating a display:

* EGL_FEATURE_OVERRIDES_ENABLED_ANGLE
* EGL_FEATURE_OVERRIDES_DISABLED_ANGLE

These log messages are useful on platforms that override features at
runtime using the EGL attributes. For example, when using a
configuration file to enable/disable ANGLE features.

This results in log messages like:

    Feature: disableSeparateShaderObjects enabled

Bug: b/372694741
Change-Id: I35c374c8ec29e038008224049116cfc3265e70c0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6133778
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
  • Loading branch information
timvpGoogle authored and Angle LUCI CQ committed Feb 25, 2025
1 parent f439541 commit 9903226
Showing 1 changed file with 29 additions and 6 deletions.
35 changes: 29 additions & 6 deletions src/libANGLE/renderer/renderer_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1364,10 +1364,12 @@ gl::Rectangle ClipRectToScissor(const gl::State &glState, const gl::Rectangle &r
return clippedRect;
}

void LogFeatureStatus(const angle::FeatureSetBase &features,
const std::vector<std::string> &featureNames,
bool enabled)
std::string LogFeatureStatus(const angle::FeatureSetBase &features,
const std::vector<std::string> &featureNames,
bool enabled)
{
std::stringstream featureStream;

for (const std::string &name : featureNames)
{
const bool hasWildcard = name.back() == '*';
Expand All @@ -1380,21 +1382,37 @@ void LogFeatureStatus(const angle::FeatureSetBase &features,
continue;
}

INFO() << "Feature: " << featureName << (enabled ? " enabled" : " disabled");
if (featureStream.str().empty())
{
featureStream << "Feature overrides: ";
}
featureStream << featureName << (enabled ? " enabled, " : " disabled, ");

if (!hasWildcard)
{
break;
}
}
}

if (!featureStream.str().empty())
{
featureStream << std::endl;
}

return featureStream.str();
}

void ApplyFeatureOverrides(angle::FeatureSetBase *features,
const angle::FeatureOverrides &overrides)
{
std::stringstream featureStream;

features->overrideFeatures(overrides.enabled, true);
featureStream << LogFeatureStatus(*features, overrides.enabled, true);

features->overrideFeatures(overrides.disabled, false);
featureStream << LogFeatureStatus(*features, overrides.disabled, false);

// Override with environment as well.
constexpr char kAngleFeatureOverridesEnabledEnvName[] = "ANGLE_FEATURE_OVERRIDES_ENABLED";
Expand All @@ -1411,10 +1429,15 @@ void ApplyFeatureOverrides(angle::FeatureSetBase *features,
kAngleFeatureOverridesDisabledEnvName, kAngleFeatureOverridesDisabledPropertyName, ":");

features->overrideFeatures(overridesEnabled, true);
LogFeatureStatus(*features, overridesEnabled, true);
featureStream << LogFeatureStatus(*features, overridesEnabled, true);

features->overrideFeatures(overridesDisabled, false);
LogFeatureStatus(*features, overridesDisabled, false);
featureStream << LogFeatureStatus(*features, overridesDisabled, false);

if (!featureStream.str().empty())
{
INFO() << featureStream.str();
}
}

void GetSamplePosition(GLsizei sampleCount, size_t index, GLfloat *xy)
Expand Down

0 comments on commit 9903226

Please sign in to comment.