if (so_output.start_component)
spirv_builder_emit_component(&ctx->builder, var_id, so_output.start_component);
- uint32_t *key = ralloc_size(NULL, sizeof(uint32_t));
+ uint32_t *key = ralloc_size(ctx->mem_ctx, sizeof(uint32_t));
*key = (uint32_t)so_output.register_index << 2 | so_output.start_component;
_mesa_hash_table_insert(ctx->so_outputs, key, (void *)(intptr_t)var_id);
struct ntv_context ctx = {};
ctx.mem_ctx = ralloc_context(NULL);
+ ctx.builder.mem_ctx = ctx.mem_ctx;
switch (s->info.stage) {
case MESA_SHADER_VERTEX:
nir_function_impl *entry = nir_shader_get_entrypoint(s);
nir_metadata_require(entry, nir_metadata_block_index);
- ctx.defs = (SpvId *)malloc(sizeof(SpvId) * entry->ssa_alloc);
+ ctx.defs = ralloc_array_size(ctx.mem_ctx,
+ sizeof(SpvId), entry->ssa_alloc);
if (!ctx.defs)
goto fail;
ctx.num_defs = entry->ssa_alloc;
nir_index_local_regs(entry);
- ctx.regs = malloc(sizeof(SpvId) * entry->reg_alloc);
+ ctx.regs = ralloc_array_size(ctx.mem_ctx,
+ sizeof(SpvId), entry->reg_alloc);
if (!ctx.regs)
goto fail;
ctx.num_regs = entry->reg_alloc;
- SpvId *block_ids = (SpvId *)malloc(sizeof(SpvId) * entry->num_blocks);
+ SpvId *block_ids = ralloc_array_size(ctx.mem_ctx,
+ sizeof(SpvId), entry->num_blocks);
if (!block_ids)
goto fail;
emit_cf_list(&ctx, &entry->body);
- free(ctx.defs);
-
if (so_info)
emit_so_outputs(&ctx, so_info, local_so_info);