nak: Handle location_frac for FS outputs in nak_from_nir.rs

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998>
This commit is contained in:
Faith Ekstrand 2023-09-30 21:28:04 -05:00 committed by Marge Bot
parent 1251bb7588
commit aa76c86042
2 changed files with 6 additions and 6 deletions

View file

@ -1728,10 +1728,12 @@ impl<'a> ShaderFromNir<'a> {
*/
let data = *self.get_src(&srcs[0]).as_ssa().unwrap();
assert!(offset_as_u32 == Some(0));
let base: usize = intrin.base().try_into().unwrap();
let base: u8 = intrin.base().try_into().unwrap();
let comp: u8 = intrin.component().try_into().unwrap();
assert!(base % 4 == 0);
let out_idx = usize::from((base / 4) + comp);
for c in 0..usize::from(comps) {
self.fs_out_regs[(base / 4) + c] = data[c];
self.fs_out_regs[out_idx + c] = data[c];
}
}
ShaderIoInfo::Vtg(io) => {

View file

@ -519,8 +519,7 @@ nak_nir_lower_fs_outputs(nir_shader *nir)
break;
case FRAG_RESULT_COLOR:
assert(var->data.index == 0);
var->data.driver_location =
NAK_FS_OUT_COLOR0 + var->data.location_frac * 4;
var->data.driver_location = NAK_FS_OUT_COLOR0;
break;
case FRAG_RESULT_SAMPLE_MASK:
assert(var->data.index == 0);
@ -532,8 +531,7 @@ nak_nir_lower_fs_outputs(nir_shader *nir)
assert(var->data.index < 2);
const unsigned out =
(var->data.location - FRAG_RESULT_DATA0) + var->data.index;
var->data.driver_location =
NAK_FS_OUT_COLOR(out) + var->data.location_frac * 4;
var->data.driver_location = NAK_FS_OUT_COLOR(out);
break;
}
}