Mesa (master): mesa/st: Fix precompile misses on compat GL VSes writing to color outputs.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Mar 12 21:38:52 UTC 2021


Module: Mesa
Branch: master
Commit: 1cf8cf99c891c02236c40a1f694efe3fcaa9f44f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1cf8cf99c891c02236c40a1f694efe3fcaa9f44f

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Mar 10 14:46:16 2021 -0800

mesa/st: Fix precompile misses on compat GL VSes writing to color outputs.

In compat GL, the gl_FrontColor/BackColor gets clamped unless you
explicitly turn it off with ARB_color_buffer_float, and most apps doing
floating point color rendering are going to be using non-compat varyings
anyway instead of hoping that ARB_color_buffer_float exists.  Thus, guess
that the app will get clamping on the color outputs to reduce draw-time
recompiles.

Saves 60 VS recompiles on half-life-2.trace on freedreno (and similarly for
many other compat GL apps).

Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9509>

---

 src/mesa/state_tracker/st_program.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c
index fc1be8f80a4..1cf2a01758d 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -1946,6 +1946,15 @@ st_precompile_shader_variant(struct st_context *st,
 
       memset(&key, 0, sizeof(key));
 
+      if (st->ctx->API == API_OPENGL_COMPAT &&
+          st->clamp_vert_color_in_shader &&
+          (prog->info.outputs_written & (VARYING_SLOT_COL0 |
+                                         VARYING_SLOT_COL1 |
+                                         VARYING_SLOT_BFC0 |
+                                         VARYING_SLOT_BFC1))) {
+         key.clamp_color = true;
+      }
+
       key.st = st->has_shareable_shaders ? NULL : st;
       st_get_common_variant(st, p, &key);
       break;



More information about the mesa-commit mailing list