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:
@@ -125,6 +125,12 @@ struct brw_compiler {
|
|||||||
* back-end compiler.
|
* back-end compiler.
|
||||||
*/
|
*/
|
||||||
bool compact_params;
|
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;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -105,7 +105,8 @@ fs_visitor::nir_setup_uniforms()
|
|||||||
assert(uniforms == prog_data->nr_params);
|
assert(uniforms == prog_data->nr_params);
|
||||||
|
|
||||||
uint32_t *param;
|
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);
|
param = brw_stage_prog_data_add_params(prog_data, 3);
|
||||||
for (unsigned i = 0; i < 3; i++) {
|
for (unsigned i = 0; i < 3; i++) {
|
||||||
param[i] = (BRW_PARAM_BUILTIN_WORK_GROUP_SIZE_X + 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: {
|
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++) {
|
for (unsigned i = 0; i < 3; i++) {
|
||||||
bld.MOV(retype(offset(dest, bld, i), BRW_REGISTER_TYPE_UD),
|
bld.MOV(retype(offset(dest, bld, i), BRW_REGISTER_TYPE_UD),
|
||||||
group_size[i]);
|
group_size[i]);
|
||||||
|
@@ -2823,6 +2823,7 @@ __DRIconfig **intelInitScreen2(__DRIscreen *dri_screen)
|
|||||||
|
|
||||||
screen->compiler->supports_pull_constants = true;
|
screen->compiler->supports_pull_constants = true;
|
||||||
screen->compiler->compact_params = true;
|
screen->compiler->compact_params = true;
|
||||||
|
screen->compiler->lower_variable_group_size = true;
|
||||||
|
|
||||||
screen->has_exec_fence =
|
screen->has_exec_fence =
|
||||||
intel_get_boolean(screen, I915_PARAM_HAS_EXEC_FENCE);
|
intel_get_boolean(screen, I915_PARAM_HAS_EXEC_FENCE);
|
||||||
|
Reference in New Issue
Block a user