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

Preview:

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.

Citation preview

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

GEM and KMS

Android Wave Is Not Google WaveA little 3D

Chia-I Wuolv@0xlab.org

Aug 16, 2009

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

Outline

關於我

libEGL and libGLESv1 CMlibagllibhgl

GEM and KMS

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

3D and Me

I 不會OpenGL

I 不會演算法

I 不會硬體

I 不會驅動程式

I 沒有在玩3D 遊戲

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

Who am I?

I 0xlab 成員

I 數學系畢業

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

Hurry Porter

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

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

libagllibhgl

Outline

關於我

libEGL and libGLESv1 CMlibagllibhgl

GEM and KMS

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

關關關於於於我我我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 olv@0xlab.org Android Wave Is Not Google Wave A little 3D

關關關於於於我我我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 olv@0xlab.org Android Wave Is Not Google Wave A little 3D

關關關於於於我我我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 olv@0xlab.org Android Wave Is Not Google Wave A little 3D

關關關於於於我我我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 olv@0xlab.org Android Wave Is Not Google Wave A little 3D

關關關於於於我我我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 olv@0xlab.org Android Wave Is Not Google Wave A little 3D

關關關於於於我我我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 olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

libagllibhgl

Surface

I Surface 是buffer

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

libagllibhgl

硬體

I 硬體要的也是buffer

I 放座標

I 放材質

I 放shader

I 放硬體指令

I 但是...

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

libagllibhgl

硬體

I 硬體要的也是buffer

I 放座標

I 放材質

I 放shader

I 放硬體指令

I 但是...

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

libagllibhgl

硬體

I 硬體要的也是buffer

I 放座標

I 放材質

I 放shader

I 放硬體指令

I 但是...

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

libagllibhgl

硬體

I 硬體要的也是buffer

I 放座標

I 放材質

I 放shader

I 放硬體指令

I 但是...

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

libagllibhgl

硬體

I 硬體要的也是buffer

I 放座標

I 放材質

I 放shader

I 放硬體指令

I 但是...

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

libagllibhgl

硬體

I 硬體要的也是buffer

I 放座標

I 放材質

I 放shader

I 放硬體指令

I 但是...

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

libagllibhgl

硬體限制

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

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

libagllibhgl

Intel

I a.k.a GEM Object

I 讓Android 產生GEM object based Surface

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

Outline

關於我

libEGL and libGLESv1 CMlibagllibhgl

GEM and KMS

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

關關關於於於我我我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 olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

GEM in GPU

I 映射到AGP aperture

I CPU cache

I GPU cache

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

KMS

I Kernel Mode Setting

I 叫kernel 做解晰度設定

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

關關關於於於我我我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 olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

gitorious

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

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

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

GEM and KMS

Q & A

Questions?

Chia-I Wu olv@0xlab.org Android Wave Is Not Google Wave A little 3D

Recommended