Email me: jollen # jollen.org

more: Jollen 的 Embedded Linux 教育訓練

« January 2013 | (回到Blog入口) | March 2013 »

February 2013 歸檔

February 4, 2013

[教育訓練紀錄] 關於 SurfaceFlinger::createSurface() 的 DisplayID

近期為幾家科技廠進行 Android 的企業內訓,課程主題著重於 Framework 層。最近的內訓主題是 Android Graphics 系統。今天 (2/4) 在講解 SurfaceFlinger Server 建立 Surface 時,提到這個方法:

1287 sp<ISurface> SurfaceFlinger::createSurface(
1288         ISurfaceComposerClient::surface_data_t* params,
1289         const String8& name,
1290         const sp<Client>& client,
1291         DisplayID d, uint32_t w, uint32_t h, PixelFormat format,
1292         uint32_t flags)

其中 DisplayID 參數的部份,代表 Screen。這部份可以參照 /system/lib/egl/egl.cfg 設定檔,例如,以下的設定:

0 1 qcom

第一個數字代表 Display,第二個數字代表 Implementation,最後的字串為 TAG,用來與 HGL 程式庫匹配。上述設定指定 Display 設定為 0,代表 Default (LCD),有些 Android 系統可為 1,代表 HDMI。

此外,Display 參數在實例化 Layer 時也會用到:

1303     //LOGD("createSurface for pid %d (%d x %d)", pid, w, h);
1304     sp<Layer> normalLayer;
1305     switch (flags & eFXSurfaceMask) {
1306         case eFXSurfaceNormal:
1307             normalLayer = createNormalSurface(client, d, w, h, flags, format);
1308             layer = normalLayer;
1309             break;
1310         case eFXSurfaceBlur:
1311             // for now we treat Blur as Dim, until we can implement it
1312             // efficiently.
1313         case eFXSurfaceDim:                                                
1314             layer = createDimSurface(client, d, w, h, flags);
1315             break;
1316         case eFXSurfaceScreenshot:
1317             layer = createScreenshotSurface(client, d, w, h, flags);
1318             break;
1319     }

在實例化 Layer 時,可指定 Layer 的 Display。附帶一提,Android 的 Surface 分為四大類,一般 App 使用的是 Normal Surface,其它還有 Blur Surface、Dim Surface 與 Screenshot Surface。Dim Surface 是支援 Android Power Management (Wakelock) 的特殊 Surface。

關於 February 2013

此頁面包含了在February 2013發表於Jollen's Blog的所有日記,它們從老到新列出。

前一個存檔 January 2013

後一個存檔 March 2013

更多信息可在 主索引 頁和 歸檔 頁看到。

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org