Перейти к содержанию
    

Allwinner T113-s3 уделал HiFi4 DSP. Смеяться или плакать?

В 06.07.2022 в 10:05, repstosw сказал:

Осталось выкинуть из цепочки G2D - заставить декодер рисовать прямо на дисплей, конвертируя кадр с помощью CSC.

Чет так и не понял, что сейчас за цепочки, с этими тейлами да еще и разными чет все в одну кучу смешалось. Я так понимаю, что jpeg декодер берет инфу из файла и перекодирует ее в YUV, затем нужна функция перекодировки в RGB, или что-то не так?  Что такое NV12 и зачем это нужно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

EHCI в t113-s3 на 1-м USB (0-й - OTG).

аттач/детач не диагностируется. только вместе с хабом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/6/2022 at 5:45 PM, mantech said:

Чет так и не понял, что сейчас за цепочки, с этими тейлами да еще и разными чет все в одну кучу смешалось. Я так понимаю, что jpeg декодер берет инфу из файла и перекодирует ее в YUV, затем нужна функция перекодировки в RGB, или что-то не так?  Что такое NV12 и зачем это нужно?

 

По умолчанию CedarX давал декодированный JPEG в памяти не линейно а тайлами 32x32. Такой вывести на экран проблематично, будет месево из пикселей. 

 

1.thumb.jpg.24be42e7ae2a8a717b7acf0765bab1f3.jpg

 

Чтобы было всё хорошо, нужно:

 

1) использовать детайлизатор

или

2) задать  декодеру режим NV12, а не Tile32x32

 

Далее чтобы выпрямленный YUV  вывести в RGB нужен:

 

1) СSC

или

2) G2D

 

NV12 - это и есть полу-планарный YUV420: компонента яркости в одном буфере, а пара цветоразностных компонент - в другом буфере - они чередуются там.

Есть ещё Full Planar YUV - это когда все три компоненты в трёх разных буферах (CedarX его тоже поддерживает, проверял).

 

Никакой каши нет. Всё закономерно.  Просто, чтобы вывести декодированный декодером Jpeg, ещё попыхтеть малость пришлось... :biggrin:

 

 

On 7/6/2022 at 5:45 PM, mantech said:

Я так понимаю, что jpeg декодер берет инфу из файла и перекодирует ее в YUV, затем нужна функция перекодировки в RGB, или что-то не так?  Что такое NV12 и зачем это нужно?

 

Перекодировал в Tiled YUV.

Чтобы такой вывести, перед перекодировкой в RGB нужна была детайлизация.

 

Я пошёл проще: заставил декодер давать линейный YUV без тайлизации.  В исходниках этого нет. Там используется софтовый детайлизатор.

Его код на предыдущей странице:

 

 

Или ассемблерный вариант.

 

Почитайте тему внимательно! :yes:

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/6/2022 at 10:05 AM, repstosw said:

Дело в том, что NV12 к тайлам никакого отношения не имеет

смотря для кого

https://elixir.bootlin.com/linux/latest/source/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst#L264

не знаком с VE, подумал  что у него там тайловый NV12, а оказывается там можно даже выбрать

 

По вышеприведенной ссылке настройка одного из слоя (plane в терминах Linux) на произвольный поддерживаемый входной формат

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun4i_frontend.c#L405

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun4i_frontend.c#L478

и выходной формат RGB

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun4i_frontend.c#L486

 

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/6/2022 at 6:37 PM, sasamy said:

По вышеприведенной ссылке настройка одного из слоя (plane в терминах Linux) на произвольный поддерживаемый входной формат

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun4i_frontend.c#L405

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun4i_frontend.c#L478

и выходной формат RGB

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun4i_frontend.c#L486

 

 

Нету у T113-s3 (как и у V3s) DEFE (BackeEnd).  В T113-s3  CSC и Scaler сделаны через блендер G2D.   Совмещая растягивание кадра и его конверсию.  Можно просто последнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 06.07.2022 в 11:06, GenaSPB сказал:

только вместе с хабом.

Честно так и не понял ответа на свой вопрос, есть нормальная поддержка хаба или нет, т.е. при подключенном хабе, втыкая в него флешку или еще что, стек подключает эту флешку или нет. По исходнику вижу, что нет, вот и спросил..

Или там имелось ввиду подключение хаба к порту с уже вставленной флешкой? Но тоже проверял, хаб подключается, как собственно само устройство, но флешку не подключает. Хотя может от типа хаба это зависит - х.з.

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/6/2022 at 2:34 PM, repstosw said:

Нету у T113-s3 (как и у V3s) DEFE (BackeEnd).

там черт ногу сломит кто на ком сидит в какой версии, VI у него есть ? Аналогичная ф-ция для CSC на VI

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun8i_vi_layer.c#L260

