summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Schake <stschake@gmail.com>2018-05-04 18:03:00 +0200
committerStefan Schake <stschake@gmail.com>2018-05-04 18:12:35 +0200
commit025d0a65c48f17ea3ffb80fbcfe31ae9e8056556 (patch)
treeade4d05fc864b2ef9846fbd2e0c5da0897a41746
parentd2ad301ea1a0bd356865026b4f37f4c86b75616a (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.cpp2
-rw-r--r--drmhwcomposer.h2
-rw-r--r--drmhwctwo.cpp2
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_));
}