On Sun, 28 Nov 2004 [EMAIL PROTECTED] wrote:

> The problem with this is my project targets older laptops, it's a engine
> management system tuning suite and alot of these car guys have junk bin
> laptops sitting in their cars (pentium class) with a wide array of graphic
> chipsets and displays.  I don't think anyone will be using a accelerated
> glx system, won't find any nvidia's here.  I chose VESA because it seems
> to be the easiest way to get higher than vga resolutions reliably on
> the target hardware... going this route tosses acceleration capabilities
> out the window hence the strive to use direct framebuffer rendering (at
> least when linear framebuffer is available).
>
> It may be passe, but it's the fastest method (and oh so beautiful) I've 
> managed
> to wring out of my p133 development workstation.
>
> Does this glx method provide great results even on Xvesa non-nvidia
> systems?

   I don't have a good survey of OpenGL implementations.
You might ask one of the DRI or Mesa-related lists if vsynced
buffers swaps are very common, or still rare.  And also, what kind
of glDrawPixels performance they get.  I would guess not much attention
has been paid to old pre-AGP machines such as yours though,
so maybe OpenGL is not such a great solution for such old hardware.


                        Mark.


>
> Also, I was not aware that the flat panels had this vertical retrace
> issue... one of my test machines has a 18" flat panel and it was tearing
> like crazy when I just did a vga_waitretrace() before doing the page
> flip.  However it should be noted, that after switching to Abrashes
> method of polling the display enable bit before performing the flip and
> then waiting for retrace has eliminated all tearing on the flat panel
> display... this was tested in 640x480 800x600 1024x768 and 1280x1024
> the native resolution of the panel.  It has however, caused some tearing on
> my 133 w/matrox on a CRT where before there was none...  this I suspect
> is a matroxism though.
>
> Thanks for the replies, this thread has been prettty informative thus
> far.
>
> Cheers.
>
> On Sat, Nov 27, 2004 at 01:56:44PM -0800, Mark Vojkovich wrote:
> >    In my opinion, direct framebuffer rendering is passe.  My
> > recommendation is to render into system memory, use glDrawPixels
> > to copy to a GLXDrawable's back buffer and then use glXSwapBuffers
> > to display the buffer.  At least with NVIDIA's binary drivers
> > this should be faster than direct framebuffer rendering because
> > rendering to system memory is cached, and glDrawPixels uses DMA,
> > and if the __GL_SYNC_TO_VBLANK environment variable is set,
> > glXSwapBuffers will sync to vblank regardless of whether you
> > are rendering to full screen or a smaller window.
> >
> >    This would be the most portable method, and I would hope
> > all OpenGL implementations have a way to do vblank-synced
> > swaps by now.
> >
> >                             Mark.
> >
> > On Sat, 27 Nov 2004 [EMAIL PROTECTED] wrote:
> >
> > > Is XFree86 w/DGA the only way to achieve high performance direct
> > > framebuffer rendering (page flipped) without any negative artifacts on
> > > linux?
> > >
> > > I'm using svgalib w/vesa right now for a strictly 8bpp project and the
> > > only way I've managed to get fast (full) frame rates without tearing or
> > > flickering is page flipping when linear frame buffer is supported.
> > > However, it took some vga hacks to reliably sync before the flip (just
> > > waiting for retrace doesnt work, I duplicated the Abrash-documented method
> > > reading the vga status port and waiting til it is mid-scan (display 
> > > enable)
> > > to set the start address then waiting for retrace to ensure the new offset
> > > gets a draw in).
> > >
> > > It's working fine on all my test machines which it would tear on before I
> > > implemented the Abrash method (previously I just waited for vertical
> > > retrace then flipped the page), but now it tears on the only box the old
> > > approach worked flawlessly on :(  It looks like my matrox millenium II
> > > notices when you change the display start address mid-scan and
> > > demonstrates this with a regular (every frame) tear.  My Abrash books say
> > > to set the address while the display is enabled as it's supposed to have
> > > latched onto the last start address for the duration of the scan... grr.
> > >
> > > Any suggestions would be much appreciated, I know this is a bit of a
> > > thread-hijack but it's somewhat related to Eugene's question.  I've been
> > > considering going down the DGA route and adding X to the mix due to
> > > the problems I've been encountering...  I'm just not sure it will solve
> > > all the problems, and will probably add new ones.
> > >
> > > Thanks in advance for any input, I'm sure many of you have had to deal
> > > with similar issues.
> > >
> > >
> > > On Thu, Nov 25, 2004 at 11:38:17AM -0800, Mark Vojkovich wrote:
> > > >    If you want tearless rendering you should be flipping.  Ie. render
> > > > to a non displayed portion of the framebuffer, then call XDGASetViewport
> > > > to display it after the copy is finished.  See the DGA test apps at
> > > > http://www.xfree86.org/~mvojkovi/, specifically texture.tar.gz.
> > > > If the texture and skull demos aren't tearless, there is a bug in the
> > > > DGA driver support for your card.
> > > >
> > > >
> > > >                         Mark.
> > > >
> > > > On Thu, 25 Nov 2004, Eugene Farinas wrote:
> > > >
> > > > > Hi guys! We're developing a DGA program that render full screen at 
> > > > > 1280x1024 16 bpp 15fps the video image read from a sony camera, but 
> > > > > we're experiencing tearing artifacts during rendering. This is a part 
> > > > > of the code that copies the data to the frame buffer:
> > > > >
> > > > > void CAM_APP::DisplayImage_NoPartial(unsigned char* offset)
> > > > > {
> > > > >       register int j;
> > > > >       register unsigned long caddr = (unsigned long) offset;
> > > > >       for(j=0; j<iSize; caddr+=2,j++){
> > > > >       *( (unsigned short*) caddr ) = sTable[g_pBuf[j]];
> > > > >       }
> > > > > }
> > > > >
> > > > > Where the offset is the start of the buffer destination, and g_pBuf 
> > > > > is the data captured from the camera. we've tried copying the data 
> > > > > during vertical resync but we're still experiencing tearing on the 
> > > > > image. We're using an AMD gx2 geode processor w/ 128 mb ram and 8mb 
> > > > > vram. I would like to ask your help in removing the tearing 
> > > > > artifacts. Thanks.
> > > > >
> > > > > ---
> > > > > Outgoing mail is certified Virus Free.
> > > > > Checked by AVG anti-virus system (http://www.grisoft.com).
> > > > > Version: 6.0.797 / Virus Database: 541 - Release Date: 11/15/2004
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > Devel mailing list
> > > > > [EMAIL PROTECTED]
> > > > > http://XFree86.Org/mailman/listinfo/devel
> > > > >
> > > > _______________________________________________
> > > > Devel mailing list
> > > > [EMAIL PROTECTED]
> > > > http://XFree86.Org/mailman/listinfo/devel
> > > _______________________________________________
> > > Devel mailing list
> > > [EMAIL PROTECTED]
> > > http://XFree86.Org/mailman/listinfo/devel
> > >
> > _______________________________________________
> > Devel mailing list
> > [EMAIL PROTECTED]
> > http://XFree86.Org/mailman/listinfo/devel
> _______________________________________________
> Devel mailing list
> [EMAIL PROTECTED]
> http://XFree86.Org/mailman/listinfo/devel
>
_______________________________________________
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel

Reply via email to