YUV какие хочешь поддерживает (DE2)

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun8i_vi_layer.c#L476

NV12 не тайловый а семипланар, в принципе у VE  всё равно свой постпроцессор есть  - можно хоть полностью планарные использовать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 06.07.2022 в 14:34, repstosw сказал:

В T113-s3  CSC и Scaler сделаны через блендер G2D

Странно, в описании DE 2.0 есть упоминание про блендер и CSC в составе дисплейного модуля. Может он не работает как нужно или пока не удалось его правильно запустить...  Там больно мудрено все, куча слабодокументированных регистров((

В 06.07.2022 в 15:10, sasamy сказал:

YUV какие хочешь поддерживает (DE2)

repstosw  писал уже, что пробовал запускать в данном режиме, но у него он не заработал, как надо, а продолжал выводить в RGB.

Ну и предположу, что этот режим не совсем удобно использовать, например, есть картинка в пол-экрана, если включить режим YUV в DE, то картинку он покажет, а в остальной половине надо рисовать в RGB... Гораздо удобнее, чтобы декодер сразу преобразовывал в RGB и складывал его по указанному адресу, либо в память, либо в FB.

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/6/2022 at 3:11 PM, mantech said:

repstosw  писал уже, что пробовал запускать в данном режиме

я не знаю как он пробовал но по контексту сообщений CSC он не включал вообще

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun8i_vi_layer.c#L283

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/6/2022 at 3:02 PM, mantech said:

при подключенном хабе, втыкая в него флешку или еще что, стек подключает эту флешку или нет. По исходнику вижу, что нет, вот и спросил..

Нет, сейчас нотификации через interrupt endpoint от хаба не получаем.
Только в момент енумерации хаба видим что в него включено.
Пока не сделано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/6/2022 at 10:25 PM, sasamy said:

я не знаю как он пробовал но по контексту сообщений CSC он не включал вообще

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun8i_vi_layer.c#L283

 

Удалось включить и правильно проинициализировать CSC.  Проблема в том, что регистры в приводимых сорцах линукса не совпадают с T113-s3.  Приходится брать хедеры и сверять буквально каждый регистр!

 

Успешно проинициализировался с такими коэффициентами:

 

[DRM_COLOR_YCBCR_FULL_RANGE] = {
		[DRM_COLOR_YCBCR_BT601] = {
			0x00000400, 0x00000000, 0x0000059B, 0xFFFD322E,
			0x00000400, 0xFFFFFEA0, 0xFFFFFD25, 0x00021DD5,
			0x00000400, 0x00000716, 0x00000000, 0xFFFC74BD,

 

Теперь плоскость Y не красная, а чёрно-белая,  как и должно быть.

 

Но ещё не всё сделано: плоскости U и V не хотят выводиться по правилу суб-семплинга:  их PITCH по-прежнему - ширина дисплея.  А должен дублироваться каждый пиксел дважды: по ширине и высоте (у YUV420  субсемплинг цветовых компонент 2x2).  Без этого изображение не в цвете...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 06.07.2022 в 16:41, GenaSPB сказал:

Только в момент енумерации хаба видим что в него включено.

Понял. А есть понимание того, что дальше делать, чтоб проходила энумерация подключенного к хабу устройства? Может ссылки на какие ресурсы... У самого че-то не больно какие знания по этому вопросу, а хотелось бы довести  до ума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/6/2022 at 5:42 PM, repstosw said:

плоскости U и V не хотят выводиться по правилу суб-семплинга:  их PITCH по-прежнему - ширина дисплея

не совсем понял, pitch

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun8i_vi_layer.c#L346

и адрес

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun8i_vi_layer.c#L354

для каждого плана

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/sun4i/sun8i_vi_layer.c#L322

вы сами должны указать, у nv12  два плана

https://linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/v4l/pixfmt-yuv-planar.html#nv12-nv21-nv12m-and-nv21m

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/6/2022 at 5:50 PM, mantech said:

А есть понимание того, что дальше делать,

Не имплементировано interrupt endpoints. только и всего-то... Надо.

Ресурсы... Те же юниховые исходники.

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 06.07.2022 в 22:48, GenaSPB сказал:

Ресурсы... Те же юниховые исходники.

А разве не на основе СТМовских там? В линуксовых пробовал смотреть - муторно там все расковыривать, особенно в усбшных... Но походу вариантов нет, ну или от NXP брать, но там поголовно использование дин. памяти, что печально...

Ну и этот еще, дурацкий OHCI тоже нужно как-то вкорячивать, вот все-таки что, что , а усб в ИМХ6 было более правильным, ибо там один контроллер на все скорости был, как в эзернете, а тут какой-то старый рудиментный подход, как в древних компах, на каждую скорость свой контроллер(((

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...