[Mesa-dev] [PATCH 2/2] radeonsi: support gl_FragCoord at integer pixel center

Marek Olšák maraeo at gmail.com
Mon Nov 17 13:42:50 PST 2014


From: Marek Olšák <marek.olsak at amd.com>

No known benefit for OpenGL, but it doesn't hurt.
---
 src/gallium/drivers/radeonsi/si_pipe.c       | 2 +-
 src/gallium/drivers/radeonsi/si_state_draw.c | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
index 61a3885..19ad75a 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -183,6 +183,7 @@ static int si_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
 	case PIPE_CAP_MIXED_COLORBUFFER_FORMATS:
 	case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT:
 	case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
+	case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
 	case PIPE_CAP_SM3:
 	case PIPE_CAP_SEAMLESS_CUBE_MAP:
 	case PIPE_CAP_PRIMITIVE_RESTART:
@@ -240,7 +241,6 @@ static int si_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
 
 	/* Unsupported features. */
 	case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
-	case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
 	case PIPE_CAP_TGSI_CAN_COMPACT_CONSTANTS:
 	case PIPE_CAP_FRAGMENT_COLOR_CLAMPED:
 	case PIPE_CAP_VERTEX_COLOR_CLAMPED:
diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c
index f108282..674b4a0 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -262,6 +262,10 @@ static void si_shader_ps(struct si_shader *shader)
 				spi_baryc_cntl |= S_0286E0_POS_FLOAT_LOCATION(2);
 				break;
 			}
+
+			if (info->properties[TGSI_PROPERTY_FS_COORD_PIXEL_CENTER] ==
+			    TGSI_FS_COORD_PIXEL_CENTER_INTEGER)
+				spi_baryc_cntl |= S_0286E0_POS_FLOAT_ULC(1);
 			break;
 		}
 	}
-- 
2.1.0



More information about the mesa-dev mailing list