And generate the gather mask constant entries from our uniform data. Data generated here will later be packed together with UBO constants.
Signed-off-by: Abdiel Janulgue <abdiel.janul...@linux.intel.com> --- src/mesa/drivers/dri/i965/brw_fs.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 7cc88ea..071ac59 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -2272,7 +2272,10 @@ fs_visitor::assign_constant_locations() } } - stage_prog_data->nr_params = num_push_constants; + stage_prog_data->nr_params = 0; + + unsigned const_reg_access[uniforms]; + memset(const_reg_access, 0, sizeof(const_reg_access)); /* Up until now, the param[] array has been indexed by reg + reg_offset * of UNIFORM registers. Condense it to only contain the uniforms we @@ -2286,6 +2289,18 @@ fs_visitor::assign_constant_locations() assert(remapped <= (int)i); stage_prog_data->param[remapped] = stage_prog_data->param[i]; + int p = stage_prog_data->nr_params++; + + /* access table for uniform registers*/ + const_reg_access[(ALIGN(prog_data->nr_params, 4) / 4) - 1] |= (1 << (p % 4)); + } + + int num_consts = ALIGN(prog_data->nr_params, 4) / 4; + for (int i = 0; i < num_consts; i++) { + int p = stage_prog_data->nr_gather_table++; + stage_prog_data->gather_table[p].reg = -1; + stage_prog_data->gather_table[p].channel_mask = + const_reg_access[i]; } } -- 1.9.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev