I finally figured out what I was doing wrong when attempting to do premultiply the tex coords. Unfortunately I was making a lot of mistakes (such as remultiplying in reused vertices on primitive drawing functions, igoring the coordinate pointer increment in _vbtmp.h so effectively reading the homogeneous coord from the vertex ahead, and forgetting the vertex interpolation for clipping) which took me a bunch of time to debug...
In the end I come up to the conclusion that this is neither one is the way to do it: - Premultipling in the _emit function is not enough because clipping is made after. Even if we premultiply the interpolation result during clipping this doesn't give the correct results since we are interpolating with the w values in there. To give the right results we would have to divide by w, make the interpolation, and multiply again... which obviously is not efficient. - Doing this on the primitive drawing functions also leads to unnecessary work duplication as for each reused vertex we make the same exact calculation. One way would be make a premultiplication pass between the vertex buffer emition/clipping and the primitive drawing. Nevertheless, care must be taken with the hybrid callbacks (mach64_callback_point/line/tri), since they wouldn't expect the vertexes with the tex coords premultiplied. I think that since the software callbacks would be so slow compared with the hw ones, the best would be simply undo the multiplication before feeding the vertexes to these functions, which would be barely noticed. Any ideas? José Fonseca _______________________________________________ Dri-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dri-devel