Revert "Run the inliner on GLES devices only."
This reverts commit 759bbf7b60372d381152a0f4461e3db2f81aebbc.
Reason for revert: Pinpoint regressions when the inliner is off
http://go/crb/1194808#c7
Original change's description:
> Run the inliner on GLES devices only.
>
> We've found that the inliner only gives tangible gains in draw
> performance on GLES devices. (See go/optimization-in-sksl-inliner)
> On other devices, we can skip it and still get the same draw performance
> regardless. A caps bit has been added to indicate a device that will
> benefit from inlining, and the inliner is now disabled on platforms that
> don't set this bit.
>
> Change-Id: I61dfafd7e919deabf81529cea832bb11496410cc
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/390300
> Auto-Submit: John Stiles <johnstiles@google.com>
> Commit-Queue: John Stiles <johnstiles@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>
TBR=brianosman@google.com,johnstiles@google.com
Change-Id: Ia9ab4db3c3e8a088afa84d4ad3105aa089bf5084
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/391858
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
diff --git a/src/gpu/GrShaderCaps.cpp b/src/gpu/GrShaderCaps.cpp
index 33a0c10..d3bc02c 100644
--- a/src/gpu/GrShaderCaps.cpp
+++ b/src/gpu/GrShaderCaps.cpp
@@ -54,7 +54,6 @@
fFloatIs32Bits = true;
fHalfIs32Bits = false;
fHasLowFragmentPrecision = false;
- fEnableSkSLInliner = false;
fColorSpaceMathNeedsFloat = false;
fBuiltinFMASupport = false;
fBuiltinDeterminantSupport = false;
@@ -136,7 +135,6 @@
writer->appendBool("float == fp32", fFloatIs32Bits);
writer->appendBool("half == fp32", fHalfIs32Bits);
writer->appendBool("Has poor fragment precision", fHasLowFragmentPrecision);
- writer->appendBool("Inlines helper functions in compiled SkSL", fEnableSkSLInliner);
writer->appendBool("Color space math needs float", fColorSpaceMathNeedsFloat);
writer->appendBool("Builtin fma() support", fBuiltinFMASupport);
writer->appendBool("Builtin determinant() support", fBuiltinDeterminantSupport);
diff --git a/src/gpu/GrShaderCaps.h b/src/gpu/GrShaderCaps.h
index ad84273..485522c 100644
--- a/src/gpu/GrShaderCaps.h
+++ b/src/gpu/GrShaderCaps.h
@@ -84,8 +84,6 @@
bool hasLowFragmentPrecision() const { return fHasLowFragmentPrecision; }
- bool enableSkSLInliner() const { return fEnableSkSLInliner; }
-
// SkSL only.
bool builtinFMASupport() const { return fBuiltinFMASupport; }
@@ -285,11 +283,6 @@
bool fHalfIs32Bits : 1;
bool fHasLowFragmentPrecision : 1;
- // Enables the SkSL inliner, which can help performance on some platforms (particularly ES on
- // low-end devices). Inlining requires optimization to be enabled in the program settings, and a
- // non-zero inline threshold must be set.
- bool fEnableSkSLInliner : 1;
-
// Used by SkSL to know when to generate polyfills.
bool fBuiltinFMASupport : 1;
bool fBuiltinDeterminantSupport : 1;
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index 8d4351c..9337972 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -983,17 +983,8 @@
shaderCaps->fBuiltinDeterminantSupport = ctxInfo.glslGeneration() >= k150_GrGLSLGeneration;
if (GR_IS_GR_WEBGL(standard)) {
- // WebGL 1.0 doesn't support do-while loops.
- shaderCaps->fCanUseDoLoops = version >= GR_GL_VER(2, 0);
- }
-
- if (GR_IS_GR_GL_ES(standard) &&
- (ctxInfo.driver() != kChromium_GrGLDriver) &&
- (ctxInfo.driver() != kANGLE_GrGLDriver)) {
- // Inlining SkSL helper functions improves draw performance on many GLES drivers (e.g.
- // Mali/Adreno). Chromium on Windows also identifies itself to us as GLES, but is actually
- // ANGLE under the hood, so we make an exception for that case.
- shaderCaps->fEnableSkSLInliner = true;
+ // WebGL 1.0 doesn't support do-while loops.
+ shaderCaps->fCanUseDoLoops = version >= GR_GL_VER(2, 0);
}
}
diff --git a/src/sksl/SkSLCompiler.cpp b/src/sksl/SkSLCompiler.cpp
index f89ec2f..cc01495 100644
--- a/src/sksl/SkSLCompiler.cpp
+++ b/src/sksl/SkSLCompiler.cpp
@@ -701,11 +701,9 @@
ProgramUsage* usage = program.fUsage.get();
if (fErrorCount == 0) {
- if (fContext->fCaps.enableSkSLInliner() || sInliner == OverrideFlag::kOn) {
- // Run the inliner only once; it is expensive! Multiple passes can very occasionally
- // shake out more wins, but it's diminishing returns.
- fInliner.analyze(program.ownedElements(), program.fSymbols, usage);
- }
+ // Run the inliner only once; it is expensive! Multiple passes can occasionally shake out
+ // more wins, but it's diminishing returns.
+ fInliner.analyze(program.ownedElements(), program.fSymbols, usage);
while (this->removeDeadFunctions(program, usage)) {
// Removing dead functions may cause more functions to become unreferenced. Try again.
diff --git a/src/sksl/SkSLUtil.h b/src/sksl/SkSLUtil.h
index 3698d40..73b5bd8 100644
--- a/src/sksl/SkSLUtil.h
+++ b/src/sksl/SkSLUtil.h
@@ -154,11 +154,6 @@
return fNoDefaultPrecisionForExternalSamplers;
}
- bool fEnableSkSLInliner = true;
- bool enableSkSLInliner() const {
- return fEnableSkSLInliner;
- }
-
bool fFloatIs32Bits = true;
bool floatIs32Bits() const {
return fFloatIs32Bits;