drm_hwcomposer: Really fail on CreateComposition failures

The current logic in Validate assumes that if CreateComposition()
fails, it was due to overlay planes as sets the avail_planes to 1.

With most multi-plane compositions, this will then cause the
avil_planes to be later decremented to zero (to reserve the client
composited plane), resulting in all the layers to be set as
client composited.

However, in the case where there is only one layer, such as with
the Android BootAnimation, if CreateComposition fails, we set
avail_planes to one, and since there is only one layer, we don't
decrement it further, resulting in the layer to be validated as
a Device rendered layer, as if CreateComposition succeeded.

This adds an extra flag we don't mix up a single layer failure
as a success.

On HiKey/HiKey960, this patch fixes the issue where the
BootAnimation wouldn't display.

Change-Id: I58bf5f332667a46e8e997d1743b73dd4a768657f
Signed-off-by: John Stultz <john.stultz@linaro.org>
1 file changed
tree: 7dce53f4bb08c91890299ca5e3dcf8bd2ccfbe38
  1. tests/
  2. .clang-format
  3. .gitlab-ci.yml
  4. Android.mk
  5. autofd.h
  6. autolock.cpp
  7. autolock.h
  8. drmconnector.cpp
  9. drmconnector.h
  10. drmcrtc.cpp
  11. drmcrtc.h
  12. drmdisplaycomposition.cpp
  13. drmdisplaycomposition.h
  14. drmdisplaycompositor.cpp
  15. drmdisplaycompositor.h
  16. drmencoder.cpp
  17. drmencoder.h
  18. drmeventlistener.cpp
  19. drmeventlistener.h
  20. drmframebuffer.h
  21. drmhwcgralloc.h
  22. drmhwcomposer.h
  23. drmhwctwo.cpp
  24. drmhwctwo.h
  25. drmmode.cpp
  26. drmmode.h
  27. drmplane.cpp
  28. drmplane.h
  29. drmproperty.cpp
  30. drmproperty.h
  31. drmresources.cpp
  32. drmresources.h
  33. hwcutils.cpp
  34. MODULE_LICENSE_APACHE2
  35. NOTICE
  36. platform.cpp
  37. platform.h
  38. platformdrmgeneric.cpp
  39. platformdrmgeneric.h
  40. platformhisi.cpp
  41. platformhisi.h
  42. platformminigbm.cpp
  43. platformminigbm.h
  44. README.md
  45. vsyncworker.cpp
  46. vsyncworker.h
  47. worker.cpp
  48. worker.h
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-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!