On Die, 2013-03-26 at 14:51 +0100, Christian König wrote: > From: Christian König <christian.koe...@amd.com> > > Signed-off-by: Christian König <christian.koe...@amd.com> > [...] > diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.h > b/src/gallium/drivers/radeonsi/radeonsi_shader.h > index 9dae742..e09f297 100644 > --- a/src/gallium/drivers/radeonsi/radeonsi_shader.h > +++ b/src/gallium/drivers/radeonsi/radeonsi_shader.h > @@ -111,13 +111,18 @@ struct si_shader { > unsigned nr_cbufs; > }; > > -struct si_shader_key { > - unsigned export_16bpc:8; > - unsigned nr_cbufs:4; > - unsigned color_two_side:1; > - unsigned alpha_func:3; > - unsigned flatshade:1; > - float alpha_ref; > +union si_shader_key { > + struct { > + unsigned export_16bpc:8; > + unsigned nr_cbufs:4; > + unsigned color_two_side:1; > + unsigned alpha_func:3; > + unsigned flatshade:1; > + float alpha_ref; > + } ps; > + struct { > + unsigned instance_divisors[PIPE_MAX_ATTRIBS]; > + } vs; > };
This grows the shader key from 8 to 128 bytes. I don't suppose the instance divisors could be encoded in a more compact way? E.g. loading the divisor values from constants and only tracking which elements use a divisor in a bitmask in the key. -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Debian, X and DRI developer _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev