Hi,
surfaceflinger rotation information will not pass to HWC in Android10, please try the attachment in HAL and use 'settings put system accelerometer_rotation 0/1' for test.
diff --git a/display/display/Composer.cpp b/display/display/Composer.cpp
old mode 100644
new mode 100755
index 8dba110..282c4f8
--- a/display/display/Composer.cpp
+++ b/display/display/Composer.cpp
@@ -350,11 +350,40 @@ int Composer::clearWormHole(LayerVector& layers)
int Composer::composeLayer(Layer* layer, bool bypass)
{
+ int transform;
if (layer == NULL || mTarget == NULL) {
ALOGE("composeLayer: invalid layer or target");
return -EINVAL;
}
+
+ /*
+ 0 => 4
+ 4 => 3
+ 3 => 7
+ 7 => 0
+ */
+ ALOGI("liutest1 composeLayer transform:0x%x\n",layer->transform);
+
+ switch (layer->transform)
+ {
+ case 0:
+ transform = 4;
+ break;
+ case 4:
+ transform = 3;
+ break;
+ case 3:
+ transform = 7;
+ break;
+ case 7:
+ transform = 0;
+ break;
+
+ default:
+ ALOGI("liutest1 invalid transform:0x%x\n",layer->transform);
+ }
+
if (bypass && layer->isSolidColor()) {
ALOGV("composeLayer dim layer bypassed");
return 0;
@@ -392,7 +421,7 @@ int Composer::composeLayer(Layer* layer, bool bypass)
continue;
}
- setClipping(srect, drect, clip, layer->transform);
+ setClipping(srect, drect, clip, /*layer->transform*/transform);
ALOGV("index:%d, i:%d sourceCrop(l:%d,t:%d,r:%d,b:%d), "
"visible(l:%d,t:%d,r:%d,b:%d), "
"display(l:%d,t:%d,r:%d,b:%d)", layer->index, (int)i,
@@ -403,8 +432,9 @@ int Composer::composeLayer(Layer* layer, bool bypass)
ALOGV("zorder:0x%x, layer phys:0x%" PRIx64,
layer->zorder, layer->handle->phys);
}
- ALOGV("transform:0x%x, blend:0x%x, alpha:0x%x",
- layer->transform, layer->blendMode, layer->planeAlpha);
+ /*ALOGV*/ALOGI("liutest1 transform:0x%x:0x%x, blend:0x%x, alpha:0x%x",
+ layer->transform,transform, layer->blendMode, layer->planeAlpha);
+
setG2dSurface(dSurfaceX, mTarget, drect);
@@ -422,7 +452,7 @@ int Composer::composeLayer(Layer* layer, bool bypass)
return -EINVAL;
}
- convertRotation(layer->transform, sSurface, dSurface);
+ convertRotation(/*layer->transform*/transform, sSurface, dSurface);
if (!bypass) {
convertBlending(layer->blendMode, sSurface, dSurface);
}
Best Regards,
Zhiming