Hwcomposer запустился...вроде...

Сейчас будет краткий рассказ о том, как программирование вызывает паранойю. Когда ты программируешь и погружаешься в новую среду (а для меня среда ядра linux, android и прочее новая среда) то ты по умолчанию считаешь себя дебилом, а всех в округе гениями. Но иногда продакшен код, который используется в куче мест сделан так, что...не будем матом.
Суть: графикой в моей железкой заведует программулина pvrsrvinit которая, как я понял, обращается к ядру и говорит мол мне надо столько то памяти и прочее. Прога закрытая и что там происходит внутри мне не известно. И работает она кривоватенько...причины такой работы мне не понятны. Но суть в том что:
1 - Ядро создаёт устройства с такими правами доступа, что pvrsrvinit к ним не имеет доступа
2 - Если ты переставляешь права доступа и запускаешь pvrsrvinit, то он запускается и снова выставляет права так, что hwcomposer не хочет запускаться.
Это в кратце...а полную историю

Ладно...поехали...для того, чтобы понять почему не запускается hwcomposer собрал циан, чтобы понять что я делаю ни так в естественной среде...ну да и ладно - собираем и видим:
Код BASH:
  1. I/SurfaceFlinger( 212): SurfaceFlinger is starting
  2. I/SurfaceFlinger( 212): SurfaceFlinger's main thread ready to run. Initializing graphics H/W...
  3. D/libEGL ( 212): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
  4. D/libEGL ( 212): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
  5. D/libEGL ( 212): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
  6. W/libEGL ( 212): eglInitialize(0x1) failed (EGL_BAD_ALLOC)
  7. I/hwcomposer( 212): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**)::win-0 add[0] 3c330000
  8. I/hwcomposer( 212): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**)::win-0 add[1] 3c4a7000
  9. I/hwcomposer( 212): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**)::win-0 add[2] 3c61e000
  10. E/hwcomposer( 212): int createFimc(s5p_fimc_t*)::Post processor open error (13)
  11. E/hwcomposer( 212): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**)::creatFimc() fail
  12. E/SurfaceFlinger( 212): composer device failed to initialize (Invalid argument)
  13. E/SurfaceFlinger( 212): ERROR: failed to open framebuffer (Not a typewriter), aborting
  14. F/libc ( 212): Fatal signal 6 (SIGABRT) at 0x000000d4 (code=-6), thread 212 (surfaceflinger)
Ну всё как всегда...окей - лезем в код и смотрим что да как...находим проблему с правами доступа о которой я говорил ранее стал загружаться pvrsrvinit, но hwcomposer опять не стартует...не порядок...поэксперементировал с правами доступа, поставил в загрузку, перед запуском pvrsrvinit следующий код:
Код BASH:
  1. chmod 0666 /dev/graphics/fb0
  2. chmod 0666 /dev/graphics/fb1
  3. chmod 0666 /dev/graphics/fb2
  4. chmod 0666 /dev/graphics/fb3
  5. chmod 0666 /dev/graphics/fb4
  6. chmod 0666 /dev/s3c-mem
  7. chmod 0666 /dev/video0
  8. chmod 0666 /dev/video1
  9. chmod 0666 /dev/video2
  10. chmod 0666 /dev/video3
  11. chmod 0666 /dev/video14
  12. chmod 0666 /dev/video21
  13. chmod 0666 /dev/video22
