new radeon tiling patch

Roland Scheidegger rscheidegger_lists at hispeed.ch
Thu Jan 13 06:25:46 PST 2005


Ok, here's a new version. It also contains a supposed patch for 
mergedfb-pageflip (untested, but I need that for color tiling, otherwise 
I'd need to redo the crtc address calculation in the drm).

http://homepage.hispeed.ch/rscheidegger/dri_experimental/radeon_tiling_drm7.diff
http://homepage.hispeed.ch/rscheidegger/dri_experimental/radeon_tiling_ddx7.diff
http://homepage.hispeed.ch/rscheidegger/dri_experimental/radeon_tiling_dri7.diff

Actually, I've decided to stick with the tiled frontbuffer, untiled for 
the rest of the graphic memory scheme. It is now fully working, as far 
as I can see. Granted, it's cheating poor old XAA a bit, but it seemed 
actually like less hassle (with everything tiled, surface allocation 
gets problematic, since you need to define exceptions for cursor, xv, 
and need to make sure you don't get problems at the borders between 
tiled and untiled regions).
This scheme could potentially have a slight performance impact for 2d 
use (will do some measurements later today) but I don't expect anything 
noticeable.
As a side effect, this means that switching between tiled and untiled 
resolutions is fully working, except you need to cleanup the screen 
manually after you do so, which is one of the few remaining problems. 
Still couldn't figure out how to solve that really, I'm still tempted to 
throw out interlaced and doublescan resolutions (I believe currently 
there's a second issue with regard to these resolutions, in clone and 
mergedfb modes).
Also, vesa fb console is now working, as are things like starting one 
tiled X server and an untiled one in a different VT (can't test dual-head).
There's also an issue with pageflip and scrolling in virtual 
resolutions. Once the kernel has initialized the FLIP_CNTL bit, you get 
some ugly flickering when you scroll around. As far as I could see, this 
is because the crtc will now get the new offset after each hsync, but 
will not get the new offset_cntl value (which needs to be changed in 
tiled mode when you scroll around) until a vsync. I tried to insert a 
RADEON_WAIT_CRTC_PFLIP condition but it didn't work.

I'm still looking for pointers how to implement handshaking between 
drm/ddx/dri. Otherwise, I'll just go ahead and up the ddx major version.

Could someone please look at the patches? Especially the drm/ddx 
interaction and the ddx changes could probably really need some review.
Testing is also welcome of course (in fact wrt to scrolling in a virtual 
resolution, it seems not all cards need the exact same offset 
calculation, and it's unknown which cards need which one), just don't 
forget to actually enable tiling :-).

Roland



More information about the xorg mailing list