var->data.how_declared = nir_var_declared_normally;
if ((mode == nir_var_shader_in &&
- shader->info.stage != MESA_SHADER_VERTEX) ||
+ shader->info.stage != MESA_SHADER_VERTEX &&
+ shader->info.stage != MESA_SHADER_KERNEL) ||
(mode == nir_var_shader_out &&
shader->info.stage != MESA_SHADER_FRAGMENT))
var->data.interpolation = INTERP_MODE_SMOOTH;
{
switch (cursor.option) {
case nir_cursor_before_block:
- assert(nir_cf_node_prev(&cursor.block->cf_node) == NULL ||
- nir_cf_node_prev(&cursor.block->cf_node)->type != nir_cf_node_block);
if (exec_list_is_empty(&cursor.block->instr_list)) {
/* Empty block. After is as good as before. */
cursor.option = nir_cursor_after_block;
unsigned bit_size, const char *name)
{
def->name = ralloc_strdup(instr, name);
+ def->live_index = UINT_MAX; /* Something clearly OOB */
def->parent_instr = instr;
list_inithead(&def->uses);
list_inithead(&def->if_uses);
return nir_intrinsic_load_local_group_size;
case SYSTEM_VALUE_GLOBAL_INVOCATION_ID:
return nir_intrinsic_load_global_invocation_id;
+ case SYSTEM_VALUE_BASE_GLOBAL_INVOCATION_ID:
+ return nir_intrinsic_load_base_global_invocation_id;
case SYSTEM_VALUE_GLOBAL_INVOCATION_INDEX:
return nir_intrinsic_load_global_invocation_index;
case SYSTEM_VALUE_WORK_DIM:
return SYSTEM_VALUE_LOCAL_GROUP_SIZE;
case nir_intrinsic_load_global_invocation_id:
return SYSTEM_VALUE_GLOBAL_INVOCATION_ID;
+ case nir_intrinsic_load_base_global_invocation_id:
+ return SYSTEM_VALUE_BASE_GLOBAL_INVOCATION_ID;
+ case nir_intrinsic_load_global_invocation_index:
+ return SYSTEM_VALUE_GLOBAL_INVOCATION_INDEX;
+ case nir_intrinsic_load_work_dim:
+ return SYSTEM_VALUE_WORK_DIM;
case nir_intrinsic_load_user_data_amd:
return SYSTEM_VALUE_USER_DATA_AMD;
default: