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