Top Banner
libEGL and libGLESv1 CM GEM and KMS Android Wave Is Not Google Wave A little 3D Chia-I Wu [email protected] Aug 16, 2009 Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D
28

A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

Jan 19, 2015

Download

Technology

Jim Huang

(COSCUP 2009) olv talked about the internals inside Android OpenGL|ES stack and how to implement a new hardware accelerated GL|ES for Android. The reference hardware is Intel Integrated Graphics chip, and software stack is based on Mesa3D.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

Android Wave Is Not Google WaveA little 3D

Chia-I [email protected]

Aug 16, 2009

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 2: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

Outline

關於我

libEGL and libGLESv1 CMlibagllibhgl

GEM and KMS

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 3: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

3D and Me

I 不會OpenGL

I 不會演算法

I 不會硬體

I 不會驅動程式

I 沒有在玩3D 遊戲

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 4: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

Who am I?

I 0xlab 成員

I 數學系畢業

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 5: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

Hurry Porter

I 把Intel DRI 驅動程式移植到Android

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 6: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

Outline

關於我

libEGL and libGLESv1 CMlibagllibhgl

GEM and KMS

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 7: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

libGLESv1 CM

I frameworks/base/opengl/libs/GLES CM/

I OpenGL ES API

I Entry points

v o i d g l C l e a r ( v o i d ) {g l h o o k s t : : g l t c o n s t ∗ c o n s t c =

&g e t G l T h r e a d S p e c i f i c ()−> g l ;r e t u r n c−>g l C l e a r ( ) ;

}

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 8: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

libEGL

I frameworks/base/opengl/libs/EGL/

I dlopen libagl 跟libhgl

I libagl 提供軟體實作

I libhgl 提供硬體實作

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 9: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

身為libhgl

I Android 傳過來的是egl native window t

I egl native window t 是EGLNativeWindowSurface

I EGLNativeWindowSurface 是Surface

I Surface 是...

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 10: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

身為libhgl

I Android 傳過來的是egl native window t

I egl native window t 是EGLNativeWindowSurface

I EGLNativeWindowSurface 是Surface

I Surface 是...

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 11: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

身為libhgl

I Android 傳過來的是egl native window t

I egl native window t 是EGLNativeWindowSurface

I EGLNativeWindowSurface 是Surface

I Surface 是...

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 12: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

身為libhgl

I Android 傳過來的是egl native window t

I egl native window t 是EGLNativeWindowSurface

I EGLNativeWindowSurface 是Surface

I Surface 是...

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 13: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

Surface

I Surface 是buffer

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 14: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

硬體

I 硬體要的也是buffer

I 放座標

I 放材質

I 放shader

I 放硬體指令

I 但是...

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 15: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

硬體

I 硬體要的也是buffer

I 放座標

I 放材質

I 放shader

I 放硬體指令

I 但是...

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 16: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

硬體

I 硬體要的也是buffer

I 放座標

I 放材質

I 放shader

I 放硬體指令

I 但是...

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 17: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

硬體

I 硬體要的也是buffer

I 放座標

I 放材質

I 放shader

I 放硬體指令

I 但是...

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 18: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

硬體

I 硬體要的也是buffer

I 放座標

I 放材質

I 放shader

I 放硬體指令

I 但是...

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 19: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

硬體

I 硬體要的也是buffer

I 放座標

I 放材質

I 放shader

I 放硬體指令

I 但是...

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 20: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

硬體限制

I 硬體要的是它能存取的buffer

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 21: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

libagllibhgl

Intel

I a.k.a GEM Object

I 讓Android 產生GEM object based Surface

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 22: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

Outline

關於我

libEGL and libGLESv1 CMlibagllibhgl

GEM and KMS

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 23: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

GEM in CPU

I GEM object 只是shared memory (man shmget(2))

I X server 配置

I 應用程式繪圖

I compiz 合成

I 跨process!

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 24: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

GEM in GPU

I 映射到AGP aperture

I CPU cache

I GPU cache

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 25: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

KMS

I Kernel Mode Setting

I 叫kernel 做解晰度設定

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 26: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

KMS

i n t drmModeSetCrtc ( i n t fd ,u i n t 3 2 t c r t c I d ,u i n t 3 2 t b u f f e r I d ,u i n t 3 2 t x , u i n t 3 2 t y ,u i n t 3 2 t ∗ c o n n e c t o r s , i n t count ,drmModeModeInfoPtr mode ) ;

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 27: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

gitorious

http://gitorious.org/android-eeepc/pages/Home

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D

Page 28: A Little 3D -- Implement New Hardware Accelerated OpenGL for Android

關關關於於於我我我libEGL and libGLESv1 CM

GEM and KMS

Q & A

Questions?

Chia-I Wu [email protected] Android Wave Is Not Google Wave A little 3D