Mesa (master): r600g: only pick centroid coordinate when asked.

Dave Airlie airlied at kemper.freedesktop.org
Thu Oct 14 04:15:27 UTC 2010


Module: Mesa
Branch: master
Commit: 8a9f02c5d503089bdcc90ff934f6269e59356d52
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8a9f02c5d503089bdcc90ff934f6269e59356d52

Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Oct 14 13:29:11 2010 +1000

r600g: only pick centroid coordinate when asked.

TGSI tells us when to use this, its not hooked up from GLSL to MESA to TGSI yet though.

---

 src/gallium/drivers/r600/r600_shader.c |    4 +++-
 src/gallium/drivers/r600/r600_shader.h |    1 +
 2 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 4a9d9be..512cc4a 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -115,7 +115,8 @@ static void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shade
 
 	for (i = 0; i < rshader->ninput; i++) {
 		tmp = S_028644_SEMANTIC(r600_find_vs_semantic_index(&rctx->vs_shader->shader, rshader, i));
-		tmp |= S_028644_SEL_CENTROID(1);
+		if (rshader->input[i].centroid)
+			tmp |= S_028644_SEL_CENTROID(1);
 		if (rshader->input[i].name == TGSI_SEMANTIC_POSITION)
 			have_pos = TRUE;
 		if (rshader->input[i].name == TGSI_SEMANTIC_COLOR ||
@@ -439,6 +440,7 @@ static int tgsi_declaration(struct r600_shader_ctx *ctx)
 		ctx->shader->input[i].name = d->Semantic.Name;
 		ctx->shader->input[i].sid = d->Semantic.Index;
 		ctx->shader->input[i].interpolate = d->Declaration.Interpolate;
+		ctx->shader->input[i].centroid = d->Declaration.Centroid;
 		ctx->shader->input[i].gpr = ctx->file_offset[TGSI_FILE_INPUT] + i;
 		if (ctx->type == TGSI_PROCESSOR_VERTEX) {
 			/* turn input into fetch */
diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h
index 6e2620f..a341cca 100644
--- a/src/gallium/drivers/r600/r600_shader.h
+++ b/src/gallium/drivers/r600/r600_shader.h
@@ -31,6 +31,7 @@ struct r600_shader_io {
 	unsigned		done;
 	int			sid;
 	unsigned		interpolate;
+	boolean                 centroid;
 };
 
 struct r600_shader {




More information about the mesa-commit mailing list