From 52d2b28f7f107fbaff023533a15058055fa73bf0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 7 Oct 2016 00:34:26 +0200 Subject: [PATCH] ralloc: use rzalloc where it's necessary MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit No change in behavior. ralloc_size is equivalent to rzalloc_size. That will change though. Calls not switched to rzalloc_size: - ralloc_vasprintf - glsl_type::name allocation (it's filled with snprintf) - C++ classes where valgrind didn't show uninitialized values I switched most of non-glsl stuff to rzalloc without checking whether it's really needed. Reviewed-by: Edward O'Callaghan Tested-by: Edmondo Tommasina Reviewed-by: Nicolai Hähnle --- src/compiler/glsl/ast.h | 2 +- src/compiler/glsl/ast_to_hir.cpp | 4 ++-- src/compiler/glsl/glsl_parser_extras.h | 2 +- src/compiler/glsl/link_uniform_blocks.cpp | 2 +- src/compiler/glsl/list.h | 2 +- src/compiler/nir/nir.c | 8 +++++--- src/compiler/spirv/vtn_variables.c | 3 ++- src/gallium/drivers/freedreno/ir3/ir3.c | 2 +- src/gallium/drivers/vc4/vc4_cl.c | 2 +- src/gallium/drivers/vc4/vc4_program.c | 2 +- src/mesa/drivers/dri/i965/brw_state_batch.c | 5 +++-- 11 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h index 55f009ac857..063a9b43af0 100644 --- a/src/compiler/glsl/ast.h +++ b/src/compiler/glsl/ast.h @@ -49,7 +49,7 @@ struct YYLTYPE; */ class ast_node { public: - DECLARE_RALLOC_CXX_OPERATORS(ast_node); + DECLARE_RZALLOC_CXX_OPERATORS(ast_node); /** * Print an AST node in something approximating the original GLSL code diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index a9a1ba3c48c..24067b6ac0c 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -6639,8 +6639,8 @@ ast_process_struct_or_iface_block_members(exec_list *instructions, * the types to HIR. This ensures that structure definitions embedded in * other structure definitions or in interface blocks are processed. */ - glsl_struct_field *const fields = ralloc_array(state, glsl_struct_field, - decl_count); + glsl_struct_field *const fields = rzalloc_array(state, glsl_struct_field, + decl_count); bool first_member = true; bool first_member_has_explicit_location = false; diff --git a/src/compiler/glsl/glsl_parser_extras.h b/src/compiler/glsl/glsl_parser_extras.h index 5bdebf684bb..e50d08ad38c 100644 --- a/src/compiler/glsl/glsl_parser_extras.h +++ b/src/compiler/glsl/glsl_parser_extras.h @@ -76,7 +76,7 @@ struct _mesa_glsl_parse_state { _mesa_glsl_parse_state(struct gl_context *_ctx, gl_shader_stage stage, void *mem_ctx); - DECLARE_RALLOC_CXX_OPERATORS(_mesa_glsl_parse_state); + DECLARE_RZALLOC_CXX_OPERATORS(_mesa_glsl_parse_state); /** * Generate a string representing the GLSL version currently being compiled diff --git a/src/compiler/glsl/link_uniform_blocks.cpp b/src/compiler/glsl/link_uniform_blocks.cpp index c0bdfa934e0..1fc0e2d5109 100644 --- a/src/compiler/glsl/link_uniform_blocks.cpp +++ b/src/compiler/glsl/link_uniform_blocks.cpp @@ -310,7 +310,7 @@ create_buffer_blocks(void *mem_ctx, struct gl_context *ctx, /* Allocate storage to hold all of the information related to uniform * blocks that can be queried through the API. */ - struct gl_uniform_block *blocks = ralloc_array(mem_ctx, gl_uniform_block, num_blocks); + struct gl_uniform_block *blocks = rzalloc_array(mem_ctx, gl_uniform_block, num_blocks); gl_uniform_buffer_variable *variables = ralloc_array(blocks, gl_uniform_buffer_variable, num_variables); diff --git a/src/compiler/glsl/list.h b/src/compiler/glsl/list.h index b5b5b362afd..6afb9dcef94 100644 --- a/src/compiler/glsl/list.h +++ b/src/compiler/glsl/list.h @@ -56,7 +56,7 @@ struct exec_node { struct exec_node *prev; #ifdef __cplusplus - DECLARE_RALLOC_CXX_OPERATORS(exec_node) + DECLARE_RZALLOC_CXX_OPERATORS(exec_node) exec_node() : next(NULL), prev(NULL) { diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index 31f0bcb8d81..cfb032c68b9 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -448,9 +448,10 @@ nir_alu_instr * nir_alu_instr_create(nir_shader *shader, nir_op op) { unsigned num_srcs = nir_op_infos[op].num_inputs; + /* TODO: don't use rzalloc */ nir_alu_instr *instr = - ralloc_size(shader, - sizeof(nir_alu_instr) + num_srcs * sizeof(nir_alu_src)); + rzalloc_size(shader, + sizeof(nir_alu_instr) + num_srcs * sizeof(nir_alu_src)); instr_init(&instr->instr, nir_instr_type_alu); instr->op = op; @@ -486,8 +487,9 @@ nir_intrinsic_instr * nir_intrinsic_instr_create(nir_shader *shader, nir_intrinsic_op op) { unsigned num_srcs = nir_intrinsic_infos[op].num_srcs; + /* TODO: don't use rzalloc */ nir_intrinsic_instr *instr = - ralloc_size(shader, + rzalloc_size(shader, sizeof(nir_intrinsic_instr) + num_srcs * sizeof(nir_src)); instr_init(&instr->instr, nir_instr_type_intrinsic); diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c index c9744c4513d..bbcca146107 100644 --- a/src/compiler/spirv/vtn_variables.c +++ b/src/compiler/spirv/vtn_variables.c @@ -35,7 +35,8 @@ vtn_access_chain_extend(struct vtn_builder *b, struct vtn_access_chain *old, struct vtn_access_chain *chain; unsigned new_len = old->length + new_ids; - chain = ralloc_size(b, sizeof(*chain) + new_len * sizeof(chain->link[0])); + /* TODO: don't use rzalloc */ + chain = rzalloc_size(b, sizeof(*chain) + new_len * sizeof(chain->link[0])); chain->var = old->var; chain->length = new_len; diff --git a/src/gallium/drivers/freedreno/ir3/ir3.c b/src/gallium/drivers/freedreno/ir3/ir3.c index 78ec1cc483e..9f2116a520f 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3.c +++ b/src/gallium/drivers/freedreno/ir3/ir3.c @@ -40,7 +40,7 @@ */ void * ir3_alloc(struct ir3 *shader, int sz) { - return ralloc_size(shader, sz); + return rzalloc_size(shader, sz); /* TODO: don't use rzalloc */ } struct ir3 * ir3_create(struct ir3_compiler *compiler, diff --git a/src/gallium/drivers/vc4/vc4_cl.c b/src/gallium/drivers/vc4/vc4_cl.c index afb9987f400..91f51b02bb6 100644 --- a/src/gallium/drivers/vc4/vc4_cl.c +++ b/src/gallium/drivers/vc4/vc4_cl.c @@ -28,7 +28,7 @@ void vc4_init_cl(void *mem_ctx, struct vc4_cl *cl) { - cl->base = ralloc_size(mem_ctx, 1); + cl->base = rzalloc_size(mem_ctx, 1); /* TODO: don't use rzalloc */ cl->next = cl->base; cl->size = 0; } diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c index 11066c133b5..809c96dda3d 100644 --- a/src/gallium/drivers/vc4/vc4_program.c +++ b/src/gallium/drivers/vc4/vc4_program.c @@ -2518,7 +2518,7 @@ vc4_get_compiled_shader(struct vc4_context *vc4, enum qstage stage, qir_compile_destroy(c); struct vc4_key *dup_key; - dup_key = ralloc_size(shader, key_size); + dup_key = rzalloc_size(shader, key_size); /* TODO: don't use rzalloc */ memcpy(dup_key, key, key_size); _mesa_hash_table_insert(ht, dup_key, shader); diff --git a/src/mesa/drivers/dri/i965/brw_state_batch.c b/src/mesa/drivers/dri/i965/brw_state_batch.c index d79e0ea00c7..9658b48ca13 100644 --- a/src/mesa/drivers/dri/i965/brw_state_batch.c +++ b/src/mesa/drivers/dri/i965/brw_state_batch.c @@ -46,9 +46,10 @@ brw_track_state_batch(struct brw_context *brw, if (!brw->state_batch_list) { /* Our structs are always aligned to at least 32 bytes, so * our array doesn't need to be any larger + * TODO: don't use rzalloc */ - brw->state_batch_list = ralloc_size(brw, sizeof(*brw->state_batch_list) * - batch->bo->size / 32); + brw->state_batch_list = rzalloc_size(brw, sizeof(*brw->state_batch_list) * + batch->bo->size / 32); } brw->state_batch_list[brw->state_batch_count].offset = offset; -- 2.30.2