高通android display subsystem

转自:http://blog.csdn.net/shichaog/article/details/61191716

MDSS:Multimedia Display Sub-system

Display driver包括:

  • SurfaceFlinger,Hardware Composer(HWC),以及overlay
  • Framebuffer
  • MIPI DSI驱动

系统架构

MDSS 1.0显示子系统

  • Soure Surface Processor(ViG, RGB,DMA-SSPA)---格式转换和质量提升(video, graphics 等)
  • Layer Mixer(LM)--混合外表面
  • Destination Surface Processor(DSPP)---根据面板特性进行转换,校正和调整
  • Write-Back/Rotation(WB)---回写到内存,如果需要还可以旋转
  • Display interface--时序生成器,和外部显示设备对接

图:显示外设

图:MIPI DSI

图:DSI接口

  • DSI控制器支持MIPI联盟DSI规范
  • DSI控制器包括一个高速时钟lane,一或者多个数据lane,每lane使用低压差分信号线实现。
  • 两种模式控制DSI外设:command和video模式

软件架构

android显示子系统

  • android framework--表面纹理和SurfaceFlinger
  • HALs--overlay,graphic alloction,以及hardware composer
  • Primary panel interface--MIPI DSI
  • External display--WFD
  • MDP core--MDP drivers,overlay pipe management,clocks/power/performance
  • Post processing和color management--CABL, color conversion等

图:3D和2D显示引擎

MDSS软件驱动

  • mdss_fb.c 顶层IOCTL/native framebuffer接口
  • mdss_mdp.c --MDP(Mobile Development Platforms)资源,包括时钟/中断/bus-bw/power
  • mdss_mdp_overlay.c--Overlay/DMA 顶层API
  • mdss_mdp_ctl.c--将(LM,DSPP,Ping-pong,interface)硬件集群
  • mdss_mdp_pipe.c--SRC pipe相关处理
  • mdss_mdp_intf_cmd.c/mdss_mdp_intf_video.c/mdss_mdp_intf_writeback.c--MDP面板接口处理
  • mdss_mdp_pp.c--后处理相关实现
  • mdss_mdp_rotator.c--旋转API(overlay_set, overlay_playinterface)

图:MDSS驱动架构

源码布局

软件目录架构--用户空间

  • SurfaceTexture--frameworks/native/libs/gui
  • SurfaceFlinger--frameworks/native/services/surfaceflinger
  • Overlay HAL--hardware/qcom/display/liboverlay
  • Graphics alloc--hardware/qcom/display/libgralloc
  • Hardware composer--hardware/qcom/display/libwcomposer

软件目录架构--驱动

  • MDSS驱动--kernel/drivers/video/msm/mdss

源表面处理,mdss_mdp_overlay.c,mdss_mdp_pipe.c。

  • Layer Mixer--mdss_mdp_ctl.c
  • Destination 表面处理(DSP)

mdss_mdp_intf_cmd.c,mdss_mdp_intf_video.c,mdss_mdp_intf_writeback.c,mdss_mdp_rotator.c

  • 显示外设接口

mdss_dsi.c,mdss_dsi_host.c,

软件接口架构-驱动和用户空间

标准安卓架构
  • FBIOGET_VSCREENINFO-获取framebuffer设备信息
  • FBIOPUT_VSCREENINFO-写入framebuffer设备信息
  • FBIOBLANK-打开关闭framebuffer(对应显示on/of)
  • FBIOPAN_DISPLAY--用新图片跟新framebuffer
高通增加的命令
  • MSMFB_OVERLAY_GET--获得overlay pipe/rotator信息
  • MSMFB_OVERLAY_SET--设置overlay pipe/rotator参数
  • MSMFB_OVERLAY_UNSET--关闭pipe/rotator
  • MSMFB_OVERLAY_PLAY_ENABLE--使能overlay跟新
  • MSMFB_OVERLAY_PLAY--将buffer排队到pipe上
  • MSMFB_OVERLAY_PLAY_WAIT--等待vsync信号
  • MSMFB_CURSOR--硬件cursor支持
  • MSMFB_SET_LUT--CABL的伽马表设置
  • MSMFB_HISTOGRAM--获取直方图
  • MSMFB_HISTOGRAM_START--开始直方图
  • MSMFB_HISTOGRAM_STOP--停止直方图

一个bug

 kgsl workqueue of WQ_UNBOUND,surface flinger等待超时,进入dump

[plain]  view plain  copy
  1. +++ b/drivers/gpu/msm/kgsl.c  
  2. @@ -4394,7 +4394,9 @@ int kgsl_device_platform_probe(struct kgsl_device *device)  
  3.                                 PM_QOS_DEFAULT_VALUE);  
  4.    
  5.    
  6. -       device->events_wq = create_workqueue("kgsl-events");  
  7. +       device->events_wq = alloc_workqueue("kgsl-events",  
  8. +                       WQ_UNBOUND | WQ_MEM_RECLAIM, 1);  
  9. +       //device->events_wq = create_workqueue("kgsl-events");  

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值