Use RENDERINPUTS macros to access render_inputs_bitset
authorBen Skeggs <darktama@iinet.net.au>
Fri, 17 Nov 2006 21:58:02 +0000 (21:58 +0000)
committerBen Skeggs <darktama@iinet.net.au>
Fri, 17 Nov 2006 21:58:02 +0000 (21:58 +0000)
src/mesa/drivers/dri/nouveau/nouveau_context.h
src/mesa/drivers/dri/nouveau/nv10_swtcl.c

index 85d71cb04c49c9c15a57825924c9061c3e949920..09972bebac4e3756a1801f73eff9d7bd918331ed 100644 (file)
@@ -114,7 +114,7 @@ typedef struct nouveau_context {
 
        /* The rendering context information */
        GLenum current_primitive; /* the current primitive enum */
-       GLuint render_inputs_bitset; /* the current render inputs */
+       DECLARE_RENDERINPUTS(render_inputs_bitset); /* the current render inputs */
 
        nouveauScreenRec *screen;
        drm_nouveau_sarea_t *sarea;
index 510704f7d45d9132406d684117f885b267043c5b..772a5368e9ba65a33e0a2e21174caf58a74463db 100644 (file)
@@ -627,10 +627,11 @@ static void nv10ChooseRenderState(GLcontext *ctx)
 
 
 
-static inline void nv10OutputVertexFormat(struct nouveau_context* nmesa, GLuint index)
+static inline void nv10OutputVertexFormat(struct nouveau_context* nmesa)
 {
        GLcontext* ctx=nmesa->glCtx;
        TNLcontext *tnl = TNL_CONTEXT(ctx);
+       DECLARE_RENDERINPUTS(index);
        struct vertex_buffer *VB = &tnl->vb;
        int attr_size[16];
        int default_attr_size[8]={3,3,3,4,3,1,4,4};
@@ -638,20 +639,22 @@ static inline void nv10OutputVertexFormat(struct nouveau_context* nmesa, GLuint
        int slots=0;
        int total_size=0;
 
+       RENDERINPUTS_COPY(index, nmesa->render_inputs_bitset);
+
        /*
         * Determine attribute sizes
         */
        for(i=0;i<8;i++)
        {
-               if (index&(1<<i))
+               if (RENDERINPUTS_TEST(index, i))
                        attr_size[i]=default_attr_size[i];
                else
                        attr_size[i]=0;
        }
        for(i=8;i<16;i++)
        {
-               if (index&(1<<i))
-                       attr_size[i]=VB->TexCoordPtr[i]->size;
+               if (RENDERINPUTS_TEST(index, i))
+                       attr_size[i]=VB->TexCoordPtr[i-8]->size;
                else
                        attr_size[i]=0;
        }
@@ -661,7 +664,7 @@ static inline void nv10OutputVertexFormat(struct nouveau_context* nmesa, GLuint
         */
        for(i=0;i<16;i++)
        {
-               if (index&(1<<i))
+               if (RENDERINPUTS_TEST(index, i))
                {
                        slots=i+1;
                        if (i==_TNL_ATTRIB_POS)
@@ -752,12 +755,13 @@ static void nv10ChooseVertexState( GLcontext *ctx )
 {
        struct nouveau_context *nmesa = NOUVEAU_CONTEXT(ctx);
        TNLcontext *tnl = TNL_CONTEXT(ctx);
-       GLuint index = tnl->render_inputs_bitset;
-
-       if (index!=nmesa->render_inputs_bitset)
+       DECLARE_RENDERINPUTS(index);
+       
+       RENDERINPUTS_COPY(index, tnl->render_inputs_bitset);
+       if (!RENDERINPUTS_EQUAL(index, nmesa->render_inputs_bitset))
        {
-               nmesa->render_inputs_bitset=index;
-               nv10OutputVertexFormat(nmesa,index);
+               RENDERINPUTS_COPY(nmesa->render_inputs_bitset, index);
+               nv10OutputVertexFormat(nmesa);
        }
 }