Shadow buffer - моргающий курсор или так жить нельзя...

Kernel-side graphics support
  • Я предлагаю удалить VESA1.2 совсем. Необходимость эмуляции VGA 16 и VGA256 тоже большой вопрос.
  • VGA лучше оставить - вдруг придется запускать на очень старой платформе, которая не держит VESA 2 и выше. Может со временем Колибри будет работать как роутер или как файл-сервер с использованием строго оборудования. Разумеется доступ через телнет и веб-интрерфейс могут решить проблему, но первичную настройку иногда приходится делать.
  • Железке должно быть лет 17. Это "вдруг" стремится к нулю. Стоит ли держать такой код в ядре. Это ещё и к VESA1.2 относится. Там код работает в одной единственной конфигурации.
  • C Vesa 1.2 я как раз согласен, но вот VGA код не так уж и много занимает, а работает на многих железках.
  • SVN r. 2407 - код работы с Vesa 1.2 закомментирован в файлах, которые ранее его использовали. Файл Vesa 1.2 я не стал удалять - может кому пригодится еще. Русскоязычное ядро уменьшилось на 1840 байт.
  • Процесс идет. Осталось допилить код блиттера (ф. 73 - недокументированная! может автор сам допилит? :wink: ), код меняющий отображаемый курсор и возможно VGA (если не надоест ломать голову над конверсией существующего кода).

    На сегодня имею следующие тесты в "голом" Vesa2 на дохлом Roverbook U800 (до eBox руки не дошли пока протестировать).

    Стандартное ядро, синтетический тест MGB:
    Spoiler:
    1.png
    1.png (4.82 KiB)
    Viewed 9497 times
    Новое ядро с неморгающим курсором:
    Spoiler:
    2.png
    2.png (5.5 KiB)
    Viewed 9497 times
    Итого как видим три самых первых показателя сильно провалились.
    Однако на реальном приложении эффект не столь заметен. Шестеренки показывают 46 попугаев на стандартном ядре, и 30 на новом. Провал не в 2 раза, а в 1,5.
    Разумеется это не конечная стадия работы с кодом, но сомневаюсь что удастся много выжать. Слишком велик для процессора штраф кэша, при пересылке данных из области Shadow buffer к области LFB.
    Ну и на вкусненькое - десерт:
    Spoiler:
    kernel.7z (74.12 KiB)
    Downloaded 349 times
    И еще одно ограничение пока режимы выше 1024*768 не поддержаны, поскольку надо процедуру выделения памяти переделать.
  • Запустил на реальном железе и чуть не прослезился от счастья. Оно прекрасно... Марат, молодец!
    В Qemu, конечно, скорость упала заметно... но это лишь эмулятор. Реально ли сделать опциональное отключение этой фичи на голубом экране?
    Из хаоса в космос
  • Ну и ещё один момент. Сейчас стала ещё более заметна двойная перерисовка заголовка окна. А именно - вначале рисуется какая-то чёрная линия сверху, потом ниже серый фон, потом наверх накладывается картинка скина. Mario, ты можешь посмотреть в чём там дело?
    Из хаоса в космос
  • Leency wrote:Реально ли сделать опциональное отключение этой фичи на голубом экране?
    Нет, это очень сложно. К тому же это раздует код ядра лишними процедурами. И к тому же это сложно - ах, да я это уже написал один раз. Да и называть фичей нехилую переделку процедуры отрисовки - это какбэ умалять достоинство данного запила.
    Leency wrote:Сейчас стала ещё более заметна двойная перерисовка заголовка окна. А именно - вначале рисуется какая-то чёрная линия сверху, потом ниже серый фон, потом наверх накладывается картинка скина. Mario, ты можешь посмотреть в чём там дело?
    Записывай видео, комментируй и выкладывай на тытрубу в соответствующую тему. Опыт уже есть. Может это поможет увеличить количество попугаев в MGB.
  • Мои тесты. Слева shadowfb, справа обычное ядро.
    Разница на уровне погрешности измерения, то есть весь упор идёт в скорость записи.
    Интересно проявляются отличия микроархитектуры.
    Spoiler:
    MGB.png
    MGB.png (6.14 KiB)
    Viewed 9465 times
    Update.
    Вот нифига. И слева и справа shadowfb. Правильные результаты приведены ниже.
    Last edited by Serge on Wed Feb 29, 2012 4:09 am, edited 1 time in total.
  • Надо будет проверить на остальных компах. На Roverbook U800 видео встроенное в процессор AMD Geode LX800. Видео память соответственно выделяется из ОЗУ. Может из-за этого такое проседание. Впрочем на qemu приблизительно такое же проседание.

    Serge, а ты точно не перепутал и не протестировал дважды одно и то же ядро?
  • eBox-3300MX (Vortex86MX)

    Стандартное ядро:
    Spoiler:
    1.png
    1.png (4.87 KiB)
    Viewed 9455 times
    Ядро с не моргающим указателем мыши:
    Spoiler:
    2.png
    2.png (4.83 KiB)
    Viewed 9455 times
    Шестеренки выдают 32 и 24 попугаев соответственно.
  • Mario
    Точно, самые интересные результаты я ещё не выкладывал. Запускаешь тест и сразу перекрываешь тестовое окно другим. Позволяет оценить скорость записи. В результате shadowfb в таком режиме работает немного быстрее обычного ядра. И для сравнения после нескольких тестов на обычном ядре Filled Rectangle: обычный тест 740, без отрисовки 48526. Разница 65,5 раз. Это ближе всего к реальным соотношениям производительности. Одиночный пиксель не показатель - тупо упирается в максимальное число прерываний в секунду. Примерно 1000 тактов на вызов даёт 3 миллиона. Чем больше тактовая частота тем лучше будет результат.

    6Мb L3 кеша на SandeBridge рулят однозначно.
    Last edited by Serge on Wed Feb 29, 2012 3:22 am, edited 1 time in total.
  • Serge т.е. ты тестировал не всю систему целиком. Я то в своих тестах ничего не перекрываю, и сравниваю попугаи при идентичных условиях отображения. А когда окно перекрыто другим, то в случае стандартного ядра оно вообще ничего ведь не пишет в LFB, там тупо отсечка по проверке через [_WinMapAddress]
  • Who is online

    Users browsing this forum: No registered users and 2 guests