This has 0 performance cost unless we need to enable the feature because we exceed the driver's limits (what happens on Intel HW for 3x4k). In this case, we start using a buffer per-crtc and blit to it whenever there are damages on the screen.
This is pretty much the optimal behaviour performance-wise in a composited environment (unless the kernel lifts the limits I was talking about in the last comment). However, in non-composited environments, we can further improve this by blitting the damages no more than once per frame (hoping for some of the damages to overlap). I will get to that next week.
Also happening next week is more testing, and verifying that this also works without glamor and with the other options of modesetting.
Here is the first version of the patchset: https:/ /cgit.freedeskt op.org/ ~mperes/ xserver/ log/?h= 3x4k
This has 0 performance cost unless we need to enable the feature because we exceed the driver's limits (what happens on Intel HW for 3x4k). In this case, we start using a buffer per-crtc and blit to it whenever there are damages on the screen.
This is pretty much the optimal behaviour performance-wise in a composited environment (unless the kernel lifts the limits I was talking about in the last comment). However, in non-composited environments, we can further improve this by blitting the damages no more than once per frame (hoping for some of the damages to overlap). I will get to that next week.
Also happening next week is more testing, and verifying that this also works without glamor and with the other options of modesetting.