mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
nir: Don't use ffma in nir_lower_wpos_ytransform().
ffma is an explicitly fused multiply add with higher precision. The optimizer will take care of promoting mul/add to fma when it's beneficial to do so. This fixes failures on Gen4-5 when using this pass, as those platforms don't actually implement fma(). Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
b8b1b1c34c
commit
12ab7fc6ac
1 changed files with 8 additions and 12 deletions
|
|
@ -123,19 +123,15 @@ emit_wpos_adjustment(lower_wpos_ytransform_state *state,
|
|||
* inversion/identity, or the other way around if we're drawing to an FBO.
|
||||
*/
|
||||
if (invert) {
|
||||
/* MAD wpos_temp.y, wpos_input, wpostrans.xxxx, wpostrans.yyyy
|
||||
*/
|
||||
wpos_temp_y = nir_ffma(b,
|
||||
nir_channel(b, wpos_temp, 1),
|
||||
nir_channel(b, wpostrans, 0),
|
||||
nir_channel(b, wpostrans, 1));
|
||||
/* wpos_temp.y = wpos_input * wpostrans.xxxx + wpostrans.yyyy */
|
||||
wpos_temp_y = nir_fadd(b, nir_fmul(b, nir_channel(b, wpos_temp, 1),
|
||||
nir_channel(b, wpostrans, 0)),
|
||||
nir_channel(b, wpostrans, 1));
|
||||
} else {
|
||||
/* MAD wpos_temp.y, wpos_input, wpostrans.zzzz, wpostrans.wwww
|
||||
*/
|
||||
wpos_temp_y = nir_ffma(b,
|
||||
nir_channel(b, wpos_temp, 1),
|
||||
nir_channel(b, wpostrans, 2),
|
||||
nir_channel(b, wpostrans, 3));
|
||||
/* wpos_temp.y = wpos_input * wpostrans.zzzz + wpostrans.wwww */
|
||||
wpos_temp_y = nir_fadd(b, nir_fmul(b, nir_channel(b, wpos_temp, 1),
|
||||
nir_channel(b, wpostrans, 2)),
|
||||
nir_channel(b, wpostrans, 3));
|
||||
}
|
||||
|
||||
wpos_temp = nir_vec4(b,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue