目录

 

Android EMUGL是什么

架构分析

AEMUGL-Client

AEMUGL-Serve

代码详解


Android EMUGL是什么

上一篇文章介绍了QEMU模拟器,Android EMUGL(后面简称A-EMUGL)就是基于QEMU模拟器架构支持Android GLES应用渲染和显示的的软件框架,Google官方的代码和介绍参考 Android EMUGL代码链接,本文旨在对代码分析后做更详细的架构和时序分解

 

架构分析

【架构分析】Android EMUGL
No A-EMUGL vs A-EMUGL 架构图

如上架构图所示,在没有A-EMUGL的架构下,应用通过GLES的vendor library直接访问GPU硬件,而在有A-EMUGL的架构下,应用的GL command被统一派发到Server端,由server端统一访问GPU

 

AEMUGL-Client

【架构分析】Android EMUGL
A-EMUGL Client 架构图

 

AEMUGL-Serve

r

【架构分析】Android EMUGL
A-EMUGL Server 架构图

 

代码详解

  • AEMUGL-Client端的应用使用EGL&GLES 绘图,主要分成两个阶段
  • 绑定EGL API和GLES API
  • 调用绑定后的EGL API和GLES API
  • 下面的时序图详细说明了该过程
【架构分析】Android EMUGL
A-EMUGL Client端的应用绑定EGL&GLES API 时序图

 

【架构分析】Android EMUGL
A-EMUGL Client端的应用调用eglGestDisplay 时序图

 

 

【架构分析】Android EMUGL
A-EMUGL Client端的应用调用eglInitialize 时序图

 

【架构分析】Android EMUGL
A-EMUGL Client端的应用调用eglCreateContext 时序图

 

【架构分析】Android EMUGL
A-EMUGL Client端的应用调用eglCreateWindowSurface 时序图

 

【架构分析】Android EMUGL
A-EMUGL Client端的应用调用eglMakeCurrent 时序图

 

【架构分析】Android EMUGL
A-EMUGL Server核心数据结构图

 

 

 

相关文章: