commit | b6a675e6349e289f209cefcb3eacbf4faa26e567 | [log] [tgz] |
---|---|---|
author | Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com> | Tue Mar 27 16:10:55 2018 +0100 |
committer | Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com> | Fri Jul 13 15:41:05 2018 +0100 |
tree | 87d19fd10c6b702a71ba086b1b7e62cabad32a6e | |
parent | db440a92e1e337958b6eebdb3c55fbe843e6269c [diff] |
drm_hwcomposer: add scene flattening Flattening of a scene is triggered if it doesn't change for a while. As of now there is a separate thread which triggers flattening if the scene did not change in last 60 vsyncs. There are two options for flattening a scene: * Serial, by using a writeback connector attached to the same crtc as the one driving the display. This happens only if possible_clones mask reports that the display encoder and writeback encoder could work simultaneously. The steps for achieving this are: 1. Build a commit that enables writeback connector, we don't need to build a commit that contains the entire active_composition, just set the writeback specific properties a let the kernel duplicate the rest of the state. 2. Commit and wait for writeback_fence to fire. 3. Setup a composition with just one plane enabled. 4. Apply the composition if a new one has not been applied meanwhile. * Concurrent, by comitting the scene to a new unused crtc (state != DRM_MODE_CONNECTED) and getting the result back through a writeback connector. The steps for achieving this are: 1. Copy layers from active composition. 2. Plan layers of copy on the unused crtc. This is realized by using a newly created DrmDisplayCompositor object. 3. Commit copy to the unsed crtc and get the result as a drmhwclayer. 4. Setup a composition with just one plane enabled. Re-importing the buffers might be needed since we might have been using a different dri node. 5. Apply the composition if a new one has not been applied while doing the flattening Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com>
Patches to drm_hwcomposer are very much welcome, we really want this to be the universal HW composer implementation for Android and similar platforms So please bring on porting patches, bugfixes, improvements for documentation and new features.
A short list of contribution guidelines:
Submit changes via gitlab merge requests on gitlab.freedesktop.org
drm_hwcomposer is Apache 2.0 Licensed and we require contributions to follow the developer's certificate of origin: http://developercertificate.org/
When submitting new code please follow the naming conventions documented in the generated documentation. Also please make full use of all the helpers and convenience macros provided by drm_hwcomposer. The below command can help you with formatting of your patches:
`git diff | clang-format-diff-3.5 -p 1 -style=file`
Hardware specific changes should be tested on relevant platforms before committing.
If you need inspiration, please checkout our TODO issues
Happy hacking!