One minor nitpick inline, otherwise: Reviewed-by: Lucas Stach <[email protected]> Tested-by: Lucas Stach <[email protected]> on nv49 and nv35
Am Montag, den 09.07.2012, 23:15 +0200 schrieb Roy Spliet: > Fixes piglit vp-address-01 amongst several others > > Signed-off-by: Roy Spliet <[email protected]> > --- > src/gallium/drivers/nv30/nv30_state.h | 2 +- > src/gallium/drivers/nv30/nv30_vertprog.c | 4 ++-- > src/gallium/drivers/nv30/nvfx_shader.h | 2 +- > src/gallium/drivers/nv30/nvfx_vertprog.c | 10 ++++++++-- > 4 files changed, 12 insertions(+), 6 deletions(-) > > diff --git a/src/gallium/drivers/nv30/nv30_state.h > b/src/gallium/drivers/nv30/nv30_state.h > index 964676a..a44eb59 100644 > --- a/src/gallium/drivers/nv30/nv30_state.h > +++ b/src/gallium/drivers/nv30/nv30_state.h > @@ -63,7 +63,7 @@ struct nv30_sampler_view { > > struct nv30_shader_reloc { > unsigned location; > - unsigned target; > + signed target; > }; > > struct nv30_vertprog_exec { > diff --git a/src/gallium/drivers/nv30/nv30_vertprog.c > b/src/gallium/drivers/nv30/nv30_vertprog.c > index 9b5ba35..1492c15 100644 > --- a/src/gallium/drivers/nv30/nv30_vertprog.c > +++ b/src/gallium/drivers/nv30/nv30_vertprog.c > @@ -150,7 +150,7 @@ nv30_vertprog_validate(struct nv30_context *nv30) > target = vp->data->start + reloc->target; > > inst[1] &= ~0x0003fc000; > - inst[1] |= target << 14; > + inst[1] |= (target & 0x1ff) << 14; > reloc++; > } > } else { > @@ -159,7 +159,7 @@ nv30_vertprog_validate(struct nv30_context *nv30) > target = vp->data->start + reloc->target; > > inst[1] &= ~0x0001ff000; > - inst[1] |= target << 12; > + inst[1] |= (target & 0x1ff) << 12; > reloc++; > } > } > diff --git a/src/gallium/drivers/nv30/nvfx_shader.h > b/src/gallium/drivers/nv30/nvfx_shader.h > index e343bf0..987e1b0 100644 > --- a/src/gallium/drivers/nv30/nvfx_shader.h > +++ b/src/gallium/drivers/nv30/nvfx_shader.h > @@ -416,7 +416,7 @@ > > struct nvfx_reg { > int8_t type; > - uint32_t index; > + int32_t index; > }; > > struct nvfx_src { > diff --git a/src/gallium/drivers/nv30/nvfx_vertprog.c > b/src/gallium/drivers/nv30/nvfx_vertprog.c > index f41f82d..cf49c56 100644 > --- a/src/gallium/drivers/nv30/nvfx_vertprog.c > +++ b/src/gallium/drivers/nv30/nvfx_vertprog.c > @@ -169,8 +169,9 @@ emit_src(struct nv30_context *nv30, struct nvfx_vpc *vpc, > uint32_t *hw, > hw[0] |= NVFX_VP(INST_INDEX_INPUT); > else > assert(0); > - if(src.indirect_reg) > + if(src.indirect_reg) { > hw[0] |= NVFX_VP(INST_ADDR_REG_SELECT_1); > + } > hw[0] |= src.indirect_swz << NVFX_VP(INST_ADDR_SWZ_SHIFT); > } I don't see the need for the added parentheses here. > > @@ -367,7 +368,12 @@ tgsi_src(struct nvfx_vpc *vpc, const struct > tgsi_full_src_register *fsrc) { > src.reg = nvfx_reg(NVFXSR_INPUT, fsrc->Register.Index); > break; > case TGSI_FILE_CONSTANT: > - src.reg = vpc->r_const[fsrc->Register.Index]; > + if(fsrc->Register.Indirect) { > + src.reg = vpc->r_const[0]; > + src.reg.index = fsrc->Register.Index; > + } else { > + src.reg = vpc->r_const[fsrc->Register.Index]; > + } > break; > case TGSI_FILE_IMMEDIATE: > src.reg = vpc->imm[fsrc->Register.Index]; _______________________________________________ Nouveau mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/nouveau
