Reviews / articles about OS/2 |
Operating systems: ArcaOS, eComStation, IBM OS/2 Warp |
|
|
DATE: 2010-11-16 14:30:31 AUTHOR: Valery Gaynullin
Валерий Гайнуллин разработал несколько драйверов для eComStation: WarpOverlay!, Panorama R200 и Panorama VESA. Сегодня мы решили задать разработчику несколько "горячих" вопросов. В-1: Как получилось, что ты занялся видеодрайверами? Встал на грабли с отсутствием полнофункционального драйвера для своей видеокарты. Хотелось смотреть кино, а в SNAP-е тогда еще не было оверлея. В-2: Что происходит с PC сегодня? Куда всё развивается? Производительность современных компьютеров превысила необходимый уровень. Даже компьютер 4-летней давности вполне справляется с 99% пользовательских задач. Отсюда нежелание пользователей покупать новое железо (зачем? и так все работает прекрасно) и соответственно стремление производителей осваивать новые ниши. Нетбуки предоставили обычным небогатым пользователям мобильность, ранее доступную только весьма состоятельным господам (сравните ASUS EeePC за $300 и SONY VAIO TX/TZ за $2000). Да, SONY круче по всем параметрам, например имеет привод DVD. Но с нынешней ценой на флеш-карты DVD быстро перестает быть необходимостью. SONY имеет более быстрый процессор - но часто ли он нужен в такой маленькой игрушке? Низкая цена нетбуков дает возможность приобретать его вторым-третьим компьютером. Можно купить нетбук ребенку и не сильно переживать, если ребенок его разобьет/сломает/потеряет. Можно таскать его с собой куда угодно (на пляж например) и не сильно переживать за сохранность. В-3: Когда SSD-накопители заменят механические жесткие диски? Никогда. В-4: А хороший вопрос: мониторы бывают по 30" и выше. Пробовал ли ты сидеть за большими? Какой макс.размер пригоден для работы? не знаю. Мне важно разрешение, а не размер - зрение еще хорошее ;) Большие мониторы обычно имеют весьма посредственное разрешение. В-5: Какие подсистемы имеет смысл реализовать для ОС? Загрузка драйверов в режиме Plug and Play. Полная замена звуковой и видео подсистем. В-6: В какую сторону развивать API операционной системы? Загрузка драйверов на ходу. Устранение из подсистемы DASD всей 16-битности. И как следствие - полный отказ от HPFS. В-7: Какие драйверы могут быть созданы? Не знаю. Зависит от того, на что есть платежеспособный спрос. Сейчас сделать (портировать с Линукса) видеодрайвера для свежих Intel, ATI и NVidia - вполне реально. Но трудоемко. Многие WiFi карты можно нативно поддержать. Всякие там 3G наверно будут иметь смысл. В отношении звука - нормальная поддержка HDA (если ее еще нет) плюс значительное перетряхивание MMPM. В-8: Что нужно изменить в операционной системе, чтобы упростить создание видеодрайверов? Bus mastering подразумевает:
Возникает вопрос, как совместить предыдущие два пункта? В Windows задача решена так: видеодрайвер состоит из двух частей. Минипорт (ring0 драйвер, с расширением sys) и графический драйвер (dll). Разделение разумное и правильное. Но у винды есть нормальный PnP, позволяющий для любой видеокарты загрузить правильный минипорт и правильную DLL. В полуосе мы можем загружать только правильную DLL, а ring0 драйвер у нас жестко прописывается в config.sys. То есть я либо вынужден делать универсальный минипорт, который знает все видюхи (что нереально), либо тащить все в ring3 (что чревато трапами), либо забить на всякие фичи (что не всегда возможно, например на интеле), либо забить на PnP (что люди избалованные снапом не поймут) В-9: Можно ли сделать wrapper Windows -> eComStation драйвера? Строение виндового драйвера принципиально отличается от строения полуосного. Виндовый драйвер сидит в r0 весь.
Требуется уточнение. Ответы на вопросы В-8 и В-9 выглядят противоречащими друг другу. Но только выглядят. В NT (2000, XP) схема такая: есть минипорт (файл с расширением sys), который с точки зрения системы есть драйвер физического устройства. Он занят обработкой прерываний видеокарты, организует bus mastering, распределяет видеопамять между подсистемами (GDI, DirectX, OpenGL), выставляет видеорежимы и управляет курсором. И есть native NT DLL, которая загружена опять-таки в ring0 сервером графической подсистемы (win32k.sys). То есть задача DLL - преобразовать GDI примитивы в последовательность аппаратных команд видеочипа и эту последовательность команд передать минипорту. Задача минипорта - "скормить" эти команды чипу, выполнив при необходимости всякие дополнительные действия по синхронизации между разными процессами и подсистемами. До NT4 графическая подсистема и DLL работали как обычный процесс в ring3, начиная с NT4 - как специальный процесс в ring0. В-10: Можно ли портировать драйверы из Linux? Сейчас реально сделать нормальные драйвера для интелов и радеонов. Но делать их в той архитектуре, что осталась от IBM, не очень осмысленно. Уже даже линуксоиды поняли, что негоже из ring3 лазить в видюху. Соответственно надо изрядно модифицировать кучу компонент (те же pmdd.sys и прочее безобразие, чтобы наконец перестать дергать DLL из прерываний). В общем надо многое продумать и еще больше - переписать. Это долго, трудно и хлопотно. В-11: Можно ли сделать оверлей для ATI ATOM? Нелегко, ибо его тама нетути. В-12: Всем нужна 3D, в каком объеме ее имеет смысл реализовать? А в каком объеме ее будут использовать? Вообще ключевую сложность в реализации HW OpenGL в OS/2 можно описать как проблему "курица и яйцо". Нет драйверов - нет приложений. Нет приложений - никому не нужны драйвера. Развитие драйверов OpenGL в Линуксе имело два источника - студии компьютерной анимации, переползающие с закрытых юниксов (Irix, Solaris, etc) и компания ID Software со своими 3D играми. Как известно одним из первых 3D акселерированных драйверов в линуксе был драйвер Matrox G400, в значительной мере написанный лично Джоном Кармаком. В-13: Можно-ли выбрать одного производителя видеокарт и сделать для него поддержку - пусть не полную, но более быструю чем Panorama? Intel или ATI? Можно и интел и ATI. И Нвидию наверно тоже можно. Но это фуллтайм на достаточно длительный срок. И куча железок для тестирования. В-14: Какие учебники/справочники посоветуешь для тех, кто хочет начать писать драйверы и утилиты для eComStation? DDK, архивы группы os2ddprog, hobbes. Нормальной документации, а тем более книг просто нет.
Дополнительная информация:
Комментарии:
|
|
|||||||||||||||||
(C) OS2.GURU 2001-2021