From: Keith W. <ke...@tu...> - 2003-10-06 13:29:06
|
Jacek Rosik wrote: > W lis'cie z pon, 06-10-2003, godz. 10:38, Keith Whitwell pisze: > >>>Ok I got it, but I have a question. In DRITransitionXXXXX functions in >>>dri.c DRIClipNotifyAllDrawables is called. I don't quite understand >>>purpose of this functions but I think it should also get called in my >>>DRITransitionToStereo/Mono as functionality is more less the same as >>>DRITransitiontoShared/PrivateBuffers. Correct me if I'm wrong. >>> >> >>This function sets a flag in shared memory to let each client know that their >>cliprects have changed. When they next grab the lock, they'll notice this and >>issue a request to the X server to get the current cliprects. >> >>Keith > > Hi > > Thanks figured it out too. Now my implementation switches to quadbuffers > only when stereo drawable is present. But I have run into some problems. > In quadbuffer mode stereosoptic and monosoptic applications rendering to > back buffer work fine. The problem is when monosoptic app renders to front buffer, > then a software fallback is required (it must render into front left and front > right). So when stereo drawable is created all those apps must switch to software > fallbacks. Is it Ok to switch to fallback in radeonGetLock? Even if so then > part of the frame may be already rendered to only one buffer. So what I think of > now is to flush all pending drawing operations copy left -> right and then switch > to fallback. It my be quite hard with my current knowledge about radeon pipeline > so I have to educate myself. Could You point me towhere to start looking? > > I know that vertex are accumulated and then are sent to the hardware. > Is it possible (hard?) to do something like this in order to render > into more than buffer. > > radeonSetBuffer(GL_FRONT_LEFT) > radeonSendDataToHardware(); > radeonSetBuffer(GL_FRONT_RIGHT) > radeonSendDataToHardware(); Yes, that sort of thing is possible. If you look at the older 3d drivers, eg. r128, you'll see that we had to use a loop to dispatch regular vertices as we could only send a few cliprects to the kernel at a time. You could do a similar loop over the two buffers. > Another problem is that when using shadowfb in order to update other buffers and > 3d window is moved contents of right buffer get overwritten by contents of left one. > Is there a way to disable shadowfb for 3d windows? Shadowfb is only used for pageflipping, right? Keith |