Chinaunix首页 | 论坛 | 博客
  • 博客访问: 228577
  • 博文数量: 29
  • 博客积分: 1477
  • 博客等级: 上尉
  • 技术积分: 451
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-06 14:48
文章分类
文章存档

2012年(1)

2011年(14)

2010年(14)

我的朋友

分类: 嵌入式

2011-03-16 10:01:09

 surfaceflinger_readToRun_Log

DanielWood 20110316

 

调用readyToRun函数用于初始化整个显示系统。

 readyToRun()调用过程如下: 

1)执行new DisplayHardware(this,dpy),通过DisplayHardware初始化FramebufferEGL并获取OpenGL ES信息。 

2)创建共享的内存控制块。 

3)将EGL与当前屏幕绑定。 

4)初始化共享内存控制块。 

5)初始化OpenGL ES 

6)显示开机动画。

I/        ( 1650): ServiceManager: 0xa7a0

##是由可执行文件surfaceflinger启动SurfaceFlinger服务的

D/        ( 1650): Main_surfaceflinger.cpp SurfaceFlinger::instantiate();

D/SurfaceFlinger( 1650): SurfaceFlinger.cpp SurfaceFlinger constructor

D/SurfaceFlinger( 1650): SurfaceFlinger.cpp SurfaceFlinger::init()

I/SurfaceFlinger( 1650): SurfaceFlinger is starting

D/SurfaceFlinger( 1650): SurfaceFlinger.cpp SurfaceFlinger::readyToRun() entry

I/SurfaceFlinger( 1650): SurfaceFlinger's main thread ready to run. Initializing graphics H/W...

D/SurfaceFlinger( 1650): DisplayHardware.cpp DisplayHardware constructor

D/SurfaceFlinger( 1650): DisplayHardware.cpp DisplayHardware::init entry

D/FramebufferNativeWindow( 1650): FramebufferNativeWindow.cpp FramebufferNativeWindow constructor entry

##打开framebuffer模块

D/FramebufferNativeWindow( 1650): FramebufferNativeWindow.cpp call framebuffer_open

D/gralloc ( 1650): gralloc.cpp gralloc_device_open entry

D/gralloc ( 1650): gralloc.cpp gralloc_device_open call fb_device_open

D/gralloc ( 1650): Framebuffer.cpp fb_device_open entry

D/gralloc ( 1650): gralloc.cpp gralloc_device_open entry

D/gralloc ( 1650): gralloc.cpp gralloc_device_open exit

D/gralloc ( 1650): Framebuffer.cpp fb_device_open call mapFrameBuffer

D/gralloc ( 1650): Framebuffer.cpp mapFrameBuffer

D/gralloc ( 1650): Framebuffer.cpp mapFrameBufferLocked entry

##打开的是/dev/graphics/fb%u设备

D/gralloc ( 1650): Framebuffer.cpp mapFrameBufferLocked open /dev/graphics/fb%u

##读取FrameBuffer的固定参数,参见内核代码fbmem.c

D/gralloc ( 1650): Framebuffer.cpp mapFrameBufferLocked FBIOGET_FSCREENINFO

##读取FrameBuffer的可变参数, 参见内核代码fbmem.c

D/gralloc ( 1650): Framebuffer.cpp mapFrameBufferLocked FBIOGET_VSCREENINFO

##修改FrameBuffer的可变参数, 参见内核代码fbmem.c

D/gralloc ( 1650): Framebuffer.cpp mapFrameBufferLocked FBIOPUT_VSCREENINFO

##输出配置的FrameBuffer参数

I/gralloc ( 1650): using (fd=8)

I/gralloc ( 1650): id           = truly-ILI9327

I/gralloc ( 1650): xres         = 240 px

I/gralloc ( 1650): yres         = 400 px

I/gralloc ( 1650): xres_virtual = 240 px

I/gralloc ( 1650): yres_virtual = 800 px

I/gralloc ( 1650): bpp          = 16

I/gralloc ( 1650): r            = 11:5

I/gralloc ( 1650): g            =  5:6

I/gralloc ( 1650): b            =  0:5

I/gralloc ( 1650): width        = 38 mm (160.421051 dpi)

I/gralloc ( 1650): height       = 64 mm (158.750000 dpi)

I/gralloc ( 1650): refresh rate = 60.00 Hz

##显示缓冲区到用户空间的映射,参见内核代码fbmem.c

D/gralloc ( 1650): Framebuffer.cpp mapFrameBufferLocked call mmap

D/gralloc ( 1650): Framebuffer.cpp mapFrameBufferLocked exit

D/gralloc ( 1650): Framebuffer.cpp fb_device_open exit

D/gralloc ( 1650): gralloc.cpp gralloc_device_open exit

##打开gralloc模块

D/FramebufferNativeWindow( 1650): FramebufferNativeWindow.cpp call gralloc_open

D/gralloc ( 1650): gralloc.cpp gralloc_device_open entry

D/gralloc ( 1650): gralloc.cpp gralloc_device_open exit

##新建buffers[0]

D/FramebufferNativeWindow( 1650): FramebufferNativeWindow.cpp buffers[0] = new NativeBuffer

##新建buffers[1]

D/FramebufferNativeWindow( 1650): FramebufferNativeWindow.cpp buffers[1] = new NativeBuffer

##buffers[0]分配内存

D/FramebufferNativeWindow( 1650): FramebufferNativeWindow.cpp grDev->alloc buffers[0]

D/gralloc ( 1650): gralloc.cpp gralloc_alloc entry

D/gralloc ( 1650): gralloc.cpp gralloc_alloc set bpp=2

D/gralloc ( 1650): gralloc.cpp gralloc_alloc call gralloc_alloc_framebuffer

D/gralloc ( 1650): gralloc.cpp gralloc_alloc exit

##buffers[1]分配内存

D/FramebufferNativeWindow( 1650): FramebufferNativeWindow.cpp grDev->alloc buffers[1]

D/gralloc ( 1650): gralloc.cpp gralloc_alloc entry

D/gralloc ( 1650): gralloc.cpp gralloc_alloc set bpp=2

D/gralloc ( 1650): gralloc.cpp gralloc_alloc call gralloc_alloc_framebuffer

D/gralloc ( 1650): gralloc.cpp gralloc_alloc exit

D/FramebufferNativeWindow( 1650): FramebufferNativeWindow.cpp FramebufferNativeWindow constructor exit

##并不支持overlay,所以没有它的Logcopybit是公司自己加的

D/SurfaceFlinger( 1650): DisplayHardware.cpp DisplayHardware::init call copybit_open

I/copybit.pnx6715( 1650): ST-Ericsson PNX67xx Copybit IPP, version tag LIBCOPYBIT____VYP1140A____V1.7__E160A__V1.0, driver version 1.0, ready to blit.

##初始化EGL

D/SurfaceFlinger( 1620): DisplayHardware.cpp DisplayHardware::init initialize EGL

D/libEGL  ( 1620): libs\egl\egl.cpp egl_init_drivers_locked entry

D/libEGL  ( 1620): egl.cfg not found, using default config

D/libEGL  ( 1620): libs\egl\egl.cpp egl_init_drivers_locked gEGLImpl[IMPL_SOFTWARE]

D/libEGL  ( 1620): Loader.cpp open entry

D/libEGL  ( 1620): Loader.cpp open tag=android

D/libEGL  ( 1620): Loader.cpp open path=/system/lib/egl/libGLES_android.so

D/libEGL  ( 1620): Loader.cpp load_driver entry

D/libEGL  ( 1620): loaded /system/lib/egl/libGLES_android.so

D/libEGL  ( 1620): Loader.cpp set Function Address of EGL to cnx->egl

D/libEGL  ( 1620): Loader.cpp eglGetProcAddress's location is ac413349

##以下是libGLES_android.so里面的EGL库函数

D/libEGL  ( 1620): Loader.cpp *api = eglGetDisplay

D/libEGL  ( 1620): Loader.cpp curr=abe09a08,it's address is ac4132d5

D/libEGL  ( 1620): Loader.cpp *api = eglInitialize

D/libEGL  ( 1620): Loader.cpp curr=abe09a0c,it's address is ac413e55

D/libEGL  ( 1620): Loader.cpp *api = eglTerminate

D/libEGL  ( 1620): Loader.cpp curr=abe09a10,it's address is ac413e95

D/libEGL  ( 1620): Loader.cpp *api = eglGetConfigs

D/libEGL  ( 1620): Loader.cpp curr=abe09a14,it's address is ac413ef9

D/libEGL  ( 1620): Loader.cpp *api = eglChooseConfig

D/libEGL  ( 1620): Loader.cpp curr=abe09a18,it's address is ac4148e5

D/libEGL  ( 1620): Loader.cpp *api = eglGetConfigAttrib

D/libEGL  ( 1620): Loader.cpp curr=abe09a1c,it's address is ac4144e1

D/libEGL  ( 1620): Loader.cpp *api = eglCreateWindowSurface

D/libEGL  ( 1620): Loader.cpp curr=abe09a20,it's address is ac414849

D/libEGL  ( 1620): Loader.cpp *api = eglCreatePixmapSurface

D/libEGL  ( 1620): Loader.cpp curr=abe09a24,it's address is ac414795

D/libEGL  ( 1620): Loader.cpp *api = eglCreatePbufferSurface

D/libEGL  ( 1620): Loader.cpp curr=abe09a28,it's address is ac4146dd

D/libEGL  ( 1620): Loader.cpp *api = eglDestroySurface

D/libEGL  ( 1620): Loader.cpp curr=abe09a2c,it's address is ac413bd5

D/libEGL  ( 1620): Loader.cpp *api = eglQuerySurface

D/libEGL  ( 1620): Loader.cpp curr=abe09a30,it's address is ac4144fd

D/libEGL  ( 1620): Loader.cpp *api = eglCreateContext

D/libEGL  ( 1620): Loader.cpp curr=abe09a34,it's address is ac414315

D/libEGL  ( 1620): Loader.cpp *api = eglDestroyContext

D/libEGL  ( 1620): Loader.cpp curr=abe09a38,it's address is ac413ec1

D/libEGL  ( 1620): Loader.cpp *api = eglMakeCurrent

D/libEGL  ( 1620): Loader.cpp curr=abe09a3c,it's address is ac413c25

D/libEGL  ( 1620): Loader.cpp *api = eglGetCurrentContext

D/libEGL  ( 1620): Loader.cpp curr=abe09a40,it's address is ac4132f1

D/libEGL  ( 1620): Loader.cpp *api = eglGetCurrentSurface

D/libEGL  ( 1620): Loader.cpp curr=abe09a44,it's address is ac414359

D/libEGL  ( 1620): Loader.cpp *api = eglGetCurrentDisplay

D/libEGL  ( 1620): Loader.cpp curr=abe09a48,it's address is ac4132f9

D/libEGL  ( 1620): Loader.cpp *api = eglQueryContext

D/libEGL  ( 1620): Loader.cpp curr=abe09a4c,it's address is ac4144a9

D/libEGL  ( 1620): Loader.cpp *api = eglWaitGL

D/libEGL  ( 1620): Loader.cpp curr=abe09a50,it's address is ac413315

D/libEGL  ( 1620): Loader.cpp *api = eglWaitNative

D/libEGL  ( 1620): Loader.cpp curr=abe09a54,it's address is ac413319

D/libEGL  ( 1620): Loader.cpp *api = eglSwapBuffers

D/libEGL  ( 1620): Loader.cpp curr=abe09a58,it's address is ac413dad

D/libEGL  ( 1620): Loader.cpp *api = eglCopyBuffers

D/libEGL  ( 1620): Loader.cpp curr=abe09a5c,it's address is ac413f29

D/libEGL  ( 1620): Loader.cpp *api = eglGetError

D/libEGL  ( 1620): Loader.cpp curr=abe09a60,it's address is ac4133bd

D/libEGL  ( 1620): Loader.cpp *api = eglQueryString

D/libEGL  ( 1620): Loader.cpp curr=abe09a64,it's address is ac4138f9

D/libEGL  ( 1620): Loader.cpp *api = eglGetProcAddress

D/libEGL  ( 1620): Loader.cpp curr=abe09a68,it's address is ac413349

D/libEGL  ( 1620): Loader.cpp *api = eglSurfaceAttrib

D/libEGL  ( 1620): Loader.cpp curr=abe09a6c,it's address is ac413f41

D/libEGL  ( 1620): Loader.cpp *api = eglBindTexImage

D/libEGL  ( 1620): Loader.cpp curr=abe09a70,it's address is ac413f5d

D/libEGL  ( 1620): Loader.cpp *api = eglReleaseTexImage

D/libEGL  ( 1620): Loader.cpp curr=abe09a74,it's address is ac413f79

D/libEGL  ( 1620): Loader.cpp *api = eglSwapInterval

D/libEGL  ( 1620): Loader.cpp curr=abe09a78,it's address is ac413f95

D/libEGL  ( 1620): Loader.cpp *api = eglBindAPI

D/libEGL  ( 1620): Loader.cpp curr=abe09a7c,it's address is ac413fb1

D/libEGL  ( 1620): Loader.cpp *api = eglQueryAPI

D/libEGL  ( 1620): Loader.cpp curr=abe09a80,it's address is ac41331d

D/libEGL  ( 1620): Loader.cpp *api = eglWaitClient

D/libEGL  ( 1620): Loader.cpp curr=abe09a84,it's address is ac41337d

D/libEGL  ( 1620): Loader.cpp *api = eglReleaseThread

D/libEGL  ( 1620): Loader.cpp curr=abe09a88,it's address is ac413325

D/libEGL  ( 1620): Loader.cpp *api = eglCreatePbufferFromClientBuffer

D/libEGL  ( 1620): Loader.cpp curr=abe09a8c,it's address is ac414399

D/libEGL  ( 1620): Loader.cpp *api = eglLockSurfaceKHR

D/libEGL  ( 1620): Loader.cpp curr=abe09a90,it's address is ac413329

D/libEGL  ( 1620): Loader.cpp *api = eglUnlockSurfaceKHR

D/libEGL  ( 1620): Loader.cpp curr=abe09a94,it's address is ac41332d

D/libEGL  ( 1620): Loader.cpp *api = eglCreateImageKHR

D/libEGL  ( 1620): Loader.cpp curr=abe09a98,it's address is ac4143b5

D/libEGL  ( 1620): Loader.cpp *api = eglDestroyImageKHR

D/libEGL  ( 1620): Loader.cpp curr=abe09a9c,it's address is ac413fcd

D/libEGL  ( 1620): Loader.cpp *api = eglSetSwapRectangleANDROID

D/libEGL  ( 1620): Loader.cpp curr=abe09aa0,it's address is ac413e09

D/libEGL  ( 1620): Loader.cpp *api = eglGetRenderBufferANDROID

D/libEGL  ( 1620): Loader.cpp curr=abe09aa4,it's address is ac4142dd

D/libEGL  ( 1620): Loader.cpp set Function Address of GLESv1_CM to cnx->hooks[GLESv1_INDEX]->gl

D/libEGL  ( 1620): Loader.cpp set Function Address of GLESv2 to cnx->hooks[GLESv2_INDEX]->gl

D/libEGL  ( 1620): Loader.cpp load_driver exit

D/libEGL  ( 1620): Loader.cpp if(dso) in

D/libEGL  ( 1620): Loader.cpp open exit

##加载硬件实现,当然会失败的

D/libEGL  ( 1620): libs\egl\egl.cpp egl_init_drivers_locked gEGLImpl[IMPL_HARDWARE]

D/libEGL  ( 1620): Loader.cpp open entry

##并未实现自己的硬件渲染库

D/libEGL  ( 1620): Loader.cpp open tag=(null)

D/libEGL  ( 1620): Loader.cpp open exit

D/libEGL  ( 1620): libs\egl\egl.cpp egl_init_drivers_locked exit

I/SurfaceFlinger( 1620): EGL informations:

I/SurfaceFlinger( 1620): # of configs : 8

I/SurfaceFlinger( 1620): vendor    : Android

I/SurfaceFlinger( 1620): version   : 1.4 Android META-EGL

I/SurfaceFlinger( 1620): extensions: EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_ANDROID_image_native_buffer EGL_ANDROID_swap_rectangle EGL_ANDROID_get_render_buffer

I/SurfaceFlinger( 1620): Client API: OpenGL ES

I/SurfaceFlinger( 1620): EGLSurface: 5-6-5-0, config=0x1000000

I/SurfaceFlinger( 1620): flags     : 00160000

I/SurfaceFlinger( 1620): OpenGL informations:

I/SurfaceFlinger( 1620): vendor    : Android

I/SurfaceFlinger( 1620): renderer  : Android PixelFlinger 1.3

I/SurfaceFlinger( 1620): version   : OpenGL ES-CM 1.0

I/SurfaceFlinger( 1620): extensions: GL_OES_byte_coordinates GL_OES_fixed_point GL_OES_single_precision GL_OES_read_format GL_OES_compressed_paletted_texture GL_OES_draw_texture GL_OES_matrix_get GL_OES_query_matrix GL_OES_EGL_image GL_OES_compressed_ETC1_RGB8_texture GL_ARB_texture_compression GL_ARB_texture_non_power_of_two GL_ANDROID_user_clip_plane GL_ANDROID_vertex_buffer_object GL_ANDROID_generate_mipmap

I/SurfaceFlinger( 1620): GL_MAX_TEXTURE_SIZE = 4096

I/SurfaceFlinger( 1620): GL_MAX_VIEWPORT_DIMS = 4096

D/SurfaceFlinger( 1620): DisplayHardware.cpp DisplayHardware::init exit

D/SurfaceFlinger( 1620): SurfaceFlinger.cpp SurfaceFlinger::readyToRun() exit

##其中创建共享的内存控制块,将EGL与当前屏幕绑定,初始化共享内存控制块,显示开机动画的相关Log没有打印。

 
阅读(3335) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~