Commit 1da7ac0f by Jonah Ryan-Davis Committed by Commit Bot

GLX: Workaround to disable GLX_OML_sync_control support.

Some users on Linux/Wayland are reporting issues rendering Chrome unusable when ANGLE exposes GLX_OML_sync_control. This CL adds a new feature to ANGLE to disable this extension, but for now we leave the feature off by default, so users can test it via command line flags. Bug: chromium:1137851 Change-Id: I804ea935fe441c4794b93ee62ca335e78b9e453a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2468216Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
parent 82817c9a
...@@ -484,6 +484,14 @@ struct FeaturesGL : FeatureSetBase ...@@ -484,6 +484,14 @@ struct FeaturesGL : FeatureSetBase
"Bind transform feedback buffers to the generic binding point before calling " "Bind transform feedback buffers to the generic binding point before calling "
"glBindBufferBase or glBindBufferRange.", "glBindBufferBase or glBindBufferRange.",
&members, "https://anglebug.com/5140"}; &members, "https://anglebug.com/5140"};
// Speculative fix for issues on Linux/Wayland where exposing GLX_OML_sync_control renders
// Chrome unusable
Feature disableSyncControlSupport = {
"disable_sync_control_support", FeatureCategory::OpenGLWorkarounds,
"Speculative fix for issues on Linux/Wayland where exposing GLX_OML_sync_control renders "
"Chrome unusable",
&members, "https://crbug.com/1137851"};
}; };
inline FeaturesGL::FeaturesGL() = default; inline FeaturesGL::FeaturesGL() = default;
......
...@@ -886,9 +886,12 @@ void DisplayGLX::generateExtensions(egl::DisplayExtensions *outExtensions) const ...@@ -886,9 +886,12 @@ void DisplayGLX::generateExtensions(egl::DisplayExtensions *outExtensions) const
outExtensions->surfacelessContext = true; outExtensions->surfacelessContext = true;
const bool hasSyncControlOML = mGLX.hasExtension("GLX_OML_sync_control"); if (!mRenderer->getFeatures().disableSyncControlSupport.enabled)
outExtensions->syncControlCHROMIUM = hasSyncControlOML; {
outExtensions->syncControlRateANGLE = hasSyncControlOML; const bool hasSyncControlOML = mGLX.hasExtension("GLX_OML_sync_control");
outExtensions->syncControlCHROMIUM = hasSyncControlOML;
outExtensions->syncControlRateANGLE = hasSyncControlOML;
}
outExtensions->textureFromPixmapNOK = mGLX.hasExtension("GLX_EXT_texture_from_pixmap"); outExtensions->textureFromPixmapNOK = mGLX.hasExtension("GLX_EXT_texture_from_pixmap");
......
...@@ -1830,6 +1830,10 @@ void InitializeFeatures(const FunctionsGL *functions, angle::FeaturesGL *feature ...@@ -1830,6 +1830,10 @@ void InitializeFeatures(const FunctionsGL *functions, angle::FeaturesGL *feature
ANGLE_FEATURE_CONDITION(features, clampMscRate, IsLinux() && IsWayland()); ANGLE_FEATURE_CONDITION(features, clampMscRate, IsLinux() && IsWayland());
ANGLE_FEATURE_CONDITION(features, bindTransformFeedbackBufferBeforeBindBufferRange, IsApple()); ANGLE_FEATURE_CONDITION(features, bindTransformFeedbackBufferBeforeBindBufferRange, IsApple());
// http://crbug.com/1137851
// Speculative fix for now, leave disabled so users can enable it via flags.
ANGLE_FEATURE_CONDITION(features, disableSyncControlSupport, false);
} }
void InitializeFrontendFeatures(const FunctionsGL *functions, angle::FrontendFeatures *features) void InitializeFrontendFeatures(const FunctionsGL *functions, angle::FrontendFeatures *features)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment