LINUX.ORG.RU

mali driver usage

 , ,


0

2

Hi! Завожу дебиан, на девайсе. Поидее, там драйвера mali уже есть, но .. тем не менее GL_RENDERER: Software Rasterizer. Куда копать ?

> lsmod

Module                  Size  Used by
8189es                887631  0 
mali_drm                6634  0 
drm                   180399  1 mali_drm
mali                  213192  0 
ump                    41069  1 mali

> modinfo mali

filename:       /lib/modules/3.4.39/kernel/drivers/gpu/mali/mali.ko
version:        -e6a2366
author:         ARM Ltd.
license:        GPL
srcversion:     B05BFBCB5FD7FFF963EE2D6
depends:        ump
vermagic:       3.4.39 SMP preempt mod_unload modversions ARMv7 p2v8 
parm:           mali_debug_level:Higher number, more dmesg output (int)
parm:           mali_max_job_runtime:Maximum allowed job runtime in msecs.
Jobs will be killed after this no matter what (int)
parm:           mali_l2_max_reads:Maximum reads for Mali L2 cache (int)
parm:           mali_dedicated_mem_start:Physical start address of dedicated Mali GPU memory. (uint)
parm:           mali_dedicated_mem_size:Size of dedicated Mali GPU memory. (uint)
parm:           mali_shared_mem_size:Size of shared Mali GPU memory. (uint)
parm:           mali_boot_profiling:Start profiling as a part of Mali driver initialization (int)
parm:           mali_max_pp_cores_group_1:Limit the number of PP cores to use from first PP group. (int)
parm:           mali_max_pp_cores_group_2:Limit the number of PP cores to use from second PP group (Mali-450 only). (int)

> es2_info

EGL_VERSION: 1.4 (DRI2)
EGL_VENDOR: Mesa Project
EGL_EXTENSIONS:
    EGL_MESA_configless_context, EGL_KHR_surfaceless_context
EGL_CLIENT_APIS: OpenGL OpenGL_ES OpenGL_ES2 OpenGL_ES3 
GL_VERSION: OpenGL ES 2.0 Mesa 10.3.2
GL_RENDERER: Software Rasterizer
GL_EXTENSIONS:
    GL_EXT_blend_minmax, GL_EXT_multi_draw_arrays, 
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_compression_dxt1, 
    GL_EXT_texture_format_BGRA8888, GL_OES_depth24, GL_OES_element_index_uint, 
    GL_OES_fbo_render_mipmap, GL_OES_mapbuffer, GL_OES_rgb8_rgba8, 
    GL_OES_standard_derivatives, GL_OES_stencil8, GL_OES_texture_3D, 
    GL_OES_texture_npot, GL_OES_depth_texture, GL_OES_packed_depth_stencil, 
    GL_EXT_texture_type_2_10_10_10_REV, GL_OES_get_program_binary, 
    GL_APPLE_texture_max_level, GL_EXT_discard_framebuffer, 
    GL_EXT_read_format_bgra, GL_NV_fbo_color_attachments, 
    GL_OES_vertex_array_object, GL_ANGLE_texture_compression_dxt3, 
    GL_ANGLE_texture_compression_dxt5, GL_EXT_texture_rg, 
    GL_EXT_unpack_subimage, GL_NV_draw_buffers, GL_NV_read_buffer, 
    GL_EXT_map_buffer_range, GL_OES_surfaceless_context, 
    GL_EXT_separate_shader_objects

> cat /etc/modules

ump
mali
mali_drm
8189es

P.S. Как прятать текст(код) под спойлер ? \[cut\] у меня не сработал.


Разве mali уже научился ускорять что-то кроме OpenGL ES/EGL? Вот sunxi-mali на «Кубитраке»:

$ /usr/bin/mali-test-example 
EGL Version: "1.4 Linux-r3p0-04rel0"
EGL Vendor: "ARM"
EGL Extensions: "EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_reusable_sync EGL_KHR_fence_sync EGL_KHR_lock_surface EGL_KHR_lock_surface2 "
Surface size: 952x532
GL Vendor: "ARM"
GL Renderer: "Mali-400 MP"
GL Version: "OpenGL ES 2.0"
GL Extensions: "GL_OES_texture_npot GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_depth24 GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth_texture GL_OES_packed_depth_stencil GL_EXT_texture_format_BGRA8888 GL_EXT_blend_minmax GL_OES_EGL_image_external GL_OES_EGL_sync GL_EXT_multisampled_render_to_texture GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_EXT_shader_texture_lod "

libGL.so нету.

ksa242 ()
Последнее исправление: ksa242 (всего исправлений: 1)
Ответ на: комментарий от ksa242

ES даже в наименовании идёт, а вводные, интересно (у меня вот, малый mali) без букв почему, отдельными где-то закамментчено?

anonymous ()
Ответ на: комментарий от ssvb

Отсюда ставил UMP (Unified Memory Provider) userspace library.

[b]# dpkg -l | grep ump[/b]
ii  libump:armhf      3.0-0sunxi1  armhf  ARM Unified Memory Provider library
ii  libump-dbg:armhf  3.0-0sunxi1  armhf  ARM Unified Memory Provider library (debugging symbols)
ii  libump-dev        3.0-0sunxi1  armhf  ARM Unified Memory Provider library (development files)

От туда же Mali userspace driver, не ставится.

[b]# make config[/b]
rm -f config.mk
make config.mk
make[1]: Entering directory '/tmp/sunxi-mali'
make -f Makefile.config
make[2]: Entering directory '/tmp/sunxi-mali'
ABI="armhf" (Detected)
VERSION="UNKNOWN" (Detected)
Makefile.config:57: Unknown/unhandled Mali Version "UNKNOWN"
Makefile.config:58: Use VERSION=(r2p4,r3p0,r3p1,r3p2-01rel1) instead
Makefile.config:59: *** Unknown/unhandled Mali Version "UNKNOWN".  Stop.
make[2]: Leaving directory '/tmp/sunxi-mali'
Makefile:12: recipe for target 'config.mk' failed
make[1]: *** [config.mk] Error 2
make[1]: Leaving directory '/tmp/sunxi-mali'
Makefile:8: recipe for target 'config' failed
make: *** [config] Error 2

т.к. в секции

[b]less ./Makefile.config[/b]
...
# Detect mali driver version by talking to the mali kernel driver.
...
идет вызов небольшого сишного модуля в котром возвращаемое значение функции MALI_GET_API_VERSION сравнивается с ключами словаря имеющими значения в диапазоне 6-23, а у меня эта функция выдает значение 401, соответственно возвращается значение UNKNOWN.

Ядро с этими драйверами я брал с офф. форума по железке.

Я правильно понимаю что проблема в встроенных дровах и мне надо искать другое ядро ?(сам ядра ни разу не собирал, и вникать особо желания нет)

sdlm ()
Ответ на: комментарий от sdlm

VERSION=«UNKNOWN» (Detected)

Да, проблема именно в том, что используется неизвестная версия драйвера mali в ядре. Дело в том, что ARM постоянно меняет API. Поэтому версия блоба в userspace обязательно должна совпадать с версией драйвера mali в ядре. Ни один из имеющихся userspace блобов (r2p4,r3p0,r3p1,r3p2-01rel1) не подходит к вашему ядру.

Так что надо менять либо драйвер mali в ядре, либо искать подходящий бинарный блоб.

Allwinner H3 в новых Orange Pi - достаточно новая железка и она мало у кого имеется. Я сам заказал Orange Pi PC за 15$ из Китая, сейчас жду пока приедет :)

ssvb ()
Ответ на: комментарий от ssvb

Я правильно понял что Вы говорите, что ARM еще не выпустила userland mali blob для API version > 23 ? (я не понимаю, а зачем тогда было выпускать Device driver API version аж 401 ?)

либо искать подходящий бинарный блоб

.. я в растерянности ..

Есть какие-то sunxi (какие-то китайские производители чипов ?) (я сначала подумал что это оф. сайт, т.к. этот сайт в топе поисковой выдачи).

На сайте ARM вообще ни слова про драйвера.

Есть какой-то заброшенный lima-driver.

Вы упоминаете «userland blobs provided by CubieTech for the Allwinner hardware» .. не нашел.

Собственно я не очень понимаю .. а почему я должен искать у черт знает кого, почему нельзя зайти на оф. сайт и скачать ? Где User space blob от ARM ?

менять драйвер mali в ядре

Похоже это наиболее простой путь, т.к. я хотя бы гипотетически его представляю. Ок, а можете посоветовать tutorial для тех кому надо впервые собрать ядро (да еще и под ARM архитектуру) ? (потому что найти уже собранное у меня тоже как-то .. не задалось, на оф. сайте есть только ветка со сборками от loboris-а, а в них везде Device driver API version: 401).

sdlm ()
Ответ на: комментарий от ssvb

Вроде нашел оф. сайт с ARM драйверами, но .. ничего не понял, какие-то Utgard / Midgard .. EXA/DRI2 и UMP ..

Midgard - только для Mali-T6xx, Mali-T7xx and Mali-T860/T880 series.
Utgard - только для Mali Utgard GPU family.
EXA/DRI2 and X11 Display Driver - это что ?
UMP - UMP User Space Driver .. вот это больше всего похоже на правду .. но вроде все же, не то что нужно, это либа, а нужен бинарный блоб.

sdlm ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.