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

Kernel-side graphics support
  • Сделал несколько тестов Пентиум 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 грабит экран вместе с курсором.
  • Serge
    Кстати ф.36 грабит экран вместе с курсором.
    Меня давно интересовал вопрос, а если курсор аппаратный, будет ли он так копироватся?
  • От Mario79:
    Serge: я буду дорабатывать функцию
    Ghost: нет, не будет
  • Предыдущие тесты конечно не совсем точные потому что прерывания не маскировались.
    Но если чтение из видеопамяти упрётся в 10Мб/с при чтении movdq/movups то вероятно самым быстрым вариантом будет просто перерисовать часть экрана.
    Есть ещё радикальный вариант с shadowfb. Сделать для видеопамяти кеш со сквозной записью. Скорость чтения должна возрасти на пару порядков. Ещё это решает старую проблему с курсором и ускоряет все операции с курсором. В минусе большой расход памяти и некоторое снижение скорости на записи.
  • Попробуйте вот это.
    P.S. Расширение asm запрещено администратором. (((
    Attachments
    memcpy.asm.txt (7.46 KiB)
    Пример из AMD Athlon™ Processor x86 Code Optimization Guide (Part.No 22007).
    Downloaded 446 times
  • Сделал ещё два теста. Чтение из видеопамяти это зло !
    Максимум что удалось выжать на чтении из movdqa/movntdq 5.47 Мб/с. На записи получил 144 Мб/с без оптимизации.
  • Mario79 wrote:
    Serge
    Даже текущей реализации хватает для элемента управления типа MENU, даже на слабых машинах вроде P100 (разумеется не считая того что нужно отключить курсор). Когда я делал функцию, я всего лишь хотел убрать кучу вызовов от приложения к ядру, которые бы дико тормозили, если использовать 35 функцию. Для других примений разумеется нужны другие подходы, а так вполне хватает.
  • Who is online

    Users browsing this forum: No registered users and 1 guest