Окей, pvrsrvinit стартует, SurfaceFlinger начинает показывать что то сносное:
Код BASH:
  1. I/SurfaceFlinger( 73): SurfaceFlinger is starting
  2. I/SurfaceFlinger( 73): SurfaceFlinger's main thread ready to run. Initializing graphics H/W...
  3. D/libEGL ( 73): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
  4. D/libEGL ( 73): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
  5. D/libEGL ( 73): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
  6. I/auditd ( 165): Starting up
  7. E/auditd ( 165): Failed on audit_set_pid with error: Protocol not supported
  8. I/auditd ( 165): Exiting
  9. E/keystore( 166): chdir: /data/misc/keystore: No such file or directory
  10. I/hwcomposer( 73): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**)::win-0 add[0] 3c330000
  11. I/hwcomposer( 73): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**)::win-0 add[1] 3c4a7000
  12. I/hwcomposer( 73): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**)::win-0 add[2] 3c61e000
  13. E/hwcomposer( 73): int createFimc(s5p_fimc_t*)::Post processor open error (13)
  14. E/hwcomposer( 73): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**)::creatFimc() fail
  15. E/SurfaceFlinger( 73): composer device failed to initialize (Invalid argument)
  16. I/SurfaceFlinger( 73): Using composer version 1.0
  17. W/SurfaceFlinger( 73): getting VSYNC period from fb HAL: 14705882
  18. W/SurfaceFlinger( 73): no suitable EGLConfig found, trying a simpler query
  19. I/SurfaceFlinger( 73): EGL informations:
  20. I/SurfaceFlinger( 73): vendor : Android
  21. I/SurfaceFlinger( 73): version : 1.4 Android META-EGL
  22. I/SurfaceFlinger( 73): extensions: EGL_KHR_get_all_proc_addresses EGL_ANDROID_presentation_time EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync EGL_ANDROID_image_native_buffer EGL_ANDROID_recordable
  23. I/SurfaceFlinger( 73): Client API: OpenGL_ES
  24. I/SurfaceFlinger( 73): EGLSurface: 8-8-8-8, config=0x2
  25. I/SurfaceFlinger( 73): OpenGL ES informations:
  26. I/SurfaceFlinger( 73): vendor : Imagination Technologies
  27. I/SurfaceFlinger( 73): renderer : PowerVR SGX 540
  28. I/SurfaceFlinger( 73): version : OpenGL ES-CM 1.1
  29. I/SurfaceFlinger( 73): extensions: GL_EXT_debug_marker GL_OES_byte_coordinates GL_OES_fixed_point GL_OES_single_precision GL_OES_matrix_get GL_OES_read_format GL_OES_compressed_paletted_texture GL_OES_point_sprite GL_OES_point_size_array GL_OES_matrix_palette GL_OES_draw_texture GL_OES_query_matrix GL_OES_texture_env_crossbar GL_OES_texture_mirrored_repeat GL_OES_texture_cube_map GL_OES_blend_subtract GL_OES_blend_func_separate GL_OES_blend_equation_separate GL_OES_stencil_wrap GL_OES_extended_matrix_palette GL_OES_framebuffer_object GL_OES_rgb8_rgba8 GL_OES_depth24 GL_OES_stencil8 GL_OES_compressed_ETC1_RGB8_texture GL_OES_mapbuffer GL_OES_EGL_image GL_OES_EGL_image_external GL_EXT_multi_draw_arrays GL_OES_required_internalformat GL_IMG_read_format GL_IMG_texture_compression_pvrtc GL_IMG_texture_format_BGRA8888 GL_EXT_texture_format_BGRA8888 GL_OES_egl_sync GL_IMG_vertex_array_object
  30. I/SurfaceFlinger( 73): GL_MAX_TEXTURE_SIZE = 2048
  31. I/SurfaceFlinger( 73): GL_MAX_VIEWPORT_DIMS = 2048
  32. E/cutils-trace( 73): Error opening trace file: No such file or directory (2)
  33. E/libEGL ( 73): eglQuerySurface:599 error 300d (EGL_BAD_SURFACE)
  34. E/libEGL ( 73): eglQuerySurface:599 error 300d (EGL_BAD_SURFACE)
  35. E/libEGL ( 73): call to OpenGL ES API with no current context (logged once per thread)
  36. D/SurfaceFlinger( 73): Screen acquired, type=0 flinger=0x41e85450
  37. E/SurfaceFlinger( 73): eventControl(0, 1) failed Bad file number
  38. D/libEGL ( 189): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
  39. D/libEGL ( 189): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
  40. D/libEGL ( 189): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
  41. E/cutils-trace( 189): Error opening trace file: No such file or directory (2)
  42. E/libEGL ( 189): eglQuerySurface:599 error 300d (EGL_BAD_SURFACE)
  43. E/libEGL ( 189): eglQuerySurface:599 error 300d (EGL_BAD_SURFACE)
  44. E/libEGL ( 189): eglMakeCurrent:784 error 3009 (EGL_BAD_MATCH)
Тут я задумался...полез искать в код и так далее, а потом посмотрел права доступа к /dev/video1 и да...они были 0400 или что то подобное...явное не то, что я выставлял...
И я такой:
Hwcomposer запустился...вроде...

ладно...видимо pvrsrvinit переназначает права доступа при инициализации и их придётся выставлять заново...окей после инициализации вставляем опять портянку с chmod 666 что выше и....
Код BASH:
  1. I/SurfaceFlinger( 73): SurfaceFlinger is starting
  2. I/SurfaceFlinger( 73): SurfaceFlinger's main thread ready to run. Initializing graphics H/W...
  3. D/libEGL ( 73): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
  4. I/auditd ( 148): Starting up
  5. E/auditd ( 148): Failed on audit_set_pid with error: Protocol not supported
  6. I/auditd ( 148): Exiting
  7. E/keystore( 149): chdir: /data/misc/keystore: No such file or directory
  8. D/libEGL ( 73): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
  9. D/libEGL ( 73): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
  10. I/hwcomposer( 73): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**)::win-0 add[0] 3c330000
  11. I/hwcomposer( 73): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**)::win-0 add[1] 3c4a7000
  12. I/hwcomposer( 73): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**)::win-0 add[2] 3c61e000
  13. D/hwcomposer( 73): int hwc_device_open(const hw_module_t*, const char*, hw_device_t**):: success
  14. I/SurfaceFlinger( 73): Using composer version 1.0
  15. W/SurfaceFlinger( 73): getting VSYNC period from fb HAL: 14705882
  16. W/SurfaceFlinger( 73): no suitable EGLConfig found, trying a simpler query
  17. I/SurfaceFlinger( 73): EGL informations:
  18. I/SurfaceFlinger( 73): vendor : Android
  19. I/SurfaceFlinger( 73): version : 1.4 Android META-EGL
  20. I/SurfaceFlinger( 73): extensions: EGL_KHR_get_all_proc_addresses EGL_ANDROID_presentation_time EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync EGL_ANDROID_image_native_buffer EGL_ANDROID_recordable
  21. I/SurfaceFlinger( 73): Client API: OpenGL_ES
  22. I/SurfaceFlinger( 73): EGLSurface: 8-8-8-8, config=0x2
  23. I/SurfaceFlinger( 73): OpenGL ES informations:
  24. I/SurfaceFlinger( 73): vendor : Imagination Technologies
  25. I/SurfaceFlinger( 73): renderer : PowerVR SGX 540
  26. I/SurfaceFlinger( 73): version : OpenGL ES-CM 1.1
  27. I/SurfaceFlinger( 73): extensions: GL_EXT_debug_marker GL_OES_byte_coordinates GL_OES_fixed_point GL_OES_single_precision GL_OES_matrix_get GL_OES_read_format GL_OES_compressed_paletted_texture GL_OES_point_sprite GL_OES_point_size_array GL_OES_matrix_palette GL_OES_draw_texture GL_OES_query_matrix GL_OES_texture_env_crossbar GL_OES_texture_mirrored_repeat GL_OES_texture_cube_map GL_OES_blend_subtract GL_OES_blend_func_separate GL_OES_blend_equation_separate GL_OES_stencil_wrap GL_OES_extended_matrix_palette GL_OES_framebuffer_object GL_OES_rgb8_rgba8 GL_OES_depth24 GL_OES_stencil8 GL_OES_compressed_ETC1_RGB8_texture GL_OES_mapbuffer GL_OES_EGL_image GL_OES_EGL_image_external GL_EXT_multi_draw_arrays GL_OES_required_internalformat GL_IMG_read_format GL_IMG_texture_compression_pvrtc GL_IMG_texture_format_BGRA8888 GL_EXT_texture_format_BGRA8888 GL_OES_egl_sync GL_IMG_vertex_array_object
  28. I/SurfaceFlinger( 73): GL_MAX_TEXTURE_SIZE = 2048
  29. I/SurfaceFlinger( 73): GL_MAX_VIEWPORT_DIMS = 2048
Success мазафака!
Hwcomposer запустился...вроде...
Комментарии (0)

Нет комментариев. Ваш будет первым!

Copyright 2016-2024 NeoChapay