Module: Mesa Branch: master Commit: ab74fee5e1a3fc3323b7238278637b232c2d0d95 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ab74fee5e1a3fc3323b7238278637b232c2d0d95
Author: Brian Paul <[email protected]> Date: Mon Jan 21 11:41:02 2013 -0700 draw: fix problem in screen-space interpolation clip code I don't see how this could have ever worked right. The screen-space interpolation code uses the vertex->data[pos_attr] position which contain window coords. But window coords are only computed for the unclipped vertices; the clipped vertices have undefined window coords (see draw_cliptest_tmp.h). Use the vertex clip coords instead which are always defined. Fixes http://bugs.freedesktop.org/show_bug.cgi?id=55476 (piglit fbo-blit-stretch failure on softpipe) Note: This is a candidate for the 9.0 branch. Reviewed-by: José Fonseca <[email protected]> --- src/gallium/auxiliary/draw/draw_pipe_clip.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gallium/auxiliary/draw/draw_pipe_clip.c b/src/gallium/auxiliary/draw/draw_pipe_clip.c index 878d779..7b879c4 100644 --- a/src/gallium/auxiliary/draw/draw_pipe_clip.c +++ b/src/gallium/auxiliary/draw/draw_pipe_clip.c @@ -168,9 +168,9 @@ static void interp( const struct clip_stage *clip, int k; t_nopersp = t; for (k = 0; k < 2; k++) - if (in->data[pos_attr][k] != out->data[pos_attr][k]) { - t_nopersp = (dst->data[pos_attr][k] - out->data[pos_attr][k]) / - (in->data[pos_attr][k] - out->data[pos_attr][k]); + if (in->clip[k] != out->clip[k]) { + t_nopersp = (dst->clip[k] - out->clip[k]) / + (in->clip[k] - out->clip[k]); break; } } _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
