屏幕旋转180°调试过程

本文详细介绍了在Android 4.1环境下,针对MSM8X25Q芯片和mdp3.03,解决屏幕180°旋转问题的调试过程。尝试了通过lcd driver ic、mdp及Framework层面的旋转方案,但分别遇到了Tearing问题、GPU处理限制和横屏切换时的瞬间显示问题。最终发现并解决了在屏幕旋转时LayerScreenshot特殊处理导致的问题。
摘要由CSDN通过智能技术生成

环境:

OS: Android4.1

Chipset:MSM8X25Q

mdp:3.03


背景:

屏幕反着打,需要显示旋转180°。

旋转方案:

1.   通过lcd driver ic直接让屏幕旋转。

2.   通过mdp旋转。

3.   Framework旋转。

 

调试过程:

方案1:

由于玻璃是单扫描方向,如果直接将driver IC反着扫,也就是说从IC

的memory里反着取数据,而玻璃还是正着扫描的话,结果就会产生

Tearing。此方案理论上直接行不通。

 

方案2:

       在mdp_ppp.c传参数flip_v+flip_h给mdp register,告诉ppp模块

在使用mdp composition旋转180°。

       考虑到GPU的composition会绕过mdp的ppp模块,因此将debug.composition.type

改成mdp,也就是想让系统全部用mdp去做composition.

       事实上,有些特殊情况,mdp是无法处理的,像alpha不是完全透明的,

旋转太复杂的等。这也可以从framework中的代码里的注释看到:

voidLayer::setGeometry(hwc_layer_t* hwcl)

{

~~snip

    //we can't do alpha-fade with the hw

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值