LINUX.ORG.RU
ФорумTalks

К владельцам NVIDIA


0

0

Ув. пользователи Linux и владельцы видеоадаптеров NVIDIA GeForce 6-7 (возможно 8) серии,
у кого из вас были проблемы с беспричинными зависаниями системы с 
включенным compiz или GL приложением? Раньше грешили на некорректную
работу драйверов с SMP системами. Но иногда зависания происходят и на
одном ядре. Есть мнение что виновником является offscreen rendering 
или/и GLXFB. 
Предлагаю простенький тест. Собрать  и запустить следующую программу:

//ofscreen-gl.c:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <errno.h>

#include <GL/gl.h>
#include <GL/glx.h>

int main(void)
{
    const char *display_name = ":0";
    const int single_buffer_attribs[] = { GLX_DRAWABLE_TYPE, GLX_PBUFFER_BIT, None };
    GLXFBConfig *fbconfigs;
    int fbconfigs_len;
    Display *display;
    GLXPbuffer pbuffer;
    GLXContext context;

    fprintf(stderr, "XOpenDisplay\n");
    if (!(display = XOpenDisplay(display_name)))
    {
	fprintf(stderr, "Cannot open display %s\n", display_name);
	return 1;
    }
    fprintf(stderr, "glXChooseFBConfig\n");
    if (!(fbconfigs = glXChooseFBConfig(display, DefaultScreen(display),
		    single_buffer_attribs, &fbconfigs_len)))
    {
	fprintf(stderr, "Cannot choose GLX offscreen rendering "
		"configuration on display %s\n", display_name);
	return 1;
    }
    fprintf(stderr, "glXCreatePbuffer\n");
    if (!(pbuffer = glXCreatePbuffer(display, fbconfigs[0], NULL)))
    {
	fprintf(stderr, "Cannot create PBuffer for offscreen rendering\n");
	return 1;
    }
    fprintf(stderr, "glXCreateNewContext\n");
    if (!(context = glXCreateNewContext(display, fbconfigs[0], GLX_RGBA_TYPE, NULL, True)))
    {
	fprintf(stderr, "Cannot create GL context for offscreen rendering\n");
	return 1;
    }
    fprintf(stderr, "glXMakeContextCurrent\n");
    if (!glXMakeContextCurrent(display, pbuffer, pbuffer, context))
    {
    	fprintf(stderr, "Cannot make GL context current\n");
	return 1;
    }

    /* ... */

    fprintf(stderr, "glXDestroyContext\n");
    glXDestroyContext(display, context);
    fprintf(stderr, "glXDestroyPbuffer\n");
    glXDestroyPbuffer(display, pbuffer);
    fprintf(stderr, "XCloseDisplay\n");
    XCloseDisplay(display);

    return 0;
}
//-------

Собирается так:
gcc -W -Wall -o offscreen-gl offscreen-gl.c -lX11 -lGL

Затем запускаем в цикле (run.sh):
#!/bin/bash
while true; do
./offscreen-gl
done


Если не зависли после минуты работы, жмем CTRL+C и смотрим 
dmesg | grep -i nvrm в поисках сообщений типа:
NVRM: Xid (0006:00): 13, 0003 beef3097 00004497 0000021c 00000000 00000002
NVRM: Xid (0006:00): 30, L1 -> L0
Если нету, поздравляю!, ваша карта работает нормально.

Всем же кто завис или/и нашел сообщение типа NVRM Xid , милости прошу 
http://www.nvnews.net/vbulletin/forumdisplay.php?f=14 .  Тут можно 
оставить пару лесных сообщений для разработчиком NVIDIA и приложить 
свой nvidia-bug-report.log , который генерируется 
nvidia-bug-report.sh скриптом.

Спасибо за внимание!

PS: Есть подозрение что глюк может произрастать из bios видеокарты...

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

> откуда вещества? В 2008 году иметь от силы опенгл 1.3 на открытых дровах это маразм.

А зачем компизу больше? о_О Тем более, ты наивно полагаешь, что разработчики серьёзного опенгл-софта для инженеров и прочих сочувствующих сразу кинулись переходить с OpenGl 1.2 (!) на 2.0?

Gharik
()

Кароче поменял я 7300 на 6600 и доволен очень )) На новых дровах правда ошибки тоже сыплятся и иксы иногда виснут при работе программы, но зато на 9639 все отлично))) Единственная вменяемая версия драйверов!

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

>А зачем компизу больше? о_О Тем более, ты наивно полагаешь, что разработчики серьёзного опенгл-софта для инженеров и прочих сочувствующих сразу кинулись переходить с OpenGl 1.2 (!) на 2.0?

в Sauerbraten хочется погамать иногда, ага :)

lester_dev ★★★★★
()

compiz использую из git'a

ASUS GF 8600GT OC 512mb

позле порядка 5ти минут работы:

dmesg |grep -i nvrm NVRM: loading NVIDIA UNIX x86 Kernel Module 169.07 Thu Dec 13 18:42:56 PST 2007

вот так.... Но зависоны бывают =( Часто при переходе из Х в консоль и обратно, попросту виснет

irq
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.