Modesetting: Per-CRTC framebuffers to provide 32k framebuffers to everyone (and enable Tear-free support)
Hi everyone,
I have been working on removing the 8k-limit from the modesetting driver on Intel (our CRTC's maximum supported stride is 8k). With this patchset, we allow our users to have up to four 8k screens in a row (not that I would recommend it though). This work came because of a bug report requesting support for 3x4k). This turned out to become useless for Intel as Ville Syrjälä bumped the maximum stride to 32k in a kernel patch, but this feature is still beneficial for simpler drivers that do not want to pull out tricks in the kernel.
Since my solution is introducing per-CRTC shadow framebuffers, I decided to make it worth its while for Intel platforms (my employer) by adding support for another long-wanted feature: TearFree.
I tested the different scenarios and always got the right image, acceptable performance (there is always room for improvement though), and no crashes. It wasn't like that during the development though... In an attempt to test all the different codepaths, I also added an option to disable atomic modesetting support.
I hope you are as enthusiastic about it as me about these new tricks, and I am looking forward to checking out your reviews and testing results!