MenuetOS (KolibriOS) GFX kernel

Kernel-side graphics support
  • У меня, Майк, кстати тоже не распознает 8 и 4 бит :-/
  • Намекаете, что я специально ограничил допустимые режимы? Проверил - так и есть :) Не знаю, почему - давно это было ;) В /boot/bootvesa.inc, строки 229-234. Поменяйте, закомментируйте, ещё что-нибудь сделайте, если хочется.
  • Выкладываю предварительный код для сведения текущей версии ядрая с GFX ядром. Пока модифицирован только загрузчик. В настоящий момент можно загрузить ядро, если выбрать цветовую схему 24 бита на цвет или 32, с учетом поддержки вашей видеокарточкой, и не сохранять параметры. Так же в некотором смысле доработан интерфейс.
    Я модифицировал детект ОЗУ для видеокарты, мне хотелось узнать правильно ли детектит код видео ОЗУ на вашей системе. И конечно пожелания и предложения пожалуйста высказывайте.
    http://www.lrz.land.ru/dowload/kernel_GFX.7z
  • Quemu и VirtualPC загрузились без проблем. В Bochs не получилось вообще, там определилось только 2Мб и только с vgaromimage: file=VGABIOS-lgpl-latest-cirrus. Другие биос вообще детектятся как EGA/CGA. На железе загрузилось, 256 Мб определились как 16, наверное это нормально.
    Есть проблемы с таблицей режимов. Иногда она портится.
  • Я тестировал на Qemu(9.1), Bochs (2.3.5), Реальная система с 256 Мб видео ОЗУ. Проблема с определением 16 Мб Озу связана с тем что при Vesa 3 объем храниться не страницах по 64 кб, а в мб(поправте меня если я не прав). Я работаю над этой проблемой.
    Другие биос вообще детектятся как EGA/CGA.
    А в этих биос есть поддержка vesa режимов?
    Serge
    Ты можешь более подробно описать в каких случаях портиться таблица режимов? Мне этот баг не знаком.
  • C Бошем я разобрался, всё заработало. На железе после загрузки таблица выглядит так

    800х600
    1024х768
    1152х864
    1280х1024
    0000х0000
    ?848х4219 в этой строке везде галочки

    Но настоящие баги начинаются если перегрузить ядро. Вместо нормального видеорежима выводится что-то нереальное. Таблица выглядит как и после загрузки пока не начнёшь выбирать режим стрелочками. Тогда она просто превращается в кашу а кнопки ведут себя не адекватно. Нажимаешь кнопку "вверх" а указатель перемещается вниз и т.п. То же самое и в эмуляторах только там все режимы сбрасываются в нули.
  • Serge
    Но настоящие баги начинаются если перегрузить ядро. Вместо нормального видеорежима выводится что-то нереальное. Таблица выглядит как и после загрузки пока не начнёшь выбирать режим стрелочками. Тогда она просто превращается в кашу а кнопки ведут себя не адекватно. Нажимаешь кнопку "вверх" а указатель перемещается вниз и т.п. То же самое и в эмуляторах только там все режимы сбрасываются в нули.
    Да я знаю об этом баге, я не все еще свел, и конечно буду фиксить ошибки. Проблема в том что алгоритм выбора режима нуждается в существнной переработке, одного переноса и синхронизации кода недостаточно, нужно полностью переработать весь алгоритм работы. Я постараюсь завтра выложить улучшенную версию, надеюсь сегодня мне удастся исправить часть ошибок которые ты описал.
    ?848х4219 в этой строке везде галочки
    У меня на видеокарте AGP ATI 1650 Pro 256Мb все режимы корректно выводятся. спасибо за информацию буду разбираться в чем дело.
  • Можно поподробнее о преимуществах GFX kernel перед обычным? Чем оно лучше?
  • В Qemu определило 4 Мб ОЗУ (при 1Гб на самой машине и доступных для Кьему 128)
    Нормально загрузились видеорежимы 800х600х24 и 1024х768х24. Остальные тоже загрузились, но не нормально.
    Сейчас запишу на диск - попытаюсь протестить на реальной машине. Потом отпишусь.

    This GFX kernel works in Qemu. But it see only 4 Mb of RAM.
    Last edited by Leency on Mon Nov 19, 2007 5:50 pm, edited 1 time in total.
    Из хаоса в космос
  • in code we trust
  • Проверил. Были доступны все 16 и 32х битные глубины цвета для разрешений 800, 1024, 1280, 1600(вау). Определило 14Мб ОЗУ, хотя реально стоит Гиг. (параметры компа у меня в профиле)
    Итак, 800х600х32, 1024х768х32, 1280х1024х32 загрузились и работали нормально.
    1600х1200х16 загрузился, но был розовым и дёрганым - комп сразу ресутнулся.
    1600х1200х32 загрузился и левая верхняя 1\4 экрана была номальной (!), правая верхняя 1\4 дергалась, 1\2 нижняя часть экрана чёрныя. Опять ребут.
    1280х1024х16 загрузился, но тоже был розовым и дёргался как при 1600х1200х16, тоже ребут.
    1024х768х16 и 800х600х16 не тестил, т.к. и так задолбался ждать около минуты перед загрузкой каждого режима.

    P.S. Я записываю образ на диск. Менует64 сразу загружает образ, а вот Колибри после вопроса "сохранить параметры?" начинает 1%.........2%..........3%...........4%..........5%..........6%......... - около минуты. Интересно почему.
    Из хаоса в космос
  • <Lrz>
    1. NVidia GeForce 8400 GS 256 Мб PCI-E
    Определяет: Vesa.3.0 (0014 Mb)
    В Vesa есть режимы глубиной 4, 8, но в новом ядре их нет, хотя когда я в последний раз запускал GFX ядро (еще без твоего участия), они отображались.
    16 битные режимы отображаются некорректно в виде разнообразных искажений, 32 битные работают нормально.
    Зависает при перезагрузке из памяти - выводится надпись NVidia и все.

    2. ATI Rage XL 8 Мб AGP 2х
    Определяет: Vesa 2.0 (0007 Mb)
    В Vesa есть режимы глубиной 4, 8, но в новом ядре их нет.
    Отображает режимы глубиной 15, 16 и 24. Режимы глубиной 15 и 16 отображаются некорректно как и в случае первой видеокарты.
    После перезагрузки из памяти таблица заполняется сплошными галочками и во всех строках режим 0514х0514.

    В обоих случаях отсутствует выбор режимов 0 и 9 согласно обычному ядру - так и было задумано?
  • to ALL
    Итак обновил gfx ядро, доступно по ссылке указанной ранее.
    Дома проверял на эмулях и реальном железе. У меня работает детект видео ОЗУ на vesa 3 режиме.
    Обратите внимание что детектится видео ОЗУ, а не озу планок памяти установленных в ПК!!!

    Итак сейчас должно определятся корректно видео ОЗУ. На Vesa 2 память храниться в 64 кб cтраницах и если после преобразования получается сажем 7,4 мб видео памяти выводиться только целое число т.е. выводиться 7. У меня на ноуте при 32 Мб видео ОЗУ выводиться только 31 Мб. Конечно можно сделать так, что бы учитывалось дробное и выводилось целое число. Т.е. при детекте 31,5 видео ОЗУ будет выведено 32 мб. Если такая фунциональность нужна я модифицирую код. Однако это не будет означать, что на вашей видеокарточке установлено именно 32 мб ОЗУ! Напишите тут если нужна такая поддержка.

    Я модифицировал только загрузчик, это означает, что ядро не может и не должно работать с битностью цвета менее 24 и разрешением более 1280х1024. при загрузке ядра и не соблюдением этих условий будет крах системы!! Для поддержки других режимов нужно модифицировать код ядра, а я пока не приступал к этой работе.
    В Vesa есть режимы глубиной 4, 8,...
    Работаю над этой проблемой, но у меня катастрофически не хватает времени на все: учеба в универе, работа, девушка... Не ждите от меня всего и сразу.
    P.S. Я записываю образ на диск. Менует64 сразу загружает образ, а вот Колибри после вопроса "сохранить параметры?" начинает 1%.........2%..........3%...........4%..........5%..........6%......... - около минуты. Интересно почему.
    Пока сохранение параметров не реализовано, по этому если подтвердить сохранить параметры, будет скорее крах системы.... Загрузка текущего ядра возможно только при не сохранении настроек
    Атауальпа
    Можно поподробнее о преимуществах GFX kernel перед обычным? Чем оно лучше?
    Итак в планах:
    1) поддержка режимов работы в соответствии со спецификацией VESA на вашей видео карте. (режимы работы, бит на цвет)
    2) Ускорение вывода графической информации в соответствии с выбранным режимом работы. возможен прирост 10 -20 %
    3) Ускорение и оптимизация выводов примитивов.
    3) возможность опускать окна программ за пределы рамки монитора как в windows.
    и конечно что написал майк
    http://blog.mikedld.com/2007/03/about-s ... ernel.html
  • <Lrz>
    Работаю над этой проблемой, но у меня катастрофически не хватает времени на все: учеба в универе, работа, девушка... Не ждите от меня всего и сразу.
    Я имел ввиду не само функционирование режимов глубиной 4 и 8, а именно лишь детектирование. В старом GFX ядре они тоже не работали по факту, но оно их детектировало. И утилита написанная mike.dld тоже детектирует эти режимы, может стоит сравнить код который в утилите и в ядре?

    P.S. Спокойней друг. Никто на тебя не давит. Это простой баг-репорт не более того. Удачи.
  • Who is online

    Users browsing this forum: No registered users and 3 guests