Intel Still Working On Atomic Mode-Setting / Nuclear Page-Flips
Phoronix: Intel Still Working On Atomic Mode-Setting / Nuclear Page-Flips
It's been a while since last hearing anything on the matter of atomic mode-setting and nuclear page-flipping, but the work is still being done for the Linux kernel by Intel engineers...
must've been April 1st when they thought up that name
Yeah, this is the first Phoronix article that's complete gibberish to me. I suppose you really need to be into DRM driver development to understand exactly what's happening.
nuclear page flipping, hilarious
can someone explain this stuff to us noobs? what´s the longterm goal of this?
Originally Posted by tomtomme
Do the complete mode setting as a single operation, preferably in a way that if it fails, it goes back to where it was before or doesn't even change things in the first place. So a "all or nothing" situation.
You have 2 screens and right now they have the same resolution and the image is cloned. Now you want to have them side-by-side (screen1 left of screen2) and have screen2 rotated by 90°.
Today this will be done sequentially and you will see the screen flicker twice (or more times). And if the first command succeeds and the seconds fails you have a mixture of the old mode and the new mode.
Nuclear Page-Flips (I think they are now called atomic page flips?):
Do a page flip on multiple fbs in a single vblank.
Does anyone know how many hardware planes are exposed by your typical r600 class card?
very minor clarification: atomic (aka nuclear) pageflip is really about flipping multiple overlays on a single display at the same time. If you are using hw overlay to compose some layers, you really want to be sure that the new size/position of the overlay takes effect at the same time as pageflip of the other layers. Otherwise you'll see briefly the part beneath the overlay layer which the gpu did not paint. Remember moving video player window around back when Xv used overlays and the video being out of sync with window borders?
Originally Posted by droste
If you have multiple displays, and you can vsync-lock them (not always possible) then you could as well flip the two displays at the same time as well.
The atomic modeset part of it is about doing modeset in one shot on multiple displays (or to give userspace an all-or-nothing go/no-go response). Use case for this is, for exaple, intel ivb devices, which technically can drive 3 displays. But with some constraints about two of the displays needing to share a PLL (ie. need same pixel clock). Currently we really have no way to handle this.. userspace currently will do modeset one by one for each display. And when it gets to the 3rd display, if the requested resolution doesn't match the other pipe sharing the PLL, oh, whoops, sorry.. no signal. With atomic, once it is plumbed through xrandr/etc, userspace will be able to ask the kernel if a configuration is possible. (So in the GUI, you might be greying out resolutions which are not possible, given what is selected on the other displays.)
As it turns out, atomic pageflip and modeset are really the same new ioctl. And share most of the same infrastructure and codepaths. The difference is really which settings you are changing.
And yes, "nuclear" is just a (bad) pun ;-)