LINUX.ORG.RU

Иксы на старой встроенной графике Intel

 , ,


2

5

Всем привет! Разгребал барахло, и обнаружил у себя Compaq Deskpro EN, на Pentium 3. Что-то ёкнуло, решил попробовать его завести-оживить, поставил plop на хард, загрузился с флешки в генту, и понеслась. Собрал ядро, поднял сеть, засетапил всю систему - всё ок.

Добрался до иксов - и вот тут какие-то непонятки. Вкратце, в системе стоит:

00:02.0 VGA compatible controller: Intel Corporation 82815 Chipset Graphics Controller (CGC) (rev 04)

встроенное в материнку видео. И как я понял из гугла - это какое-то одно из первых видео, и непонятно, поддерживается ли оно вообще сейчас? Ну и как я понял это нечто называется в драйверах и в ядре i810. Выбрал в конфиге ядра всю встройку от интела, в VIDEO_CARDS добавил «intel» - но заводиться не хочет. Вот что говорят иксы при запуске:

deskpro_en ~ # X

X.Org X Server 1.21.1.3
X Protocol Version 11, Revision 0
Current Operating System: Linux deskpro_en 5.15.32-gentoo-r1 #7 Tue May 17 10:24:56 MSK 2022 i686
Kernel command line: BOOT_IMAGE=Gentoo ro root=803
 
Current version of pixman: 0.40.0
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Tue May 17 13:13:30 2022
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
xf86EnableIO: failed to enable I/O ports 0000-03ff (Function not implemented)
modprobe: FATAL: Module fbcon not found in directory /lib/modules/5.15.32-gentoo-r1
intel: waited 2020 ms for i915.ko driver to load
(EE) 
(EE) Backtrace:
(EE) 0: X (xorg_backtrace+0x59) [0x568d29]
(EE) 1: X (0x412000+0x15b1ce) [0x56d1ce]
(EE) 2: linux-gate.so.1 (__kernel_rt_sigreturn+0x0) [0xb7f99560]
(EE) 3: /usr/lib/libpciaccess.so.0 (pci_io_read8+0x24) [0xb7e4f1d4]
(EE) 4: /usr/lib/xorg/modules/libint10.so (0xb7101000+0x790d) [0xb710890d]
(EE) 5: /usr/lib/xorg/modules/libint10.so (xf86ExtendedInitInt10+0x23a) [0xb710af6a]
(EE) 6: /usr/lib/xorg/modules/libint10.so (VBEExtendedInit+0x1a1) [0xb71048a1]
(EE) 7: /usr/lib/xorg/modules/libint10.so (VBEInit+0x2c) [0xb7104c0c]
(EE) 8: /usr/lib/xorg/modules/drivers/intel_drv.so (0xb73ad000+0xf7f4) [0xb73bc7f4]
(EE) 9: X (InitOutput+0xa9f) [0x58e4ef]
(EE) 10: X (0x412000+0x7325a) [0x48525a]
(EE) 11: X (0x412000+0x30b6e) [0x442b6e]
(EE) 12: /lib/libc.so.6 (0xb78b5000+0x213be) [0xb78d63be]
(EE) 13: /lib/libc.so.6 (__libc_start_main+0x94) [0xb78d6494]
(EE) 14: X (_start+0x27) [0x442ba7]
(EE) 
(EE) Segmentation fault at address 0xc
(EE) 
Fatal server error:
(EE) Caught signal 11 (Segmentation fault). Server aborting
(EE) 
(EE) 
Please consult the The X.Org Foundation support 
         at http://wiki.x.org
 for help. 
(EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(EE) 
(EE) Server terminated with error (1). Closing log file.
Aborted

(Тут они как-будто ждут загрузки модуля i915.ko, но он у меня вкомпилен в ядро)

Вот make.conf:

# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
COMMON_FLAGS="-O2 -march=pentium3 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"

# NOTE: This stage was built with the bindist Use flag enabled
PORTDIR="/var/db/repos/gentoo"
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs"

# This sets the language of build output to English.
# Please keep this setting intact when reporting bugs.
LC_MESSAGES=C

MAKEOPTS="-j5 -l0"
FEATURES="distcc"

VIDEO_CARDS="intel i810"
CPU_FLAGS_X86="mmx sse"

USE="sqlite -ipv6 -firmware X elogind -systemd"

Ядро версии 5.15.32-gentoo-r1, из стейбла как я понимаю(кстати вся система после загрузки вместе с dhcp кушает всего 8мб оперативной памяти)

Вот конфиг ядра: http://paste.org.ru/?ulosra

Буду рад если кто-то поможет, заранее спасибо.

PS может имеет смысл убрать "-firmware" в make.conf? Хотя хз, поможет ли. Или может нужен fb? Я его вроде не собирал

Ответ на: комментарий от gremlin_the_red

Боюсь под Linux’ом она такой производительности никогда не выдавала. А под M$ Windows наверное вполне потянет старые игрушки выпущеные года так до 1999.

ex-kiev
()

Держу в курсе, вдруг кому интересно :) Иксы завелись, терминалы рисует, всё ок(кроме максимального разрешения):

   1024x768      60.00*

