summaryrefslogtreecommitdiff
path: root/drmdisplaycompositor.cpp
diff options
context:
space:
mode:
authorSean Paul <seanpaul@chromium.org>2015-11-19 21:46:11 -0500
committerSean Paul <seanpaul@chromium.org>2015-11-20 15:01:18 -0500
commit04b47ea435834b4373d57dae6485986b9f0918ae (patch)
tree9a54b4abdede013cfd74994c27e35e7e460b3544 /drmdisplaycompositor.cpp
parent35301f498c372f3ad2bbbc969acda39056131b26 (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.cpp36
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;
}
}