[Mesa-dev] [PATCH] st/nine: Fix support for ps 1.4 dw and dz modifiers

Axel Davy axel.davy at ens.fr
Tue Mar 28 18:55:06 UTC 2017


This probably should be CC Mesa 17 stable. I'll add it before push.

On 26/03/2017 23:00, Axel Davy wrote:
> RCP was used incorrectly to support NINED3DSPSM_DW and
> NINED3DSPSM_DZ. src.x as used as input instead of src.w
> or src.z.
>
> Fixes: https://github.com/iXit/Mesa-3D/issues/271
>
> Signed-off-by: Axel Davy <axel.davy at ens.fr>
> ---
>   src/gallium/state_trackers/nine/nine_shader.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/state_trackers/nine/nine_shader.c b/src/gallium/state_trackers/nine/nine_shader.c
> index 818d136ec0..8d6583fc44 100644
> --- a/src/gallium/state_trackers/nine/nine_shader.c
> +++ b/src/gallium/state_trackers/nine/nine_shader.c
> @@ -1127,14 +1127,14 @@ tx_src_param(struct shader_translator *tx, const struct sm1_src_param *param)
>       case NINED3DSPSM_DW:
>           tmp = tx_scratch(tx);
>           /* NOTE: app is not allowed to read w with this modifier */
> -        ureg_RCP(ureg, ureg_writemask(tmp, NINED3DSP_WRITEMASK_3), src);
> +        ureg_RCP(ureg, ureg_writemask(tmp, NINED3DSP_WRITEMASK_3), ureg_scalar(src, TGSI_SWIZZLE_W));
>           ureg_MUL(ureg, tmp, src, ureg_swizzle(ureg_src(tmp), NINE_SWIZZLE4(W,W,W,W)));
>           src = ureg_src(tmp);
>           break;
>       case NINED3DSPSM_DZ:
>           tmp = tx_scratch(tx);
>           /* NOTE: app is not allowed to read z with this modifier */
> -        ureg_RCP(ureg, ureg_writemask(tmp, NINED3DSP_WRITEMASK_2), src);
> +        ureg_RCP(ureg, ureg_writemask(tmp, NINED3DSP_WRITEMASK_2), ureg_scalar(src, TGSI_SWIZZLE_Z));
>           ureg_MUL(ureg, tmp, src, ureg_swizzle(ureg_src(tmp), NINE_SWIZZLE4(Z,Z,Z,Z)));
>           src = ureg_src(tmp);
>           break;




More information about the mesa-dev mailing list