weston/libweston/renderer-gl
Pekka Paalanen f31de214d9 gl-renderer: fix performance regression in frag
When color management is disabled, the fragment shader was still first
ensuring straight alpha and then immediately just going back to
pre-multiplied. This is near-impossible for a shader compiler to
optimize out, I guess because of the if-statement to handle division by
zero. Having view alpha applied in between certainly didn't make it
easier.

That causes extra fragment computations that are unnecessary. In the
issue report this was found to cause a notable performance regression.

Fix the performance regression by introducing special-case paths for
when straight alpha is not needed. This skips the unnecessary
computations.

Fixes: https://gitlab.freedesktop.org/wayland/weston/-/issues/623
Fixes: 9a6a4e7032

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
(cherry picked from commit 6234cb98d1)

Dropped SHADER_COLOR_MAPPING_IDENTITY as that is not available in weston
10.0.
2022-06-07 10:15:46 +03:00
..
egl-glue.c gl-renderer: query DRM device given an EGLDisplay 2021-11-25 10:47:39 -03:00
fragment.glsl gl-renderer: fix performance regression in frag 2022-06-07 10:15:46 +03:00
gl-renderer-internal.h gl-renderer: query DRM device given an EGLDisplay 2021-11-25 10:47:39 -03:00
gl-renderer.c libweston: add initial dma-buf feedback implementation 2021-11-25 11:16:14 -03:00
gl-renderer.h gl-renderer: Replace pbuffer-create args with struct 2020-03-20 15:25:24 +00:00
gl-shader-config-color-transformation.c gl-renderer: implement 3 x 1D LUT color pre-curve 2021-06-21 14:36:33 +00:00
gl-shaders.c gl-renderer: implement SHADER_COLOR_CURVE_LUT_3x1D 2021-06-21 14:36:33 +00:00
meson.build gl-renderer: implement 3 x 1D LUT color pre-curve 2021-06-21 14:36:33 +00:00
vertex.glsl gl-renderer: move vertex shader into new file 2021-02-25 13:16:02 +02:00