Android display架構分析五-Display介面介紹

來源:互聯網
上載者:User

1、User Space display介面

在Android平台下,應用程式面對的顯示部分的介面就是HAL,參考copybit.c,具體介面如下介紹:

open_copybit

初始化相關變數,並調用open(“/dev/graphics/fb0″, O_RDWR, 0);開啟fb裝置。

set_parameter_copybit

設定各種巨集指令引數,如rotate、alpha、dither等。

stretch_copybit

Copy一塊資料(Rectangle)到顯存,然後並命令msm_fb進行顯示。

close_copybit

調用close(ctx->mFD);關閉fb裝置。

Note:另外,應用程式在使用上面介面之前,需要調用mapFrameBuffer介面(EGLDisplaySurface.cpp),其功能如下:

1、 初始化顯示相關參數,並設定到底層。

2、 映射出顯存的虛擬位址。
2、Kernel display介面

Kernel部分顯示的介面全部都在fbmem.c中,這裡詳細介紹一下:

fb_open

開啟Linux下fb裝置。

fb_read/fb_write

讀寫顯存中的資料

fb_ioctl

對顯示裝置的命令操作。如get或set一些顯示參數、通知底層進行刷屏等。

在典型應用中,畫屏的一般步驟如下:

1. 開啟/dev/fb裝置檔案。

2. 用ioctrl操作取得當前顯示螢幕的參數,如螢幕解析度,每個像素點的位元數。根據螢幕參數可計算螢幕緩衝區的大小。

3. 將螢幕緩衝區映射到使用者空間。

4. 映射後就可以直接讀寫螢幕緩衝區,進行繪圖和圖片顯示了。

典型程式段如下:

#include <linux/fb.h> int main() { int fbfd = 0; struct fb_var_screeninfo vinfo; struct fb_fix_screeninfo finfo; long int screensize = 0; /*開啟裝置檔案*/ fbfd = open("/dev/fb0", O_RDWR); /*取得螢幕相關參數*/ ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo); ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo); /*計算螢幕緩衝區大小*/ screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8; /*映射螢幕緩衝區到使用者地址空間*/ fbp=(char*)mmap(0,screensize,PROT_READ|PROT_WRITE,MAP_SHARED, fbfd, 0); /*下面可通過fbp指標讀寫緩衝區*/ ... }

3典型應用flow分析

在不同應用程式中,上層的調用會有所不同,比如Andriod下會選擇應用程式跳過Linux fb操作層,直接操作顯卡驅動層,稱之為BLT accelerator。

下面看一下Android平台下畫屏的操作流程。

1、 通過mapFrameBuffer直接把使用者空間的資料對應到顯存中。

2、 調用HAL中的stretch函數直接命令MSM裝置提取顯存資料然後送入MDP PPP進行處理並經MDDI介面送到外圍LCD組件。

具體的函數調用流程如下:

copybit_open();//開啟BlitEngine,同時也開啟fb裝置 mapFrameBuffer();//設定顯示參數,同時得到顯存虛擬位址 copybit->stretch(copybit, &dst, &src, &sdrect, &sdrect, &it);//通知底層去刷屏

接下的流程是:

stretch_copybit-> msm_copybit-> fb_ioctl()->msm_fb_ioctl(MSMFB_BLIT)-> msmfb_blit-> mdp_blit-> mdp_ppp_blit-> mdp_start_ppp->MDP&MDDI HW operation
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.