mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 08:50:13 +01:00
microsoft/compiler: Set src/dest nir types on image intrinsics when deducing format
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26104>
This commit is contained in:
parent
2011b678c5
commit
405dead1b7
1 changed files with 14 additions and 2 deletions
|
|
@ -2584,6 +2584,18 @@ guess_image_format_for_var(nir_shader *s, nir_variable *var)
|
|||
return true;
|
||||
}
|
||||
|
||||
static void
|
||||
update_intrinsic_format_and_type(nir_intrinsic_instr *intr, nir_variable *var)
|
||||
{
|
||||
nir_intrinsic_set_format(intr, var->data.image.format);
|
||||
nir_alu_type alu_type =
|
||||
nir_get_nir_type_for_glsl_base_type(glsl_get_sampler_result_type(glsl_without_array(var->type)));
|
||||
if (nir_intrinsic_has_src_type(intr))
|
||||
nir_intrinsic_set_src_type(intr, alu_type);
|
||||
else if (nir_intrinsic_has_dest_type(intr))
|
||||
nir_intrinsic_set_dest_type(intr, alu_type);
|
||||
}
|
||||
|
||||
static bool
|
||||
update_intrinsic_formats(nir_builder *b, nir_intrinsic_instr *intr,
|
||||
void *data)
|
||||
|
|
@ -2594,7 +2606,7 @@ update_intrinsic_formats(nir_builder *b, nir_intrinsic_instr *intr,
|
|||
if (deref) {
|
||||
nir_variable *var = nir_deref_instr_get_variable(deref);
|
||||
if (var)
|
||||
nir_intrinsic_set_format(intr, var->data.image.format);
|
||||
update_intrinsic_format_and_type(intr, var);
|
||||
return var != NULL;
|
||||
}
|
||||
|
||||
|
|
@ -2605,7 +2617,7 @@ update_intrinsic_formats(nir_builder *b, nir_intrinsic_instr *intr,
|
|||
nir_foreach_variable_with_modes(var, b->shader, nir_var_image) {
|
||||
if (var->data.binding <= binding &&
|
||||
var->data.binding + aoa_size(var->type) > binding) {
|
||||
nir_intrinsic_set_format(intr, var->data.image.format);
|
||||
update_intrinsic_format_and_type(intr, var);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue