a little 3d -- implement new hardware accelerated opengl for android

28
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

Upload: jim-huang

Post on 19-Jan-2015

3.472 views

Category:

Technology


2 download

DESCRIPTION

(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.

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