[PATCH hwc 4/4] drm_hwcomposer: Fall back to client compositon if the gl precompostior fails

John Stultz john.stultz at linaro.org
Thu Apr 26 19:05:57 UTC 2018


If the gl precompositor isn't being used, we cannot accept
every layer as a device composited layer.

Thus this patch adds some extra logic in the validate function
to fall back to client side compositing if the gl precompositor
did not initialize properly.

This does force everything to a single plane even if we have
a few available, but a deeper rework of the validate step
planning is needed before we can reliably make use of them.

Credit to Rob Herring, who's single plane patch was what this
was originally based on.

Cc: Marissa Wall <marissaw at google.com>
Cc: Sean Paul <seanpaul at google.com>
Cc: Dmitry Shmidt <dimitrysh at google.com>
Cc: Robert Foss <robert.foss at collabora.com>
Cc: Matt Szczesiak <matt.szczesiak at arm.com>
Cc: Liviu Dudau <Liviu.Dudau at arm.com>
Cc: David Hanna <david.hanna11 at gmail.com>
Cc: Rob Herring <rob.herring at linaro.org>
Cc: Alexandru-Cosmin Gheorghe <Alexandru-Cosmin.Gheorghe at arm.com>
Cc: Alistair Strachan <astrachan at google.com>
Reviewed-by: Rob Herring <robh at kernel.org>
Signed-off-by: John Stultz <john.stultz at linaro.org>
---
v2:
* Dropped misguided attempt to trivially allocate layers to planes
---
 drmhwctwo.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drmhwctwo.cpp b/drmhwctwo.cpp
index 8e00d71..ede75e0 100644
--- a/drmhwctwo.cpp
+++ b/drmhwctwo.cpp
@@ -695,6 +695,13 @@ HWC2::Error DrmHwcTwo::HwcDisplay::ValidateDisplay(uint32_t *num_types,
         layer.set_validated_type(HWC2::Composition::Client);
         ++*num_types;
         break;
+      case HWC2::Composition::Device:
+        if (!compositor_.uses_GL()) {
+          layer.set_validated_type(HWC2::Composition::Client);
+          ++*num_types;
+          break;
+        }
+	/* fall through */
       default:
         layer.set_validated_type(layer.sf_type());
         break;
-- 
2.7.4



More information about the dri-devel mailing list