Hi Dave, tested on BARTS: the patch changes TESS_EVAL to end with a proper EOP in
trivial-tess-gs_no-gs-inputs (it doesn't fix the piglit though). However, it introduces a regression in vs-tcs-tes-tessinner-tessouter-inputs-quads vs-tes-tessinner-tessouter-inputs-quads because in these two piglits in tgsi_declaration TESSINNER and TESSOUTER are read from LDS, and this requires calling r600_fetch_tess_io_info first. Since the TESS_EVAL shader has no inputs in these two cases the tests fail with the patch. One approach to solve this could be to scan the shader first for this declaration (I'll do this is the experimental performance patches that I'll send later), the other one could be to implement some kind of lazy loading for the related fetch operation. Best, Gert Am Mittwoch, den 15.11.2017, 11:25 +1000 schrieb Dave Airlie: > From: Dave Airlie <airl...@redhat.com> > > This should avoid emitting anything in the shader if we aren't > accessing any inputs. > > Signed-off-by: Dave Airlie <airl...@redhat.com> > --- > src/gallium/drivers/r600/r600_shader.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/src/gallium/drivers/r600/r600_shader.c > b/src/gallium/drivers/r600/r600_shader.c > index 625537b48b..95a4c05e81 100644 > --- a/src/gallium/drivers/r600/r600_shader.c > +++ b/src/gallium/drivers/r600/r600_shader.c > @@ -3167,7 +3167,8 @@ static int r600_shader_from_tgsi(struct > r600_context *rctx, > vs_add_primid_output(&ctx, key.vs.prim_id_out); > > if (ctx.type == PIPE_SHADER_TESS_EVAL) > - r600_fetch_tess_io_info(&ctx); > + if (ctx.info.num_inputs) > + r600_fetch_tess_io_info(&ctx); > > while (!tgsi_parse_end_of_tokens(&ctx.parse)) { > tgsi_parse_token(&ctx.parse); _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev