[Mesa-dev] [PATCH 2/3] tgsi: Fix index printed in tgsi_dump and dst outputs
From: Marcos Paulo de Souza marcos.souza@gmail.com Before this patch, the tgsi_dumps was printing declaration as: DCL IN[][0][0], GENERIC[0] and now it is parsed correctly: DCL IN[][0], GENERIC[0] In the same way, for tess stages, the output addr now is parsed correctly, doing like src parser from: LRP OUT[0][3], TEMP[1]., TEMP[3], TEMP[2] to: LRP OUT[ADDR[1].x][3], TEMP[1]., TEMP[3], TEMP[2] --- src/gallium/auxiliary/tgsi/tgsi_text.c | 16 +++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c index 24e2dbd..141a3b1 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_text.c +++ b/src/gallium/auxiliary/tgsi/tgsi_text.c @@ -684,7 +684,13 @@ parse_register_dcl( * input primitive. so we want to declare just * the index relevant to the semantics which is in * the second bracket */ - if (ctx-processor == TGSI_PROCESSOR_GEOMETRY *file == TGSI_FILE_INPUT) { + + /* tessellation has similar constraints to geometry shader */ + bool is_in = *file == TGSI_FILE_INPUT; + bool is_out = *file == TGSI_FILE_OUTPUT; + if ((ctx-processor == TGSI_PROCESSOR_GEOMETRY is_i) || + (ctx-processor == TGSI_PROCESSOR_TESS_EVAL is_in) || + (ctx-processor == TGSI_PROCESSOR_TESS_CTRL (is_in || is_out))) { brackets[0] = brackets[1]; *num_brackets = 1; } else { @@ -740,6 +746,14 @@ parse_dst_operand( dst-Dimension.Indirect = 0; dst-Dimension.Dimension = 0; dst-Dimension.Index = bracket[0].index; + + if (bracket[0].ind_file != TGSI_FILE_NULL) { + dst-Dimension.Indirect = 1; + dst-DimIndirect.File = bracket[0].ind_file; + dst-DimIndirect.Index = bracket[0].ind_index; + dst-DimIndirect.Swizzle = bracket[0].ind_comp; + dst-DimIndirect.ArrayID = bracket[0].ind_array; + } bracket[0] = bracket[1]; } dst-Register.Index = bracket[0].index; -- 2.4.3 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH 2/3] tgsi: Fix index printed in tgsi_dump and dst outputs
From: Marcos Paulo de Souza marcos.souza@gmail.com Before this patch, the tgsi_dumps was printing declaration as: DCL IN[][0][0], GENERIC[0] and now it is parsed correctly: DCL IN[][0], GENERIC[0] In the same way, for tess stages, the output addr now is parsed correctly, doing like src parser from: LRP OUT[0][3], TEMP[1]., TEMP[3], TEMP[2] to: LRP OUT[ADDR[1].x][3], TEMP[1]., TEMP[3], TEMP[2] --- src/gallium/auxiliary/tgsi/tgsi_text.c | 16 +++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c index 24e2dbd..075f2cb 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_text.c +++ b/src/gallium/auxiliary/tgsi/tgsi_text.c @@ -684,7 +684,13 @@ parse_register_dcl( * input primitive. so we want to declare just * the index relevant to the semantics which is in * the second bracket */ - if (ctx-processor == TGSI_PROCESSOR_GEOMETRY *file == TGSI_FILE_INPUT) { + + /* tessellation has similar constraints to geometry shader */ + bool is_in = *file == TGSI_FILE_INPUT; + bool is_out = *file == TGSI_FILE_OUTPUT; + if ((ctx-processor == TGSI_PROCESSOR_GEOMETRY is_in) || + (ctx-processor == TGSI_PROCESSOR_TESS_EVAL is_in) || + (ctx-processor == TGSI_PROCESSOR_TESS_CTRL (is_in || is_out))) { brackets[0] = brackets[1]; *num_brackets = 1; } else { @@ -740,6 +746,14 @@ parse_dst_operand( dst-Dimension.Indirect = 0; dst-Dimension.Dimension = 0; dst-Dimension.Index = bracket[0].index; + + if (bracket[0].ind_file != TGSI_FILE_NULL) { + dst-Dimension.Indirect = 1; + dst-DimIndirect.File = bracket[0].ind_file; + dst-DimIndirect.Index = bracket[0].ind_index; + dst-DimIndirect.Swizzle = bracket[0].ind_comp; + dst-DimIndirect.ArrayID = bracket[0].ind_array; + } bracket[0] = bracket[1]; } dst-Register.Index = bracket[0].index; -- 2.4.3 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev