aboutsummaryrefslogtreecommitdiff
path: root/glworker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'glworker.cpp')
-rw-r--r--glworker.cpp50
1 files changed, 22 insertions, 28 deletions
diff --git a/glworker.cpp b/glworker.cpp
index 0b98a51..7f154aa 100644
--- a/glworker.cpp
+++ b/glworker.cpp
@@ -332,40 +332,34 @@ static void ConstructCommand(const DrmHwcLayer *layers,
cmd.texture_count++;
src.texture_index = texture_index;
- bool swap_xy, flip_xy[2];
- switch (layer.transform) {
- case DrmHwcTransform::kFlipH:
- swap_xy = false;
+ bool swap_xy = false;
+ bool flip_xy[2] = { false, false };
+
+ if (layer.transform == DrmHwcTransform::kRotate180) {
+ swap_xy = false;
+ flip_xy[0] = true;
+ flip_xy[1] = true;
+ } else if (layer.transform == DrmHwcTransform::kRotate270) {
+ swap_xy = true;
+ flip_xy[0] = true;
+ flip_xy[1] = false;
+ } else if (layer.transform & DrmHwcTransform::kRotate90) {
+ swap_xy = true;
+ if (layer.transform & DrmHwcTransform::kFlipH) {
flip_xy[0] = true;
- flip_xy[1] = false;
- break;
- case DrmHwcTransform::kFlipV:
- swap_xy = false;
- flip_xy[0] = false;
flip_xy[1] = true;
- break;
- case DrmHwcTransform::kRotate90:
- swap_xy = true;
+ } else if (layer.transform & DrmHwcTransform::kFlipV) {
+ flip_xy[0] = false;
+ flip_xy[1] = false;
+ } else {
flip_xy[0] = false;
flip_xy[1] = true;
- break;
- case DrmHwcTransform::kRotate180:
- swap_xy = false;
+ }
+ } else {
+ if (layer.transform & DrmHwcTransform::kFlipH)
flip_xy[0] = true;
+ if (layer.transform & DrmHwcTransform::kFlipV)
flip_xy[1] = true;
- break;
- case DrmHwcTransform::kRotate270:
- swap_xy = true;
- flip_xy[0] = true;
- flip_xy[1] = false;
- break;
- default:
- ALOGE("Unknown transform for layer: defaulting to identity transform");
- case DrmHwcTransform::kIdentity:
- swap_xy = false;
- flip_xy[0] = false;
- flip_xy[1] = false;
- break;
}
if (swap_xy)