Но не думаю что стоит ждать чего-то большего. Хотя возможно я что-то не то сделал в xorg.conf. Ещё поковыряюсь.

Теперь отчаянно борюсь с проблемами раста и sse2 :) Лет 5 назад когда собирал генты под третий пентиум не было такого засилья. Везде захардкожен sse2, и если из раста его как-то получилось выкинуть и собрать, то вот qt вообще ни в какую не хочет. Никакими флагами компилятора/CPU_FLAGS это тоже не решается. Видимо надо где-то искать сторонние патчи/ебилды/etc. Хочу попробовать запустить на всём этом какой-нибудь LXQT :)

proveryam
() автор топика
Ответ на: комментарий от proveryam

Вообще конечно этот дескпро уныленький такой по сравнению с какими-нибудь полноразмерными ATX-платами на 370 сокете с AGP. У меня помню была материнка гигабайт, туалатин, и агпшная нвидия с legacy-драйвером. Всё красиво рисовалось, было разрешение экрана большое, было 3д, можно было гонять в какую-нибудь openarena. i810 именно что называется «затычка» :)

proveryam
() автор топика
Ответ на: комментарий от IIIypuk

Так на GM45 отлично всё работает.
Или тебе именно свежий OpenGL нужен?

Тогда смотри в сторону llvmpipe: LIBGL_ALWAYS_SOFTWARE=1 export GALLIUM_DRIVER=llvmpipe softwarename

devl547 ★★★★★
()
Последнее исправление: devl547 (всего исправлений: 1)
Ответ на: комментарий от mittorn

Ага. В железе. Собственно, не случайно же только в 2022м году дропнули драйвер i915 с поддержкой 845G, а его (845G-го) ближайший предок 815G был дропнут ещё 11 лет назад. Настолько всё там грустно с железом.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от steemandlinux

Тут просто по разному граница мажорности проходит. DX10 FL10.0 → OGL 2.1, DX10 FL10.1 → OGL 3. И, да, GM45 — DX10 FL10.0.

gremlin_the_red ★★★★★
()
Последнее исправление: gremlin_the_red (всего исправлений: 1)
Ответ на: комментарий от proveryam

Держу в курсе, вдруг кому интересно :) Иксы завелись, терминалы рисует, всё ок(кроме максимального разрешения):

   1024x768      60.00*

Но не думаю что стоит ждать чего-то большего. Хотя возможно я что-то не то сделал в xorg.conf. Ещё поковыряюсь.

Думаю что данный видеоадаптер в 2D способен на гораздо большее чем 1024x768. Как минимум 1280x1024 он должен поддерживать в 2D. А это уже 19" монитор. И получаем возможность использовать этот системник сейчас.

Intel в документации про работу с памятью этого видеоадаптера пишет в конце приведенной цитаты(если нужно то перевод есть ниже):

If the system does not contain display cache or a GPA is not installed, the Z-Buffer and GDI data are allocated to system memory. In this configuration, DVMT will reduce the amount of graphics memory allocated from system memory to ensure the best usability and performance of the operating system and graphics subsystem. Figures 1 and 2 show that when display cache or a GPA is available, this “local memory” is used for the Z-buffer and GDI data. When in a configuration without display cache or a GPA, this “local memory” is moved into system memory. Also, when there is no display cache and a GPA is not installed, for example in a 32 MB system, the total graphics memory is reduced to ensure usability of the operating system. This is done by reducing the frame buffer size to 2.5 MB, as noted in figure 2 below. In this configuration, 24-bit color is not supported above 1024 x 768 screen resolution.

Если скормить гуглотранслейту выделенное жирным шрифтом то он выдаст:

Кроме того, при отсутствии кеша дисплея и не установлен< GPA>, например, в системе 32 МБ, общая графическая память уменьшена, чтобы обеспечить удобство использования Операционная система. Это делается путем уменьшения размера буфера кадра до 2,5 МБ, как показано на рисунке 2 ниже. В В этой конфигурации 24-битный цвет не поддерживается при разрешении экрана выше 1024 x 768.

Ограничение на 1024x768 есть только при крайне малом размере RAM в системе и отсутствии «Display cache», и то оно касается поддержки 24bit color а не самого разрешения, в вашей системе и памяти достаточно и «display cache» в размере 4mb скорее всего присутствует в виде двух чипов памяти распаянных на материнской плате.

Учитывая что у данного видеоадаптера заявлен RAMDAC 230 MHz(если Wikipedia не врет) то он должен выдавать гораздо больше чем XGA(1024x768).

ex-kiev
()

Оказывается Wikipedia соответствует Intel’ловским спекам:

The GMCH supports a wide range of resolutions, color depths, and refresh rates via a programmable dot clock that has a maximum frequency of 230 MHz.

