Page 2 of 2

Re: Новая функция: #36

Posted: Wed Nov 19, 2008 11:01 am
by Serge
Думаю что оправдано. Ещё думаю что не надо было делать такой универсальный блиттер, хватило бы 8, 24 и 32 bpp. И можно на порядок ускорить функцию если для верхнего окна рисовать без проверки принадлежности пикселя.

Re: Новая функция: #36

Posted: Wed Nov 19, 2008 2:51 pm
by Serge
Сделал несколько тестов Пентиум 4 2.6 ГГц

Code: Select all

   1024x768x32 время в тактах

 24 bpp     32 bpp     32 bpp movnti

69E412A0   6957A6EC   692ACB40
69D14E60   6955F3D8   69197DB0
69E58298   6944330C   692E3B38
69E60C10   6958D6C0   693DB21D

пропускная способность 4.4 Mb/c
Доступ к видеопямяти действительно очень медленный. На сохраниние кадра уходит 0.68 с.

Лучший вариант - если функция будет сохранять картинку в формате экрана с выравниванием длины строки на 16 или 32 байта (под будущий AVX)

Ещё интересно потестить ф.65

Кстати ф.36 грабит экран вместе с курсором.

Re: Новая функция: #36

Posted: Wed Nov 19, 2008 3:00 pm
by Ghost
Serge
Кстати ф.36 грабит экран вместе с курсором.
Меня давно интересовал вопрос, а если курсор аппаратный, будет ли он так копироватся?

Re: Новая функция: #36

Posted: Wed Nov 19, 2008 3:28 pm
by diamond
От Mario79:
Serge: я буду дорабатывать функцию
Ghost: нет, не будет

Re: Новая функция: #36

Posted: Wed Nov 19, 2008 4:43 pm
by Serge
Предыдущие тесты конечно не совсем точные потому что прерывания не маскировались.
Но если чтение из видеопамяти упрётся в 10Мб/с при чтении movdq/movups то вероятно самым быстрым вариантом будет просто перерисовать часть экрана.
Есть ещё радикальный вариант с shadowfb. Сделать для видеопамяти кеш со сквозной записью. Скорость чтения должна возрасти на пару порядков. Ещё это решает старую проблему с курсором и ускоряет все операции с курсором. В минусе большой расход памяти и некоторое снижение скорости на записи.

Re: Новая функция: #36

Posted: Wed Nov 19, 2008 5:59 pm
by Ghost
Попробуйте вот это.
P.S. Расширение asm запрещено администратором. (((

Re: Новая функция: #36

Posted: Wed Nov 19, 2008 6:48 pm
by Serge
Сделал ещё два теста. Чтение из видеопамяти это зло !
Максимум что удалось выжать на чтении из movdqa/movntdq 5.47 Мб/с. На записи получил 144 Мб/с без оптимизации.

Re: Новая функция: #36

Posted: Thu Nov 20, 2008 9:20 am
by Ghost
Mario79 wrote:
Serge
Даже текущей реализации хватает для элемента управления типа MENU, даже на слабых машинах вроде P100 (разумеется не считая того что нужно отключить курсор). Когда я делал функцию, я всего лишь хотел убрать кучу вызовов от приложения к ядру, которые бы дико тормозили, если использовать 35 функцию. Для других примений разумеется нужны другие подходы, а так вполне хватает.