repstosw 18 29 июня, 2022 Опубликовано 29 июня, 2022 · Жалоба On 6/29/2022 at 5:34 PM, GenaSPB said: вертикальные линии или прямоугольники в один пиксель g2d сейчас не заполняет. Вместо этого рисует горизонтальную линию такого же размера (на вид) и не выставляется прерывание по готовности. Горизонтальные линии нормально. Для вертикальных линий можно альфу использовать для невидимых пикселей Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 29 июня, 2022 Опубликовано 29 июня, 2022 · Жалоба У кого есть инфа про то - что за какой блок отвечает? Чтобы понять каким блокам ставить размер всего экрана а каким заполняемой области? ps: это еще к копированию не приступал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 29 июня, 2022 Опубликовано 29 июня, 2022 · Жалоба В 29.06.2022 в 10:12, repstosw сказал: Вы валите всё прямо на экранную память??? Оно ж мерцать будет, когда одни картинки поверх других рисуются циклически... Гифка не мерцает, ее размер 1\4 экрана, если выводить на полный, то заметно, почему не мерцает маленькая - как вариант очень быстрая отрисовка, глаз не успевает среагировать, меня устраивает))))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 29 июня, 2022 Опубликовано 29 июня, 2022 (изменено) · Жалоба On 6/29/2022 at 7:10 PM, GenaSPB said: У кого есть инфа про то - что за какой блок отвечает? Чтобы понять каким блокам ставить размер всего экрана а каким заполняемой области? 1) sunxi g2d模块使用文档.pdf 2) RTOS_G2D_Development_Guide.pdf Оба гуглятся за пару секунд. Там расписаны все структуры для G2D как заполнять. Особо удивили "повороты" на 45 и 135 градусов - я думал, что это диагональные которые... Китайцы думают иначе: Играюсь с цветовым ключом. Одних исходников Линукса мало. Они недоделаны, приходится сращивать самому: 1) Было: DSTOVER, сделал SRCOVER. Иначе то что отрисовано первее - сохраняется, мешая рисоваться остальному поверх нарисованного 2) С цветовым ключом намудрили. KeyMin, KeyMax - вообще не передаются в функциях в G2D. Игнорируются - NULL везде. Расширил. Цветовой ключ который не альфа, а colorkey который. И он немного странноватый: когда задаёшь его значение ровно (MinKey = MaxKey) - прозрачность не срабатывает! Пришлось так: MinKey = ColorKey -0x010101 MaxKey=ColorKey + 0x010101 В идеале сюда надо SIMD инструкции впарить - чтобы сложить/вычесть побайтно с насыщением. Тогда цветовой ключ - работает. Речь идёт о пиксельном цветовом ключе RGB. ck_para->match_rule = 0; ck_para->max_color = para->color +0x010101; ck_para->min_color = para->color -0x010101; result = g2d_bsp_bld(src, dst, G2D_BLD_SRCOVER /*G2D_BLD_DSTOVER*/ , ck_para /*NULL*/); //приоритет отрисовки и цветовой ключ! Прозрачность можно сделать и через альфа-блендинг. Что такое KeyMin, KeyMax, правила цветового ключа и условия - это можно в доке на DE2.0 почитать, правда там разбитовка регистров от DE, она не совпадает с G2D. Но суть та же. Изменено 29 июня, 2022 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 29 июня, 2022 Опубликовано 29 июня, 2022 (изменено) · Жалоба В 29.06.2022 в 10:12, repstosw сказал: Копирование из памяти в память (тесты G2D и NEON). Спасибо за инфу по скоростям, примерно так и предполагал, решил, что g2d на данный момент мне не нужен)) Что-нить из разряда "настоящего" видео пока не раскуривали, типа декодирования аппаратного mpeg4 или что-то вроде того? Изменено 29 июня, 2022 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 29 июня, 2022 Опубликовано 29 июня, 2022 · Жалоба On 6/29/2022 at 8:51 PM, mantech said: Что-нить из разряда "настоящего" видео пока не раскуривали, типа декодирования аппаратного mpeg4 или что-то вроде того? Пока нет. Хочу натравить G2D чтобы он YUV с камеры брал и отрисовывал на дисплей в RGB. Он это может (конвертировать входной формат). Потом с JPEG декодер - надо проверить, пойдёт ли он с A13. Потом может h264 видео. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 29 июня, 2022 Опубликовано 29 июня, 2022 (изменено) · Жалоба В 29.06.2022 в 13:56, repstosw сказал: Потом с JPEG декодер - надо проверить Из каких исходников декодер брали? Если не сложно, киньте ссылку... И еще так, для справки, не замеряли, сколь по времени декодирует полноэкранную картинку, в среднем? Изменено 29 июня, 2022 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба On 6/29/2022 at 9:08 PM, mantech said: Из каких исходников декодер брали? Если не сложно, киньте ссылку... И еще так, для справки, не замеряли, сколь по времени декодирует полноэкранную картинку, в среднем? Про декодер JPEG я писал и давал ссылки начиная с этого поста: Но он у меня пошёл только на A13. Замеры не делал, так как мне это было не сильно нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба В 30.06.2022 в 06:14, repstosw сказал: Но он у меня пошёл только на A13. Понял. На v3s(T113) так и не удалось запустить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ozelot 9 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба On 6/29/2022 at 2:08 PM, mantech said: И еще так, для справки, не замеряли, сколь по времени декодирует полноэкранную картинку, в среднем? https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=157083&page=22#comment-1806614 https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=157083&page=24#comment-1807637 Запустил на f1c аппаратный декодер видео mpeg1/2. Время декодирования такое же, как и для jpeg. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба В 30.06.2022 в 12:27, Ozelot сказал: Запустил на f1c аппаратный декодер Да, это я видел, но к сожалению, то что работает на f1c не идет на v3s... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба On 6/30/2022 at 4:04 PM, mantech said: Понял. На v3s(T113) так и не удалось запустить? На V3s - нет. На T113-s3 - не пробовал. Поднял SMHC0 на T113-s3 и чтение/запись на SD-карту. Код адаптировал с x-boot. Был подводный камень: в sdcard.c в функции mmc_status(...) стояло маленькое число повторов, из-за чего запись на карту завершалась неудачно на высоких скоростях: static int mmc_status(struct sdhci_t * hci, struct sdcard_t * card) { struct sdhci_cmd_t cmd = { 0 }; int retries = 1000; //100; -------------- тормозные карты не успевали давать правильный ответ: запись завершалась неудачно cmd.cmdidx = MMC_SEND_STATUS; cmd.resptype = MMC_RSP_R1; cmd.cmdarg = card->rca << 16; do { if(!sdhci_t113_transfer(hci, &cmd, NULL)) continue; if(cmd.response[0] & (1 << 8)) break; udelay(1); } while(retries-- > 0); if(retries > 0) return ((cmd.response[0] >> 9) & 0xf); return -1; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 1 июля, 2022 Опубликовано 1 июля, 2022 · Жалоба On 6/30/2022 at 10:41 PM, repstosw said: Был подводный камень: в sdcard.c в функции mmc_status(...) стояло маленькое число повторов, из-за чего запись на карту завершалась неудачно на высоких скоростях: Карта отказывается работать, если быстро читать сектора. Вываливается ошибку по таймауту: u64_t mmc_read_blocks(u8_t * buf, u64_t start, u64_t blkcnt) { struct sdhci_t *hci=&HCI; struct sdcard_t *card=&CARD; struct sdhci_cmd_t cmd = { 0 }; struct sdhci_data_t dat = { 0 }; int status; if(blkcnt > 1) cmd.cmdidx = MMC_READ_MULTIPLE_BLOCK; else cmd.cmdidx = MMC_READ_SINGLE_BLOCK; if(card->high_capacity) { cmd.cmdarg = start; } else { cmd.cmdarg = start * card->read_bl_len; } cmd.resptype = MMC_RSP_R1; dat.buf = buf; dat.flag = MMC_DATA_READ; dat.blksz = card->read_bl_len; dat.blkcnt = blkcnt; if(!sdhci_t113_transfer(hci, &cmd, &dat)) { return 0; } if(!hci->isspi) { do { status = mmc_status(hci, card); if(status < 0) { return 0; } } while((status != MMC_STATUS_TRAN) && (status != MMC_STATUS_DATA)); } if(blkcnt > 1) { cmd.cmdidx = MMC_STOP_TRANSMISSION; cmd.cmdarg = 0; cmd.resptype = MMC_RSP_R1B; if(!sdhci_t113_transfer(hci, &cmd, NULL)) { return 0; } } return blkcnt; } Здесь вываливается - в return 0: if(!hci->isspi) { do { status = mmc_status(hci, card); if(status < 0) { return 0; } } while((status != MMC_STATUS_TRAN) && (status != MMC_STATUS_DATA)); } Пробовал снижать скорость, даже на 400 кГц чтения рано или поздно завершатся с ошибкой. Причем карта намертво повисает, только reset или отключение питания. Подтяжки к питанию на всех линиях. В чём может быть дело? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 1 июля, 2022 Опубликовано 1 июля, 2022 (изменено) · Жалоба Внутири sdhci_t113_transfer что именно ожидаем? Я встречал некоторую неаккуратность в qspi драйвере (из исходников xfel). Устанавливался бит запуска обмена и дожидались появления запрошенного количества в выходном fifo. При повторном БЫСТРОМ вызове висло. Выяснилось - надо дождаться исчезновения бита запуска. Может и тут такое же упрощение? Изменено 1 июля, 2022 пользователем GenaSPB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 1 июля, 2022 Опубликовано 1 июля, 2022 · Жалоба On 7/2/2022 at 12:29 AM, GenaSPB said: Внутири sdhci_t113_transfer что именно ожидаем? Я встречал некоторую неаккуратность в qspi драйвере (из исходников xfel). Устанавливался бит запуска обмена и дожидались появления запрошенного количества в выходном fifo. При повторном БЫСТРОМ вызове висло. Выяснилось - надо дождаться исчезновения бита запуска. Может и тут такое же упрощение? bool_t sdhci_t113_transfer(struct sdhci_t * sdhci, struct sdhci_cmd_t * cmd, struct sdhci_data_t * dat) { if(!dat) return t113_transfer_command(cmd, dat); return t113_transfer_data(cmd, dat); } Физика хоста тут: https://gitee.com/xboot/xboot/blob/master/src/arch/arm32/mach-t113s3/driver/sdhci-t113.c На уровне передачи команд: https://gitee.com/xboot/xboot/blob/master/src/driver/sd/sdcard.c На их основе делаю. Есть ли там то о чём вы говорите? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться