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


------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt -- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to