-
Постов
2 977 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Весь контент GenaSPB
-
Спасибо. Если на второй mixer как входные pipe не подключать ничего, идет запрограммированный цвет фона из mix (он же bld в терминах линуксовчкого кода). Если подключить единствкнный VI, то всё чёрное. Проговммирование как для mixer0 (где всё раьотает).
-
У него (DE) выходной коммутатор есть, его работа заметна. На TCON может быть скоммутирован один из двух DE RT-Mixer. Как и на второй TCON, которонго в этом процессоре нет. В t507 оно оправдано - там второй есть. С чего TV_Encoder берёт данные не понял.. И как он соотностится с TCON_TV Вот что у нас в T113-s3 считается aux display?
-
Нашелся в T113-s3 на 0x05200000 второй RT-Mixer с единственным VI. Дублирует первый что стоит на 0x05100000. Пока получить изображение не получилось, но синхронизация по кадрам работает.
-
Да я про свой вариант на гитхаб. На уровене регистров блоков G2D https://github.com/ua1arn/hftrx/blob/7e6e114e4f1dcb278d4801b185b890d88c542ea3/src/display/framebuf.c#L1663
-
Недавно я спрашивал тут про то, какой адрес куда ставить... ответ был - соответствующиий началной координате исходного изображения после поворота (что неправильно). Очевидно, что да. С выделенем памяти что у вас за проблемы не понял, какая лишняя память? Какой запас? Копирование затрагивает ровно то окно, которое заказано. выделение у меня сделано с округлением до 64 байтов в каждой строке (из соображений быстродействия - выделение буферов идет так же с таким выравниванием). Исходная картинкка 100 * 50 пикселей, экран - 800 * 480.
-
Протестировал повороты на голом железе. Указывать надо всегда левый верхний угол буфера получателя. Как и источника. Размер в получателе вообще не влияет похоже. Тестовая программа (в репо): Рисует белые квадраты, затем с рвзными углами (и пара mirror) копирует туда неквадратный буфер с красной буфвой F нв синем фоне. со смещеием 1 пиксель, чтобы видеть, если вылезет за пределы ожидаемого.
-
Вопрос по координате выходного окна. Правильно ди я понимаю, что при повороте надо указать пиксель, соответствующий начальной координате (левая-верхняя точка входного)? Еще, при повороте на 180 например, координата находится внутри выходного прямоугольника или на один пиксель правее-ниже?
-
то что я говорил - stride - шаг строк - разное? Хотя не обязано... в вашем случае хоть по восемь килобайт на строку h & w - разное?
-
Ну это точно пепепутали со stridе. Осоьенно полосит. При возмлжгости на днях поворот пррверю. Зы: буферы не перекрываются у вас?
-
А попробуйтье указать у выходного прямоунольника ражмеры оиличающиеся от входного? В моем же случае прворота нет. И stride чскорее всего другой
-
Масштабирование это отдельная операция, поворот отдельная. Это к ROT cache_flush_range - а зачем ПОСЛЕ работы аппаратуры?
-
Да, умеет. В том числе и с color key. Смотреть у меня - https://github.com/ua1arn/hftrx/blob/develop/src/display/framebuf.c исходники теста искать по словам Hello!
-
Собственно инициализация блока для поворота вот так (в этом тексте поворот на 0 градусов - используется как копирование) /* Коприрование с применением блока G2D_ROT */ static void hwaccel_rotcopy( uintptr_t saddr, unsigned sstride, uint_fast32_t ssizehw, uintptr_t taddr, unsigned tstride, uint_fast32_t tsizehw ) { ASSERT((G2D_ROT->ROT_CTL & (UINT32_C(1) << 31)) == 0); G2D_ROT->ROT_CTL = 0; G2D_ROT->ROT_IFMT = VI_ImageFormat; G2D_ROT->ROT_ISIZE = ssizehw; G2D_ROT->ROT_IPITCH0 = sstride; // G2D_ROT->ROT_IPITCH1 = sstride; // G2D_ROT->ROT_IPITCH2 = sstride; G2D_ROT->ROT_ILADD0 = ptr_lo32(saddr); G2D_ROT->ROT_IHADD0 = ptr_hi32(saddr) & 0xff; // G2D_ROT->ROT_ILADD1 = ptr_lo32(saddr); // G2D_ROT->ROT_IHADD1 = ptr_hi32(saddr) & 0xff; // G2D_ROT->ROT_ILADD2 = ptr_lo32(saddr); // G2D_ROT->ROT_IHADD2 = ptr_hi32(saddr) & 0xff; G2D_ROT->ROT_OPITCH0 = tstride; // G2D_ROT->ROT_OPITCH1 = tstride; // G2D_ROT->ROT_OPITCH2 = tstride; G2D_ROT->ROT_OSIZE = tsizehw; G2D_ROT->ROT_OLADD0 = ptr_lo32(taddr); G2D_ROT->ROT_OHADD0 = ptr_hi32(taddr) & 0xff; // G2D_ROT->ROT_OLADD1 = ptr_lo32(taddr); // G2D_ROT->ROT_OHADD1 = ptr_hi32(taddr) & 0xff; // G2D_ROT->ROT_OLADD2 = ptr_lo32(taddr); // G2D_ROT->ROT_OHADD2 = ptr_hi32(taddr) & 0xff; //G2D_ROT->ROT_CTL |= (UINT32_C(1) << 7); // flip horisontal //G2D_ROT->ROT_CTL |= (UINT32_C(1) << 6); // flip vertical //G2D_ROT->ROT_CTL |= (UINT32_C(1) << 4); // rotate (0: 0deg, 1: 90deg, 2: 180deg, 3: 270deg) G2D_ROT->ROT_CTL |= (UINT32_C(1) << 0); // ENABLE awxx_g2d_rot_startandwait(); /* Запускаем и ждём завершения обработки */ } Остальные функции можно у меня в репо посмотреть. stride - шаг строк в памяти в байтах. const unsigned tstride = GXADJ(tdx) * PIXEL_SIZE; const unsigned sstride = GXADJ(sdx) * PIXEL_SIZE; const uintptr_t taddr = (uintptr_t) dst; const uintptr_t saddr = (uintptr_t) src; const uint_fast32_t ssizehw = ((sh - 1) << 16) | ((sw - 1) << 0); const uint_fast32_t tsizehw = ((sh - 1) << 16) | ((sw - 1) << 0); /* размер совпадающий с источником - просто для удобства */
-
Сорри я на mfpu хотел обратить внтмание
-
Флаг -mfloat поправьте.
-
https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-mingw-w64-i686-arm-none-eabi.exe Arm GNU Toolchain Downloads – Arm Developer Раьотает ли под win32 не уверен. Закопайте стюардесу. По ссылке есть архивы релизов - откатитесь назад, когда прекратили поддержку я не отслкживал
-
Пока вижу прииенение двух ключей mfloat с разными параметрами. Попробуйте как у меня один. И компилятор поновее бы. Sorcery давно издох.
-
А хоть сообщения об ошибках-то какие? Не знает регистров?
-
Gcc 13.2.1. Но работало и на 12 точно.
-
-
На этом месте появляется меню. А так при обычной работе индицируется символ на весь экран - крестик или стрелочка
-
Продолжая оффтоп про терминалы. Только что полазил по меню терминала в автобусе (лазурный белорусский). Просто отличнот сделано. Там похоже 800х480 стоит - мгновенная отрисовка, реакция на кнопку сразу. Те моменты что треьуют связи с банком разумеется тормозят. Но понятно, нет неясности - принялась моя команда или нет. Фото из яндекс.
-
Проверяйте... но если такие скорости то подразумевается аппаратные квадраиурники... и 113й не совсем правильный выбор. В памяти всплывает stm32mp157 с нужной периферией уже
-
Так ввод нормалтно работает... ручной ввлколер квадратурный с частотой примерно 4000 перепадов в секунду отрабатывает