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

Второй косяк - DMA2D блендер должен дополнительно работать с цветом фона

А с чем работает DMA2D блендер?

в нынешнем виде background alpha фактически бесполезная штука.

Можете объяснить как работает background alpha в нынешнем виде?

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


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

А кто-нибудь менял функции или добавлял функционал использование DMA2D в стандартном драйвере от ST при использовании emWin?

 

Сам emWin работает нормально, то, что не нормально научился подправлять. Единственное, что не устраивает - это при масштабировании больших окон или их перетаскивании, изображение лагает, т.е. заметны перерисовки определённых кусочков виджетов. В кишки его пока сильно не лез, но есть предположение, что он где то на ожидании флагов подвязан.

 

Разрешение 800х480, RGB565, плата 429Discovey, SDRAM по 16-битной шине, тактовая CPU 168МГц. Стек GUI также лежит в SDRAM. Сейчас в проекте плата с SDRAM по 32-битной шине, думаю раза в 1.5. должно поднять производительность.

Ещё вопрос, тактирование экрана LTDC лучше сторону уменьшения частоты?

 

 

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


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

А с чем работает DMA2D блендер?

Блендер накладывает два полноценных слоя - передний план и фон. Если к двум полноценным слоям добавить еще один фоновый со сплошной заливкой (так, как это сделано в LTDC), то background_alpha станет реально полезной фичей.

 

Можете объяснить как работает background alpha в нынешнем виде?

А он практически никак не работает. Смотрите сами - слои комбинируются по формулам из раздела 9.3.6. Если формулы преобразовать и немного изменить (принять, что 0 <= alpha <= 1.0), то основная формула примет такой вид:

 

Cout = (Cfg * Afg + Cbg*Abg*(1.0 - Afg)) / (Afg + Abg*(1 - Afg))

 

Нетрудно заметить, что при полностью прозрачном переднем плане (Afg = 0) формула становится такой:

 

Cout = Cbg*Abg / Abg = Cbg

 

Т.е. Abg (прозрачность фона) никак эту прозрачность не изменяет :laughing: (за исключением Abg=0, в этом случае Cbg = 255) . Для промежуточных значений Afg, Abg оказывает влияние на конечное изображение, но совсем не так, как ожидается. Найти какое-либо полезное применение для Abg я у себя найти не смог.

 

Ещё вопрос, тактирование экрана LTDC лучше сторону уменьшения частоты?

Лучше для чего? Анимации нормально выглядеть начинают от 20..25к/с, при дальнейшем повышении я никакой разницы не замечал (может на другом контенте потребуется и больше, хотя в кино вроде всем хватает). В общем случае, чем выше частота LTDC, тем больше пропускной способности SDRAM он "отъедает", как результат производительность падает. Т.е. оптимально выбирать минимально достаточную для нормальной работы TFT и нормального вида анимированных элементов (если они есть).

 

По поводу emWin и прочего подсказать не могу - у меня все самописное.

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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