r300: fix WPOS for SWTCL
authorMaciej Cencora <m.cencora@gmail.com>
Sun, 5 Jul 2009 01:17:32 +0000 (03:17 +0200)
committerMaciej Cencora <m.cencora@gmail.com>
Mon, 13 Jul 2009 17:28:13 +0000 (19:28 +0200)
src/mesa/drivers/dri/r300/r300_swtcl.c

index d73508d36e38874720ae7294d35372127161e67c..56ed519cf414106fcc7e6c0ed7d0723d14cc4320 100644 (file)
@@ -150,6 +150,22 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead,  GLuint *_
                ADD_ATTR(VERT_ATTRIB_POINT_SIZE, R300_DATA_TYPE_FLOAT_1, SWTCL_OVM_POINT_SIZE, swiz, MASK_X, 0);
        }
 
+       if (rmesa->selected_fp->wpos_attr != FRAG_ATTRIB_MAX) {
+               int tex_id = rmesa->selected_fp->wpos_attr - FRAG_ATTRIB_TEX0;
+
+               VB->AttribPtr[VERT_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_POS];
+               VB->TexCoordPtr[tex_id] = VB->AttribPtr[VERT_ATTRIB_POS];
+               RENDERINPUTS_SET(tnl->render_inputs_bitset, _TNL_ATTRIB_TEX0 + tex_id);
+       }
+
+       if (rmesa->selected_fp->fog_attr != FRAG_ATTRIB_MAX) {
+               int tex_id = rmesa->selected_fp->fog_attr - FRAG_ATTRIB_TEX0;
+
+               VB->AttribPtr[VERT_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_FOG];
+               VB->TexCoordPtr[tex_id] = VB->AttribPtr[VERT_ATTRIB_FOG];
+               RENDERINPUTS_SET(tnl->render_inputs_bitset, _TNL_ATTRIB_TEX0 + tex_id);
+       }
+
        /**
         *  Sending only one texcoord component may lead to lock up,
         *  so for all textures always output 4 texcoord components to RS.
@@ -192,20 +208,6 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead,  GLuint *_
                }
        }
 
-       if (rmesa->selected_fp->wpos_attr != FRAG_ATTRIB_MAX) {
-               int tex_id = rmesa->selected_fp->wpos_attr - FRAG_ATTRIB_TEX0;
-
-               VB->AttribPtr[VERT_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_POS];
-               RENDERINPUTS_SET(tnl->render_inputs_bitset, _TNL_ATTRIB_TEX0 + tex_id);
-       }
-
-       if (rmesa->selected_fp->fog_attr != FRAG_ATTRIB_MAX) {
-               int tex_id = rmesa->selected_fp->fog_attr - FRAG_ATTRIB_TEX0;
-
-               VB->AttribPtr[VERT_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_FOG];
-               RENDERINPUTS_SET(tnl->render_inputs_bitset, _TNL_ATTRIB_TEX0 + tex_id);
-       }
-
        if (first_free_tex >= ctx->Const.MaxTextureUnits) {
                fprintf(stderr, "\tout of free texcoords to write fog coordinate\n");
                _mesa_exit(-1);