[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