commit | 3f17bc0953a6efae769c26ba116a7e936303315c | [log] [tgz] |
---|---|---|
author | Paul Howgego <paul.howgego@arm.com> | Tue Jun 09 18:21:45 2020 +0100 |
committer | John Stultz <john.stultz@linaro.org> | Fri Jun 26 22:57:10 2020 +0000 |
tree | 2daa323bafa9290dd55f0bb4307b4e07fc244bc3 | |
parent | a63d66c7bbb2b990e86040eb646540924bd20a23 [diff] |
drm_hwcomposer: Fix invalid buffer_handle_t pointer In Android 11, at boot time, I see the following sequence of calls from SurfaceFlinger that trigger this: // Composition type for layer is saved in DRM HWC Layer validated_type_ validateDisplay() // Layer composition type saved in DRM HWC Layer sf_type_ acceptDisplayChanges() // Composition type in Layer sf_type_ is now "client" so DRM HWC doesn't // update the Layer buffer pointer setLayerBuffer() // DRM HWC Layer sf_type_ is now changed back to "device" setLayerCompositionType() // DRM HWC iterates through the layers and finds that Layer composition // type in sf_type_ is "device" so thinks it is fine to calls // importBuffer() but this Layer now has an invalid pointer as the // setLayerBuffer() was ignored. validateDisplay() Thus this patch, changes the logic to always update the buffer_handle_t pointer in setLayerBuffer regardless of composition type rather than keeping the invalid buffer_handle_t in the Layer obect. The composition type may be changed back to device composition by setLayerCompositionType at which point the Layer object needs to have saved the buffer_handle_t. Not sure how we could reproduce the same sequence of calls on another Android version. Signed-off-by: Paul Howgego <paul.howgego@arm.com> [jstultz: Reword and add context from merge request to the commit message] Signed-off-by: John Stultz <john.stultz@linaro.org> Change-Id: I88a11ee2fee742d6154a482455a8532a95e681d3
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-5.0 -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!