Оптимизация ядерной графики

Kernel-side graphics support

POLL Ваше мнение об оптимизации GUI ядра

Total votes: 68
Оставить как было
24%
16
Убрать только CGA и VGA, оставить VESA1.2
7%
5
Оставить только VESA2-режимы (без изменения)
10%
7
Разделить 24 и 32bpp графику в условно-компилируемые блоки
26%
18
Оставить в ядре единственный 32bpp-режим
32%
22

  • Serge
    Дык это же не от системы зависит, а от устройства?
    Как читать MMIO в винде - я к стыду своему так и не въехал в WDM, а напрямую нельзя.
    В линуксе тоже нельзя напрямую, для этого надо вешать самодельный драйвер kernel unit, который из Ring0 сможет вызвать ioremap и отобразить адрес на юзерспейс.

    Проще всего у нас (даже неинтересно рассказывать) - достаточно компильнуть ядро, поставив bdf-адрес видеокарты в переменную mmio_pci_addr (33-я строчка в /bus/pci/pci32.inc).
    После этого можно будет прочитать видеопамять с помощью mcall 62,12 как в pcidev (кусок после Try_MMIO: сейчас он сканирует все BARы, но его легко можно переделать под конкретный BAR фреймбуфера).
    Поменяй код в дампе - возьми блок пошире и засеки время прочтения.

    Но сдается мне что ты все-таки что-то другое хотел спросить, ?
    Про DMA/burst-режимы чтения видеобуфера я ничего сказать не могу. Реализовать режим захвата шины схемотехнически очень легко. Тут разработчики железа отрываются кто как хочет: у каждого устройства - своя регистровая модель DMA, стандарта нет. Но ты это тоже лучше меня знаешь. Тогда о чем вопрос?
  • Нет, я копирование экрана штатными средствами GDI.
  • A-a.
    Ну тут у нас ничего кроме тормознутых fn 35 и 36 нет.
    А что, кому-то нужен быстрый getbitmap?

    А на какой номер новые примитивы (для начала - эллипс и полигон, потом может и сплайны / безье кто добавит) лучше повесить?

    Мне видятся два варианта:
    1) sysfn 74 (73-й номер уже окончательно забит?)
    2) использовать древний номер 19
  • почему в голосовании нет варианта "заменить графический на текстовый режим"?)
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Gluk

    потому что зачем.
  • Почему нет варианта вырезать всю графику из ядра полностью?
    Выделить в библиотеки и драйверы в смысле
  • Gluk wrote:почему в голосовании нет варианта "заменить графический на текстовый режим"?)
    Если перефразировать CleverMouse: "У нас уже есть одна операционная система, выглядящая как DOS, - это DOS" :lol:
  • yogev_ezra, то есть Колибри отличается от остальных ОС только своим интерфейсом?
    Если портировать гр. инт. Колибри под линукс, такой линукс станет Колибри?
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • И понесся флуд и оффтоп и возрыдали сирые форума сего...
  • Mario, в моем сообщении трижды упоминается Колибри, и дважды графика (см. заголовок темы), для двух строчек это достаточно много
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Твой первый пост отклоняется от темы в провоцирующее русло "Давайте отрежем Сусанину ногу...", а тема насчет оптимизации GUI, а не замены его на что-то. Колибри исторически сложилась (в наследии от Menuet) как ОС с GUI. Вопрос об отделении GUI от ядра уже обсуждался в других темах форума.

    Я думаю не имеет смысла опять все в одну кучу сваливать. В конечном счете если бы кто-то действительно хотел сделать Колибри с текстовым режимом вместо GUI, то он бы это сделал или нет? :?:
  • art_zh wrote:А на какой номер новые примитивы
    не только примитивы, но и саму GUIшку "вынес" бы в виде отдельного апи, например, типа int 0x50
    (вот в биосе int 0x10 существует целевым назначением и это хорошо ведь).
    Зачем все на 40 все лепить?
    Куда их экономить то, вектора эти, не вижу прока.
    А вот тематическо-функциональное разделение мне кажется уместным, особенно в свете новых технологий, редакций, принципиально нового движка и т.д...
    Дабы не было крика про поддержку "старого" GUI, вещи касательно 40вых дел можно ведь и не трогать, оставив на "пока", вполне возможно атрофируются сами со временем..., как проигравшая технология GUI.
  • VaStaNi, быстрые системные вызовы sysenter и syscall имеют только одну точку входа.
    Кроме того, вы, похоже, не прочли или не осознали пост, на который отвечаете, - в посте речь шла о создании нескольких новых примитивов, а отнюдь не о переносе или замене существующих.
    Сделаем мир лучше!
  • VaStaNi
    Столь радикальные изменения подразумевают смену соглашения о порядке передачи параметров в ядро ?
    Если нет - тогда зачем менять шило на мыло? int40 - это пусть забавный, но все-таки не самый идиотский вариант.

    Если да - тогда надо глубоко продумать альтернативный механизм, иначе можно что-то еще смешнее накостылять.
    Ради эллипса конечно не стоит огород городить, а вот для парсера очередей GUI-запросов - вполне.

    CleverMouse
    fastcall и syscall оказались малоэффективной заменой для int40, их можно безболезненно убрать из макроопределения mcall. А потом - и из ядра. Полгода ругани - и всё забудется...
    Для syscall заметное (до трех раз!) ускорение входа в Ring0 достигается только если не переключать стек задачи, и не использовать ecx для передачи параметров. А еще лучше - передавать все параметры в стеке.

    Но это, в сущности, и определяет некий новый API-механизм, к которому можно будет приклеить и соответствующий fastcall, и int50.
  • Who is online

    Users browsing this forum: No registered users and 3 guests