NVIDIA Treiber

Axel Thimm Axel.Thimm at ATrpms.net
Tue Jul 20 22:32:15 UTC 2004


On Tue, Jul 20, 2004 at 07:45:43PM +0200, Alexander Dalloz wrote:
> Am Di, den 06.07.2004 schrieb Axel Thimm um 11:12:
> 
> > Alexander, ich habe auch 8kstack kernel incl. passenden nvidia
> > Treiber:
> > 
> > http://atrpms.net/dist/fc2/kernel-testing/
> > http://atrpms.net/dist/fc2/nvidia-graphics-8kstacks/
> > 
> > Wenn Du Zeit/Lust hast, könntest Du es mal mit diesen ausprobieren?
> > Wäre interessant zu wissen, ob nvidia doch noch einige 4k/8k
> > Inkompatibilitäten übersehen hat.
> > 
> > Dank & Gruß, Axel.
> 
> Hallo miteinander!
> 
> Ich habe heute xawtv auf Version 3.93 geupdated mit deinem Paket Axel.
> Und was soll ich sagen? Kein Systemfreeze mehr!

Super! Danke für den Feedback!

> Ein detailliertes Changelog von xawtv selber kann ich nicht finden,
> sprich ob sich spezielle Änderungen bezüglich 4Kstacks im Code finden,
> weiß ich nicht.

Ein Diff 3.92->3.93 ergibt (außerhalb von contrib) nur einen Patch bei
blit.c in gl_init. Neu ist ein XSync, sowie die Fehlerabfangroutinen,
und die Reihenfolge des Abbruchs, wenn die Hardware kein GL kann
(früher wurde glXMakeCurrent vor dem 3D Check aufgerufen).

D.h. es sind (außer XSync) soweit ich das beurteilen kann, nur solche
Stellen angefaßt worden, die ein nicht-funktionierendes GL betreffen.

Erhälst Du möglicherweise ein

	WARNING: Your OpenGL setup is broken.

bzw. beim Einschalten von debug

	blit: gl: can't create context

oder

	blit: gl: DRI=No

Wenn ja, dann funktioniert es nur deshalb, weil xawtv eine bessere
Fehlerabfangmöglichkeit hat, aber trotzdem nvidia's glx auf die Nase
fällt :(

Wenn nein, scheint XSync die rettende Änderung gewesen zu sein :)

Funktioniert glxgears mit zufriedenstellenden Ergebnissen?

Zum Schluß der relevante Teil der xawtv Änderungen:

 static int gl_init(Widget widget)
 {
+    void *old_handler;
     XVisualInfo *visinfo;
     GLXContext ctx;
 
     if (debug)
        fprintf(stderr,"blit: gl: init\n");
     visinfo = glXChooseVisual(XtDisplay(widget),
                              XScreenNumberOfScreen(XtScreen(widget)),
                              gl_attrib);
     if (!visinfo) {
        if (debug)
            fprintf(stderr,"blit: gl: can't get visual (rgb,db)\n");
        return -1;
     }
     ctx = glXCreateContext(XtDisplay(widget), visinfo, NULL, True);
-    glXMakeCurrent(XtDisplay(widget),XtWindow(widget),ctx);
-    if (debug)
-       fprintf(stderr, "blit: gl: DRI=%s\n",
-               glXIsDirect(XtDisplay(widget), ctx) ? "Yes" : "No");
+    if (!ctx) {
+       if (debug)
+           fprintf(stderr,"blit: gl: can't create context\n");
+       return -1;
+    }
 
     /* there is no point in using OpenGL for image scaling if it
      * isn't hardware accelerated ... */
+    if (debug)
+       fprintf(stderr, "blit: gl: DRI=%s\n",
+               glXIsDirect(XtDisplay(widget), ctx) ? "Yes" : "No");
     if (!glXIsDirect(XtDisplay(widget), ctx))
        return -1;
+
+    old_handler = XSetErrorHandler(catch_gl_error);
+    glXMakeCurrent(XtDisplay(widget),XtWindow(widget),ctx);
+    XSync(XtDisplay(widget), False);
+    XSetErrorHandler(old_handler);
+    if (gl_error)
+       return -1;
     
     have_gl = 1;
     glGetIntegerv(GL_MAX_TEXTURE_SIZE,&max_gl);
     if (debug)
        fprintf(stderr,"blit: gl: texture max size: %d\n",max_gl);
     return 0;
 }
-- 
Axel.Thimm at ATrpms.net
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.fedoraproject.org/pipermail/de-users/attachments/20040721/c4fa69f2/attachment.bin 


More information about the de-users mailing list