mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 15:30:14 +01:00
ttn: Update shader->info as we generate code.
We could use the nir_shader_gather_info() pass to update it after the fact, but this is what glsl_to_nir and prog_to_nir do. Reviewed-by: Rob Clark <robclark@freedesktop.org>
This commit is contained in:
parent
7b9a0f4e38
commit
4d0b2c7aaa
1 changed files with 13 additions and 0 deletions
|
|
@ -364,6 +364,10 @@ ttn_emit_declaration(struct ttn_compile *c)
|
||||||
}
|
}
|
||||||
|
|
||||||
exec_list_push_tail(&b->shader->inputs, &var->node);
|
exec_list_push_tail(&b->shader->inputs, &var->node);
|
||||||
|
|
||||||
|
for (int i = 0; i < array_size; i++)
|
||||||
|
b->shader->info.inputs_read |= 1 << (var->data.location + i);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case TGSI_FILE_OUTPUT: {
|
case TGSI_FILE_OUTPUT: {
|
||||||
int semantic_name = decl->Semantic.Name;
|
int semantic_name = decl->Semantic.Name;
|
||||||
|
|
@ -426,6 +430,9 @@ ttn_emit_declaration(struct ttn_compile *c)
|
||||||
}
|
}
|
||||||
|
|
||||||
exec_list_push_tail(&b->shader->outputs, &var->node);
|
exec_list_push_tail(&b->shader->outputs, &var->node);
|
||||||
|
|
||||||
|
for (int i = 0; i < array_size; i++)
|
||||||
|
b->shader->info.outputs_written |= 1 << (var->data.location + i);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TGSI_FILE_CONSTANT:
|
case TGSI_FILE_CONSTANT:
|
||||||
|
|
@ -571,6 +578,10 @@ ttn_src_for_file_and_index(struct ttn_compile *c, unsigned file, unsigned index,
|
||||||
nir_builder_instr_insert(b, &load->instr);
|
nir_builder_instr_insert(b, &load->instr);
|
||||||
|
|
||||||
src = nir_src_for_ssa(&load->dest.ssa);
|
src = nir_src_for_ssa(&load->dest.ssa);
|
||||||
|
|
||||||
|
b->shader->info.system_values_read |=
|
||||||
|
(1 << nir_system_value_from_intrinsic(op));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1036,6 +1047,7 @@ ttn_kill(nir_builder *b, nir_op op, nir_alu_dest dest, nir_ssa_def **src)
|
||||||
nir_intrinsic_instr *discard =
|
nir_intrinsic_instr *discard =
|
||||||
nir_intrinsic_instr_create(b->shader, nir_intrinsic_discard);
|
nir_intrinsic_instr_create(b->shader, nir_intrinsic_discard);
|
||||||
nir_builder_instr_insert(b, &discard->instr);
|
nir_builder_instr_insert(b, &discard->instr);
|
||||||
|
b->shader->info.fs.uses_discard = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
@ -1048,6 +1060,7 @@ ttn_kill_if(nir_builder *b, nir_op op, nir_alu_dest dest, nir_ssa_def **src)
|
||||||
nir_intrinsic_instr_create(b->shader, nir_intrinsic_discard_if);
|
nir_intrinsic_instr_create(b->shader, nir_intrinsic_discard_if);
|
||||||
discard->src[0] = nir_src_for_ssa(cmp);
|
discard->src[0] = nir_src_for_ssa(cmp);
|
||||||
nir_builder_instr_insert(b, &discard->instr);
|
nir_builder_instr_insert(b, &discard->instr);
|
||||||
|
b->shader->info.fs.uses_discard = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue