drm_hwcomposer: Use 16 bit value for plane alpha

The upstream version of the alpha property uses 16 bits to make it future
proof. Since HWC2 already passes in a float expand our internal
representation instead of just shifting for DRM.

Signed-off-by: Stefan Schake <stschake@gmail.com>
diff --git a/drmdisplaycompositor.cpp b/drmdisplaycompositor.cpp
index 40af3be..0b4e2b2 100644
--- a/drmdisplaycompositor.cpp
+++ b/drmdisplaycompositor.cpp
@@ -551,7 +551,7 @@
     DrmHwcRect<int> display_frame;
     DrmHwcRect<float> source_crop;
     uint64_t rotation = 0;
-    uint64_t alpha = 0xFF;
+    uint64_t alpha = 0xFFFF;
 
     if (comp_plane.type() != DrmCompositionPlane::Type::kDisable) {
       if (source_layers.size() > 1) {
diff --git a/drmhwcomposer.h b/drmhwcomposer.h
index ff8c642..cd631b2 100644
--- a/drmhwcomposer.h
+++ b/drmhwcomposer.h
@@ -141,7 +141,7 @@
   DrmHwcNativeHandle handle;
   uint32_t transform;
   DrmHwcBlending blending = DrmHwcBlending::kNone;
-  uint8_t alpha = 0xff;
+  uint16_t alpha = 0xffff;
   DrmHwcRect<float> source_crop;
   DrmHwcRect<int> display_frame;
 
diff --git a/drmhwctwo.cpp b/drmhwctwo.cpp
index ede75e0..1940964 100644
--- a/drmhwctwo.cpp
+++ b/drmhwctwo.cpp
@@ -830,7 +830,7 @@
   layer->acquire_fence = acquire_fence_.Release();
   layer->release_fence = std::move(release_fence);
   layer->SetDisplayFrame(display_frame_);
-  layer->alpha = static_cast<uint8_t>(255.0f * alpha_ + 0.5f);
+  layer->alpha = static_cast<uint16_t>(65535.0f * alpha_ + 0.5f);
   layer->SetSourceCrop(source_crop_);
   layer->SetTransform(static_cast<int32_t>(transform_));
 }