diff options
author | Caio Marcelo de Oliveira Filho <[email protected]> | 2020-04-28 09:47:45 -0700 |
---|---|---|
committer | Caio Marcelo de Oliveira Filho <[email protected]> | 2020-05-01 12:50:28 -0700 |
commit | 4b000b491a49afb12612a3cfeebeca9a528cd5e3 (patch) | |
tree | e425f3a9786f9a23e280326dd9166f677ec4238f | |
parent | 0edb58a84eb4a2b74b1ce55fea9dc06386c56bf6 (diff) |
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 <[email protected]>
Reviewed-by: Jordan Justen <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4794>
-rw-r--r-- | src/intel/compiler/brw_compiler.h | 6 | ||||
-rw-r--r-- | src/intel/compiler/brw_fs_nir.cpp | 5 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_screen.c | 1 |
3 files changed, 11 insertions, 1 deletions
diff --git a/src/intel/compiler/brw_compiler.h b/src/intel/compiler/brw_compiler.h index 1045ef5076f..43a7c9918ea 100644 --- a/src/intel/compiler/brw_compiler.h +++ b/src/intel/compiler/brw_compiler.h @@ -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; }; /** diff --git a/src/intel/compiler/brw_fs_nir.cpp b/src/intel/compiler/brw_fs_nir.cpp index e4fbaa51050..852626c6172 100644 --- a/src/intel/compiler/brw_fs_nir.cpp +++ b/src/intel/compiler/brw_fs_nir.cpp @@ -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]); diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index 822393f6731..f2fbe70cada 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -2823,6 +2823,7 @@ __DRIconfig **intelInitScreen2(__DRIscreen *dri_screen) screen->compiler->supports_pull_constants = true; screen->compiler->compact_params = true; + screen->compiler->lower_variable_group_size = true; screen->has_exec_fence = intel_get_boolean(screen, I915_PARAM_HAS_EXEC_FENCE); |