mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 08:50:13 +01:00
ttn: set the correct sampler declaration type in the presense of txs and lod
We used the result type of lod and txs for sampler declarations, which broke following instructions that are not lod and txs. Use the sampler type from TGSI if it's present, not the result type of lod and txs. Reviewed-by: Emma Anholt <emma@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17692>
This commit is contained in:
parent
23a2698e75
commit
c7e155628d
1 changed files with 11 additions and 7 deletions
|
|
@ -1436,19 +1436,20 @@ ttn_tex(struct ttn_compile *c, nir_alu_dest dest, nir_ssa_def **src)
|
|||
*/
|
||||
sview = tgsi_inst->Src[samp].Register.Index;
|
||||
|
||||
nir_alu_type sampler_type =
|
||||
sview < c->num_samp_types ? c->samp_types[sview] : nir_type_float32;
|
||||
|
||||
if (op == nir_texop_lod) {
|
||||
instr->dest_type = nir_type_float32;
|
||||
} else if (sview < c->num_samp_types) {
|
||||
instr->dest_type = c->samp_types[sview];
|
||||
} else {
|
||||
instr->dest_type = nir_type_float32;
|
||||
instr->dest_type = sampler_type;
|
||||
}
|
||||
|
||||
nir_variable *var =
|
||||
get_sampler_var(c, sview, instr->sampler_dim,
|
||||
instr->is_shadow,
|
||||
instr->is_array,
|
||||
base_type_for_alu_type(instr->dest_type),
|
||||
base_type_for_alu_type(sampler_type),
|
||||
op);
|
||||
|
||||
nir_deref_instr *deref = nir_build_deref_var(b, var);
|
||||
|
|
@ -1609,13 +1610,16 @@ ttn_txq(struct ttn_compile *c, nir_alu_dest dest, nir_ssa_def **src)
|
|||
&qlv->sampler_dim, &qlv->is_shadow, &qlv->is_array);
|
||||
|
||||
assert(tgsi_inst->Src[1].Register.File == TGSI_FILE_SAMPLER);
|
||||
int tex_index = tgsi_inst->Src[1].Register.Index;
|
||||
int sview = tgsi_inst->Src[1].Register.Index;
|
||||
|
||||
nir_alu_type sampler_type =
|
||||
sview < c->num_samp_types ? c->samp_types[sview] : nir_type_float32;
|
||||
|
||||
nir_variable *var =
|
||||
get_sampler_var(c, tex_index, txs->sampler_dim,
|
||||
get_sampler_var(c, sview, txs->sampler_dim,
|
||||
txs->is_shadow,
|
||||
txs->is_array,
|
||||
base_type_for_alu_type(txs->dest_type),
|
||||
base_type_for_alu_type(sampler_type),
|
||||
nir_texop_txs);
|
||||
|
||||
nir_deref_instr *deref = nir_build_deref_var(b, var);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue