llvmpipe: fix flatshading in new line code

Calculate interpolants before rearranging the vertices.
This commit is contained in:
Keith Whitwell 2010-09-21 14:28:51 +01:00
parent 92617aeac1
commit 2ec86793bd
1 changed files with 13 additions and 6 deletions

View File

@ -292,6 +292,7 @@ try_setup_line( struct lp_setup_context *setup,
float x2diff;
float y2diff;
float dx, dy;
float area;
boolean draw_start;
boolean draw_end;
@ -311,6 +312,18 @@ try_setup_line( struct lp_setup_context *setup,
dx = v1[0][0] - v2[0][0];
dy = v1[0][1] - v2[0][1];
area = (dx * dx + dy * dy);
if (area == 0) {
LP_COUNT(nr_culled_tris);
return TRUE;
}
info.oneoverarea = 1.0f / area;
info.dx = dx;
info.dy = dy;
info.v1 = v1;
info.v2 = v2;
/* X-MAJOR LINE */
if (fabsf(dx) >= fabsf(dy)) {
@ -573,12 +586,6 @@ try_setup_line( struct lp_setup_context *setup,
line->plane[3].dcdx = y[3] - y[0];
info.oneoverarea = 1.0f / (dx * dx + dy * dy);
info.dx = dx;
info.dy = dy;
info.v1 = v1;
info.v2 = v2;
/* Setup parameter interpolants:
*/
setup_line_coefficients( setup, line, &info);