[Mesa-dev] [PATCH 1/3] r600: Change default behaviour for undefined COLOR0

Roland Scheidegger sroland at vmware.com
Sun Apr 3 18:41:01 UTC 2016


Am 03.04.2016 um 10:11 schrieb Axel Davy:
> d3d 9 needs COLOR0 to be 1.0 on all channels when
> undefined. 0.0 for the others is fine.
> GL behaviour is undefined.
> 
> Signed-off-by: Axel Davy <axel.davy at ens.fr>
> ---
>  src/gallium/drivers/r600/r600_state.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c
> index 3189a13..d448d90 100644
> --- a/src/gallium/drivers/r600/r600_state.c
> +++ b/src/gallium/drivers/r600/r600_state.c
> @@ -2518,6 +2518,10 @@ void r600_update_ps_state(struct pipe_context *ctx, struct r600_pipe_shader *sha
>  
>  		tmp = S_028644_SEMANTIC(sid);
>  
> +		/* D3D 9 behaviour. GL is undefined */
> +		if (rshader->input[i].name == TGSI_SEMANTIC_COLOR && rshader->input[i].sid == 0)
> +			tmp |= S_028644_DEFAULT_VAL(3);
> +
>  		if (rshader->input[i].name == TGSI_SEMANTIC_POSITION ||
>  			rshader->input[i].interpolate == TGSI_INTERPOLATE_CONSTANT ||
>  			(rshader->input[i].interpolate == TGSI_INTERPOLATE_COLOR &&
> 

Not that I care what drivers use by default for undefined values, but it
probably would be better to fix that properly in the state tracker since
certainly gallium doesn't impose that default...

Roland



More information about the mesa-dev mailing list