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
diff --git a/drmhwctwo.cpp b/drmhwctwo.cpp
index 798e013..46071b9 100644
--- a/drmhwctwo.cpp
+++ b/drmhwctwo.cpp
@@ -1040,12 +1040,6 @@
   supported(__func__);
   UniqueFd uf(acquire_fence);
 
-  // The buffer and acquire_fence are handled elsewhere
-  if (sf_type_ == HWC2::Composition::Client ||
-      sf_type_ == HWC2::Composition::Sideband ||
-      sf_type_ == HWC2::Composition::SolidColor)
-    return HWC2::Error::None;
-
   set_buffer(buffer);
   set_acquire_fence(uf.get());
   return HWC2::Error::None;