Автор Тема: драйвера Mali  (Прочитано 2090 раз)

Оффлайн sdlm

драйвера Mali
« : Ноябрь 09, 2015, 07:08:46 pm »
Как пишут A20 c Mali400 MP2 на борту вышел аж в декабре 2012. С того момента прошло 3 года. За 3 года они не могли запилить драйвера ?
У меня вообще было ощущение что Mali400 стар как валенок.
Он был еще в A10, которые выпускались в р-не 22.08.2011 (почти 4 года назад), судя по дате спецификации.

Да что там далеко ходить, сам H3 выпустили в октябре 2014 (почти год назад(!)). Т.е. полностью собранный чип был год назад .. а нормально собранных дров нет до сих пор ?

Кстати, а почему нам нужен именно r4p0 ?
Вроде же для версий r2p4,r3p0,r3p1,r3p2-01rel1 есть git репозитории и мануалы.

Вообще, то что мы сейчас "ждем", как я понял релизнулось где-то в р-не 9.05.2014. .. А разрабы пилят уже что-то в р-не r5p2+. .. Даже есть собранный user space blob .. вроде .. не уверен.

Я правильно понимаю что Mali 450 == Mali 400 MP2 ?
« Последнее редактирование: Ноябрь 10, 2015, 02:29:11 pm от tracert »
Orange Pi Plus

Оффлайн sergspio

  • Новичок
  • *
  • Сообщений: 10
  • Лайков: 6
  • Карма: +1/-0
  • Orange Pi PC
    • Просмотр профиля
Re: драйверам Mali
« Ответ #1 : Ноябрь 09, 2015, 08:26:30 pm »

Кстати, а почему нам нужен именно r4p0 ?

Те блобы что дает Стивен это проприетарка, которую ему дал Allwiner по лицензии Mali. Открытая часть дров есть на сайте mali, в данном случае нам нужны r4p0.

Как я это понимаю:
Суть в том, что ARM создала графическое ядро Mali. Allwiner купил возможность использовать определенную версию Mali ядра в своих SoC согласно полученной документации.
драйвера есть под Андроид как под самую распространенную ОС
писать драйвера под всё разнообразие ОС - дорого
выложить исходники для адаптации - потеря лицензии

Ребят, .. вот покупаете вы железку, ну скажем видюху, так никакой же проблемы нет, хоть win, хоть nix система, алгоритм примерно тот же (за 5-10мин. выполняется)
1. идем на офф. сайт, качаем дрова
2. если это nix система, то может потребоваться пару команд ввести
3. профит

Эх, не всегда все так радужно )
Пример: Atom N2600  в ХР, ну и есть еще кучка ноутов на которые у производителя нет драйверов под вин7
Orangepi_PC

Оффлайн tracert

  • Administrator
  • Житель
  • *****
  • Сообщений: 286
  • Лайков: 63
  • Карма: +53/-0
  • Orange Pi 2
    • Просмотр профиля
