From: Roland S. <rsc...@hi...> - 2005-01-18 19:43:37
|
Roland Scheidegger wrote: >> The DRM could update the register in the vblank interrupt handler? > > That sounds right (didn't know there was such a handler, but there it > is...). I can't see how to do that though. Looks complicated :-(. Hmm, played around with waiting on vblank a bit. Tried both RADEONWaitForVerticalSync (without the usleep and thus larger timeout value) and the drmWaitVBlank function. Both with moderate success (meaning it works sometimes, but still some flickering when scrolling). I think ddx (X) gets preempted at the wrong time... How would you do that in-kernel? There is vblank interrupt related stuff (radeon_driver_vblank_wait for instance), but that only is called when a user has requested a wait for vblank, as far as I can see (which is all the time with dri clients). Also, if doing that in the drm, we'd need to mess with OFFSET_CNTL there too (i.e. messy calculation or another field in the sarea). I also figured maybe RADEON_WAIT_CRTC_PFLIP would stop the cp so you could just put the offset_cntl and offset values in the ring buffer after that wait command, so I tried hacking in some out_ring commands in the DoAdjustFrame code, but that didn't work neither. Thus I'm still stuck at "unfixable" :-(. Roland |