diff options
author | Sean Paul <seanpaul@chromium.org> | 2015-11-19 21:46:11 -0500 |
---|---|---|
committer | Sean Paul <seanpaul@chromium.org> | 2015-11-20 15:01:18 -0500 |
commit | 04b47ea435834b4373d57dae6485986b9f0918ae (patch) | |
tree | 9a54b4abdede013cfd74994c27e35e7e460b3544 /drmdisplaycompositor.cpp | |
parent | 35301f498c372f3ad2bbbc969acda39056131b26 (diff) |
drm_hwcomposer: Allow for multiple transforms at once
Because sometimes one just ain't enough, allow more than
one transform at a time.
Bug: chrome-os-partner:46710
Test: Tested with the CTS Verifier "Camera Orientation" test
Change-Id: Ie5f9bbbc7c89964feafc78150e18512861c85b69
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Diffstat (limited to 'drmdisplaycompositor.cpp')
-rw-r--r-- | drmdisplaycompositor.cpp | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/drmdisplaycompositor.cpp b/drmdisplaycompositor.cpp index bcd1a14..abd59fd 100644 --- a/drmdisplaycompositor.cpp +++ b/drmdisplaycompositor.cpp @@ -683,30 +683,18 @@ int DrmDisplayCompositor::CommitFrame(DrmDisplayComposition *display_comp) { source_crop = layer.source_crop; if (layer.blending == DrmHwcBlending::kPreMult) alpha = layer.alpha; - switch (layer.transform) { - case DrmHwcTransform::kFlipH: - rotation = 1 << DRM_REFLECT_X; - break; - case DrmHwcTransform::kFlipV: - rotation = 1 << DRM_REFLECT_Y; - break; - case DrmHwcTransform::kRotate90: - rotation = 1 << DRM_ROTATE_90; - break; - case DrmHwcTransform::kRotate180: - rotation = 1 << DRM_ROTATE_180; - break; - case DrmHwcTransform::kRotate270: - rotation = 1 << DRM_ROTATE_270; - break; - case DrmHwcTransform::kIdentity: - rotation = 0; - break; - default: - ALOGE("Invalid transform value 0x%x given", layer.transform); - break; - } - break; + + rotation = 0; + if (layer.transform & DrmHwcTransform::kFlipH) + rotation |= 1 << DRM_REFLECT_X; + if (layer.transform & DrmHwcTransform::kFlipV) + rotation |= 1 << DRM_REFLECT_Y; + if (layer.transform & DrmHwcTransform::kRotate90) + rotation |= 1 << DRM_ROTATE_90; + else if (layer.transform & DrmHwcTransform::kRotate180) + rotation |= 1 << DRM_ROTATE_180; + else if (layer.transform & DrmHwcTransform::kRotate270) + rotation |= 1 << DRM_ROTATE_270; } } |