[Mesa-dev] [PATCH] r600: enable tess_input_info for TES

Dave Airlie airlied at gmail.com
Thu Jul 19 04:42:32 UTC 2018


From: Dave Airlie <airlied at redhat.com>

There might be a nicer way to do this, but this is at least correct.

This fixes:
KHR-GL44.tessellation_shader.single.max_patch_vertices
KHR-GL44.tessellation_shader.tessellation_control_to_tessellation_evaluation.gl_PatchVerticesIn
---
 src/gallium/drivers/r600/r600_shader.c | 20 ++++++--------------
 1 file changed, 6 insertions(+), 14 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 4b91dacccc3..6effa31be7b 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -1673,19 +1673,11 @@ static void tgsi_src(struct r600_shader_ctx *ctx,
 		} else if (ctx->info.system_value_semantic_name[tgsi_src->Register.Index] == TGSI_SEMANTIC_TESSOUTER) {
 			r600_src->sel = 2;
 		} else if (ctx->info.system_value_semantic_name[tgsi_src->Register.Index] == TGSI_SEMANTIC_VERTICESIN) {
-			if (ctx->type == PIPE_SHADER_TESS_CTRL) {
-				r600_src->sel = ctx->tess_input_info;
-				r600_src->swizzle[0] = 2;
-				r600_src->swizzle[1] = 2;
-				r600_src->swizzle[2] = 2;
-				r600_src->swizzle[3] = 2;
-			} else {
-				r600_src->sel = ctx->tess_input_info;
-				r600_src->swizzle[0] = 3;
-				r600_src->swizzle[1] = 3;
-				r600_src->swizzle[2] = 3;
-				r600_src->swizzle[3] = 3;
-			}
+			r600_src->sel = ctx->tess_input_info;
+			r600_src->swizzle[0] = 2;
+			r600_src->swizzle[1] = 2;
+			r600_src->swizzle[2] = 2;
+			r600_src->swizzle[3] = 2;
 		} else if (ctx->type == PIPE_SHADER_TESS_CTRL && ctx->info.system_value_semantic_name[tgsi_src->Register.Index] == TGSI_SEMANTIC_PRIMID) {
 			r600_src->sel = 0;
 			r600_src->swizzle[0] = 0;
@@ -3559,7 +3551,7 @@ static int r600_shader_from_tgsi(struct r600_context *rctx,
 		ctx.tess_input_info = ++regno;
 		ctx.tess_output_info = ++regno;
 	} else if (ctx.type == PIPE_SHADER_TESS_EVAL) {
-		ctx.tess_input_info = 0;
+		ctx.tess_input_info = ++regno;
 		ctx.tess_output_info = ++regno;
 	} else if (ctx.type == PIPE_SHADER_GEOMETRY) {
 		ctx.gs_export_gpr_tregs[0] = ++regno;
-- 
2.17.1



More information about the mesa-dev mailing list