MenuetOS (KolibriOS) GFX kernel

Kernel-side graphics support
  • С момента последнего выпуска ATI драйвера изменялся набор интерфейсных графических функций, так что нужно изменять ядро. В любом случае, я не гарантирую, что в каком-либо из старых дистрибов или даже в Колибри набор такой, какой нужен. В любом случае, даже при добавлении этих функций в таблицу придётся изменять ядро. Так что, подожди немного, я не хочу дорабатывать драйвер в преддверии больших изменений ядра (а точнее, разработки и внедрения драйверной модели). Однако, как я обещал Андрею и Марату, некоторые элементы нового видеодрайвера будут внедрены на этих выходных; предварительный список: возможность загрузки при всех реально доступных разрешениях (но только для 24- и 32-битных режимов), изменение функционирования минимизации/максимизации/свёртывания окон, системная функция установки рабочей области экрана (в основном для @panel). Возможно, но не факт, будет добавлена кнопка максимизации/рестора размеров окна плюс соответствующая системная функция, а также внедрён новый формат скинов. Естественно, никто не исключает форс-мажорных обстоятельств, но я очень постараюсь реализовать заявленное. Тем более что обещаниями сыты все.
  • Залил сегодня gfx_kernel на SVN: svn://kolibrios.org/kernel/branches/gfx_kernel

    Проблемы на данный момент:
    1. не поддерживаются окна с произвольной формой; хочется отойти от текущих функций, и задавать регион набором прямоугольников
    2. остаются следы под курсором мыши (видимо, он невовремя прячется, или показывается); заметно при перемещении окон
    3. не рисуются произвольные линии (только вертикальные и горизонтальные)
    4. vmode, основанный на VESA, находится не в ядре, а в драйвере; должен быть внедрён в ядро, с удалением vesa20.inc и подобных, а драйвер оставить для их переопределения функциями для специфических видеокарт (например, функциями, использующими хардварные возможности видеокарт)
    5. не нажимаются кнопки, если окно имеет отрицательные координаты по X или Y (легко исправляется)
    6. курсор рисуется через putpixel, нужно через putimage, или ещё как-то, чтобы уменьшить его мерцание
    7. некоторые проблемы с (calculate/set)screen; нужно определиться, где нужен их вызов, а где нет. плюс, формировать прямоугольники для клиппинга только для заданной области (сейчас каждый раз формируются для всего экрана); calculatescreen приравнен к setscreen, что также свидетельствует о необходимости переосмысления вызовов этих функций в ядре
    8. некоторые баги в boot(code/vesa).inc - нужно перерисовывать фон под таблицей режимов, добавить индикатор скролла, рисовать столько режимов сколько есть (то есть рисовать 2, если их 2, при том, что в таблицу влазит по высоте 4), сохранять выбранный режим, изначально устанавливать курсор на доступный режим (чтобы не попадало на недоступный), добавлять 2 стандартных режима в список при его формировании (320x200x8 и 640x480x4)
    9. в образе должен быть файл arrow.cur - 32-битный курсор размера 32х32
    10. <... что-то ещё ...>
    Все желающие приглашаются для помощи в разработке и оптимизации (работы и там и там хватает). Естественно, работа должна быть согласована. Сам драйвер находится в [...]/gfx_kernel/vmode
  • Русская версия не компилируется
    bootvesa.inc
    mov [es:s_vesa.ver-0x10000], ah
    undefined symbol
    английская загружает дискету и сразу уходит в перезагрузку.
    пары cli/sti лучше заменить на безопасные pushf cli / popf иначе будут разрешаться ранее маскированные прерывания. Такая была раньше при вызове boot_log
  • Да, русская версия не ассемблируется - строки не педелеланы.
    Про английскую интереснее. Какая-нибудь дополнительная информация?
  • mike.dld

    Насколько я понял 4-ый пункт,ты хочеш сделать подгружаемый драйвер видеокарты.
    Я согласен на 100%,что драйверы должны быть подгружаемыми(даже драйверы VESA).


    P.S.

    Я так понимаю,что gfx ядро это более усовершенствованное(в плане графических возможностей) ядро Колибри/Меос графические возможности которого ,после доведения до задуманного, будут перенесены в ядро Колибри.
  • Вот не знаю. Я хочу текущий драйвер веса, который в vmode.mdr находится, перенести в ядро, а vmode.mdr использовать для изготовления специфических драйверов. Иначе, текущая реализация VESA в ядре несовместима с моим подходом, и будут проблемы.
    Кто не в курсе, при загрузке ядро загружает файл vmode.mdr, и вызывает из него функцию инициализации видеодрайвера; если таковой нет - ничего не произойдёт, и будут использоваться втроенные функции.

    //на PS: да, так и есть

    Кстати, ты не сообщил свой результат... загружается? работает?
  • mike.dld

    Теперь понял.Ты хочеш переопределить vmode.mdr для использования возможностей аппаратного ускорения видеокарт,а не для инициализации видеодрайвера.

    А вот скачать gfx ядро я,к сожалению,не могу.У меня нет программы для работы с svn.И скачать её не могу( gprs связь неустойчивая).
    Если есть возможность,то выложи пожалуйста в разделе "скачать" на сайте rolibrios.org или ещё где-нибудь.
  • andrew_programmer and all, ядро и все необходимое можно взять здесь: ссылка устарела
    Все три файла нужно поместить в образ!
    Last edited by Heavyiron on Fri Feb 23, 2007 12:32 am, edited 2 times in total.
  • Прежде чем говорить что ссылка битая, вставьте `r` после `b`

    Короче: http://heavyiron.kolibrios.org/gfx_kernel.7z
  • У меня gfx ядро нормально грузиться.Просто нужно до загрузки выбрать пункт a) ,а в нем какой-нибудь из поддерживаемых графических режимов.

    В 16 битном режиме FPS выдаваемые 7-ой функцией значительно выше.Это очень пригодилось бы для слабых компьютеров( типа Pentium90,Pentium100) .

    Вот если бы еще доделать 8 битные ренимы,то было бы совсем хорошо.Ведь иногда необходимо работать при высоком разрешении и качество графики неважно(к примеру если необходимоо строить графики функций и работать с ними).
  • andrew_programmer
    В таблице отображаются все доступные режимы, и со всеми битовыми режимами ядро умеет работать: 4 (пока что только для VGA) и 8, 15, 16, 24, 32 (для VESA).

    Serge
    Понял с помощью других людей, в чём у тебя была проблема. Наиболее вероятно, что ты не скопировал *все* нужные файлы в образ (потому что я их не перечислил). Как правильно заметил Heavyiron, файлов должно быть три: kernel.mnt (ядро), vmode.mdr (драйвер, собирается из папки ./vmode) и arrow.cur (32-битный курсор размером 32х32).
  • mike.dld
    У меня загрузилось с файлами которые выложил Heavyiron. Но система работает нестабильно. Не запускаются программы из меню. Не запускаются многие демки. Когда меню закрывается часть содержимого остается на экране и т.д
  • mike.dld

    Я незнаю,может та версия которая выложена для скачивания не поддерживает 4 и 8 бит на пиксель.У меня работают только режимы 16 и 32 битные (они помечены в таблице галочками).А вот режимы 4 и 8 бит отказываются работать - при попытке загрузить ядро выдаётся сообщение "bits ??".
    Я точно знаю,что моя видеокарта поддерживает 4-х и 8-ми битные режимы(я сам лично с ними работал).
  • Serge
    Смотри пункт 5. Из-за этого же (отрицательные координаты не везде введены) не перерисовывается фон под меню (система думает, что там и не было окна, => событие о перерисовке не посылается). Так что твои выводы по поводу "нестабильно" очень скоропалительные. "Нестабильно" - это если бы система перезагружалась или подвисала каждые 2 минуты.

    andrew_programmer
    В таблице галочками помечены только те режимы, список которых был получен через интерфейс VESA. Принудительный выбор режима, на котором не стоит галочки не имеет никакого смысла, и более того - будет невозможен в финальной версии ядра, так как номер этого режима неизвестен, и следовательно его невозможно установить.
  • Who is online

    Users browsing this forum: No registered users and 5 guests