libGLESv1_CM.so 是OpenGL ES 1.0 庫(kù)的一個(gè)共享對(duì)象文件。在這個(gè)文件名中硅确,CM 代表 "Common Profile",這是 OpenGL ES 1.0規(guī)范中的一個(gè)配置文件。
OpenGL ES 1.0 和 1.1規(guī)范定義了兩個(gè)配置文件:
Common Profile (CM): 這是大多數(shù)嵌入式系統(tǒng)使用的標(biāo)準(zhǔn)配置文件首懈,提供了一組基本的圖形功能。
Common Lite Profile (CL): 這是一個(gè)輕量級(jí)的配置文件谨敛,提供了更少的功能究履,適用于資源非常有限的設(shè)備。
驅(qū)動(dòng)庫(kù)中被標(biāo)識(shí)為EGLAPIENTRY的eglGetDisplay代理有兩個(gè)脸狸,一個(gè)glcm是gles的1.0實(shí)現(xiàn)挎袜,一個(gè)是2.0的入口,不過(guò)它們的實(shí)現(xiàn)都是加載libmali中的eglGetDisplay肥惭。該條path僅在生成libmali的時(shí)候生效盯仪。
可以直接看eglGetDisplay的實(shí)現(xiàn)。
egl_winsys_interface *winsys =egl_winsys_get_implementation();
獲取一個(gè)全局的winsys接口蜜葱。
先獲取當(dāng)前線程的私有數(shù)據(jù)全景,如果沒(méi)有的話就創(chuàng)建一個(gè),并調(diào)用egl_feature_init初始化egl的feture list牵囤,注冊(cè)獲取不同類(lèi)型feture extension的callback到global_feature_list中爸黄,完成私有數(shù)據(jù)的初始化后,將私有數(shù)據(jù)設(shè)置給當(dāng)前線程揭鳞。
再創(chuàng)建一個(gè)eglp_display結(jié)構(gòu)體炕贵,初始化關(guān)鍵變量,最后加入global_display_list中野崇。