On Sat, 3 Oct 2015 11:59:49 +0200 gregory hainaut <gregory.hain...@gmail.com> wrote:
> On Sat, 03 Oct 2015 09:35:49 +0000 > Mike Lothian <m...@fireburn.co.uk> wrote: > > > Would it be better to have is_interstage=0 rather than a double negative? > > > Yes. I think it just need to set 1 in the constructor (forget to > update it by the way...) as default value. Otherwise it can be > renamed to is_unlinked_io (or something similar). > > > > > > > In short, SSO allow to match by name but you can't make any hypothesis > > > on the > > > > previous/next stage. Therefore you must consider all inputs and output > > > > as > > > > actives. > > > > > > New version based on Ian's feedbacks. > > > * Real interstage variables of the program are still optimized > > > * Both output and input of the program remains active > > > * An old bug still remains if name and explicit location rendezvous are > > > mixed > > > > > > Commits decription: > > > 1/ add a not_interstage parameter that will be 1 when variable is either > > > an > > > input of output of the program. I didn't know where to put the > > > ir_set_not_interstage_io > > > function. Maybe it can be moved in linker.cpp. > > > 2/ Set the interstage parameter based on the shader position in the > > > pipeline > > > program. Potentially can be squased with the previous one. > > > 3/ Don't do deadcode removal of not_interstage variable with the exception > > > of the built-in varyings because they don't impact location of others > > > variables > > > > > > Gregory Hainaut (4): > > > glsl IR: add not_interstage attribute to ir_variable > > > glsl link: annotate not_interstage attribute of the ir_var after link > > > phase > > > glsl IR: only allow optimization of interstage variable > > > allow compilation on my system > > > > > > configure.ac | 6 ++++-- > > > src/glsl/ir.h | 6 ++++++ > > > src/glsl/ir_optimization.h | 2 ++ > > > src/glsl/linker.cpp | 47 > > > ++++++++++++++++++++++++++++++++++++++++++++++ > > > src/glsl/opt_dead_code.cpp | 37 ++++++++++++++++++++++++++++++++++++ > > > 5 files changed, 96 insertions(+), 2 deletions(-) > > > > > > -- > > > 2.1.4 > > > > > > _______________________________________________ > > > mesa-dev mailing list > > > mesa-dev@lists.freedesktop.org > > > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > > > I found another issue with my application (lucky me). out SHADER { vec4 t; vec4 c; flat vec4 fc; } VSout; in SHADER { vec4 t; vec4 c; flat vec4 fc; } PSin; will be transformed into the following interface in SSO (in varying_matches::record) to out SHADER { flat vec4 t; flat vec4 c; flat vec4 fc; } VSout; in SHADER { vec4 t; vec4 c; flat vec4 fc; } PSin; It doesn't change the interpolation/rendering as it will use the one from the FS. However it will affect the match_comparator function. So the sorting in varying_matches::assign_locations will behave differently for some parameters. I don't know how to handle this. Either we could adapt the sort function to mask the flat value. Or we mustn't add the flat qualifier. Any opinions or other solutions? _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev