summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Lin <danny@kdrag0n.dev>2021-04-14 01:33:26 -0700
committeralk3pInjection <webmaster@raspii.tech>2021-09-27 21:17:05 +0800
commitfdce5d42c8bfcfd3441c86691e01fc493d19cada (patch)
tree4a531efc90246a61e2ddb23fea910bd41b1cbfb9
parent6a038c8579b3379d79d9f0616a5641159c2a0ea1 (diff)
[ProtonAOSP] blur: Skip processing of alpha channel by swizzling RGB
This reduces ALU utilization by avoiding unnecessary calculations that are discarded in the final fragment color. This saves ~100 µs in another 6-pass blur implementation. Change-Id: I4ec24518eefce369dbb592ac03a14caeea86df9a
-rw-r--r--libs/renderengine/gl/filters/BlurFilter.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/libs/renderengine/gl/filters/BlurFilter.cpp b/libs/renderengine/gl/filters/BlurFilter.cpp
index 967a2b514d..8858d60bd0 100644
--- a/libs/renderengine/gl/filters/BlurFilter.cpp
+++ b/libs/renderengine/gl/filters/BlurFilter.cpp
@@ -231,13 +231,13 @@ string BlurFilter::getFragmentShader() const {
out vec4 fragColor;
void main() {
- fragColor = texture(uTexture, vUV, 0.0);
- fragColor += texture(uTexture, vUV + vec2( uOffset.x, uOffset.y), 0.0);
- fragColor += texture(uTexture, vUV + vec2( uOffset.x, -uOffset.y), 0.0);
- fragColor += texture(uTexture, vUV + vec2(-uOffset.x, uOffset.y), 0.0);
- fragColor += texture(uTexture, vUV + vec2(-uOffset.x, -uOffset.y), 0.0);
+ vec3 sum = texture(uTexture, vUV).rgb;
+ sum += texture(uTexture, vUV + vec2( uOffset.x, uOffset.y)).rgb;
+ sum += texture(uTexture, vUV + vec2( uOffset.x, -uOffset.y)).rgb;
+ sum += texture(uTexture, vUV + vec2(-uOffset.x, uOffset.y)).rgb;
+ sum += texture(uTexture, vUV + vec2(-uOffset.x, -uOffset.y)).rgb;
- fragColor = vec4(fragColor.rgb * 0.2, 1.0);
+ fragColor = vec4(sum * 0.2, 1.0);
}
)SHADER";
}
@@ -254,9 +254,9 @@ string BlurFilter::getMixFragShader() const {
uniform float uBlurOpacity;
void main() {
- vec4 blurred = texture(uBlurTexture, vUV);
- vec4 composition = texture(uCompositionTexture, vUV);
- fragColor = mix(composition, blurred, uBlurOpacity);
+ vec3 blurred = texture(uBlurTexture, vUV).rgb;
+ vec3 composition = texture(uCompositionTexture, vUV).rgb;
+ fragColor = vec4(mix(composition, blurred, uBlurOpacity), 1.0);
}
)SHADER";
return shader;