Reviewed-by: Alejandro Piñeiro <apinhe...@igalia.com>

On 02/06/16 23:09, Kenneth Graunke wrote:
> We still need to recompile the passthrough shader when this value
> changes, as it also affects the output vertex count.  But otherwise,
> we can eliminate recompiles on Gen8+.
>
> We probably want to do this for Gen7 as well, but that requires
> rewriting the input release code to use a loop, which is a trade-off
> I'd need to consider in more detail.
>
> Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>
> Cc: mesa-sta...@lists.freedesktop.org
> ---
>  src/mesa/drivers/dri/i965/brw_context.c | 1 +
>  src/mesa/drivers/dri/i965/brw_tcs.c     | 6 ++++--
>  2 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c 
> b/src/mesa/drivers/dri/i965/brw_context.c
> index aad2afb..cbe0693 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.c
> +++ b/src/mesa/drivers/dri/i965/brw_context.c
> @@ -599,6 +599,7 @@ brw_initialize_context_constants(struct brw_context *brw)
>        ctx->Const.MaxClipPlanes = 8;
>  
>     ctx->Const.LowerTessLevel = true;
> +   ctx->Const.LowerTCSPatchVerticesIn = brw->gen >= 8;
>     ctx->Const.LowerTESPatchVerticesIn = true;
>     ctx->Const.PrimitiveRestartForPatches = true;
>  
> diff --git a/src/mesa/drivers/dri/i965/brw_tcs.c 
> b/src/mesa/drivers/dri/i965/brw_tcs.c
> index 83fc157..e756b37 100644
> --- a/src/mesa/drivers/dri/i965/brw_tcs.c
> +++ b/src/mesa/drivers/dri/i965/brw_tcs.c
> @@ -339,7 +339,8 @@ brw_upload_tcs_prog(struct brw_context *brw,
>  
>     memset(&key, 0, sizeof(key));
>  
> -   key.input_vertices = ctx->TessCtrlProgram.patch_vertices;
> +   if (brw->gen < 8 || !tcp)
> +      key.input_vertices = ctx->TessCtrlProgram.patch_vertices;
>     key.outputs_written = per_vertex_slots;
>     key.patch_outputs_written = per_patch_slots;
>  
> @@ -391,7 +392,8 @@ brw_tcs_precompile(struct gl_context *ctx,
>     brw_setup_tex_for_precompile(brw, &key.tex, prog);
>  
>     /* Guess that the input and output patches have the same dimensionality. 
> */
> -   key.input_vertices = shader_prog->TessCtrl.VerticesOut;
> +   if (brw->gen < 8)
> +      key.input_vertices = shader_prog->TessCtrl.VerticesOut;
>  
>     key.tes_primitive_mode =
>        shader_prog->_LinkedShaders[MESA_SHADER_TESS_EVAL] ?

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

Reply via email to