drm_hwcomposer: Fix mixed layer composition

Fix cases when mixed layer composition require non-device layer in the middle:

'''
Layer z_order - SF type    - validated type before - validated type fixed
            0 - DEVICE     - CLIENT                - CLIENT
            1 - DEVICE     - DEVICE                - CLIENT
            2 - DEVICE     - DEVICE                - CLIENT
            3 - SOLIDCOLOR - CLIENT                - CLIENT
            4 - DEVICE     - DEVICE                - DEVICE
'''

In such composition SF will merge layers 0 and 3 and hwcomposer will
merge <SF>,1,2,4 that results incorrect merging order.

Issue was observed on the rcar3 (imagination importer), db845c and allwinner H3
(Generic importer) platforms.
Reproduces with compositions that requires 'cursor' or 'dim' layers.
How to reproduce:
 1. Connect USB mouse when on home screen, you should see mouse cursor
    under icons (Tested with Launcher3QuickStep desktop)
 2. Go to Settings -> WIFI -> Connect to the AP, then you should see
    password dialog under AP list.

Solution:
1. Mark intermediate layers as CLIENT to ensure CLIENT section is in range
from bottom layer to most top CLIENT layer.

2. Use this layer composition to validate if DRM can handle it.

Signed-off-by: Roman Stratiienko <roman.stratiienko@globallogic.com>
1 file changed
tree: e495c5dbdaeb8ef299e033a6204b830274ec862a
  1. compositor/
  2. drm/
  3. include/
  4. platform/
  5. tests/
  6. utils/
  7. .clang-format
  8. .gitlab-ci-checkcommit.sh
  9. .gitlab-ci.yml
  10. Android.bp
  11. drmhwctwo.cpp
  12. MODULE_LICENSE_APACHE2
  13. NOTICE
  14. README.md
README.md

drm_hwcomposer

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!