[Mesa-dev] [PATCH 43/53] r600/shader: allow multi-dimension arrays for tcs/tes inputs/outputs.

Dave Airlie airlied at gmail.com
Sun Nov 29 22:20:52 PST 2015


From: Dave Airlie <airlied at redhat.com>

This just allows multi-dim arrays to be processed.

Signed-off-by: Dave Airlie <airlied at redhat.com>
---
 src/gallium/drivers/r600/r600_shader.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index d2cc927..cb86601 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -393,10 +393,16 @@ static int tgsi_is_supported(struct r600_shader_ctx *ctx)
 		   case TGSI_FILE_CONSTANT:
 			   break;
 		   case TGSI_FILE_INPUT:
-			   if (ctx->type == TGSI_PROCESSOR_GEOMETRY)
+			   if (ctx->type == TGSI_PROCESSOR_GEOMETRY ||
+			       ctx->type == TGSI_PROCESSOR_TESS_CTRL ||
+			       ctx->type == TGSI_PROCESSOR_TESS_EVAL)
+				   break;
+		   case TGSI_FILE_OUTPUT:
+			   if (ctx->type == TGSI_PROCESSOR_TESS_CTRL)
 				   break;
 		   default:
-			   R600_ERR("unsupported src %d (dimension %d)\n", j,
+			   R600_ERR("unsupported src %d (file %d, dimension %d)\n", j,
+				    i->Src[j].Register.File,
 				    i->Src[j].Register.Dimension);
 			   return -EINVAL;
 		   }
@@ -404,6 +410,8 @@ static int tgsi_is_supported(struct r600_shader_ctx *ctx)
 	}
 	for (j = 0; j < i->Instruction.NumDstRegs; j++) {
 		if (i->Dst[j].Register.Dimension) {
+			if (ctx->type == TGSI_PROCESSOR_TESS_CTRL)
+				continue;
 			R600_ERR("unsupported dst (dimension)\n");
 			return -EINVAL;
 		}
-- 
2.5.0



More information about the mesa-dev mailing list