repstosw 18 1 июня, 2020 Опубликовано 1 июня, 2020 (изменено) · Жалоба 1 hour ago, mantech said: Какие это дает преимущества и по сравнению с чем? У меня А13 на 650МГц почти не грелся, как в вашем случае? Офсайт ARM утверждает, что пересылка NEON будет идти быстрее, чем обычный Си-шный memcpy: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka13544.html Но там надо по-хорошему прелод использовать, причем несовсем понятно как выбрать второй аргумент в PLD. NEONCopyPLD PLD [r1, #0xC0] ----------- здесь непонятно: откуда 0xC0 ??? VLDM r1!,{d0-d7} VSTM r0!,{d0-d7} SUBS r2,r2,#0x40 BGE NEONCopyPLD Процесор еле тёплый. P.S. В A13 только линейный ДМА. 2D там нет (но оно мне не особо нужно, так как все видеобуфера линейные) Изменено 1 июня, 2020 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 1 июня, 2020 Опубликовано 1 июня, 2020 · Жалоба 6 часов назад, __inline__ сказал: Но там надо по-хорошему прелод использовать, причем несовсем понятно как выбрать второй аргумент в PLD. Че-то тоже не нашел, как это правильно и по-простому использовать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 1 июня, 2020 Опубликовано 1 июня, 2020 · Жалоба 7 hours ago, __inline__ said: В A13 только линейный ДМА. 2D там нет Как нет - там целый Display Engine, у фронтенда (DEFE) свой выделенный DMA контроллер для 2D доступа к памяти Quote Support direct display and write back to memory Chapter 26 Display Engine Front End (DEFE) https://linux-sunxi.org/images/3/3d/A13_User_Manual_v1.5_20150510.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 2 июня, 2020 Опубликовано 2 июня, 2020 (изменено) · Жалоба 9 hours ago, mantech said: Че-то тоже не нашел, как это правильно и по-простому использовать... А так хочется :) У меня почему-то NEON-пересылка не требует сброса с кеша(flush dcache, clean dcache) данных в память для видеобуфера. Всё само делается. Интересно, почему? Та же пересылка типа *dst++=*src++ требует сброса кеша в память, иначе на дисплее не всё обновляется. 8 hours ago, sasamy said: Как нет - там целый Display Engine, у фронтенда (DEFE) свой выделенный DMA контроллер для 2D доступа к памяти Я это зову растеризатором. Когда просто из какого-то участка памяти идёт чтение и выхлоп в видео-цап. Речь шла о Memory-Memory DMA, который копирует по 2-м измерениям. Ещё вот L2 кеш хочется задействовать, включение его с наскоку немного притормозило выполнение программы: SetupL1L2P: @================================================================== @ Global Enable for Cortex-A8 Instruction and Data Caching @================================================================== MRC p15, 0, r0, c1, c0, 0 @ read CP15 register 1 into r0 ORR r0, r0, #(0x1 <<12) @ enable I Cache @ BIC r0, r0, #(0x1 <<12) @ Clear bit 0 ORR r0, r0, #(0x1 <<2) @ enable D Cache @ BIC r0, r0, #(0x1 << 2) @ Clear bit 0 ORR r0, r0, #0x1 @ enable MMU MCR p15, 0, r0, c1, c0, 0 @ write CP15 register 1 @================================================================== @ Enable Cortex-A8 Level2 Unified Cache @================================================================== @ MRC p15, 0, r0, c1, c0, 1 @ Read Auxiliary Control Register @ ORR r0, r0, #2 @ L2EN bit, enable L2 cache @ BIC r0, r0, #(0x1 << 1) @ L2EN bit, disable L2 cache @ @ ORR r0, r0, #(0x1 << 4) @Enables speculative accesses on AXI @ ORR r0, r0, #(0x1 << 4) @Enables speculative accesses on AXI @ ORR r0, r0, #(0x1 << 5) @Enables caching NEON data within the L1 data cache @ MCR p15, 0, r0, c1, c0, 1 @ Write Auxiliary Control Register @================================================================== @ Cortex-A8 program flow prediction @================================================================== MRC p15, 0, r0, c1, c0, 0 @ read CP15 register 1 into r0 ORR r0, r0, #(0x1 <<11) @ Enable all forms of branch prediction @ BIC r0, r0, #(0x1 << 11) @ Disable all forms of branch prediction MCR p15, 0, r0, c1, c0, 0 @ write CP15 register 1 BX lr Информация от китайцев по режимы работы и кеширование L1, L2: https://community.arm.com/developer/ip-products/processors/f/cortex-a-forum/4959/arm-cortex-a8-enabling-d-cache-aborts/26809 И что такое спекулятивный доступ к AXI ??? Это плохо или хороо для игр? И кеширование NEON - это что? Quote @ @ ORR r0, r0, #(0x1 << 4) @Enables speculative accesses on AXI @ ORR r0, r0, #(0x1 << 4) @Enables speculative accesses on AXI @ ORR r0, r0, #(0x1 << 5) @Enables caching NEON data within the L1 data cache Изменено 2 июня, 2020 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба 10 часов назад, sasamy сказал: у фронтенда (DEFE) свой выделенный DMA контроллер для 2D доступа к памяти На сколько я понял, это нужно для внутреннего использования контроллера дисплея, как уже сказал __inline__ , режима память в память там нет. 2 часа назад, __inline__ сказал: А так хочется :) Да, согласен, если уж на 2Д режим ускорителя доков нет, то хотя бы так. Если честно - для меня "темный лес" все эти сопроцессоры... Все "ускорения" пока делаю только за счет оптимизации алгоритмов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба 30 minutes ago, mantech said: это нужно для внутреннего использования контроллера дисплея, как уже сказал __inline__ , режима память в память там нет Ну если вам слов "Support direct display and write back to memory" недостаточно, прикладываю картинку из доков "которых нет" . Обратите внимание на стрелочки у контроллера DMA - они в обе стороны Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 2 июня, 2020 Опубликовано 2 июня, 2020 (изменено) · Жалоба 2 hours ago, sasamy said: Обратите внимание на стрелочки у контроллера DMA - они в обе стороны Скорее всего это обычный ДМА имелся ввиду. Иначе объясните мне разницу между "ДМА" и "видео-ДМА"? И оно YUV как я вижу. Нужно RGB. И как оно связуется с дисплеем? Дисплеем рулит TCON, composer рисует слои. Этот DEFE каким боком тут? Или они целых три движка для видео запилили? Вижу скейлер с матричными коэффициентами. В том же TCON есть простой скейлер 2x 3x без фильтра. Как задействовать другой скейлер что на картинке выше? Не могу составить представление пока о конвеере видео системы - от видеобуфера до сигналов на монитор: как эти блоки между собой связаны? И что такое коллбэк-память? В видеочипе S1D13746, который я успешно применяю, есть фильтр, который можно настраивать матрицей 3x3. + бикубический. Всё это делается записью в регистры коэффициентов и включением нужных бит. Всё понятно и прозрачно в отличие от видео-системы A13 (которых целых три?) Изменено 2 июня, 2020 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба 3 часа назад, sasamy сказал: Обратите внимание на стрелочки у контроллера DMA - они в обе стороны Я видел это, просто capture mode не более того. Даже, если его и удастся прикостылить к передаче блока, он все равно пойдет "через экран", ибо в данном МК нет 2х голового видеоблока, когда вторую голову можно было б использовать, как ДМА... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 2 июня, 2020 Опубликовано 2 июня, 2020 (изменено) · Жалоба 7 hours ago, mantech said: Даже, если его и удастся прикостылить к передаче блока, он все равно пойдет "через экран", ибо в данном МК нет 2х голового видеоблока, 26.5.2 DEFE_FRM_CTRL_REG Включаете Write back enable, выключаете выход на бэкенд - вот вам и пересылка блока. OUT_CTRL DEFE output control 0: enable DEFE output to DEBE 1: disable DEFE output to DEBE If DEFE write back function is enabled, DEFE output to DEBE isn’t recommended. Если ничего менять не надо - там есть CSC by-pass. На входе и на выходе поддерживается RGB. Захватом занимается блок CSI. Для чего вы тут про S1D13746 расскзываете одному ктулху известно. PS что-то я поспешил с выводами о 2д у контроллера DMA DEFE - похоже фронтенд только с линейным буфером работает Изменено 2 июня, 2020 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 2 июня, 2020 Опубликовано 2 июня, 2020 · Жалоба 2 часа назад, sasamy сказал: Включаете Write back enable, выключаете выход на бэкенд И что в этот момент будет на экране? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 2 июня, 2020 Опубликовано 2 июня, 2020 (изменено) · Жалоба 1 hour ago, mantech said: И что в этот момент будет на экране? На каком экране ? Бэкенд не только с фронтенда может брать данные Quote In normal mode, the dedicated layer will get the data from system DRAM direct or DEFE by setting dedicated Layer video channel selection bit in DE-layer Attribute control register. In other work modes, the layer data source also comes from internal frame buffer. TCON вообще может не использовать Display Engine а напрямую из DRAM читать данные Quote TCON0_SRC_SEL: 00: DE CH1(FIFO1 enable) 01: DE CH2(FIFO1 enable)10: DMA 565 input(FIFO1 enable) 11: Test intput(FIFO1 disable) И все же фронтенд может полнлценно с 2D блоками работать :) На входе DEFE_LINESTRD0_REG0 /1/2 Quote LINE_STRIDE In tile-based type The stride length is the distance from the start of the end line in one tile to the start of the first line in next tile(here next tile is in vertical direction)In non-tile-based type The stride length is the distance from the start of one line to the start of the next line. На выходе DEFE_WB_LINESTRD0_REG Quote LINE_STRD Ch3 write back line-stride Изменено 2 июня, 2020 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 3 июня, 2020 Опубликовано 3 июня, 2020 (изменено) · Жалоба 10 часов назад, sasamy сказал: TCON вообще может не использовать Display Engine а напрямую из DRAM читать данные Может-то он наверно много чего и откуда, только вот скажите, альфа-слой на бэкграунд он в таком режиме сможет накладывать?? ЗЫ. Хотя __inline__ сказал, что он только один слой использует, ему может и подойдет такой режим, если TCON может читать растр прямо из памяти... 10 часов назад, sasamy сказал: И все же фронтенд может полнлценно с 2D блоками работать :) Дак он это просто обязан делать, иначе как он экранную область формировать будет, особенно в режимах, когда не полный кадр отрисовывается... Изменено 3 июня, 2020 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 3 июня, 2020 Опубликовано 3 июня, 2020 (изменено) · Жалоба 3 hours ago, mantech said: Может-то он наверно много чего и откуда, только вот скажите, альфа-слой на бэкграунд он в таком режиме сможет накладывать?? Конечно - это вообще не TCON делает а бэкенд DEBE, он в свою очередь может работать независимо от фронтенда DEFE который в свою очередь можно использовать как 2D DMA в DRAM. Вообще это 3 абсолютно независимых блока которые имеют DMA и добавок между ними есть fast path для обмена данными - локальные буферы sram Quote Дак он это просто обязан делать странно что еще день назад вы хором бодро утверждали обратное :) Изменено 3 июня, 2020 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 3 июня, 2020 Опубликовано 3 июня, 2020 · Жалоба 17 минут назад, sasamy сказал: странно что еще день назад вы хором бодро утверждали обратное :) Я не утверждал. 18 минут назад, sasamy сказал: Конечно - это вообще не TCON делает а бэкенд DEBE, он в свою очередь может работать независимо от фронтенда DEFE который в свою очередь можно использовать как 2D DMA в DRAM. Звучит интересно. Осталось понять, на сколько этот ДМА быстрее того, что есть в системе, т.е. "обычного", который мягко говоря не быстр... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 3 июня, 2020 Опубликовано 3 июня, 2020 (изменено) · Жалоба 27 minutes ago, mantech said: Осталось понять, на сколько этот ДМА быстрее того, что есть в системе, т.е. "обычного", который мягко говоря не быстр. Однозначно у DE DMA быстрей чем "обычный", скорей всего и приоритет у него выше, Очевидно фронтенд DEFE задуман для вывода видео в оверлей и для кодмрования видео полученного с CSI - для этого у него CSC с поддержкой тайловых форматов с которыми работает аппаратный видекодек VPU. Так что если не используете VPU или CSI для захвата можно смело DEFE использовать как очень быстрый 2D DMA. Изменено 3 июня, 2020 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться