On Tue, Jan 07, 2003 at 03:48:51PM +0100, Martin Spott wrote:
> >> Yes, that would be the one.  If you take all the torus together it reminds 
> >> me of a cartoonish framework for what could be overall a sphere.  Imagine 
> >> stretching a piece of cloth around the whole grouping ...
> >> 
> >> > Also, what do you mean by flickers?
> >> 
> >> It was like the image that was supposed to be clipped because it was 
> >> hidden became visible briefly as the light went by.  It just happens 
> >> briefly and then it is quickly corrected.  This is probably not an 
> >> accurate description, but there it is.
> 
> > Okay... could you set the value of testRender/capt to some directory with
> > lots of free space and press 'k'?  It'll record PPM-format screenshots...
> > then send the appropriate frame(s) to me, preferrably as PNG or JPG. :)
> 
> Are you still interested in these ones ?

Yeah.

> >> Oops - mistype.  Switching the GL_draw method to 0 correct all of the 
> >> anomalies I was seeing in the display.  
> 
> > That makes more sense. :)  Sounds like it's a problem with displaylists and
> > vertex arrays.  Does it still happen if you set the value of GL_dlistMax to
> > 0?
> 
> This not only cures the artifacts I encountered, this also cures the
> flickering torus and - as far as I can tell now - it cures the X server
> crashes with my Radeon7500. Even with GL_draw_method set to 1,

Then there's a problem with glArrayElement() in the R200 driver while
recording a displaylist.

The specific piece of code that it's running is this (while a displaylist
is being recorded in GL_COMPILE_AND_EXECUTE mode):

                glEnableClientState(GL_VERTEX_ARRAY);
                glVertexPointer(3, GL_FLOAT, stride, &((*mesh)[0]->pos.x)); 
                glEnableClientState(GL_NORMAL_ARRAY);
                glNormalPointer(GL_FLOAT, stride,
                                &((*mesh)[0]->nrm.x)); 
                int p = 0;
                for (int i = 0; i < h - 1; i++)
                {
                        glBegin(GL_TRIANGLE_STRIP);
                        for (int j = 0; j < w; j++)
                        {
                                glArrayElement(p);
                                glArrayElement(p + w);
                                p++;
                        }
                        glEnd();
                }

(w and h are set previously, and the nasty pointer math on 'mesh' just
gives pointers to the appropriate w*h arrays of vertex data.)

-- 
http://trikuare.cx


-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to