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@gmail.com>
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user