GL: Fix ScalarizeVecAndMatConstructorArgs and move to gl/

This transformation was buggy and was disabled.  Originally, it was
intended to be used everywhere.  It is now needed for a GL driver
workaround.

This change reimplements this transformation and uses it as a GL
workaround.

Bug: chromium:1420130
Change-Id: I42d63fa5844bcf683ac41e61925aa637e033ca2e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4676634
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
This commit is contained in:
Shahbaz Youssefi
2023-07-10 22:13:34 -04:00
committed by Angle LUCI CQ
parent 0312c76fcf
commit f5ad056b0d
20 changed files with 603 additions and 449 deletions

View File

@@ -615,7 +615,7 @@ struct FeaturesGL : FeatureSetBase
FeatureInfo disableBaseInstanceVertex = {
"disableBaseInstanceVertex",
FeatureCategory::OpenGLWorkarounds,
"Some Mali drivers have buggy implementations of glDraw*BaseVertex*.",
"Some drivers have buggy implementations of glDraw*BaseVertex*.",
&members, "http://anglebug.com/8172"
};
@@ -664,10 +664,17 @@ struct FeaturesGL : FeatureSetBase
FeatureInfo disableClipControl = {
"disableClipControl",
FeatureCategory::OpenGLFeatures,
"Some ARM Mali devices genenerate errors when querying the clip control state.",
"Some devices genenerate errors when querying the clip control state",
&members, "http://crbug.com/1434317"
};
FeatureInfo scalarizeVecAndMatConstructorArgs = {
"scalarizeVecAndMatConstructorArgs",
FeatureCategory::OpenGLWorkarounds,
"Rewrite vec/mat constructors to work around driver bugs",
&members, "http://crbug.com/1420130"
};
};
inline FeaturesGL::FeaturesGL() = default;

View File

@@ -35,13 +35,6 @@ struct FrontendFeatures : FeatureSetBase
&members,
};
FeatureInfo scalarizeVecAndMatConstructorArgs = {
"scalarizeVecAndMatConstructorArgs",
FeatureCategory::FrontendWorkarounds,
"Always rewrite vec/mat constructors to be consistent",
&members, "http://crbug.com/1165751"
};
FeatureInfo disableProgramBinary = {
"disableProgramBinary",
FeatureCategory::FrontendFeatures,

View File

@@ -22,14 +22,6 @@
"On some GPUs, program binaries don't contain transform feedback varyings"
]
},
{
"name": "scalarize_vec_and_mat_constructor_args",
"category": "Workarounds",
"description": [
"Always rewrite vec/mat constructors to be consistent"
],
"issue": "http://crbug.com/1165751"
},
{
"name": "disable_program_binary",
"category": "Features",

View File

@@ -664,7 +664,7 @@
"name": "disable_base_instance_vertex",
"category": "Workarounds",
"description": [
"Some Mali drivers have buggy implementations of glDraw*BaseVertex*."
"Some drivers have buggy implementations of glDraw*BaseVertex*."
],
"issue": "http://anglebug.com/8172"
},
@@ -720,9 +720,17 @@
"name": "disable_clip_control",
"category": "Features",
"description": [
"Some ARM Mali devices genenerate errors when querying the clip control state."
"Some devices genenerate errors when querying the clip control state"
],
"issue": "http://crbug.com/1434317"
},
{
"name": "scalarize_vec_and_mat_constructor_args",
"category": "Workarounds",
"description": [
"Rewrite vec/mat constructors to work around driver bugs"
],
"issue": "http://crbug.com/1420130"
}
]
}