[Mesa-dev] [PATCH] st_program.c: gl_ClipDistance must be interpolated in 3d space.

Vadim Girlin vadimgirlin at gmail.com
Mon Jul 2 13:45:25 PDT 2012


On Mon, 2012-07-02 at 10:08 -0700, Paul Berry wrote:
> On 2 July 2012 08:04, Vadim Girlin <vadimgirlin at gmail.com> wrote:
>         On Sun, 2012-06-24 at 11:18 +0200, Olivier Galibert wrote:
>         > That old bug was hidden but the clipper always interpolating
>         in 3d
>         > space no matter what it should have been doing.  Now that
>         the
>         > interpolation has been fixed, the bug shows up.
>         >
>         > Fixes bugzilla 51364.
>         >
>         > Signed-off-by: Olivier Galibert <galibert at pobox.com>
>         >
>         > diff --git a/src/mesa/state_tracker/st_program.c
>         b/src/mesa/state_tracker/st_program.c
>         > index e6664fb..9f98298 100644
>         > --- a/src/mesa/state_tracker/st_program.c
>         > +++ b/src/mesa/state_tracker/st_program.c
>         > @@ -569,12 +569,12 @@ st_translate_fragment_program(struct
>         st_context *st,
>         >           case FRAG_ATTRIB_CLIP_DIST0:
>         >              input_semantic_name[slot] =
>         TGSI_SEMANTIC_CLIPDIST;
>         >              input_semantic_index[slot] = 0;
>         > -            interpMode[slot] = TGSI_INTERPOLATE_LINEAR;
>         > +            interpMode[slot] =
>         TGSI_INTERPOLATE_PERSPECTIVE;
>         >              break;
>         >           case FRAG_ATTRIB_CLIP_DIST1:
>         >              input_semantic_name[slot] =
>         TGSI_SEMANTIC_CLIPDIST;
>         >              input_semantic_index[slot] = 1;
>         > -            interpMode[slot] = TGSI_INTERPOLATE_LINEAR;
>         > +            interpMode[slot] =
>         TGSI_INTERPOLATE_PERSPECTIVE;
>         
>         
>         At first glance this change doesn't seem correct, GLSL 1.30
>         spec says
>         that clip distances are interpolated linearly. Am I missing
>         something?
> 
> I think when the spec says "The clip distances will be linearly
> interpolated across the primitive...", they mean "linear in 3D space".
> Interpolating clip distances in screen space would produce really bad
> artifacts, IMHO.

Looking into it, I think you are right, sorry for the noise.

Though then I have some doubts about the "fs-clip-distance-interpolated"
test. AFAICS r600g in fact uses different interpolation for ClipDistance
inputs with and without the patch, but the test does pass in both
cases. 

Vadim

>  
>         
>         Vadim
>         
>         >              break;
>         >              /* In most cases, there is nothing special
>         about these
>         >               * inputs, so adopt a convention to use the
>         generic
>         > _______________________________________________
>         > mesa-dev mailing list
>         > mesa-dev at lists.freedesktop.org
>         > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>         
>         
>         
>         _______________________________________________
>         mesa-dev mailing list
>         mesa-dev at lists.freedesktop.org
>         http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>         
> 





More information about the mesa-dev mailing list