From da2dea384374c70098a3aa74f42fda6381556945 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 17 Nov 2014 20:49:11 +0100 Subject: [PATCH] radeonsi: support per-sample gl_FragCoord MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Cc: 10.4 Reviewed-by: Michel Dänzer --- 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: - 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; } } -- 2.7.4