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 функцию. Для других примений разумеется нужны другие подходы, а так вполне хватает.