Does this have any effect on what data drivers get or is it just internal to Nine?
Marek On Thu, Nov 27, 2014 at 11: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) > + > +#define NINE_DECLUSAGE_i(declusage, n) NINE_DECLUSAGE_##declusage + n * > NINE_DECLUSAGE_BASE > > #define NINED3DCLEAR_DEPTHSTENCIL (D3DCLEAR_ZBUFFER | D3DCLEAR_STENCIL) > > diff --git a/src/gallium/state_trackers/nine/nine_ff.c > b/src/gallium/state_trackers/nine/nine_ff.c > index 184c411..a6bd360 100644 > --- a/src/gallium/state_trackers/nine/nine_ff.c > +++ b/src/gallium/state_trackers/nine/nine_ff.c > @@ -275,7 +275,7 @@ struct vs_build_ctx > struct ureg_program *ureg; > const struct nine_ff_vs_key *key; > > - unsigned input[PIPE_MAX_ATTRIBS]; > + uint16_t input[PIPE_MAX_ATTRIBS]; > unsigned num_inputs; > > struct ureg_src aVtx; > @@ -304,7 +304,7 @@ get_texcoord_sn(struct pipe_screen *screen) > } > > static INLINE struct ureg_src > -build_vs_add_input(struct vs_build_ctx *vs, unsigned ndecl) > +build_vs_add_input(struct vs_build_ctx *vs, uint16_t ndecl) > { > const unsigned i = vs->num_inputs++; > assert(i < PIPE_MAX_ATTRIBS); > @@ -370,10 +370,10 @@ nine_ff_build_vs(struct NineDevice9 *device, struct > vs_build_ctx *vs) > * (texture coordinates handled later) > */ > vs->aVtx = build_vs_add_input(vs, > - key->position_t ? NINE_DECLUSAGE_POSITIONT : > NINE_DECLUSAGE_POSITION(0)); > + key->position_t ? NINE_DECLUSAGE_POSITIONT : > NINE_DECLUSAGE_POSITION); > > if (need_rNrm) > - vs->aNrm = build_vs_add_input(vs, NINE_DECLUSAGE_NORMAL(0)); > + vs->aNrm = build_vs_add_input(vs, NINE_DECLUSAGE_NORMAL); > > vs->aCol[0] = ureg_imm1f(ureg, 1.0f); > vs->aCol[1] = ureg_imm1f(ureg, 1.0f); > @@ -382,9 +382,9 @@ nine_ff_build_vs(struct NineDevice9 *device, struct > vs_build_ctx *vs) > const unsigned mask = key->mtl_diffuse | key->mtl_specular | > key->mtl_ambient | key->mtl_emissive; > if ((mask & 0x1) && !key->color0in_one) > - vs->aCol[0] = build_vs_add_input(vs, NINE_DECLUSAGE_COLOR(0)); > + vs->aCol[0] = build_vs_add_input(vs, NINE_DECLUSAGE_i(COLOR, 0)); > if ((mask & 0x2) && !key->color1in_one) > - vs->aCol[1] = build_vs_add_input(vs, NINE_DECLUSAGE_COLOR(1)); > + vs->aCol[1] = build_vs_add_input(vs, NINE_DECLUSAGE_i(COLOR, 1)); > > vs->mtlD = MATERIAL_CONST(1); > vs->mtlA = MATERIAL_CONST(2); > @@ -399,20 +399,20 @@ nine_ff_build_vs(struct NineDevice9 *device, struct > vs_build_ctx *vs) > if (key->mtl_emissive == 1) vs->mtlE = vs->aCol[0]; else > if (key->mtl_emissive == 2) vs->mtlE = vs->aCol[1]; > } else { > - if (!key->color0in_one) vs->aCol[0] = build_vs_add_input(vs, > NINE_DECLUSAGE_COLOR(0)); > - if (!key->color1in_one) vs->aCol[1] = build_vs_add_input(vs, > NINE_DECLUSAGE_COLOR(1)); > + if (!key->color0in_one) vs->aCol[0] = build_vs_add_input(vs, > NINE_DECLUSAGE_i(COLOR, 0)); > + if (!key->color1in_one) vs->aCol[1] = build_vs_add_input(vs, > NINE_DECLUSAGE_i(COLOR, 1)); > } > > if (key->vertexpointsize) > vs->aPsz = build_vs_add_input(vs, NINE_DECLUSAGE_PSIZE); > > if (key->vertexblend_indexed) > - vs->aInd = build_vs_add_input(vs, NINE_DECLUSAGE_BLENDINDICES(0)); > + vs->aInd = build_vs_add_input(vs, NINE_DECLUSAGE_BLENDINDICES); > if (key->vertexblend) > - vs->aWgt = build_vs_add_input(vs, NINE_DECLUSAGE_BLENDWEIGHT(0)); > + vs->aWgt = build_vs_add_input(vs, NINE_DECLUSAGE_BLENDWEIGHT); > if (key->vertextween) { > - vs->aVtx1 = build_vs_add_input(vs, NINE_DECLUSAGE_POSITION(1)); > - vs->aNrm1 = build_vs_add_input(vs, NINE_DECLUSAGE_NORMAL(1)); > + vs->aVtx1 = build_vs_add_input(vs, NINE_DECLUSAGE_i(POSITION,1)); > + vs->aNrm1 = build_vs_add_input(vs, NINE_DECLUSAGE_i(NORMAL,1)); > } > > /* Declare outputs: > @@ -596,7 +596,7 @@ nine_ff_build_vs(struct NineDevice9 *device, struct > vs_build_ctx *vs) > oTex[i] = ureg_DECL_output(ureg, texcoord_sn, i); > > if (tci == NINED3DTSS_TCI_PASSTHRU) > - vs->aTex[idx] = build_vs_add_input(vs, > NINE_DECLUSAGE_TEXCOORD(idx)); > + vs->aTex[idx] = build_vs_add_input(vs, > NINE_DECLUSAGE_i(TEXCOORD,idx)); > > if (!dim) { > dst[c = 4] = oTex[i]; > @@ -1374,7 +1374,7 @@ nine_ff_get_vs(struct NineDevice9 *device) > enum pipe_error err; > struct vs_build_ctx bld; > struct nine_ff_vs_key key; > - unsigned s; > + unsigned s, i; > > assert(sizeof(key) <= sizeof(key.value32)); > > @@ -1385,14 +1385,19 @@ nine_ff_get_vs(struct NineDevice9 *device) > > /* FIXME: this shouldn't be NULL, but it is on init */ > if (state->vdecl) { > - if (state->vdecl->usage_map[NINE_DECLUSAGE_POSITIONT] != 0xff) > - key.position_t = 1; > - if (state->vdecl->usage_map[NINE_DECLUSAGE_COLOR(0)] == 0xff) > - key.color0in_one = 1; > - if (state->vdecl->usage_map[NINE_DECLUSAGE_COLOR(1)] == 0xff) > - key.color1in_one = 1; > - if (state->vdecl->usage_map[NINE_DECLUSAGE_PSIZE] != 0xff) > - key.vertexpointsize = 1; > + key.color0in_one = 1; > + key.color1in_one = 1; > + for (i = 0; i < state->vdecl->nelems; i++) { > + uint16_t usage = state->vdecl->usage_map[i]; > + if (usage == NINE_DECLUSAGE_POSITIONT) > + key.position_t = 1; > + else if (usage == NINE_DECLUSAGE_i(COLOR, 0)) > + key.color0in_one = 0; > + else if (usage == NINE_DECLUSAGE_i(COLOR, 1)) > + key.color1in_one = 0; > + else if (usage == NINE_DECLUSAGE_PSIZE) > + key.vertexpointsize = 1; > + } > } > if (!key.vertexpointsize) > key.pointscale = !!state->rs[D3DRS_POINTSCALEENABLE]; > diff --git a/src/gallium/state_trackers/nine/nine_shader.h > b/src/gallium/state_trackers/nine/nine_shader.h > index 2182408..ddee372 100644 > --- a/src/gallium/state_trackers/nine/nine_shader.h > +++ b/src/gallium/state_trackers/nine/nine_shader.h > @@ -48,7 +48,7 @@ struct nine_shader_info > > void *cso; /* out, pipe cso for bind_vs,fs_state */ > > - uint8_t input_map[PIPE_MAX_ATTRIBS]; /* VS input -> NINE_DECLUSAGE_x */ > + uint16_t input_map[PIPE_MAX_ATTRIBS]; /* VS input -> NINE_DECLUSAGE_x */ > uint8_t num_inputs; /* there may be unused inputs (NINE_DECLUSAGE_NONE) > */ > > boolean position_t; /* out, true if VP writes pre-transformed position */ > diff --git a/src/gallium/state_trackers/nine/nine_state.c > b/src/gallium/state_trackers/nine/nine_state.c > index 37de6a3..4175803 100644 > --- a/src/gallium/state_trackers/nine/nine_state.c > +++ b/src/gallium/state_trackers/nine/nine_state.c > @@ -184,7 +184,8 @@ update_vertex_elements(struct NineDevice9 *device) > struct nine_state *state = &device->state; > const struct NineVertexDeclaration9 *vdecl = device->state.vdecl; > const struct NineVertexShader9 *vs; > - unsigned n, l, b; > + unsigned n, b, i; > + int index; > struct pipe_vertex_element ve[PIPE_MAX_ATTRIBS]; > > state->stream_usage_mask = 0; > @@ -197,11 +198,16 @@ update_vertex_elements(struct NineDevice9 *device) > DBG("looking up input %u (usage %u) from vdecl(%p)\n", > n, vs->input_map[n].ndecl, vdecl); > > - assert(vs->input_map[n].ndecl < Elements(vdecl->usage_map)); > - l = vdecl->usage_map[vs->input_map[n].ndecl]; > + index = -1; > + for (i = 0; i < vdecl->nelems; i++) { > + if (vdecl->usage_map[i] == vs->input_map[n].ndecl) { > + index = i; > + break; > + } > + } > > - if (likely(l < vdecl->nelems)) { > - ve[n] = vdecl->elems[l]; > + if (index >= 0) { > + ve[n] = vdecl->elems[index]; > b = ve[n].vertex_buffer_index; > state->stream_usage_mask |= 1 << b; > /* XXX wine just uses 1 here: */ > diff --git a/src/gallium/state_trackers/nine/vertexdeclaration9.c > b/src/gallium/state_trackers/nine/vertexdeclaration9.c > index 60b1fe3..b0044b8 100644 > --- a/src/gallium/state_trackers/nine/vertexdeclaration9.c > +++ b/src/gallium/state_trackers/nine/vertexdeclaration9.c > @@ -95,21 +95,20 @@ nine_d3ddeclusage_check(unsigned usage, unsigned > usage_idx) > { > switch (usage) { > case D3DDECLUSAGE_POSITIONT: > - case D3DDECLUSAGE_PSIZE: > case D3DDECLUSAGE_TESSFACTOR: > case D3DDECLUSAGE_DEPTH: > - case D3DDECLUSAGE_FOG: > - case D3DDECLUSAGE_SAMPLE: > - return usage_idx <= 0; > case D3DDECLUSAGE_NORMAL: > case D3DDECLUSAGE_TANGENT: > case D3DDECLUSAGE_BINORMAL: > - return usage_idx <= 1; > case D3DDECLUSAGE_POSITION: > case D3DDECLUSAGE_BLENDWEIGHT: > case D3DDECLUSAGE_BLENDINDICES: > case D3DDECLUSAGE_COLOR: > - return usage_idx <= 4; > + return TRUE; > + case D3DDECLUSAGE_PSIZE: > + case D3DDECLUSAGE_FOG: > + case D3DDECLUSAGE_SAMPLE: > + return usage_idx <= 0; > case D3DDECLUSAGE_TEXCOORD: > return usage_idx <= 15; > default: > @@ -118,8 +117,8 @@ nine_d3ddeclusage_check(unsigned usage, unsigned > usage_idx) > } > > #define NINE_DECLUSAGE_CASE0(n) case D3DDECLUSAGE_##n: return > NINE_DECLUSAGE_##n > -#define NINE_DECLUSAGE_CASEi(n) case D3DDECLUSAGE_##n: return > NINE_DECLUSAGE_##n(usage_idx) > -INLINE unsigned > +#define NINE_DECLUSAGE_CASEi(n) case D3DDECLUSAGE_##n: return > NINE_DECLUSAGE_i(n, usage_idx) > +uint16_t > nine_d3d9_to_nine_declusage(unsigned usage, unsigned usage_idx) > { > if (!nine_d3ddeclusage_check(usage, usage_idx)) > @@ -135,7 +134,7 @@ nine_d3d9_to_nine_declusage(unsigned usage, unsigned > usage_idx) > NINE_DECLUSAGE_CASEi(TANGENT); > NINE_DECLUSAGE_CASEi(BINORMAL); > NINE_DECLUSAGE_CASE0(TESSFACTOR); > - NINE_DECLUSAGE_CASE0(POSITIONT); > + NINE_DECLUSAGE_CASEi(POSITIONT); > NINE_DECLUSAGE_CASEi(COLOR); > NINE_DECLUSAGE_CASE0(DEPTH); > NINE_DECLUSAGE_CASE0(FOG); > @@ -148,58 +147,25 @@ nine_d3d9_to_nine_declusage(unsigned usage, unsigned > usage_idx) > > static const char *nine_declusage_names[] = > { > - [NINE_DECLUSAGE_POSITION(0)] = "POSITION", > - [NINE_DECLUSAGE_POSITION(1)] = "POSITION1", > - [NINE_DECLUSAGE_POSITION(2)] = "POSITION2", > - [NINE_DECLUSAGE_POSITION(3)] = "POSITION3", > - [NINE_DECLUSAGE_POSITION(4)] = "POSITION4", > - [NINE_DECLUSAGE_BLENDWEIGHT(0)] = "BLENDWEIGHT", > - [NINE_DECLUSAGE_BLENDWEIGHT(1)] = "BLENDWEIGHT1", > - [NINE_DECLUSAGE_BLENDWEIGHT(2)] = "BLENDWEIGHT2", > - [NINE_DECLUSAGE_BLENDWEIGHT(3)] = "BLENDWEIGHT3", > - [NINE_DECLUSAGE_BLENDINDICES(0)] = "BLENDINDICES", > - [NINE_DECLUSAGE_BLENDINDICES(1)] = "BLENDINDICES1", > - [NINE_DECLUSAGE_BLENDINDICES(2)] = "BLENDINDICES2", > - [NINE_DECLUSAGE_BLENDINDICES(3)] = "BLENDINDICES3", > - [NINE_DECLUSAGE_NORMAL(0)] = "NORMAL", > - [NINE_DECLUSAGE_NORMAL(1)] = "NORMAL1", > + [NINE_DECLUSAGE_POSITION] = "POSITION", > + [NINE_DECLUSAGE_BLENDWEIGHT] = "BLENDWEIGHT", > + [NINE_DECLUSAGE_BLENDINDICES] = "BLENDINDICES", > + [NINE_DECLUSAGE_NORMAL] = "NORMAL", > [NINE_DECLUSAGE_PSIZE] = "PSIZE", > - [NINE_DECLUSAGE_TEXCOORD(0)] = "TEXCOORD0", > - [NINE_DECLUSAGE_TEXCOORD(1)] = "TEXCOORD1", > - [NINE_DECLUSAGE_TEXCOORD(2)] = "TEXCOORD2", > - [NINE_DECLUSAGE_TEXCOORD(3)] = "TEXCOORD3", > - [NINE_DECLUSAGE_TEXCOORD(4)] = "TEXCOORD4", > - [NINE_DECLUSAGE_TEXCOORD(5)] = "TEXCOORD5", > - [NINE_DECLUSAGE_TEXCOORD(6)] = "TEXCOORD6", > - [NINE_DECLUSAGE_TEXCOORD(7)] = "TEXCOORD7", > - [NINE_DECLUSAGE_TEXCOORD(8)] = "TEXCOORD8", > - [NINE_DECLUSAGE_TEXCOORD(9)] = "TEXCOORD9", > - [NINE_DECLUSAGE_TEXCOORD(10)] = "TEXCOORD10", > - [NINE_DECLUSAGE_TEXCOORD(11)] = "TEXCOORD11", > - [NINE_DECLUSAGE_TEXCOORD(12)] = "TEXCOORD12", > - [NINE_DECLUSAGE_TEXCOORD(13)] = "TEXCOORD13", > - [NINE_DECLUSAGE_TEXCOORD(14)] = "TEXCOORD14", > - [NINE_DECLUSAGE_TEXCOORD(15)] = "TEXCOORD15", > - [NINE_DECLUSAGE_TANGENT(0)] = "TANGENT", > - [NINE_DECLUSAGE_TANGENT(1)] = "TANGENT1", > - [NINE_DECLUSAGE_BINORMAL(0)] = "BINORMAL", > - [NINE_DECLUSAGE_BINORMAL(1)] = "BINORMAL1", > + [NINE_DECLUSAGE_TEXCOORD] = "TEXCOORD", > + [NINE_DECLUSAGE_TANGENT] = "TANGENT", > + [NINE_DECLUSAGE_BINORMAL] = "BINORMAL", > [NINE_DECLUSAGE_TESSFACTOR] = "TESSFACTOR", > [NINE_DECLUSAGE_POSITIONT] = "POSITIONT", > - [NINE_DECLUSAGE_COLOR(0)] = "DIFFUSE", > - [NINE_DECLUSAGE_COLOR(1)] = "SPECULAR", > - [NINE_DECLUSAGE_COLOR(2)] = "COLOR2", > - [NINE_DECLUSAGE_COLOR(3)] = "COLOR3", > - [NINE_DECLUSAGE_COLOR(4)] = "COLOR4", > + [NINE_DECLUSAGE_COLOR] = "DIFFUSE", > [NINE_DECLUSAGE_DEPTH] = "DEPTH", > [NINE_DECLUSAGE_FOG] = "FOG", > [NINE_DECLUSAGE_NONE] = "(NONE)", > - [NINE_DECLUSAGE_COUNT] = "(OOB)" > }; > static INLINE const char * > nine_declusage_name(unsigned ndcl) > { > - return nine_declusage_names[MIN2(ndcl, Elements(nine_declusage_names) - > 1)]; > + return nine_declusage_names[ndcl % NINE_DECLUSAGE_BASE]; > } > > HRESULT > @@ -225,15 +191,14 @@ NineVertexDeclaration9_ctor( struct > NineVertexDeclaration9 *This, > > This->decls = CALLOC(This->nelems+1, sizeof(D3DVERTEXELEMENT9)); > This->elems = CALLOC(This->nelems, sizeof(struct pipe_vertex_element)); > + This->usage_map = CALLOC(This->nelems, sizeof(uint16_t)); > if (!This->decls || !This->elems) { return E_OUTOFMEMORY; } > memcpy(This->decls, pElements, > sizeof(D3DVERTEXELEMENT9)*(This->nelems+1)); > > - memset(This->usage_map, 0xff, sizeof(This->usage_map)); > - > for (i = 0; i < This->nelems; ++i) { > - uint8_t usage = nine_d3d9_to_nine_declusage(This->decls[i].Usage, > - > This->decls[i].UsageIndex); > - This->usage_map[usage] = i; > + uint16_t usage = nine_d3d9_to_nine_declusage(This->decls[i].Usage, > + > This->decls[i].UsageIndex); > + This->usage_map[i] = usage; > > This->elems[i].src_offset = This->decls[i].Offset; > This->elems[i].instance_divisor = 0; > @@ -241,11 +206,12 @@ NineVertexDeclaration9_ctor( struct > NineVertexDeclaration9 *This, > This->elems[i].src_format = decltype_format(This->decls[i].Type); > /* XXX Remember Method (tesselation), Usage, UsageIndex */ > > - DBG("VERTEXELEMENT[%u]: Stream=%u Offset=%u Type=%s DeclUsage=%s\n", > i, > + DBG("VERTEXELEMENT[%u]: Stream=%u Offset=%u Type=%s > DeclUsage=%s%d\n", i, > This->decls[i].Stream, > This->decls[i].Offset, > util_format_name(This->elems[i].src_format), > - nine_declusage_name(usage)); > + nine_declusage_name(usage), > + usage / NINE_DECLUSAGE_BASE); > } > > return D3D_OK; > @@ -258,6 +224,8 @@ NineVertexDeclaration9_dtor( struct > NineVertexDeclaration9 *This ) > FREE(This->decls); > if (This->elems) > FREE(This->elems); > + if (This->usage_map) > + FREE(This->usage_map); > > NineUnknown_dtor(&This->base); > } > diff --git a/src/gallium/state_trackers/nine/vertexdeclaration9.h > b/src/gallium/state_trackers/nine/vertexdeclaration9.h > index 6590f46..a4d4a04 100644 > --- a/src/gallium/state_trackers/nine/vertexdeclaration9.h > +++ b/src/gallium/state_trackers/nine/vertexdeclaration9.h > @@ -40,9 +40,9 @@ struct NineVertexDeclaration9 > struct pipe_vertex_element *elems; > unsigned nelems; > > - /* DECLUSAGE -> element index, for selecting the vertex element > + /* index -> DECLUSAGE, for selecting the vertex element > * for each VS input */ > - uint8_t usage_map[NINE_DECLUSAGE_COUNT]; > + uint16_t *usage_map; > > D3DVERTEXELEMENT9 *decls; > DWORD fvf; > diff --git a/src/gallium/state_trackers/nine/vertexshader9.h > b/src/gallium/state_trackers/nine/vertexshader9.h > index a7d750d..3495c9f 100644 > --- a/src/gallium/state_trackers/nine/vertexshader9.h > +++ b/src/gallium/state_trackers/nine/vertexshader9.h > @@ -32,7 +32,7 @@ struct NineVertexShader9 > struct nine_shader_variant variant; > > struct { > - uint8_t ndecl; /* NINE_DECLUSAGE_x */ > + uint16_t ndecl; /* NINE_DECLUSAGE_x */ > } input_map[PIPE_MAX_ATTRIBS]; > unsigned num_inputs; > > -- > 2.1.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev