intel/fs: Add an option to lower variable group size in backend

Adding this since Iris will handle variable group size parameters by
itself.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4794>
This commit is contained in:
Caio Marcelo de Oliveira Filho
2020-04-28 09:47:45 -07:00
parent 0edb58a84e
commit 4b000b491a
3 changed files with 11 additions and 1 deletions

View File

@@ -125,6 +125,12 @@ struct brw_compiler {
* back-end compiler.
*/
bool compact_params;
/**
* Whether or not the driver wants variable group size to be lowered by the
* back-end compiler.
*/
bool lower_variable_group_size;
};
/**

View File

@@ -105,7 +105,8 @@ fs_visitor::nir_setup_uniforms()
assert(uniforms == prog_data->nr_params);
uint32_t *param;
if (nir->info.cs.local_size_variable) {
if (nir->info.cs.local_size_variable &&
compiler->lower_variable_group_size) {
param = brw_stage_prog_data_add_params(prog_data, 3);
for (unsigned i = 0; i < 3; i++) {
param[i] = (BRW_PARAM_BUILTIN_WORK_GROUP_SIZE_X + i);
@@ -3869,6 +3870,8 @@ fs_visitor::nir_emit_cs_intrinsic(const fs_builder &bld,
}
case nir_intrinsic_load_local_group_size: {
assert(compiler->lower_variable_group_size);
assert(nir->info.cs.local_size_variable);
for (unsigned i = 0; i < 3; i++) {
bld.MOV(retype(offset(dest, bld, i), BRW_REGISTER_TYPE_UD),
group_size[i]);