Joe Bronkema wrote:

> Hi,
> I'm working on a program to display 2D map data derived from the World
> Data Bank, and have run across a couple of problems that look to me like
> Mesa bugs.
> 
> I'm running Mesa 3.1 from Ryan Weaver's RPMs on a Red Hat 5.1 Linux
> system and XFree86 3.3.2. I've displayed locally in 24 bit truecolor,
> and remotely to an OpenVMS display that I believe is 24 bit direct
> color.
> 
> The program reads a map data file and builds a display list consisting
> of line strips, which can be quite lengthy.
> 
> I sometimes see extra lines appear on the display.  This seems to happen
> at about the time the last point of some line strip gets clipped out of
> the display.  I have a GLUT-based program and dataset that can reproduce
> the problem.  Controls in the program use the middle mouse button and
> drag action to pan/zoom the map.  Control-drag to zoom, drag to pan,
> escape to quit.
> 
> The second problem is that when I use double buffering, after
> panning/zooming for a little while (under 30 seconds of use) I get a
> segmentation fault.  This hasn't happened when I don't double-buffer.
> 
> The program's a little over 200 lines, so I've included that.  The
> smallest dataset I have which reproduces the problem is about 80K, so I
> thought I should ask before emailing it.  The 80K dataset is apparently
> insufficient to cause the seg fault, but I have one that's 916K that
> will do it.  Please let me know if you'd like me to send either or both
> datasets.

Joe,

I found a work-around for your line clipping bug.  Insert a glFlush()
call after glEnd().  Mesa tries to combine adjacent glBegin/glEnd
primitives to improve vertex throughput.  You've uncovered a bug in
the combining/clipping code.  By inserting glFlush() you'll force
the primitive to be drawn right away, rather than later.

Actually, inserting any sort of state-change/query function (like
glEnable() or glIsEnabled()) would cause the flush as well. If
you're running on a variety of OpenGL implementations you may want
to avoid glFlush() for performance reasons.

Keith's pretty busy with driver work now but he said he'll try to fix
this bug at some point.

-Brian


_______________________________________________
Mesa-bug maillist  -  [EMAIL PROTECTED]
http://lists.mesa3d.org/mailman/listinfo/mesa-bug


_______________________________________________
Mesa-dev maillist  -  [EMAIL PROTECTED]
http://lists.mesa3d.org/mailman/listinfo/mesa-dev

Reply via email to