Mesa (master): st/mesa: don't load cached TGSI shaders on demand

Marek Olšák mareko at kemper.freedesktop.org
Mon Jun 5 16:26:12 UTC 2017


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Wed May 31 13:07:04 2017 +0200

st/mesa: don't load cached TGSI shaders on demand

This fixes a performance issue with the shader cache that delayed Gallium
shader create calls until draw calls.

I'd like this in stable, but it's not a showstopper.

Cc: 17.1 <mesa-stable at lists.freedesktop.org>
Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

---

 src/mesa/state_tracker/st_shader_cache.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/mesa/state_tracker/st_shader_cache.c b/src/mesa/state_tracker/st_shader_cache.c
index 31c3430aa4..305435ff5b 100644
--- a/src/mesa/state_tracker/st_shader_cache.c
+++ b/src/mesa/state_tracker/st_shader_cache.c
@@ -22,7 +22,7 @@
  */
 
 #include <stdio.h>
-
+#include "st_debug.h"
 #include "st_program.h"
 #include "st_shader_cache.h"
 #include "compiler/glsl/program.h"
@@ -367,6 +367,11 @@ st_load_tgsi_from_disk_cache(struct gl_context *ctx,
          _mesa_associate_uniform_storage(ctx, prog, glprog->Parameters,
                                          false);
 
+         /* Create Gallium shaders now instead of on demand. */
+         if (ST_DEBUG & DEBUG_PRECOMPILE ||
+             st->shader_has_one_variant[glprog->info.stage])
+            st_precompile_shader_variant(st, glprog);
+
          free(buffer);
       } else {
          /* Failed to find a matching cached shader so fallback to recompile.




More information about the mesa-commit mailing list