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

2018-07-18 Thread Dave Airlie
From: Dave Airlie 

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 4b91da3..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

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2018-07-23 Thread Gert Wollny
Looks reasonable, 
Reviewed-By: Gert Wollny  

Am Donnerstag, den 19.07.2018, 14:42 +1000 schrieb Dave Airlie:
> From: Dave Airlie 
> 
> 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_evaluat
> ion.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 4b91da3..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;
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev