[Impeller] work around for crashy Nexus 5 Driver. (#164040)
Rewrites exp to work around crashes on Nexus 5.
This commit is contained in:
parent
52876a0b25
commit
0b96fa88fd
@ -41654,6 +41654,7 @@ ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/dithering.glsl +
|
|||||||
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/external_texture_oes.glsl + ../../../flutter/LICENSE
|
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/external_texture_oes.glsl + ../../../flutter/LICENSE
|
||||||
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/gaussian.glsl + ../../../flutter/LICENSE
|
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/gaussian.glsl + ../../../flutter/LICENSE
|
||||||
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/gradient.glsl + ../../../flutter/LICENSE
|
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/gradient.glsl + ../../../flutter/LICENSE
|
||||||
|
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/math.glsl + ../../../flutter/LICENSE
|
||||||
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/path.glsl + ../../../flutter/LICENSE
|
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/path.glsl + ../../../flutter/LICENSE
|
||||||
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/prefix_sum.glsl + ../../../flutter/LICENSE
|
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/prefix_sum.glsl + ../../../flutter/LICENSE
|
||||||
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/texture.glsl + ../../../flutter/LICENSE
|
ORIGIN: ../../../flutter/impeller/compiler/shader_lib/impeller/texture.glsl + ../../../flutter/LICENSE
|
||||||
@ -44568,6 +44569,7 @@ FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/dithering.glsl
|
|||||||
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/external_texture_oes.glsl
|
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/external_texture_oes.glsl
|
||||||
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/gaussian.glsl
|
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/gaussian.glsl
|
||||||
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/gradient.glsl
|
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/gradient.glsl
|
||||||
|
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/math.glsl
|
||||||
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/path.glsl
|
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/path.glsl
|
||||||
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/prefix_sum.glsl
|
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/prefix_sum.glsl
|
||||||
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/texture.glsl
|
FILE: ../../../flutter/impeller/compiler/shader_lib/impeller/texture.glsl
|
||||||
|
@ -13,6 +13,7 @@ copy("impeller") {
|
|||||||
"external_texture_oes.glsl",
|
"external_texture_oes.glsl",
|
||||||
"gaussian.glsl",
|
"gaussian.glsl",
|
||||||
"gradient.glsl",
|
"gradient.glsl",
|
||||||
|
"math.glsl",
|
||||||
"path.glsl",
|
"path.glsl",
|
||||||
"texture.glsl",
|
"texture.glsl",
|
||||||
"tile_mode.glsl",
|
"tile_mode.glsl",
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
// Copyright 2013 The Flutter Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#ifndef MATH_GLSL_
|
||||||
|
#define MATH_GLSL_
|
||||||
|
|
||||||
|
// pow(x, y) crashes the shader compiler on the Nexus 5.
|
||||||
|
// See also: https://skia-review.googlesource.com/c/skia/+/148480
|
||||||
|
#ifdef IMPELLER_TARGET_OPENGLES
|
||||||
|
#define POW(x, y) exp2(y* log2(x))
|
||||||
|
#else
|
||||||
|
#define POW(x, y) pow(x, y)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // MATH_GLSL_
|
@ -9,6 +9,7 @@
|
|||||||
precision highp float;
|
precision highp float;
|
||||||
|
|
||||||
#include <impeller/gaussian.glsl>
|
#include <impeller/gaussian.glsl>
|
||||||
|
#include <impeller/math.glsl>
|
||||||
#include <impeller/types.glsl>
|
#include <impeller/types.glsl>
|
||||||
|
|
||||||
uniform FragInfo {
|
uniform FragInfo {
|
||||||
@ -44,9 +45,9 @@ float computeErf7(float x) {
|
|||||||
|
|
||||||
// The length formula, but with an exponent other than 2
|
// The length formula, but with an exponent other than 2
|
||||||
float powerDistance(vec2 p) {
|
float powerDistance(vec2 p) {
|
||||||
float xp = pow(p.x, frag_info.exponent);
|
float xp = POW(p.x, frag_info.exponent);
|
||||||
float yp = pow(p.y, frag_info.exponent);
|
float yp = POW(p.y, frag_info.exponent);
|
||||||
return pow(xp + yp, frag_info.exponentInv);
|
return POW(xp + yp, frag_info.exponentInv);
|
||||||
}
|
}
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
@ -4365,7 +4365,7 @@
|
|||||||
},
|
},
|
||||||
"thread_occupancy": 100,
|
"thread_occupancy": 100,
|
||||||
"uniform_registers_used": 4,
|
"uniform_registers_used": 4,
|
||||||
"work_registers_used": 3
|
"work_registers_used": 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user