libGLESv1_CM.so 是OpenGL ES 1.0 库的一个共享对象文件。在这个文件名中,CM 代表 "Common Profile",这是 OpenGL ES 1.0规范中的一个配置文件。
OpenGL ES 1.0 和 1.1规范定义了两个配置文件:
Common Profile (CM): 这是大多数嵌入式系统使用的标准配置文件,提供了一组基本的图形功能。
Common Lite Profile (CL): 这是一个轻量级的配置文件,提供了更少的功能,适用于资源非常有限的设备。
驱动库中被标识为EGLAPIENTRY的eglGetDisplay代理有两个,一个glcm是gles的1.0实现,一个是2.0的入口,不过它们的实现都是加载libmali中的eglGetDisplay。该条path仅在生成libmali的时候生效。
可以直接看eglGetDisplay的实现。
egl_winsys_interface *winsys =egl_winsys_get_implementation();
获取一个全局的winsys接口。
先获取当前线程的私有数据,如果没有的话就创建一个,并调用egl_feature_init初始化egl的feture list,注册获取不同类型feture extension的callback到global_feature_list中,完成私有数据的初始化后,将私有数据设置给当前线程。
再创建一个eglp_display结构体,初始化关键变量,最后加入global_display_list中。