RFC: Screenshot to DMA fd
The existing screenshot implementation makes use of glReadPixels and dumps the contents to a file.
This method seems to be less performant and cannot be used for the following:
-
60 fps use case: As glReadPixels is not H/W accelerated, the current implementation takes more than 16.6 ms to generate a screenshot.
-
3D animations between applications: It is not currently possible to reuse the screenshot of application surfaces in a performant way as the contents are now dumped to a file.
e.g. window manager should be able to take the screenshot of all application surfaces and create a 3D animation which shows the tiled(stacked) view of all running applications.
One way to address the above use cases is to copy the screenshot content to a DMA buffer. The window manager should allocate a DMA buffer and sent it to the compositor. The compositor then copies the surface/output content to the DMA buffer and returns it.
I have provided a sample implementation and test based on ivi-shell.