Ключевые слова:freebsd, opengl, intel, driver, video, (найти похожие документы)
From: Sokolov Alexey <sokolov@truebsd.org.>
Newsgroups: email
Date: Mon, 4 Feb 2008 14:31:37 +0000 (UTC)
Subject: Сборка и настройка OpenGL для карт Intel и Nvidia под FreeBSD
Оригинал: http://truebsd.org/forum/read.php?12,770
Статья расказывающая про сборку драйвера от Intel под FreeBSD,
затрагивающая проблемы компиляции в FreeBSD 7.
Первое что необходимо сделать - получить исходные тексты драйвера.
Делаем это следующим образом:
%git-clone git://anongit.freedesktop.org/git/mesa/mesa
(если нет утилиты git-clone - ставим порт devel/git)
После этого переходим непосредственно к компиляции. Переходим в
каталог и выполняем команду make с аргументом, который сообщает
сборочным скриптам, о том что нам необходим драйвер под FreeBSD:
%cd mesa; make realclean; make freebsd
Если во время компиляции произошла ошибка (она возникает при сборке на
FreeBSD 7.0, т.к. в нём используется компилятор GCC версии 4 и
присуствует два заголовочныъ файла с именем math.h, подключается
второй, а в нём отсутствует директива M_PI):
cc -c -I../../include -O -O2 -fPIC -D_POSIX_SOURCE
-D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -DUSE_XSHM -DHZ=100
-I/usr/local/include -ffast-math -pedantic -fno-strict-aliasing
engine.c
engine.c: In function 'PistonStrokePosition':
engine.c:252: error: 'M_PI' undeclared (first use in this function)
engine.c:252: error: (Each undeclared identifier is reported only once
engine.c:252: error: for each function it appears in.)
engine.c: In function 'ComputeConnectingRodPosition':
engine.c:302: error: 'M_PI' undeclared (first use in this function)
engine.c: In function 'DrawConnector':
engine.c:406: error: 'M_PI' undeclared (first use in this function)
engine.c: In function 'DrawPositionedConnectingRod':
engine.c:527: error: 'M_PI' undeclared (first use in this function)
engine.c: In function 'SquareWithHole':
engine.c:551: error: 'M_PI' undeclared (first use in this function)
gmake: *** [engine.o] Error 1
Error code 1
Stop in /usr/home/tuser/mesa/progs.
То попробуйте применить вот этот патч (очень даже может быть что в
ближайшее время он потеряет свою актуальность, т.к. я отправил его
разработчикам):
%cat intel2freebsd70_M_PI_error.diff | patch -p1
и продолжить компиляцию:
%make
Если всё собралось благополучно, его можно установить:
%sudo make install
Ну а далее (настройка xorg.conf) всё зависит от вашего чипсета (см. описание)
Часть 2.
Расскажу (вернее продублирую статью с http://bsdportal.ru -
faq:nvidia_video) про настройку OpenGL для видеокарт Nvidia (с ATI
обстоят дела очень плохо).
Установка из портов
сначала настраиваем иксы с стандартным драйвером nv
далее:
cd /usr/ports/x11/nvidia-driver/
make install clean
нужные опции:
[ ] FREEBSD_AGP Use FreeBSD AGP GART driver
[ ] VM86_INT10CALL Use VM86 interface for video BIOS calls
[ ] ACPI Enable support for ACPI Power Management
[X] LINUX Build with support for Linux compatibility
далее пересобираем ядро предварительно закоментировав или удалив
строчку:
device agp
теперь нужно отредактировать\проверить конфиги:
проверяем /boot/loader.conf чтобы в нем было:
linux_load="YES"
nvidia_load="YES"
проверяем чтобы в /etc/rc.conf **было**:
linux_enable="YES"
в xorg.conf меняем
Driver "nv"
на
Driver "nvidia"
все.. перегружаемся, заходим в иксы и проверяем работоспособность
openGL например программой glxgears
Если хочется включить прозрачность и тени вместе с GLX настраиваем xorg.conf:
Section "Device"
# Эти два параметра работают только с nvidia драйверами!
...
Option "RenderAccel" "true"
Option "AllowGLXWithComposite" "true"
...
EndSection
...
Section "Extensions"
Option "Composite" "Enable"
Option "RENDER" "Enable"
EndSection
Убедиться что в xorg.conf отключен:
Load "dri"
Копия патча intel2freebsd70_M_PI_error.diff
diff -ru mesa.orig/progs/demos/engine.c mesa/progs/demos/engine.c
--- mesa.orig/progs/demos/engine.c 2008-01-21 14:44:56.000000000 +0000
+++ mesa/progs/demos/engine.c 2008-01-21 14:44:04.000000000 +0000
@@ -15,6 +15,10 @@
#include "readtex.h"
#include "trackball.h"
+#if !M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
#define DEG_TO_RAD(DEG) ((DEG) * M_PI / 180.0)
#define TEXTURE_FILE "../images/reflect.rgb"
diff -ru mesa.orig/progs/xdemos/corender.c mesa/progs/xdemos/corender.c
--- mesa.orig/progs/xdemos/corender.c 2008-01-21 14:44:56.000000000 +0000
+++ mesa/progs/xdemos/corender.c 2008-01-21 14:44:04.000000000 +0000
@@ -25,6 +25,10 @@
#include <unistd.h>
#include "ipc.h"
+#if !M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
static int MyID = 0; /* 0 or 1 */
static int WindowID = 0;
static GLXContext Context = 0;
фря 7.2 дрова 173.х.х. видео нвидия 5500-ФХ. Монитор ЛыЖа TFT 1721B.Трабла: когда ОпенГЛ приложение меняет разрешение (игра например) меняется частота монитора - и тот (монитор) пишет что ве его рабочего диапазона. на 1280х1024 всё норм. в конфигах иксов частоты монитора заданы.
Как решить траблу??