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