mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 01:00:10 +01:00
intel/compiler/fs: Fix application of cmod and saturate to LINE/MAC pair
This isn't technically broken, but the next patch will make this function report whether it generated multiple instructions, and that information will be used to disable the application of conditional mod by the generic code. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
2cff324210
commit
b1afdf9fc1
1 changed files with 11 additions and 2 deletions
|
|
@ -673,13 +673,22 @@ fs_generator::generate_linterp(fs_inst *inst,
|
|||
struct brw_reg delta_x = src[0];
|
||||
struct brw_reg delta_y = offset(src[0], inst->exec_size / 8);
|
||||
struct brw_reg interp = src[1];
|
||||
brw_inst *i[2];
|
||||
|
||||
if (devinfo->has_pln &&
|
||||
(devinfo->gen >= 7 || (delta_x.nr & 1) == 0)) {
|
||||
brw_PLN(p, dst, interp, delta_x);
|
||||
} else {
|
||||
brw_LINE(p, brw_null_reg(), interp, delta_x);
|
||||
brw_MAC(p, dst, suboffset(interp, 1), delta_y);
|
||||
i[0] = brw_LINE(p, brw_null_reg(), interp, delta_x);
|
||||
i[1] = brw_MAC(p, dst, suboffset(interp, 1), delta_y);
|
||||
|
||||
brw_inst_set_cond_modifier(p->devinfo, i[1], inst->conditional_mod);
|
||||
|
||||
/* brw_set_default_saturate() is called before emitting instructions, so
|
||||
* the saturate bit is set in each instruction, so we need to unset it on
|
||||
* the first instruction.
|
||||
*/
|
||||
brw_inst_set_saturate(p->devinfo, i[0], false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue