ubuntuusers.de

glut und ATI Propietary Driver

Status: Gelöst | Ubuntu-Version: Ubuntu 7.04 (Feisty Fawn)
Antworten |

seorb

Avatar von seorb

Anmeldungsdatum:
24. April 2007

Beiträge: Zähle...

Wohnort: Waltenhofen

Hallo zusammen!

Dies ist mein erster Post, also vielleicht wäre ein wenig Nachsicht nicht schlecht, wenn meine fachliche Beschreibung alles andere als fachlich ist;-)

Folgendes Szenario:
Ich sitze hier an einem Notebook mit einer ATI Mobility Radeon 9700 und habe aus Gründen der 3D Beschleunigung (im Opensource-Treiber leider für den RV350-Chip der GraKa nicht implementiert) den propietären ATI-Treiber geladen. Die beiden Treiber sind - sofern ich das mit meinen 5 Monaten Linux-Erfahrung beurteilen kann - korrekt und vollständig installiert, dh. mit DRI, OpenGL, Video, Dualhead und alle dem.
In dieser Umgebung muss ich mehrere kleinere OpenGL-Animationen mit dem Framework glut programmieren. Das Programmieren an und für sich ist kein Problem, es läuft auch alles sehr schön (doch eben sehr langsam), sofern ich den Opensource-Treiber verwende.
Sobald aber der originale ATI-Treiber geladen ist, tritt folgendes Phänomen auf: Der Programmcode lässt sich nach wie vor kompilieren, und auch ausführen, doch dort, wo eigentlich die OpenGL-Ausgabe im Fenster sein sollte, wird nichts gezeichnet. Der Bildschirm wird an dieser Stelle nicht mehr aufgefrischt und im Rahmen des von glut erzeugten Fensters bleibt das, was hinter ihm liegt sichtbar. Das Programm an und für sich läuft aber fehlerfrei, wie ich z.B. an Konsolenausgaben feststellen kann. Nur die Anzeige geht nicht.
Zum Entwickeln verwende ich die Quellen von freeglut aus den Repositories. Fürs kompilieren ist - soweit ich weiß (und mit dem Opensource-Treiber gehts ja zumindest) - lediglich der Linker-Parameter -lglut anzugeben.

Weiß jemand, woran es liegen kann, dass ich mit dem binären ATI-Treiber keine OpenGL-Ausgabe unter Verwendung von freeglut bekomme?

Ich habe zwar keine echte Ahnung, jedoch möchte ich noch anführen, dass auch der Opensource-Treiber in einer bestimmten Situation diesen Darstellungsfehler hat: Wenn ich ihn mit Xinerama-Erweiterung verwende, so bekomme ich auf meinem primären Bildschirm nach wie vor eine korrekte Ausgabe. Auf dem zweiten Bildschirm jedoch nicht. Dort tritt - von den Symptomen her gesehen - genau derselbe Fehler auf wie mit dem propietären ATI-Treiber generell. Diese Erfahrung lässt mich zumindest vermuten, dass das Problem irgendwie behebbar sein müsste. Vielleicht irgendwelche anderen glut-Bibiliotheken, oder doch etwa Einstellungen an den Treibern? Es liegt ja wirklich im Bereich des Möglichen, dass ich mit meinem noch nicht alzu fundierten Wissen über Linux einfach nur an der falschen Schraube gedreht habe.

Ich danke schon mal für jede Antwort.

Beste Grüße, Stefan

seorb

(Themenstarter)
Avatar von seorb

Anmeldungsdatum:
24. April 2007

Beiträge: 3

Wohnort: Waltenhofen

Habe mittlerweile das Problem gefunden: Offenbar unterstützt der propietäre ATI-Treiber kein Single Buffering. Sobald die glut-Anwendung nämlich mit Double Buffering arbeitet, funktioniert alles prächtig ☺

Im Einzelnen heißt das:
Die Initialisierung von glut muss geändert werden von z.B.

glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);


nach

glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

Außerdem muss die display-Callback-Funktion am Ende noch um

glutSwapBuffers();  


ergänzt werden.

Beste Grüße, Adiós!

seorb

(Themenstarter)
Avatar von seorb

Anmeldungsdatum:
24. April 2007

Beiträge: 3

Wohnort: Waltenhofen

Habe mittlerweile das Problem gefunden: Offenbar unterstützt der propietäre ATI-Treiber kein Single Buffering. Sobald die glut-Anwendung nämlich mit Double Buffering arbeitet, funktioniert alles prächtig ☺

Im Einzelnen heißt das:
Die Initialisierung von glut muss geändert werden von z.B.

glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);


nach

glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

Außerdem muss die display-Callback-Funktion am Ende noch um

glutSwapBuffers();  


ergänzt werden.

Beste Grüße, Adiós!

Antworten |