Re: драйверам Mali
« Ответ #2 : Ноябрь 10, 2015, 09:09:52 am »
1 Блобы обычно заточены под специфику оборудования т.е есть вероятность что на другом железе с тем же SOC работать не будут. (Стивен их дал)
2 Блобы и открытые драйвера должны быть одной версии.
3 Открытую часть должен собирать производитель железки или сами пользователи.
Дрова в принципе собрались нормально осталась проблема и она с ядром в нем нет имплементации UMP то что использует драйвер для получения доступа к буферам.
А может я ошибаюсь и проблема в блобах. Но то что ошибка происходит при swapbuffers 100%
вот чувак написал что он пропатчил блобы и теперь ошибки нету.
    magicse replied at 2015-11-9 23:35
    Could you say what are You patching in libMali.so ?

    <__egl_platform_swap_buffers+40>     ldr    r3, [pc, #36] <__egl_platform_swap_buffers+42>     movs   r2, #0
    <__egl_platform_swap_buffers+44>     add    r4, sp, #24 ; There was #28
    <__egl_platform_swap_buffers+46>     add    r3, pc
    <__egl_platform_swap_buffers+48>     ldr    r0, [r3, #4]
    <__egl_platform_swap_buffers+50>     movs   r3, #0
    <__egl_platform_swap_buffers+52>     str    r4, [sp, #16]
    <__egl_platform_swap_buffers+54>     strd   r2, r3, [sp]
    <__egl_platform_swap_buffers+58>     strd   r2, r3, [sp, #8]
    <__egl_platform_swap_buffers+62>     ldr    r0, [r0, #4]
    <__egl_platform_swap_buffers+64>     bl     0xb6f5cf64 <DRI2SwapBuffers>

Copy the Code
See comment in line <+44>
I think it's a bug in call to DRI2SwapBuffers. I'm not sure, but it seems that last parameter is something like some_struct *s and someone passed wrong pointer, so stack gets corrupted when DRI2SwapBuffers tries to write something to &s

If you talking about eglSwapBuffers not calling DRI2SwapBuffers, then answer is simple: libMali is multithreaded driver and eglSwapBuffers sends some message (maybe, through X11 protocol, IDK) and another thread catches it and calls __egl_platform_swap_buffers, which, in turn, calls DRI2SwapBuffers
Сегодня проверю со своими дровами.
Вот патченый блоб для x11
Извините, вам запрещён просмотр содержимого спойлеров.

« Последнее редактирование: Ноябрь 10, 2015, 01:46:48 pm от tracert »

Оффлайн tracert

  • Administrator
  • Житель
  • *****
  • Сообщений: 286
  • Лайков: 63
  • Карма: +53/-0
  • Orange Pi 2
    • Просмотр профиля
Re: драйверам Mali
« Ответ #3 : Ноябрь 10, 2015, 09:42:56 am »
Еще одна хорошая новость, откуда-то выплыли блобы fbdev.

Оффлайн tracert

  • Administrator
  • Житель
  • *****
  • Сообщений: 286
  • Лайков: 63
  • Карма: +53/-0
  • Orange Pi 2
    • Просмотр профиля
Re: драйвера Mali
« Ответ #4 : Ноябрь 11, 2015, 07:08:49 pm »
С патченым блобом драйвера работают.  :D Соответственно теперь можно откомпилировать XBMC  с поддержкой EGL  и протестировать ускорение интерфейса
« Последнее редактирование: Ноябрь 11, 2015, 07:23:12 pm от tracert »

Оффлайн bambr3312

  • Посвященный
  • ***
  • Сообщений: 130
  • Лайков: 28
  • Карма: +3/-1
  • Сами Вы, сэр, осётр!
    • Просмотр профиля
Re: драйвера Mali
« Ответ #5 : Ноябрь 11, 2015, 08:23:21 pm »
С патченым блобом драйвера работают.  :D Соответственно теперь можно откомпилировать XBMC  с поддержкой EGL  и протестировать ускорение интерфейса
:o А хау-ту какое-то будет? Ручасла уже чешутся :D
Относительность относительна (с)
Orange Pi 2, Orange Pi PC

Оффлайн tracert

  • Administrator
  • Житель
  • *****
  • Сообщений: 286
  • Лайков: 63
  • Карма: +53/-0
  • Orange Pi 2
    • Просмотр профиля
Re: драйвера Mali
« Ответ #6 : Ноябрь 11, 2015, 08:32:15 pm »
В разделе FAQ (Установка драйверов mali-400) все есть.
http://orangepi.pp.ua/index.php/topic,51.0.html
« Последнее редактирование: Ноябрь 12, 2015, 08:22:53 am от tracert »

Оффлайн whitewind

Re: драйверам Mali
« Ответ #7 : Ноябрь 12, 2015, 04:59:13 am »
А может я ошибаюсь и проблема в блобах. Но то что ошибка происходит при swapbuffers 100%
вот чувак написал что он пропатчил блобы и теперь ошибки нету.
Я тот самый "чувак")
Патченный блоб я выложил на гитхаб вместе с дебианизацией:
https://github.com/WhiteWind/sunxi-mali

Оффлайн tracert

  • Administrator
  • Житель
  • *****
  • Сообщений: 286
  • Лайков: 63
  • Карма: +53/-0
  • Orange Pi 2
    • Просмотр профиля
Re: драйвера Mali
« Ответ #8 : Ноябрь 12, 2015, 07:22:31 am »
Да точно ))) ;D Спасибо за помощь.....
Тогда вопрос, пока рыл блоб, нашел что проблема была в том что после вызова swapbuffers происходил выброс в недопустимый диапазон адресов отсюда и seg fault.
До __egl_platform_swap_buffers не успел добраться из-за нехватки времени.. Если можно чуть подробней про ошибку.

И второй вопрос где вам удалось разжиться  fbdev блобами.
« Последнее редактирование: Ноябрь 12, 2015, 10:55:14 am от tracert »

Оффлайн whitewind

Re: драйвера Mali
« Ответ #9 : Ноябрь 12, 2015, 04:09:35 pm »
Тогда вопрос, пока рыл блоб, нашел что проблема была в том что после вызова swapbuffers происходил выброс в недопустимый диапазон адресов отсюда и seg fault.
До __egl_platform_swap_buffers не успел добраться из-за нехватки времени.. Если можно чуть подробней про ошибку.
На это я не натыкался. Натыкался на то, что на команде bx мой gdb спотыкался и отказывался показывать что-либо разумное.
А ещё - драйвер многопоточный. Вызов eglSwapBuffers происходит в одном потоке, а обрабатывается в другом функцией __egl_platform_swap_buffers. 

Суть бага (насколько я понимаю) в том, что в функцию DRI2SwapBuffers передаются параметры по ссылке или указателю, и указатель на последний параметр передаётся неверный. Функция DRI2SwapBuffers записывает по этому указателю данные и затирает локальную переменную функции __egl_platform_swap_buffers.

И второй вопрос где вам удалось разжиться  fbdev блобами.
Вот тут не совсем понял. Если вопрос про libMali.so, то я его взял в дебрях официального форума http://www.orangepi.org/orangepibbsen/
Только это не fbdev блоб, а mali блоб.

Оффлайн tracert

  • Administrator
  • Житель
  • *****
  • Сообщений: 286
  • Лайков: 63
  • Карма: +53/-0
  • Orange Pi 2
    • Просмотр профиля
Re: драйвера Mali
« Ответ #10 : Ноябрь 12, 2015, 04:24:15 pm »
Mali blob-ы идут обычно двух видов x11 и fbdev.
Те что давал Стивен это x11-е.
Типа того /x11/libMali.so и /fbdev/libMali.so
« Последнее редактирование: Ноябрь 12, 2015, 04:42:20 pm от tracert »

Оффлайн whitewind

Re: драйвера Mali
« Ответ #11 : Ноябрь 12, 2015, 04:45:53 pm »
Mali blob-ы идут обычно двух видов x11 и fbdev.
Те что давал Стивен это x11-е.
Библиотеку для X11 (эту) я брал из этого поста
http://www.orangepi.org/orangepibbsen/forum.php?mod=redirect&goto=findpost&ptid=53&pid=3935&fromuid=142074
А откуда я брал библиотеку для fbdev (эту) я не помню. Я, честно говоря, её не тестировал)

Оффлайн tracert

  • Administrator
  • Житель
  • *****
  • Сообщений: 286
  • Лайков: 63
  • Карма: +53/-0
  • Orange Pi 2
    • Просмотр профиля
Re: драйвера Mali
« Ответ #12 : Ноябрь 12, 2015, 04:51:22 pm »
Все равно хорошо что они появились ))) позже можно будет и их потестировать
« Последнее редактирование: Ноябрь 12, 2015, 04:55:27 pm от tracert »

Оффлайн whitewind

Re: драйвера Mali
« Ответ #13 : Ноябрь 12, 2015, 05:37:10 pm »
У меня есть сильное подозрение, что библиотека для fbdev вообще не от H3, а от какого-нибудь A10

Оффлайн tracert

  • Administrator
  • Житель
  • *****
  • Сообщений: 286
  • Лайков: 63
  • Карма: +53/-0
  • Orange Pi 2
    • Просмотр профиля
Re: драйвера Mali
« Ответ #14 : Ноябрь 12, 2015, 05:43:21 pm »
Буду дома гляну