|
24-битный цвет. Есть ли другие решения?, Ну очень неудобный формат. |
|
|
|
Jan 4 2009, 13:49
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
Не уверен, что это даст выигрыш в быстродействии. Вернее, при некоторых БЛОЧНЫХ операциях - конечно даст. Но нормальные операции, типа, линию провести - потребует дополнительного чтения... А если со сглаживанием - то вообще кранты.
Пробовал поискать какие-то 24-х битные библиотеки, чтоб бросить взгляд - типа, в каком ключе работать, но не нашел.
Единственное придумал, шрифты хранить не побитово. У меня памяти - завались просто. Масса. 256 мегабайт. Вместо бит буду хранить альфаканал - байт. Тогда хоть сглаживание будет может боле-менее на автомате проходить. Хотя не уверен, пока. Не продумывал плотнее.
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Jan 4 2009, 14:09
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Но нормальные операции, типа, линию провести - потребует дополнительного чтения... А если со сглаживанием - то вообще кранты. Нуууу... На все случаи жизни такой рецепт конечно не годится. Хотя, если Вам нужно сглаживание - то без чтения не обойтись. Да и в половине случаев линия будет идти так, что точки будут лежать рядом на одной горизонтали пачками - имеет смысл обработать этот случай отдельно. Вообще для оценки способов надо посмотреть следующие вещи: Поддерживается ли вменяемо burst-режим SDRAM - это раз. От этого будет зависить реальная скорость исполнения LDMIA/STMIA. Два - а не поддерживает ли контроллер кеша в Вашем камне отложенную запись? Если поддерживает - надо смотреть, каким образом, а вдруг побайтный?
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jan 4 2009, 15:05
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Пока не лезу в SDRAM и кэш. Тогда какого хрена  Вас интересует, а не будет ли долго, если по байтику писать? Раз уж такой вопрос возник - ознакомьтесь с матчастью в полном объеме. Дело в том что, возможно, встроенный контроллер преобразует четыре побайтных записи в запись одного слова - а значит, что проигрыш при побайтном доступе будет невелик, возможно, что извращаться с пакетной обработкой не придется... А кеши в любом случае надо включить. В полном объеме (и ICache, и DCache, и Burst, и WriteBack или как их там...). Все-же они кардинально увеличивают производительность (если, конечно, код вменяемый писать).
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jan 4 2009, 16:24
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата А проблем от кэша - не так мало Это, например, каких? С отложенной записью все понятно - надо принимать специальные меры, чтобы данные долелели до железа (актуально для управления периферией). Еще можно наступить на грабли с самомодифицирующимся кодом - тогда велком в мануал на ARM9 и читаем раздел Instruction Memory Barrier. Цитата В любом случае, эффективные алгоритмы стоят гораздо больше, чем кэши и бурсты. Эффективные алгоритмы подразумевают под собой не только эффективность самого низкого уровня, но и выше. Например, в реальной жизни рисование линии под произвольными углами встречается намного реже, чем рисование рамок окошек  Следовательно, надо оптимизировать именно эти, вроде бы и крайние, случаи. А они как раз поддаются пакетной обработке (в частности, рисование горизонталей). Печать символов тоже некисло пакетизируется - для совмещения надо будет прочитать только начало и конец строки, чтобы выполнить наложение, а середину вполне пачками можно копировать из регистров, как я изложил выше. Про банальное копирование прямоугольников я вообще молчу - тут STM/LDM рулят нипадеццки. Другое дело, что код, заточенный под выжимку всех соков, имеет вид, как говорят буржуи, "hard-coded routines". Со всеми вытекающими.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jan 9 2009, 14:00
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(DpInRock @ Jan 9 2009, 14:44)  С чего вдруг кэш ускорит работу внутренней программы? Под кэш как раз и выделяется часть этой же самой памяти. А вот замедлять - будет. Без кэша потеряется псевдогарвардовость девятого ядра. Память под кэш ниоткуда не выделяется. Замедлять не будет точно. Цитата(DpInRock @ Jan 9 2009, 14:44)  А по чтению-записи во внешнюю память по данным - ускорение имеет малый вес. Либо к данным редко обращаюсь, либо это волатильные данные. Не дай БГ их кэшировать. Изучите матчасть и проведите эксперименты, если уж мне не верите. Для фреймбуфера вполне логично использовать кэш в режиме write through, скорость работы с экраном это поднимет в разы. Кэшировать имеет смысл любые данные, просто это нужно делать правильно.
|
|
|
|
|
Jan 9 2009, 14:34
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(DpInRock @ Jan 9 2009, 17:17)  Обратите внимание на стр. 18 даташита. Очень даже выделяется. И именно из internal SRAM. Вообще-то кэш и TCM - это две большие разницы. Цитата(DpInRock @ Jan 9 2009, 17:17)  По части кэша на буфер экрана - надо посмотреть. Скорость увеличится, если обращаться к одним и тем же участкам чаще, чем к другим. Ну, чтоб у кэша была возможность помочь чем-то. Скорость увеличится на запись за счет использования буфера записи.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|