diff options
author | Stefan Schake <stschake@gmail.com> | 2018-05-04 18:03:00 +0200 |
---|---|---|
committer | Stefan Schake <stschake@gmail.com> | 2018-05-04 18:12:35 +0200 |
commit | 025d0a65c48f17ea3ffb80fbcfe31ae9e8056556 (patch) | |
tree | ade4d05fc864b2ef9846fbd2e0c5da0897a41746 | |
parent | d2ad301ea1a0bd356865026b4f37f4c86b75616a (diff) |
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>
-rw-r--r-- | drmdisplaycompositor.cpp | 2 | ||||
-rw-r--r-- | drmhwcomposer.h | 2 | ||||
-rw-r--r-- | drmhwctwo.cpp | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/drmdisplaycompositor.cpp b/drmdisplaycompositor.cpp index 40af3be..0b4e2b2 100644 --- a/drmdisplaycompositor.cpp +++ b/drmdisplaycompositor.cpp @@ -551,7 +551,7 @@ int DrmDisplayCompositor::CommitFrame(DrmDisplayComposition *display_comp, 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 @@ struct DrmHwcLayer { 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 @@ void DrmHwcTwo::HwcLayer::PopulateDrmLayer(DrmHwcLayer *layer) { 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_)); } |