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

Gert Wollny gert.wollny at collabora.com
Mon Jul 23 18:03:55 UTC 2018


Looks reasonable, 
Reviewed-By: Gert Wollny <gert.wollny at collabora.com> 

Am Donnerstag, den 19.07.2018, 14:42 +1000 schrieb Dave Airlie:
> 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_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 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;


More information about the mesa-dev mailing list