summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConnor Abbott <cwabbott0@gmail.com>2017-09-22 10:03:16 -0400
committerConnor Abbott <cwabbott0@gmail.com>2017-09-22 10:03:54 -0400
commitc47fa33eeb578f3d377722506b2f6732545ff253 (patch)
treee3e6030aaa85191f188de76a36ea31ecbfb0a8ed
parent89067266f4a9b41f7ce3748683b203e7ea76a842 (diff)
fixup nir_serializenir-serialize
-rw-r--r--src/compiler/nir/nir_serialize.c10
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);