Added some NV20 support - nv_30_tris.c should probably be renamed again.
authorStephane Marchesin <marchesin@icps.u-strasbg.fr>
Mon, 6 Mar 2006 12:23:24 +0000 (12:23 +0000)
committerStephane Marchesin <marchesin@icps.u-strasbg.fr>
Mon, 6 Mar 2006 12:23:24 +0000 (12:23 +0000)
src/mesa/drivers/dri/nouveau/nv30_tris.c

index 275536c8e44c42c2f3634f3f7ffe36ef63996609..6b949bd3b7623884e88ccbf4ba23a4be3c553df9 100644 (file)
@@ -673,18 +673,38 @@ static inline void nv30OutputVertexFormat(struct nouveau_context* nmesa, GLuint
        /* 
         * Tell the hardware about the vertex format
         */
-       BEGIN_RING_SIZE(channel,0x1740,slots);
-       for(i=0;i<slots;i++)
+       switch(nmesa->screen->card_type)
        {
-               int size=attr_size[i];
-               OUT_RING(0x00000002|(size*0x10));
+               case NV_20:
+                       {
+                               for(i=0;i<16;i++)
+                               {
+                                       int size=attr_size[i];
+                                       BEGIN_RING_SIZE(channel,0x1760+i*4,1);
+                                       OUT_RING(0x00000002|(size*0x10));
+                               }
+                       }
+                       break;
+               case NV_30:
+               case NV_40:
+               case G_70:
+                       {
+                               BEGIN_RING_SIZE(channel,0x1740,slots);
+                               for(i=0;i<slots;i++)
+                               {
+                                       int size=attr_size[i];
+                                       OUT_RING(0x00000002|(size*0x10));
+                               }
+                               BEGIN_RING_SIZE(channel,0x1718,1);
+                               OUT_RING(0);
+                               BEGIN_RING_SIZE(channel,0x1718,1);
+                               OUT_RING(0);
+                               BEGIN_RING_SIZE(channel,0x1718,1);
+                               OUT_RING(0);
+                       }
+                       break;
+               
        }
-       BEGIN_RING_SIZE(channel,0x1718,1);
-       OUT_RING(0);
-       BEGIN_RING_SIZE(channel,0x1718,1);
-       OUT_RING(0);
-       BEGIN_RING_SIZE(channel,0x1718,1);
-       OUT_RING(0);
 }