[Mesa-dev] [PATCH 1/2] radeonsi: support per-sample gl_FragCoord

Ian Romanick idr at freedesktop.org
Tue Nov 18 10:23:16 PST 2014


On 11/17/2014 01:42 PM, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
> 
> Cc: 10.4 <mesa-stable at lists.freedesktop.org>
> ---
>  src/gallium/drivers/radeonsi/si_state_draw.c | 25 +++++++++++++------------
>  1 file changed, 13 insertions(+), 12 deletions(-)
> 
> diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c
> index d5b27e7..f108282 100644
> --- a/src/gallium/drivers/radeonsi/si_state_draw.c
> +++ b/src/gallium/drivers/radeonsi/si_state_draw.c
> @@ -248,20 +248,21 @@ static void si_shader_ps(struct si_shader *shader)
>  	for (i = 0; i < info->num_inputs; i++) {
>  		switch (info->input_semantic_name[i]) {
>  		case TGSI_SEMANTIC_POSITION:

So... now this is a switch-statement with just one case?  That seems a
little weird...

> -			if (info->input_interpolate_loc[i] ==
> -			    TGSI_INTERPOLATE_LOC_CENTROID) {
> -				/* SPI_BARYC_CNTL.POS_FLOAT_LOCATION
> -				 * Possible vaules:
> -				 * 0 -> Position = pixel center (default)
> -				 * 1 -> Position = pixel centroid
> -				 * 2 -> Position = iterated sample number XXX:
> -				 *                        What does this mean?
> -			 	 */
> +			/* SPI_BARYC_CNTL.POS_FLOAT_LOCATION
> +			 * Possible vaules:
> +			 * 0 -> Position = pixel center (default)
> +			 * 1 -> Position = pixel centroid
> +			 * 2 -> Position = at sample position
> +			 */
> +			switch (info->input_interpolate_loc[i]) {
> +			case TGSI_INTERPOLATE_LOC_CENTROID:
>  				spi_baryc_cntl |= S_0286E0_POS_FLOAT_LOCATION(1);
> +				break;
> +			case TGSI_INTERPOLATE_LOC_SAMPLE:
> +				spi_baryc_cntl |= S_0286E0_POS_FLOAT_LOCATION(2);
> +				break;
>  			}
> -			/* Fall through */
> -		case TGSI_SEMANTIC_FACE:
> -			continue;
> +			break;
>  		}
>  	}
>  
> 



More information about the mesa-dev mailing list