ralloc: use rzalloc where it's necessary

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 <funfunctor@folklore1984.net>
Tested-by: Edmondo Tommasina <edmondo.tommasina@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
Marek Olšák
2016-10-07 00:34:26 +02:00
parent 9454f7c0ef
commit 52d2b28f7f
11 changed files with 19 additions and 15 deletions

View File

@@ -49,7 +49,7 @@ struct YYLTYPE;
*/ */
class ast_node { class ast_node {
public: public:
DECLARE_RALLOC_CXX_OPERATORS(ast_node); DECLARE_RZALLOC_CXX_OPERATORS(ast_node);
/** /**
* Print an AST node in something approximating the original GLSL code * Print an AST node in something approximating the original GLSL code

View File

@@ -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 * the types to HIR. This ensures that structure definitions embedded in
* other structure definitions or in interface blocks are processed. * other structure definitions or in interface blocks are processed.
*/ */
glsl_struct_field *const fields = ralloc_array(state, glsl_struct_field, glsl_struct_field *const fields = rzalloc_array(state, glsl_struct_field,
decl_count); decl_count);
bool first_member = true; bool first_member = true;
bool first_member_has_explicit_location = false; bool first_member_has_explicit_location = false;

View File

@@ -76,7 +76,7 @@ struct _mesa_glsl_parse_state {
_mesa_glsl_parse_state(struct gl_context *_ctx, gl_shader_stage stage, _mesa_glsl_parse_state(struct gl_context *_ctx, gl_shader_stage stage,
void *mem_ctx); 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 * Generate a string representing the GLSL version currently being compiled

View File

@@ -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 /* Allocate storage to hold all of the information related to uniform
* blocks that can be queried through the API. * 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 = gl_uniform_buffer_variable *variables =
ralloc_array(blocks, gl_uniform_buffer_variable, num_variables); ralloc_array(blocks, gl_uniform_buffer_variable, num_variables);

View File

@@ -56,7 +56,7 @@ struct exec_node {
struct exec_node *prev; struct exec_node *prev;
#ifdef __cplusplus #ifdef __cplusplus
DECLARE_RALLOC_CXX_OPERATORS(exec_node) DECLARE_RZALLOC_CXX_OPERATORS(exec_node)
exec_node() : next(NULL), prev(NULL) exec_node() : next(NULL), prev(NULL)
{ {

View File

@@ -448,9 +448,10 @@ nir_alu_instr *
nir_alu_instr_create(nir_shader *shader, nir_op op) nir_alu_instr_create(nir_shader *shader, nir_op op)
{ {
unsigned num_srcs = nir_op_infos[op].num_inputs; unsigned num_srcs = nir_op_infos[op].num_inputs;
/* TODO: don't use rzalloc */
nir_alu_instr *instr = nir_alu_instr *instr =
ralloc_size(shader, rzalloc_size(shader,
sizeof(nir_alu_instr) + num_srcs * sizeof(nir_alu_src)); sizeof(nir_alu_instr) + num_srcs * sizeof(nir_alu_src));
instr_init(&instr->instr, nir_instr_type_alu); instr_init(&instr->instr, nir_instr_type_alu);
instr->op = op; instr->op = op;
@@ -486,8 +487,9 @@ nir_intrinsic_instr *
nir_intrinsic_instr_create(nir_shader *shader, nir_intrinsic_op op) nir_intrinsic_instr_create(nir_shader *shader, nir_intrinsic_op op)
{ {
unsigned num_srcs = nir_intrinsic_infos[op].num_srcs; unsigned num_srcs = nir_intrinsic_infos[op].num_srcs;
/* TODO: don't use rzalloc */
nir_intrinsic_instr *instr = nir_intrinsic_instr *instr =
ralloc_size(shader, rzalloc_size(shader,
sizeof(nir_intrinsic_instr) + num_srcs * sizeof(nir_src)); sizeof(nir_intrinsic_instr) + num_srcs * sizeof(nir_src));
instr_init(&instr->instr, nir_instr_type_intrinsic); instr_init(&instr->instr, nir_instr_type_intrinsic);

View File

@@ -35,7 +35,8 @@ vtn_access_chain_extend(struct vtn_builder *b, struct vtn_access_chain *old,
struct vtn_access_chain *chain; struct vtn_access_chain *chain;
unsigned new_len = old->length + new_ids; 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->var = old->var;
chain->length = new_len; chain->length = new_len;

View File

@@ -40,7 +40,7 @@
*/ */
void * ir3_alloc(struct ir3 *shader, int sz) 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, struct ir3 * ir3_create(struct ir3_compiler *compiler,

View File

@@ -28,7 +28,7 @@
void void
vc4_init_cl(void *mem_ctx, struct vc4_cl *cl) 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->next = cl->base;
cl->size = 0; cl->size = 0;
} }

View File

@@ -2518,7 +2518,7 @@ vc4_get_compiled_shader(struct vc4_context *vc4, enum qstage stage,
qir_compile_destroy(c); qir_compile_destroy(c);
struct vc4_key *dup_key; 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); memcpy(dup_key, key, key_size);
_mesa_hash_table_insert(ht, dup_key, shader); _mesa_hash_table_insert(ht, dup_key, shader);

View File

@@ -46,9 +46,10 @@ brw_track_state_batch(struct brw_context *brw,
if (!brw->state_batch_list) { if (!brw->state_batch_list) {
/* Our structs are always aligned to at least 32 bytes, so /* Our structs are always aligned to at least 32 bytes, so
* our array doesn't need to be any larger * 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) * brw->state_batch_list = rzalloc_size(brw, sizeof(*brw->state_batch_list) *
batch->bo->size / 32); batch->bo->size / 32);
} }
brw->state_batch_list[brw->state_batch_count].offset = offset; brw->state_batch_list[brw->state_batch_count].offset = offset;