At this point all drivers are doing this math on their own -- since
most of them need to cover the variable group size case, in which at
compile time the group size (and number of threads) is not defined.
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4504>
unsigned local_size[3];
unsigned max_variable_local_size;
unsigned simd_size;
unsigned local_size[3];
unsigned max_variable_local_size;
unsigned simd_size;
unsigned slm_size;
bool uses_barrier;
bool uses_num_work_groups;
unsigned slm_size;
bool uses_barrier;
bool uses_num_work_groups;
-static void
-cs_set_simd_size(struct brw_cs_prog_data *cs_prog_data, unsigned size)
-{
- cs_prog_data->simd_size = size;
-
- unsigned group_size;
- if (cs_prog_data->uses_variable_group_size) {
- group_size = cs_prog_data->max_variable_local_size;
- } else {
- group_size = cs_prog_data->local_size[0] *
- cs_prog_data->local_size[1] *
- cs_prog_data->local_size[2];
- }
- cs_prog_data->threads = DIV_ROUND_UP(group_size, size);
-}
-
static nir_shader *
compile_cs_to_nir(const struct brw_compiler *compiler,
void *mem_ctx,
static nir_shader *
compile_cs_to_nir(const struct brw_compiler *compiler,
void *mem_ctx,
assert(v8->max_dispatch_width >= 32);
v = v8;
assert(v8->max_dispatch_width >= 32);
v = v8;
- cs_set_simd_size(prog_data, 8);
+ prog_data->simd_size = 8;
cs_fill_push_const_info(compiler->devinfo, prog_data);
}
}
cs_fill_push_const_info(compiler->devinfo, prog_data);
}
}
assert(v16->max_dispatch_width >= 32);
v = v16;
assert(v16->max_dispatch_width >= 32);
v = v16;
- cs_set_simd_size(prog_data, 16);
+ prog_data->simd_size = 16;
cs_fill_push_const_info(compiler->devinfo, prog_data);
}
}
cs_fill_push_const_info(compiler->devinfo, prog_data);
}
}
- cs_set_simd_size(prog_data, 32);
+ prog_data->simd_size = 32;
cs_fill_push_const_info(compiler->devinfo, prog_data);
}
}
cs_fill_push_const_info(compiler->devinfo, prog_data);
}
}
const unsigned threads =
DIV_ROUND_UP(brw_cs_group_size(brw), cs_prog_data->simd_size);
const unsigned threads =
DIV_ROUND_UP(brw_cs_group_size(brw), cs_prog_data->simd_size);
- if (!cs_prog_data->uses_variable_group_size)
- assert(cs_prog_data->threads == threads);
-
if (INTEL_DEBUG & DEBUG_SHADER_TIME) {
brw_emit_buffer_surface_state(
brw, &stage_state->surf_offset[
if (INTEL_DEBUG & DEBUG_SHADER_TIME) {
brw_emit_buffer_surface_state(
brw, &stage_state->surf_offset[