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

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

5 hours ago, repstosw said:

При условии, если он либо зашифрован или содержит EXE,DLL, BAT.

Пофик на содержимое. просто приаттаченый архив (с текстовыми файлами например).

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


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

В 22.02.2024 в 07:59, mantech сказал:

Программно-то все работает, и с кратностью 2 по высоте тоже.

Вообщем суть осталась та же, если делать выдачу повернутой картинки прямо на экран,

G2D_BLT.dst_image.w=LCD_PIXEL_WIDTH;
G2D_BLT.dst_image.h=LCD_PIXEL_HEIGHT;
 

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

G2D_BLT.dst_image.w=размер картинки;
 G2D_BLT.dst_image.h=размер картинки;
 

То получаем лажу при _image.w не кратном 2. Как с этим бороться, да похоже никак((

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


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

На регистрах крутится...
Или объясните где некратность.
Вход 99 * 149, выход - любое место 800 * 480. Где некратность двум?

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


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

13 минут назад, GenaSPB сказал:

На регистрах крутится...
Или объясните где некратность.
Вход

Ну может непонятно объясняю, вообщем задача такая, есть исходная картинка, лежит в памяти в виде линейного массива, размером w*h*4 , в байтах. Ее нужно повернуть и положить в такой же линейный буфер, соотв. такого же размера в байтах. Единственное она там будет перевернута на 270 град. А затем, когда мне ее нужно вывести на экран, то функция выдачи преобразует картинку из данного массива в растровую уже учитывая размеры экранной области и вписывая ее в эту область по указанным координатам. 

Если я указываю в 

G2D_BLT.dst_image.w=LCD_PIXEL_WIDTH;
G2D_BLT.dst_image.h=LCD_PIXEL_HEIGHT;
 

То результат не линейный массив, а копия экранной области размерами LCD_PIXEL_WIDTH*LCD_PIXEL_HEIGHT*4, хранить мне такое в памяти слишком роскошно, да и неудобно...

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

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


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

Честно говоря пробираться чепез дебри линуксрвского исходника хватло одно раза... и некоторые непонятки по ичпользованию парвметров были. если надо, чтобы работао, скопируйте три десятка строк из моего репо и все будет предсказуемо работать. И поймёте как rot (совершенно отдельный блок g2d) работает.

 

Тут

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

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


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

9 часов назад, GenaSPB сказал:

И поймёте как rot (совершенно отдельный блок g2d) работает.

Да я уж его всяко пробовал и вдоль и поперек, результат один. Скорее всего у вас просто такой задачи, как у меня не было. Ради интереса можете проверить мою картинку, повернуть ее, закинув результат поворота в память в блок размером w*h*4 байт, а затем вывести ее на экран и увидите всю эту лажу...

И еще одно замечание, если в вышеуказанным параметрам задавать произвольные значения (ну картинки-то разной ширины\высоты бывают) то бывают случаи зависания всего g2d модуля, даже блендер не работает, результат работы - частично преобразованный блок, мусор, и постоянно висит в цикле ожидания завершения работы, вываливается только по таймауту, и самое интересное, пересброс программный не помогает. При значениях соотв. размеру экранной области такого не замечал...

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

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


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

1 hour ago, mantech said:

И еще одно замечание, если в вышеуказанным параметрам задавать произвольные значения (ну картинки-то разной ширины\высоты бывают) то бывают случаи зависания всего g2d модуля, даже блендер не работает, результат работы - частично преобразованный блок, мусор, и постоянно висит в цикле ожидания завершения работы, вываливается только по таймауту, и самое интересное, пересброс программный не помогает. При значениях соотв. размеру экранной области такого не замечал...

Следить за областью допустимых значений аргументов G2D - задача программиста.

От себя добавлю:  прямоугольник размером 1x1 пиксель тоже приводит к зависанию намертво.

Ничто не мешает поставить G2D раком, передав некорректные параметры.  Тут и вылет за пределы памяти, и бесконечный цикл.  Инкременторы всякие, операторы ... :biggrin:

 

16 hours ago, mantech said:

Ну может непонятно объясняю, вообщем задача такая, есть исходная картинка, лежит в памяти в виде линейного массива, размером w*h*4 , в байтах. Ее нужно повернуть и положить в такой же линейный буфер, соотв. такого же размера в байтах. Единственное она там будет перевернута на 270 град. А затем, когда мне ее нужно вывести на экран, то функция выдачи преобразует картинку из данного массива в растровую уже учитывая размеры экранной области и вписывая ее в эту область по указанным координатам. 

Надо будет попробовать. Занинтересовало

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


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

2 часа назад, repstosw сказал:

Надо будет попробовать. Занинтересовало

Как проверите, отпишитесь, для меня тоже тема интересная... Свой пример, который выслал, с артефактами, как раз по такой схеме и работал...

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

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


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

4 hours ago, mantech said:

Да я уж его всяко пробовал и вдоль и поперек

Судя по цитаиам кода, вдоль и поперёк сквозь линукс код.

Поняв как работает железо, удалось написать масштабирвание с color key, которое не работало в линукс.

Разбираясь с линукс билиотекой, встречал разнообразие в записи размеров в один и те же регистры - с уменьшением на один или нет. Кажется видел и перепутанное.

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

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


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

2 минуты назад, GenaSPB сказал:

Судя по цитаиам кода, вдоль и поперёк сквозь линукс код.

И линуксовый смотрел и РТОС от аллвиннера, отличия есть, но не существенные, соотв работает аналогично... Главный минус - нет доки на сам блок от производителя, поэтому все проверяется опытным путем...

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


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

Обратите внимание на ограничения округления адреса источника, pitch источника и получвтеля на 16 байт.  Рвзмер источника, получателя и адрес получателя не требуют выравнивания. ROT.

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

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


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

4 часа назад, GenaSPB сказал:

Обратите внимание на ограничения округления адреса источника

Эт у меня сейчас вообще выровнено на 0х1000. Ибо буфер прибит гвоздями к фикс. адресу в памяти.

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


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

А pitch? Я так допиливал библиотеку загрузки png для обеспечения округления рамеров буферов строк до принятых в моем проекте (64 байта)

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

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


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

9 hours ago, mantech said:

буфер прибит гвоздями к фикс. адресу в памяти

Пррблемы с кешпамяттю решаете?

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


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

1 час назад, GenaSPB сказал:

Пррблемы с кешпамяттю решаете?

Конечно. Инвалидация кэша перед началом работы.

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


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

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

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

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

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

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

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

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

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

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