[Mesa-dev] [PATCH 0/1] r600g: work around shaders allocating too many superflous temporaries
Gert Wollny
gw.fossdev at gmail.com
Thu Jun 1 07:48:55 UTC 2017
Hello,
I should probably add that I don't have write access to the mesa-git.
Best,
Gert
Am Dienstag, den 30.05.2017, 14:14 +0200 schrieb Gert Wollny:
> Dear all,
>
> like I pointed out yesterday I've got a workaround for shaders that
> allocate
> too many temporaries after the TGSI pass that can actually be
> discarded in the
> sb pass but would fail before that in the tgsi-to-bc stage.
>
> The patch should not interfere with most shaders that worked before,
> the only
> problem could be with shaders that reserve a valid number of GPRs
> close to the
> limit of 124.
>
> Since I'm only starting to learn how the tgsi to bytecode translation
> works
> I'm not sure about the implications when temporaries are reserved in
> the
> kcache bank range (even though they are later discarded). Maybe
> r600_shader_from_tgsi() should actually return with an error
> the moment ctx.temp_reg >= 124 orAm Dienstag, den 30.05.2017, 14:14
> +0200 schrieb Gert Wollny:
> > Dear all,
> >
> > like I pointed out yesterday I've got a workaround for shaders that
> > allocate
> > too many temporaries after the TGSI pass that can actually be
> > discarded in the
> > sb pass but would fail before that in the tgsi-to-bc stage.
> >
> > The patch should not interfere with most shaders that worked
> before,
> > the only
> > problem could be with shaders that reserve a valid number of GPRs
> > close to the
> > limit of 124.
> >
> > Since I'm only starting to learn how the tgsi to bytecode
> translation
> > works
> > I'm not sure about the implications when temporaries are reserved
> in
> > the
> > kcache bank range (even though they are later discarded). Maybe
> > r600_shader_from_tgsi() should actually return with an error
> > the moment ctx.temp_reg >= 124 or r600_get_temp() > 124.
> >
> > I'm also aware the it would actually be better to optimize the
> shader
> > in the
> > TGSI representation in order to avoid the problem altogether, but
> > before I
> > can look into that I'll probably have t learn a lot more about the
> > code.
> >
> > In any case, this patch fixes the problem I had with the Unreal
> > Editor, the tests
> > are still passing, piglit didn't show me any regressions, and so
> far
> > I also didn't
> > see breakage in other program using mesa.
> >
> > Many thanks for any comments,
> > Gert Wollny (1):
> > r600g: work around shaders allocating too many superflous
> > temporaries
> >
> > src/gallium/drivers/r600/r600_shader.c | 52
> > +++++++++++++++++++++++++++-------
> > 1 file changed, 42 insertions(+), 10 deletions(-) r600_get_temp()
> > 124.
>
> I'm also aware the it would actually be better to optimize the shader
> in the TGSI representation in order to avoid the problem altogether,
> but before I can look into that I'll probably have t learn a lot more
> about the code.
>
> In any case, this patch fixes the problem I had with the Unreal
> Editor, the tests are still passing, piglit didn't show me any
> regressions, and so far I also didn't see breakage in other program
> using mesa.
>
> Many thanks for any comments,
> Gert Wollny (1):
> r600g: work around shaders allocating too many superflous
> temporaries
>
> src/gallium/drivers/r600/r600_shader.c | 52
> +++++++++++++++++++++++++++-------
> 1 file changed, 42 insertions(+), 10 deletions(-)
>
More information about the mesa-dev
mailing list