diff --git a/src/amd/common/ac_nir_lower_image_opcodes_cdna.c b/src/amd/common/ac_nir_lower_image_opcodes_cdna.c index a1586224df3..91c78c6560f 100644 --- a/src/amd/common/ac_nir_lower_image_opcodes_cdna.c +++ b/src/amd/common/ac_nir_lower_image_opcodes_cdna.c @@ -53,6 +53,9 @@ static nir_def *lower_image_coords(nir_builder *b, nir_def *desc, nir_def *coord unsigned num_coord_components = get_coord_components(dim, is_array); nir_def *zero = nir_imm_int(b, 0); + if (coord->bit_size == 16) + coord = nir_u2u32(b, coord); + /* Get coordinates. */ nir_def *x = nir_channel(b, coord, 0); nir_def *y = num_coord_components >= 2 ? nir_channel(b, coord, 1) : NULL; @@ -157,6 +160,9 @@ static nir_def *emulated_tex_level_zero(nir_builder *b, unsigned num_components, nir_def *fp_one = nir_imm_floatN_t(b, 1, bit_size); nir_def *coord[3] = {0}; + if (coord_vec->bit_size == 16) + coord_vec = nir_f2f32(b, coord_vec); + assert(num_coord_components <= 3); for (unsigned i = 0; i < num_coord_components; i++) coord[i] = nir_channel(b, coord_vec, i);