Цитата(gosha @ Mar 23 2009, 12:32)

linux.
Xorg.
драйвер siliconmotion.so
Видеочип lynx3dm+.
Имеется исходные тексты xorg видеодрайвера для i86 архитектуры.
Имеется linux fbdev драйвер того же чипа.
смотрите на
ftp://ftp.siliconmotion.com.twЦитата(gosha @ Mar 23 2009, 12:32)

Процессор в машине не intel & big endian.
Xorg при использовании linux fbdev драйвера работает ok.
Xorg при использовании xorg драйвера, xorg работает, но портит цвета (отсутсвует big <->little endian преобразование).
В 16 bpp это может и не лечится для siliconmotion, в 501 например 16 bpp имеет вместо RGB перевернутый порядок с непоследовательным порядком зеленых бит, на bigendian машине, т. е. и byte swap не поможет.
Цитата(gosha @ Mar 23 2009, 12:32)

Исходные текты драйвера мало понятны вследствии отсутсвия знания, что должна делать та или иная ф-я.
Требуется скорректировать исх.тексты xorg драйвера.
Подск пож литературу, позволяющую понять, что должно происходить, например, в ф-ии "CPUToScreenColorExpandFill", "Mono8x8PatternFillRect" и пр.
Это в спецификации directx, opengl? Ткните пож. носом в учебник.
Пропадаю.
Какая конечная цель, нужен драйвер?
В целом эти функции - трансляция от Х сервера к апаратуре, т. е. что собственно и есть драйвер.
Прямого описания Вы нигде не найдете. максимум полезного может быть только в руководстве по написанию видео драйвера под Х, я такого не встречал.
Вам придется все изучит по Х и делать реинженеринг драйвера, разбираться с описанием siliconmotion.
Первое - требует вагон времени, но много косвеной пользы. Второе, учитывая лаконичность (мягко говоря) док от siliconmotion ....
Самое ценое что увидел в siliconmotion Х драйвере - результат общения программистов драйвера (в свежих версиях) с разработчиками железа из siliconmotion.
Где по тексту, в коментариях, где по коду, но полезная информация есть, например, в чипах есть баги и фактические ограничения по специфицированым функциям которые нигде не документированы, но в какой-то мере учтены в драйвере.
Siliconmotion support не обеспечивает. И можно ожидать что чип имеет приличное количество багов не регистрированых, особенно если требуются функции выходящие за пределы "generic fb driver".
Цитата(gosha @ Mar 23 2009, 12:32)

Т.е. мало понятны какие ф-ии 2D ускорения драйвер должен предоставлять xorg-серверу и что в этих ф-ях должен делать.
Пропадаю.
Как правило, те какие может обеспечить железо (или осилили разработчики драйвера). Не зная подробно сам Х драйвер, рискну заметить что чаще так.
Не обязательно все. Часто досточно основных - рисование линиии, прямоугольника (отдельно filled), иногда треугольника, главное - варианты bitblit.
И в ф-ии "CPUToScreenColorExpandFill", "Mono8x8PatternFillRect" (например), или выше/ниже по вызову, и видно как это обеспечивается, soft or hard ускорением.
Т. е. в общем, драйвер не " должен предоставлять" а могут быть реализованы в конкретном драйвере.
Не гарантирую 100% корректность, плохо знаком с Х.
Цитата
Т.е. мало понятны какие ф-ии 2D ускорения драйвер должен предоставлять xorg-серверу и что в этих ф-ях должен делать.
С упрошением - рисование линии в 2D.
Записать в регистры чипа короординаты X1 Y1, записать в регистры чипа короординаты X2 Y2,
записать в стек 2D команд чипа саму команду, инициировать ее выполнение (если это надо).
Варианты для гор./вертик., как правило это отдельные команды.
В драйвере анализируются X1 Y1 X2 Y2 (относительное положение) и выполняется запись в регистры чипа как указано выше.
Ну если чип не имеет такой 2D команды - драйвер рисует линию в лоб, заполняя видео память пихелами.
Т. е. самому X серверу не обязательно знать что делал драйвер - 2D или программно (не прнимая во внимание shared).