tag 405803 patch thanks Cyril Brulebois <[EMAIL PROTECTED]> (22/02/2007): > With this patch, everything looks OK, many thanks!
Hi, see the attached file for an unified diff. Cc-ing debian-x as requested by Julien Cristau. Cheers, -- Cyril Brulebois
--- mesa-6.5.1.orig/src/mesa/tnl/t_vb_cliptmp.h +++ mesa-6.5.1/src/mesa/tnl/t_vb_cliptmp.h @@ -125,6 +125,7 @@ GLfloat t0 = 0; GLfloat t1 = 0; GLuint p; + const GLuint v0_orig = v0; if (mask & 0x3f) { LINE_CLIP( CLIP_RIGHT_BIT, -1, 0, 0, 1 ); @@ -153,12 +154,18 @@ v0 = newvert; newvert++; } - else + else { ASSERT(t0 == 0.0); + } if (VB->ClipMask[v1]) { - INTERP_4F( t1, coord[newvert], coord[v1], coord[v0] ); - interp( ctx, t1, newvert, v1, v0, GL_FALSE ); + /* Note: we need to use vertex v0_orig when computing the new + * interpolated/clipped vertex position, not the current v0 which + * may have got set when we clipped the other end of the line! + */ + + INTERP_4F( t1, coord[newvert], coord[v1], coord[v0_orig] ); + interp( ctx, t1, newvert, v1, v0_orig, GL_FALSE ); if (ctx->Light.ShadeModel == GL_FLAT) tnl->Driver.Render.CopyPV( ctx, newvert, v1 ); @@ -167,8 +174,9 @@ newvert++; } - else + else { ASSERT(t1 == 0.0); + } tnl->Driver.Render.ClippedLine( ctx, v0, v1 ); }
pgp5z77pex6Du.pgp
Description: PGP signature