Mesa (master): intel/fs: Add an option to lower variable group size in backend
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri May 1 20:48:17 UTC 2020
Module: Mesa
Branch: master
Commit: 4b000b491a49afb12612a3cfeebeca9a528cd5e3
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4b000b491a49afb12612a3cfeebeca9a528cd5e3
Author: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
Date: Tue Apr 28 09:47:45 2020 -0700
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 at whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4794>
---
src/intel/compiler/brw_compiler.h | 6 ++++++
src/intel/compiler/brw_fs_nir.cpp | 5 ++++-
src/mesa/drivers/dri/i965/intel_screen.c | 1 +
3 files changed, 11 insertions(+), 1 deletion(-)
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);
More information about the mesa-commit
mailing list