Этого вполне достаточно для 1280x1024.

Вот таблица из даташита на чипсет i815:

ResolutionFrequency in Hz
8-bit Indexed16-bit24-bit
1024x76860, 70,72,75,8560, 70,72,75,8560, 70,72,75,85
1152x86460,70,72,75,8560,70,72,75,8560,70,72,75,85
1280x72060,75,8560,75,8560,75,85
1280x96060,75,8560,75,8560,75,85
1280x102460,70,72,75,8560,70,72,75,8560,70,75,85
1600x90060,75,8560,75,85
1600x120060,70,72,75

i815 вполне поддерживает в 24-bit цвете разрешение 1280x1024 при 85Hz не говоря о 60Hz. Может дело в мониторе, такие(1440x900) мониторы появились наверное лет через пять после выхода этого чипсета.

Интересно, если рассчитать и прописать Modeline для этого монитора это не поможет? Вот только потянет ли данный адаптер это разрешение при 24-bit цвете?

Прикинем Pixel Dot Clock:

1,05*1024*1,3*1280*60*10^-6=107,347968 MHz
1,05*900*1,3*1440*60*10^-6=106,1424 MHz

В теории должен потянуть.

ex-kiev
()
Ответ на: комментарий от ex-kiev

Что-то после пары ребутов видеодрайвер начал шизить. Запустил иксы с дефолтным конфигом который получил через X -configure - мне выдало разрешение 640x480. Максимальное. В Xorg.log:

[    36.405] (--) intel(0): Integrated Graphics Chipset: Intel(R) i815
[    36.405] (--) intel(0): Linear framebuffer at 0x44000000
[    36.405] (--) intel(0): IO registers at addr 0x40700000
[    36.405] (II) intel(0): Kernel reported 78336 total, 0 used
[    36.405] (II) intel(0): I810CheckAvailableMemory: 313344k available
[    36.405] (==) intel(0): Will alloc AGP framebuffer: 24576 kByte
[    36.405] (==) intel(0): Using gamma correction (1.0, 1.0, 1.0)
[    36.405] (II) intel(0): Monitor0: Using hsync range of 31.00-80.00 kHz
[    36.405] (II) intel(0): Monitor0: Using vrefresh range of 56.00-75.00 Hz
[    36.405] (II) intel(0): Monitor0: Using maximum pixel clock of 145.00 MHz
[    36.406] (II) intel(0): Estimated virtual size for aspect ratio 1.3333 is 640x480
[    36.406] (II) intel(0): Clock range:   9.50 to 163.00 MHz
[    36.406] (II) intel(0): Not using default mode "640x350" (vrefresh out of range)
[    36.406] (II) intel(0): Not using default mode "320x175" (bad mode clock/interlace/doublescan)
[    36.406] (II) intel(0): Not using default mode "640x400" (vrefresh out of range)
[    36.406] (II) intel(0): Not using default mode "320x200" (bad mode clock/interlace/doublescan)
[    36.406] (II) intel(0): Not using default mode "720x400" (width too large for virtual size)
[    36.406] (II) intel(0): Not using default mode "360x200" (bad mode clock/interlace/doublescan)
[    36.406] (II) intel(0): Not using default mode "320x240" (bad mode clock/interlace/doublescan)
[    36.406] (II) intel(0): Not using default mode "320x240" (bad mode clock/interlace/doublescan)
[    36.406] (II) intel(0): Not using default mode "320x240" (bad mode clock/interlace/doublescan)
[    36.406] (II) intel(0): Not using default mode "640x480" (vrefresh out of range)
[    36.406] (II) intel(0): Not using default mode "320x240" (bad mode clock/interlace/doublescan)
[    36.406] (II) intel(0): Not using default mode "800x600" (width too large for virtual size)
[    36.406] (II) intel(0): Not using default mode "400x300" (bad mode clock/interlace/doublescan)
[    36.406] (II) intel(0): Not using default mode "800x600" (width too large for virtual size)
[    36.406] (II) intel(0): Not using default mode "400x300" (bad mode clock/interlace/doublescan)
[    36.406] (II) intel(0): Not using default mode "800x600" (width too large for virtual size)
[    36.406] (II) intel(0): Not using default mode "400x300" (bad mode clock/interlace/doublescan)
[    36.406] (II) intel(0): Not using default mode "800x600" (width too large for virtual size)
[    36.406] (II) intel(0): Not using default mode "400x300" (bad mode clock/interlace/doublescan)
[    36.406] (II) intel(0): Not using default mode "800x600" (width too large for virtual size)
[    36.406] (II) intel(0): Not using default mode "400x300" (bad mode clock/interlace/doublescan)
[    36.407] (II) intel(0): Not using default mode "1024x768i" (width too large for virtual size)

Не особо понимаю что ему надо и что ему не нравится :) через xrandr тоже не может выставить хотя бы 1024x768. Неужто дело в мониторе?

proveryam
() автор топика