diff options
author | Connor Abbott <cwabbott0@gmail.com> | 2017-09-22 10:03:16 -0400 |
---|---|---|
committer | Connor Abbott <cwabbott0@gmail.com> | 2017-09-22 10:03:54 -0400 |
commit | c47fa33eeb578f3d377722506b2f6732545ff253 (patch) | |
tree | e3e6030aaa85191f188de76a36ea31ecbfb0a8ed | |
parent | 89067266f4a9b41f7ce3748683b203e7ea76a842 (diff) |
fixup nir_serializenir-serialize
-rw-r--r-- | src/compiler/nir/nir_serialize.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/compiler/nir/nir_serialize.c b/src/compiler/nir/nir_serialize.c index 43802203b8..d11efd4d08 100644 --- a/src/compiler/nir/nir_serialize.c +++ b/src/compiler/nir/nir_serialize.c @@ -282,6 +282,7 @@ read_src(read_ctx *ctx, nir_src *src, void *mem_ctx) } else { bool is_indirect = val & 0x2; src->reg.reg = read_lookup_object(ctx, idx); + src->reg.base_offset = blob_read_uint32(ctx->blob); if (is_indirect) { src->reg.indirect = ralloc(mem_ctx, nir_src); read_src(ctx, src->reg.indirect, mem_ctx); @@ -534,8 +535,10 @@ read_load_const(read_ctx *ctx) { uint32_t val = blob_read_uint32(ctx->blob); + unsigned num_components = val & 0x7; + unsigned bit_size = val >> 3; nir_load_const_instr *lc = - nir_load_const_instr_create(ctx->nir, val & 0x7, val >> 3); + nir_load_const_instr_create(ctx->nir, num_components, bit_size); blob_copy_bytes(ctx->blob, (uint8_t *) &lc->value, sizeof(lc->value)); read_add_object(ctx, &lc->def); @@ -643,7 +646,8 @@ write_phi(write_ctx *ctx, const nir_phi_instr *phi) nir_foreach_phi_src(src, phi) { assert(src->src.is_ssa); - size_t blob_ptr = blob_reserve_bytes(ctx->blob, 2 * sizeof(uintptr_t)); + size_t blob_ptr = blob_reserve_intptr(ctx->blob); + blob_reserve_intptr(ctx->blob); write_phi_fixup fixup = { .blob_ptr = blob_ptr, .src = src->src.ssa, @@ -1074,7 +1078,7 @@ nir_serialize(struct blob *blob, nir_shader *nir) ctx.nir = nir; util_dynarray_init(&ctx.phi_fixups, NULL); - ssize_t idx_size = blob_reserve_bytes(blob, sizeof(uintptr_t)); + ssize_t idx_size = blob_reserve_intptr(blob); struct shader_info info = nir->info; blob_write_string(blob, info.name); |