From 172e8e42c4eb898a80e3b967d495b4b8619905c7 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Wed, 1 Nov 2017 08:02:34 -0700 Subject: [PATCH] intel/fs: Don't allocate a param array for zero push constants MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Thanks to the ralloc invariant of "any pointer returned from ralloc can be used as a context", calling ralloc_size with a size of zero will cause it to allocate at least a header. If we don't have any push constants, then NULL is perfectly acceptable (and even preferred). Reviewed-by: Lionel Landwerlin Reviewed-by: Tapani Pälli --- src/intel/compiler/brw_fs.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp index e2176827a64..afad6805d29 100644 --- a/src/intel/compiler/brw_fs.cpp +++ b/src/intel/compiler/brw_fs.cpp @@ -2092,7 +2092,14 @@ fs_visitor::assign_constant_locations() */ uint32_t *param = stage_prog_data->param; stage_prog_data->nr_params = num_push_constants; - stage_prog_data->param = ralloc_array(mem_ctx, uint32_t, num_push_constants); + if (num_push_constants) { + stage_prog_data->param = ralloc_array(mem_ctx, uint32_t, + num_push_constants); + } else { + stage_prog_data->param = NULL; + } + assert(stage_prog_data->nr_pull_params == 0); + assert(stage_prog_data->pull_param == NULL); if (num_pull_constants > 0) { stage_prog_data->nr_pull_params = num_pull_constants; stage_prog_data->pull_param = ralloc_array(mem_ctx, uint32_t, -- 2.30.2