Board.KolibriOS.org

Official KolibriOS board
It is currently Wed May 22, 2019 8:05 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 23 posts ]  Go to page Previous 1 2
Author Message
PostPosted: Wed Nov 19, 2008 11:01 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Думаю что оправдано. Ещё думаю что не надо было делать такой универсальный блиттер, хватило бы 8, 24 и 32 bpp. И можно на порядок ускорить функцию если для верхнего окна рисовать без проверки принадлежности пикселя.


Top
   
PostPosted: Wed Nov 19, 2008 2:51 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Сделал несколько тестов Пентиум 4 2.6 ГГц
Code:
   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 грабит экран вместе с курсором.


Top
   
PostPosted: Wed Nov 19, 2008 3:00 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Mar 20, 2006 10:44 am
Posts: 557
Serge
Quote:
Кстати ф.36 грабит экран вместе с курсором.

Меня давно интересовал вопрос, а если курсор аппаратный, будет ли он так копироватся?


Top
   
PostPosted: Wed Nov 19, 2008 3:28 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
От Mario79:
Serge: я буду дорабатывать функцию
Ghost: нет, не будет


Top
   
PostPosted: Wed Nov 19, 2008 4:43 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Предыдущие тесты конечно не совсем точные потому что прерывания не маскировались.
Но если чтение из видеопамяти упрётся в 10Мб/с при чтении movdq/movups то вероятно самым быстрым вариантом будет просто перерисовать часть экрана.
Есть ещё радикальный вариант с shadowfb. Сделать для видеопамяти кеш со сквозной записью. Скорость чтения должна возрасти на пару порядков. Ещё это решает старую проблему с курсором и ускоряет все операции с курсором. В минусе большой расход памяти и некоторое снижение скорости на записи.


Top
   
PostPosted: Wed Nov 19, 2008 5:59 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Mar 20, 2006 10:44 am
Posts: 557
Попробуйте вот это.
P.S. Расширение asm запрещено администратором. (((


Attachments:
File comment: Пример из AMD Athlon™ Processor x86 Code Optimization Guide (Part.No 22007).
memcpy.asm.txt [7.46 KiB]
Downloaded 224 times
Top
   
PostPosted: Wed Nov 19, 2008 6:48 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Сделал ещё два теста. Чтение из видеопамяти это зло !
Максимум что удалось выжать на чтении из movdqa/movntdq 5.47 Мб/с. На записи получил 144 Мб/с без оптимизации.


Top
   
PostPosted: Thu Nov 20, 2008 9:20 am 
Offline
Kernel Developer
User avatar

Joined: Mon Mar 20, 2006 10:44 am
Posts: 557
Mario79 wrote:
Serge
Даже текущей реализации хватает для элемента управления типа MENU, даже на слабых машинах вроде P100 (разумеется не считая того что нужно отключить курсор). Когда я делал функцию, я всего лишь хотел убрать кучу вызовов от приложения к ядру, которые бы дико тормозили, если использовать 35 функцию. Для других примений разумеется нужны другие подходы, а так вполне хватает.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 23 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited