Merge branch 'r600fixcaymanaddressboundtests' into 'main'

r600: fix cayman address bound tests

See merge request mesa/mesa!38952
This commit is contained in:
Patrick Lerda 2025-12-20 00:49:17 +00:00
commit adbd2bfbcb

View file

@ -22,15 +22,36 @@ r600_legalize_image_load_store_impl(nir_builder *b,
b->cursor = nir_before_instr(instr);
auto ir = nir_instr_as_intrinsic(instr);
nir_def *default_value = nir_imm_vec4(b, 0.0, 0.0, 0.0, 0.0);
nir_def *default_value, *zero_value;
nir_def *result = NIR_LOWER_INSTR_PROGRESS_REPLACE;
bool load_value = ir->intrinsic != nir_intrinsic_image_store;
if (load_value)
default_value =
nir_imm_zero(b, ir->def.num_components, ir->def.bit_size);
if (load_value) {
const enum pipe_format format = nir_intrinsic_format(ir);
zero_value = nir_imm_zero(b, ir->def.num_components, ir->def.bit_size);
if (ir->def.num_components == 4 && !util_format_has_alpha(format)) {
const nir_alu_type type =
nir_alu_type_get_base_type(nir_intrinsic_dest_type(ir));
switch (type) {
case nir_type_int:
case nir_type_uint:
default_value = nir_imm_ivec4_intN(b, 0, 0, 0, 1, ir->def.bit_size);
break;
case nir_type_float:
default:
default_value = nir_imm_vec4(b, 0.0, 0.0, 0.0, 1.0);
}
} else {
default_value = zero_value;
}
} else {
default_value = zero_value = nir_imm_vec4(b, 0.0, 0.0, 0.0, 0.0);
}
auto image_exists =
nir_ult_imm(b, ir->src[0].ssa, b->shader->info.num_images);
@ -140,7 +161,7 @@ r600_legalize_image_load_store_impl(nir_builder *b,
nir_pop_if(b, else_exists);
if (load_value)
result = nir_if_phi(b, result, default_value);
result = nir_if_phi(b, result, zero_value);
{
nir_cf_list cf_list;