Mesa (master): nir/serialize: don't expand 16-bit variable state slots to 32 bits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Nov 6 04:37:42 UTC 2019


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Fri Oct 25 12:01:27 2019 -0400

nir/serialize: don't expand 16-bit variable state slots to 32 bits

the swizzle also needs only 16 bits

Reviewed-by: Connor Abbott <cwabbott0 at gmail.com>

---

 src/compiler/nir/nir.h           |  2 +-
 src/compiler/nir/nir_serialize.c | 10 ++++------
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 3aa72a6a5c6..0dc604cce41 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -94,7 +94,7 @@ struct nir_builder;
  */
 typedef struct {
    gl_state_index16 tokens[STATE_LENGTH];
-   int swizzle;
+   uint16_t swizzle;
 } nir_state_slot;
 
 typedef enum {
diff --git a/src/compiler/nir/nir_serialize.c b/src/compiler/nir/nir_serialize.c
index 558bd6c97a3..6c0d07f657e 100644
--- a/src/compiler/nir/nir_serialize.c
+++ b/src/compiler/nir/nir_serialize.c
@@ -142,9 +142,8 @@ write_variable(write_ctx *ctx, const nir_variable *var)
    blob_write_bytes(ctx->blob, (uint8_t *) &var->data, sizeof(var->data));
    blob_write_uint32(ctx->blob, var->num_state_slots);
    for (unsigned i = 0; i < var->num_state_slots; i++) {
-      for (unsigned j = 0; j < STATE_LENGTH; j++)
-         blob_write_uint32(ctx->blob, var->state_slots[i].tokens[j]);
-      blob_write_uint32(ctx->blob, var->state_slots[i].swizzle);
+      blob_write_bytes(ctx->blob, &var->state_slots[i],
+                       sizeof(var->state_slots[i]));
    }
    blob_write_uint32(ctx->blob, !!(var->constant_initializer));
    if (var->constant_initializer)
@@ -179,9 +178,8 @@ read_variable(read_ctx *ctx)
       var->state_slots = ralloc_array(var, nir_state_slot,
                                       var->num_state_slots);
       for (unsigned i = 0; i < var->num_state_slots; i++) {
-         for (unsigned j = 0; j < STATE_LENGTH; j++)
-            var->state_slots[i].tokens[j] = blob_read_uint32(ctx->blob);
-         var->state_slots[i].swizzle = blob_read_uint32(ctx->blob);
+         blob_copy_bytes(ctx->blob, &var->state_slots[i],
+                         sizeof(var->state_slots[i]));
       }
    }
    bool has_const_initializer = blob_read_uint32(ctx->blob);




More information about the mesa-commit mailing list