On Thu, Nov 27, 2014 at 5:13 AM, Axel Davy <axel.d...@ens.fr> wrote: > Nine code to match vertex declaration to vs inputs was limiting > the number of possible combinations. > > Some sm3 games have issues with that, because arbitrary (usage/index) > can be used. > > This patch does the following changes to fix the problem: > . Change the numbers given to (usage/index) combinations to uint16 > . Do not put limits on the indices when it doesn't make sense > . change the conversion rule (usage/index) -> number to fit all combinations > . Instead of having a table usage_map mapping a (usage/index) number to > an input index, usage_map maps input indices to their (usage/index) > > Cc: "10.4" <mesa-sta...@lists.freedesktop.org> > Tested-by: Yaroslav Andrusyak <pontost...@gmail.com> > Signed-off-by: Axel Davy <axel.d...@ens.fr> > --- > src/gallium/state_trackers/nine/nine_defines.h | 40 ++++++----- > src/gallium/state_trackers/nine/nine_ff.c | 49 +++++++------ > src/gallium/state_trackers/nine/nine_shader.h | 2 +- > src/gallium/state_trackers/nine/nine_state.c | 16 +++-- > .../state_trackers/nine/vertexdeclaration9.c | 84 > +++++++--------------- > .../state_trackers/nine/vertexdeclaration9.h | 4 +- > src/gallium/state_trackers/nine/vertexshader9.h | 2 +- > 7 files changed, 89 insertions(+), 108 deletions(-) > > diff --git a/src/gallium/state_trackers/nine/nine_defines.h > b/src/gallium/state_trackers/nine/nine_defines.h > index aa3b257..06529da 100644 > --- a/src/gallium/state_trackers/nine/nine_defines.h > +++ b/src/gallium/state_trackers/nine/nine_defines.h > @@ -30,25 +30,27 @@ > #define NINE_RESOURCE_FLAG_DUMMY (PIPE_RESOURCE_FLAG_ST_PRIV << 2) > > /* vertexdeclaration9.c */ > -unsigned nine_d3d9_to_nine_declusage(unsigned usage, unsigned index); > - > -#define NINE_DECLUSAGE_POSITION(i) ( 0 + (i)) > -#define NINE_DECLUSAGE_BLENDWEIGHT(i) ( 5 + (i)) > -#define NINE_DECLUSAGE_BLENDINDICES(i) ( 9 + (i)) > -#define NINE_DECLUSAGE_NORMAL(i) (13 + (i)) > -#define NINE_DECLUSAGE_PSIZE 15 > -#define NINE_DECLUSAGE_TEXCOORD(i) (16 + (i)) > -#define NINE_DECLUSAGE_TANGENT(i) (32 + (i)) > -#define NINE_DECLUSAGE_BINORMAL(i) (34 + (i)) > -#define NINE_DECLUSAGE_TESSFACTOR 36 > -#define NINE_DECLUSAGE_POSITIONT 37 > -#define NINE_DECLUSAGE_COLOR(i) (38 + (i)) > -#define NINE_DECLUSAGE_DEPTH 43 > -#define NINE_DECLUSAGE_FOG 44 > -#define NINE_DECLUSAGE_SAMPLE 45 > -#define NINE_DECLUSAGE_NONE 46 > -#define NINE_DECLUSAGE_LAST NINE_DECLUSAGE_NONE > -#define NINE_DECLUSAGE_COUNT (NINE_DECLUSAGE_LAST + 1) > +uint16_t nine_d3d9_to_nine_declusage(unsigned usage, unsigned index); > + > +#define NINE_DECLUSAGE_POSITION 0 > +#define NINE_DECLUSAGE_BLENDWEIGHT 1 > +#define NINE_DECLUSAGE_BLENDINDICES 2 > +#define NINE_DECLUSAGE_NORMAL 3 > +#define NINE_DECLUSAGE_TEXCOORD 4 > +#define NINE_DECLUSAGE_TANGENT 5 > +#define NINE_DECLUSAGE_BINORMAL 6 > +#define NINE_DECLUSAGE_COLOR 7 > +#define NINE_DECLUSAGE_POSITIONT 8 > + > +#define NINE_DECLUSAGE_PSIZE 9 > +#define NINE_DECLUSAGE_TESSFACTOR 10 > +#define NINE_DECLUSAGE_DEPTH 11 > +#define NINE_DECLUSAGE_FOG 12 > +#define NINE_DECLUSAGE_SAMPLE 13 > +#define NINE_DECLUSAGE_NONE 14 > +#define NINE_DECLUSAGE_BASE (NINE_DECLUSAGE_NONE + 1)
I'd call it NINE_DECLUSAGE_COUNT (as it was called before). BASE can have many different meanings -- the numerical base (like base 2) as you're using, or the start, or probably other things. Count is unambiguous. I won't pretend to having looked at this whole patch with a high level of attention, but the concept seems fine in principle. Series is Acked-by: Ilia Mirkin <imir...@alum.mit.edu> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev