From ddaf3060fa5105dd9c769086a4bbfdb2488ae86b Mon Sep 17 00:00:00 2001 From: Patrice Mandin Date: Fri, 8 Sep 2006 23:18:27 +0000 Subject: nv10: vertex attribute output format --- src/mesa/drivers/dri/nouveau/nv10_swtcl.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'src/mesa/drivers/dri/nouveau/nv10_swtcl.c') diff --git a/src/mesa/drivers/dri/nouveau/nv10_swtcl.c b/src/mesa/drivers/dri/nouveau/nv10_swtcl.c index 35135fc706e..55507b277b9 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_swtcl.c +++ b/src/mesa/drivers/dri/nouveau/nv10_swtcl.c @@ -670,7 +670,28 @@ static inline void nv10OutputVertexFormat(struct nouveau_context* nmesa, GLuint * Tell the hardware about the vertex format */ if (nmesa->screen->card_type==NV_10) { - // XXX needs some love + int size; + +#define NV10_SET_VERTEX_ATTRIB(i,j,k) \ + do { \ + size = attr_size[j] << 4; \ + size |= (attr_size[j]*4) << 8; \ + size |= NV20_VERTEX_ATTRIBUTE_TYPE_FLOAT; \ + BEGIN_RING_SIZE(channel, NV10_VERTEX_ATTRIBUTE(i),1); \ + OUT_RING(size); \ + } while (0) + + NV10_SET_VERTEX_ATTRIB(0, _TNL_ATTRIB_POS); + NV10_SET_VERTEX_ATTRIB(1, _TNL_ATTRIB_COLOR0); + NV10_SET_VERTEX_ATTRIB(2, _TNL_ATTRIB_COLOR1); + NV10_SET_VERTEX_ATTRIB(3, _TNL_ATTRIB_TX0); + NV10_SET_VERTEX_ATTRIB(4, _TNL_ATTRIB_TX1); + NV10_SET_VERTEX_ATTRIB(5, _TNL_ATTRIB_NORMAL); + NV10_SET_VERTEX_ATTRIB(6, _TNL_ATTRIB_WEIGHT); + NV10_SET_VERTEX_ATTRIB(7, _TNL_ATTRIB_FOG); + + BEGIN_RING_SIZE(channel, NV10_VERTEX_SET_FORMAT); + OUT_RING(0); } else if (nmesa->screen->card_type==NV_20) { for(i=0;i<16;i++) { -- cgit v1.2.3