Mesa (main): mesa/st: Remove now unused TGSI paths from disk cache.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu May 5 23:11:15 UTC 2022


Module: Mesa
Branch: main
Commit: 7221cc7657998c131eff3156913331eb1ae5705b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7221cc7657998c131eff3156913331eb1ae5705b

Author: Emma Anholt <emma at anholt.net>
Date:   Tue Sep  7 16:46:55 2021 -0700

mesa/st: Remove now unused TGSI paths from disk cache.

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

---

 src/mesa/state_tracker/st_glsl_to_ir.cpp  |   2 +-
 src/mesa/state_tracker/st_glsl_to_nir.cpp |   2 +-
 src/mesa/state_tracker/st_shader_cache.c  | 116 +++++++-----------------------
 src/mesa/state_tracker/st_shader_cache.h  |   8 +--
 4 files changed, 29 insertions(+), 99 deletions(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_ir.cpp b/src/mesa/state_tracker/st_glsl_to_ir.cpp
index 49527a13888..4279c732935 100644
--- a/src/mesa/state_tracker/st_glsl_to_ir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_ir.cpp
@@ -42,7 +42,7 @@ link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
    struct pipe_screen *pscreen = sctx->screen;
 
    /* Return early if we are loading the shader from on-disk cache */
-   if (st_load_ir_from_disk_cache(ctx, prog, true)) {
+   if (st_load_nir_from_disk_cache(ctx, prog)) {
       return GL_TRUE;
    }
 
diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index a5819ea0e4f..bc187fee66e 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -933,7 +933,7 @@ st_link_nir(struct gl_context *ctx,
           shader->Stage == MESA_SHADER_GEOMETRY)
          st_translate_stream_output_info(prog);
 
-      st_store_ir_in_disk_cache(st, prog, true);
+      st_store_nir_in_disk_cache(st, prog);
 
       st_release_variants(st, prog);
       st_finalize_program(st, prog);
diff --git a/src/mesa/state_tracker/st_shader_cache.c b/src/mesa/state_tracker/st_shader_cache.c
index 965379763a4..7ca0a088c5b 100644
--- a/src/mesa/state_tracker/st_shader_cache.c
+++ b/src/mesa/state_tracker/st_shader_cache.c
@@ -31,7 +31,6 @@
 #include "compiler/nir/nir_serialize.h"
 #include "main/uniforms.h"
 #include "pipe/p_shader_tokens.h"
-#include "tgsi/tgsi_parse.h"
 #include "util/u_memory.h"
 
 void
@@ -61,17 +60,6 @@ copy_blob_to_driver_cache_blob(struct blob *blob, struct gl_program *prog)
    prog->driver_cache_blob_size = blob->size;
 }
 
-static void
-write_tgsi_to_cache(struct blob *blob, const struct tgsi_token *tokens,
-                    struct gl_program *prog)
-{
-   unsigned num_tokens = tgsi_num_tokens(tokens);
-
-   blob_write_uint32(blob, num_tokens);
-   blob_write_bytes(blob, tokens, num_tokens * sizeof(struct tgsi_token));
-   copy_blob_to_driver_cache_blob(blob, prog);
-}
-
 static void
 write_nir_to_cache(struct blob *blob, struct gl_program *prog)
 {
@@ -83,9 +71,8 @@ write_nir_to_cache(struct blob *blob, struct gl_program *prog)
    copy_blob_to_driver_cache_blob(blob, prog);
 }
 
-static void
-st_serialise_ir_program(struct gl_context *ctx, struct gl_program *prog,
-                        bool nir)
+void
+st_serialise_nir_program(struct gl_context *ctx, struct gl_program *prog)
 {
    if (prog->driver_cache_blob)
       return;
@@ -107,20 +94,16 @@ st_serialise_ir_program(struct gl_context *ctx, struct gl_program *prog,
        prog->info.stage == MESA_SHADER_GEOMETRY)
       write_stream_out_to_cache(&blob, &prog->state);
 
-   if (nir)
-      write_nir_to_cache(&blob, prog);
-   else
-      write_tgsi_to_cache(&blob, prog->state.tokens, prog);
+   write_nir_to_cache(&blob, prog);
 
    blob_finish(&blob);
 }
 
 /**
- * Store TGSI or NIR and any other required state in on-disk shader cache.
+ * Store NIR and any other required state in on-disk shader cache.
  */
 void
-st_store_ir_in_disk_cache(struct st_context *st, struct gl_program *prog,
-                          bool nir)
+st_store_nir_in_disk_cache(struct st_context *st, struct gl_program *prog)
 {
    if (!st->ctx->Cache)
       return;
@@ -132,7 +115,7 @@ st_store_ir_in_disk_cache(struct st_context *st, struct gl_program *prog,
    if (memcmp(prog->sh.data->sha1, zero, sizeof(prog->sh.data->sha1)) == 0)
       return;
 
-   st_serialise_ir_program(st->ctx, prog, nir);
+   st_serialise_nir_program(st->ctx, prog);
 
    if (st->ctx->_Shader->Flags & GLSL_CACHE_INFO) {
       fprintf(stderr, "putting %s state tracker IR in cache\n",
@@ -154,20 +137,10 @@ read_stream_out_from_cache(struct blob_reader *blob_reader,
    }
 }
 
-static void
-read_tgsi_from_cache(struct blob_reader *blob_reader,
-                     const struct tgsi_token **tokens)
-{
-   unsigned num_tokens  = blob_read_uint32(blob_reader);
-   unsigned tokens_size = num_tokens * sizeof(struct tgsi_token);
-   *tokens = (const struct tgsi_token*) MALLOC(tokens_size);
-   blob_copy_bytes(blob_reader, (uint8_t *) *tokens, tokens_size);
-}
-
-static void
-st_deserialise_ir_program(struct gl_context *ctx,
+void
+st_deserialise_nir_program(struct gl_context *ctx,
                           struct gl_shader_program *shProg,
-                          struct gl_program *prog, bool nir)
+                          struct gl_program *prog)
 {
    struct st_context *st = st_context(ctx);
    size_t size = prog->driver_cache_blob_size;
@@ -201,29 +174,25 @@ st_deserialise_ir_program(struct gl_context *ctx,
        prog->info.stage == MESA_SHADER_GEOMETRY)
       read_stream_out_from_cache(&blob_reader, &prog->state);
 
-   if (nir) {
-      assert(prog->nir == NULL);
-      assert(prog->serialized_nir == NULL);
-
-      prog->state.type = PIPE_SHADER_IR_NIR;
-      prog->serialized_nir_size = blob_read_intptr(&blob_reader);
-      prog->serialized_nir = malloc(prog->serialized_nir_size);
-      blob_copy_bytes(&blob_reader, prog->serialized_nir, prog->serialized_nir_size);
-      prog->shader_program = shProg;
-   } else {
-      read_tgsi_from_cache(&blob_reader, &prog->state.tokens);
-   }
+   assert(prog->nir == NULL);
+   assert(prog->serialized_nir == NULL);
+
+   prog->state.type = PIPE_SHADER_IR_NIR;
+   prog->serialized_nir_size = blob_read_intptr(&blob_reader);
+   prog->serialized_nir = malloc(prog->serialized_nir_size);
+   blob_copy_bytes(&blob_reader, prog->serialized_nir, prog->serialized_nir_size);
+   prog->shader_program = shProg;
 
    /* Make sure we don't try to read more data than we wrote. This should
     * never happen in release builds but its useful to have this check to
     * catch development bugs.
     */
    if (blob_reader.current != blob_reader.end || blob_reader.overrun) {
-      assert(!"Invalid TGSI shader disk cache item!");
+      assert(!"Invalid shader disk cache item!");
 
       if (ctx->_Shader->Flags & GLSL_CACHE_INFO) {
          fprintf(stderr, "Error reading program from cache (invalid "
-                 "TGSI cache item)\n");
+                 "cache item)\n");
       }
    }
 
@@ -231,15 +200,14 @@ st_deserialise_ir_program(struct gl_context *ctx,
 }
 
 bool
-st_load_ir_from_disk_cache(struct gl_context *ctx,
-                           struct gl_shader_program *prog,
-                           bool nir)
+st_load_nir_from_disk_cache(struct gl_context *ctx,
+                            struct gl_shader_program *prog)
 {
    if (!ctx->Cache)
       return false;
 
    /* If we didn't load the GLSL metadata from cache then we could not have
-    * loaded TGSI or NIR either.
+    * loaded the NIR either.
     */
    if (prog->data->LinkStatus != LINKING_SKIPPED)
       return false;
@@ -249,7 +217,7 @@ st_load_ir_from_disk_cache(struct gl_context *ctx,
          continue;
 
       struct gl_program *glprog = prog->_LinkedShaders[i]->Program;
-      st_deserialise_ir_program(ctx, prog, glprog, nir);
+      st_deserialise_nir_program(ctx, prog, glprog);
 
       /* We don't need the cached blob anymore so free it */
       ralloc_free(glprog->driver_cache_blob);
@@ -265,46 +233,10 @@ st_load_ir_from_disk_cache(struct gl_context *ctx,
    return true;
 }
 
-void
-st_serialise_tgsi_program(struct gl_context *ctx, struct gl_program *prog)
-{
-   st_serialise_ir_program(ctx, prog, false);
-}
-
-void
-st_serialise_tgsi_program_binary(struct gl_context *ctx,
-                                 struct gl_shader_program *shProg,
-                                 struct gl_program *prog)
-{
-   st_serialise_ir_program(ctx, prog, false);
-}
-
-void
-st_deserialise_tgsi_program(struct gl_context *ctx,
-                            struct gl_shader_program *shProg,
-                            struct gl_program *prog)
-{
-   st_deserialise_ir_program(ctx, shProg, prog, false);
-}
-
-void
-st_serialise_nir_program(struct gl_context *ctx, struct gl_program *prog)
-{
-   st_serialise_ir_program(ctx, prog, true);
-}
-
 void
 st_serialise_nir_program_binary(struct gl_context *ctx,
                                 struct gl_shader_program *shProg,
                                 struct gl_program *prog)
 {
-   st_serialise_ir_program(ctx, prog, true);
-}
-
-void
-st_deserialise_nir_program(struct gl_context *ctx,
-                           struct gl_shader_program *shProg,
-                           struct gl_program *prog)
-{
-   st_deserialise_ir_program(ctx, shProg, prog, true);
+   st_serialise_nir_program(ctx, prog);
 }
diff --git a/src/mesa/state_tracker/st_shader_cache.h b/src/mesa/state_tracker/st_shader_cache.h
index 95a5089665f..6be2dac7251 100644
--- a/src/mesa/state_tracker/st_shader_cache.h
+++ b/src/mesa/state_tracker/st_shader_cache.h
@@ -64,13 +64,11 @@ st_deserialise_nir_program(struct gl_context *ctx,
                            struct gl_program *prog);
 
 bool
-st_load_ir_from_disk_cache(struct gl_context *ctx,
-                           struct gl_shader_program *prog,
-                             bool nir);
+st_load_nir_from_disk_cache(struct gl_context *ctx,
+                            struct gl_shader_program *prog);
 
 void
-st_store_ir_in_disk_cache(struct st_context *st, struct gl_program *prog,
-                          bool nir);
+st_store_nir_in_disk_cache(struct st_context *st, struct gl_program *prog);
 
 #ifdef __cplusplus
 }



More information about the mesa-commit mailing list