PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : glCapsViewer - OpenGl Caps + Online Datenbank


SaschaW
2011-08-09, 12:20:07
Worum gehts?
Wer selbst OpenGL-Anwendungen entwickelt kennt das Problem evtl. : Man nutzt bestimmte Extensions oder Texturgrößen und ist sich dann vor der Veröffentlichung nicht sicher welche Hardware diese unterstützt, oder ein Nutzer der eigenen Software hat Probleme und man möchte wissen wo es hängt (genau so ging es mir kürzlich mit Usern deren Grafikkarte zwar Shader konnte aber keine Framebuffer Objekte). Für DirectX gibts da dann z.b. DXDiag mit dem der User einen Report generieren kann in den man dann reinschaut.

Für OpenGL gibts dies in der Form nicht, und vor einigen Jahren gab es online eine Datenbank mit den Fähigkeiten verschiedener OpenGL-Grafikkarten. Diese ist jedoch schon relativ lange offline, und die Tools wie GPU Caps oder glView liefern nicht wirklich die Informationen die man als Entwickler gerne im Überblick präsentiert haben möchte.

Um diesen Misstand auch im Bezug auf meine eigenen Projekte und Erfahrungen (ich entwickle schon lange mit OpenGL, und oft wäre es halt schön gewesen direkt irgendwo einsehen zu können welche Karte mit welchem Treiber was kann) zu beenden hab ich mich dazu entschlossen ein eher an Entwickler gerichtetes Tool zu entwickeln dass alle aktuellen OpenGL-Informationen (Versionen, Limits und v.a. Extensions) ausliest, nach XML exportieren und v.a. auch in einer Online"datenbank" ablegen kann (momentan ists noch keine echte Datenbank, die XML-Reports werden via SQL geparst).

Und daraus entstand dann mein glCapsViewer, der eben genau dies macht. Beim Start liest er alle relevanten (entspr. OpenGL 4.1 Specs) OpenGL-Daten aus und man kann diese Speichern oder (besser) hochladen und dann in einer Onlinedatenbank betrachten.

Allerdings ist eine solche Datenbank natürlich nur brauchbar wenn es auch genug Daten gibt. Bisher hab ich das Tool um es auf Funktion zu testen nur im kleinen Kreis vorgestellt (Entwicklerforen), aber seit mit version 0.4 auch eine Linuxversion dazugekommen ist wäre es natürlich toll wenn die Datenbank etwas anwächst.

Und da ist ein Ort wie das 3DCenter meiner Meinung nach genau richtig, denn hier gibt es sicher jede Menge verschiedene Grafikkarten deren Reports in der noch kleinen Datenbank fehlen.

Von daher hoffe ich es ist nicht unhöflich wenn ich hier mein eigenes Tool verlinke und um Mitarbeit bitte.


Screens
(Thumbnails)
http://www.saschawillems.de/images/tglcapsviewer01_screenshot.jpg (http://www.saschawillems.de/images/glcapsviewer01_screenshot.jpg) http://www.saschawillems.de/images/tglcapsviewer_linux.jpg (http://www.saschawillems.de/images/glcapsviewer_linux.jpg) http://www.saschawillems.de/images/tglcapsviewer_osx.jpg (http://www.saschawillems.de/images/glcapsviewer_osx.jpg)


Downloads
Windows 32 (.zip, KEIN INSTALLER, ~920 KByte) (http://www.saschawillems.de/download/glcapsviewer-win32.zip)
Linux i386 (.tar.gz, ~2,6 MByte) (http://www.saschawillems.de/download/glcapsviewer-i386-linux.tar.gz)
Mac OS X (.dmg, ~2,8 MByte) (http://www.saschawillems.de/download/glcapsviewer-macosx.dmg)

Die Onlinedatenbank mit allen hochgeladenen Reports, Vergleichsmöglichkeiten und mehr findet ihr hier : http://openglcaps.delphigl.de/


Noch ein paar Hinweise
- In der aktuellen Version prüft das Tool nicht ob eine OpenGL-Implementation vorhanden ist. Sollte es beim Start also eine Zugriffsverletzung geben dann mit großer Wahrscheinlichkeit wegen der fehlenden OpenGL-Treiber.

- Das Tool übermittelt auch keine persönlichen Daten sondern lädt nur den XML-Report hoch der von einem PHP-Skript n die Datenbank geschrieben wird, wer auch keinen Namen angeben will kann die Eingabebox für den Submitternamen einfach leer lassen.

- Die Linux-Version ist mein erstes Linuxprogramm, unter Ubuntu und Fedora läuft es, über Erfahrungsberichte anderer Linux-Distros würde ich mich freuen.

- In Ermangelung von Apple Hardware wird die Kompilierung des Appleports von einer anderen Person übernommen. Es kann also sein dass es dort Probleme gibt bzw. ich diesen nicht immer sofort aktualisieren kann.

- Das Tool ist natürlich noch in Entwicklung. Sprich es werden sich Dinge ändern. Ich plane z.B. die Onlinedatenbank ans Programm anzubinden, so dass man direkt im Programm vergleichen und andere Reports ansehen kann. Gleiches gilt für die Datenbank, die noch erweitert wird.


Schonmal im Voraus Dank für alle die ihre Reports hochladen, Feedback ist natürlich auch gerne gesehen.

Stebs
2011-08-09, 14:23:03
Schonmal im Voraus Dank für alle die ihre Reports hochladen,Done...
Evtl. sollte man in der Datenbank die Einteilung nach Hersteller überarbeiten, denn so landen sämtliche Open-Source Source Treiber unter "Other" (da Tungsten Graphics). Sortieren lassen (oder auch filtern) der Tabelle bei Mausklick auf Hersteller/OS wäre auch sehr praktisch.

Finde es überraschend dass dir bei GLview etwas fehlt, glCapsViewer hat dafür aber einen Linux-Client, was natürlich sehr von Vorteil ist.

SaschaW
2011-08-09, 14:35:22
GLView hat afaik keine Online-Datenbank und v.a. zeigt die Datenbank innerhalb der Anwendung nur Extensions an, also wichtige Infos wie max. Texturgröße usw. werden da nicht angezeigt, mit ein Grund warum ich dafür ein eigenes Tool erstellt hab.

Und an Open-Source Treiber hab ich ehrlich gesagt garnicht gedacht, arbeite eher selten mit Linux. Aber die Anzeige von welchem Hersteller wie viele Reports (bzw. auch passendes Icon) sind wird im PHP Skript gemacht, das anzupassen ist ja kein Problem. Problematisch ist eher die Suche nach solchen Herstellern. Bisher suche ich logischerweise den GL_VENDOR-String nach Hersteller ab, bei z.b. deinem OS-Treiber ist der Hersteller (Intel) aber im GL_RENDERER-String, weshalb dieser unter "Other" landet. Werd das Skript dann so anpassen dass es auch GL_RENDERER-String nach Herstellerkennungen sucht. Danke für den Hinweis!

Ronny145
2011-08-09, 15:37:28
Intel HD3000-8.15.10.2462 hochgeladen. Die Grafik wäre OpenGL 3.1 konform, oder sehe ich das falsch? Bringen dir verschiedene Treiber etwas? Mit älteren Treiber zeigt es nur OpenGL 3.0 an.

SaschaW
2011-08-09, 16:37:19
Es spricht nix gegen das Hochladen verschiedener Treiberversionen. So kann man ja auch sehen was sich ändert bzw. sehen dass bei GPU XY aber Treiber Z ein Feature vorhanden ist und nachschaun ob der User mit Problemen auch diesen Treiber installiert hat.

Und ja, laut Versionsstring ist der Treiber GL3.1 konform. Allerdings dürfen Hersteller da auch tricksen und Funktionen via Software implementieren. Sprich wenn GL3.1 bei dir zur Verfügung steht kanns trotzdem sein dass es unbrauchbar ist weil bestimmte Funktionen in Software emuliert werden müssern.

Captain Future
2011-08-09, 20:30:38
GLInfo2 kann das doch auch alles?

iltis2k
2011-08-09, 21:53:38
Hab mal was von meiner 560Ti hochgeladen.

Larucio
2011-08-10, 01:51:51
Habe mal die Daten meiner beiden Notebooks (HD 3470 und HD 5470) hochgeladen.

Affinator
2011-08-10, 14:17:30
ATI 5870 und Intel Grafik aus dem Corei3 530(wie hieß der Chip nochmal?) auf dem Weg...

Edit: Auf der Intel Grafik (als "Generic Microsoft..." erkannt) krieg ich nur einen App-Crash während der Erkennung.

SaschaW
2011-08-10, 14:46:49
GLInfo2 kann das doch auch alles?
GLInfo2 gibt es aber nicht mehr. Das war von Tom Nyudens der damals die Datenbank auf delphi3d online hatte, aber die ist schon lange Geschichte. War mit einer der Gründe für ein eigenes Tool.

Edit: Auf der Intel Grafik (als "Generic Microsoft..." erkannt) krieg ich nur einen App-Crash während der Erkennung.
Ja, Generic bedeutet keine OpenGL-ICD, deshalb knallts da. Werd ich versuchen in der nächsten Version zu erkennen.

Ansonsten Dank an alle die hier ihre Reports hochgeladen haben!

ScottManDeath
2011-08-10, 18:08:34
Ich nutze den OpenGL Extension Viewer:

http://www.realtech-vr.com/glview/download.html

Ronny145
2011-08-10, 18:26:33
Mit OpenGL 4.2 Preview Treiber und HD6850.

GLCapsViewer 0.4= 204 Extensions
OpenGL Extension Viewer= 227 Extensions
Geeks3D GPU Caps Viewer 1.13= 205 Extensions
GLInfo2= 205 Extensions

Woher kommen die Differenzen und welches Tool liegt richtig?

Captain Future
2011-08-10, 19:31:52
GLInfo2 gibt es aber nicht mehr. Das war von Tom Nyudens der damals die Datenbank auf delphi3d online hatte, aber die ist schon lange Geschichte. War mit einer der Gründe für ein eigenes Tool.
Ach so, na dann. Ich hatte das Tool noch auf meinem Tools-Stick rumliegen und es ewig nicht geupdated.

ScottManDeath
2011-08-10, 20:41:45
Mit OpenGL 4.2 Preview Treiber und HD6850.

GLCapsViewer 0.4= 204 Extensions
OpenGL Extension Viewer= 227 Extensions
Geeks3D GPU Caps Viewer 1.13= 205 Extensions
GLInfo2= 205 Extensions

Woher kommen die Differenzen und welches Tool liegt richtig?

Zum einen WGL/GLX, welche moeglicherweise nicht von jedem Tool ausgelesen werden.

Zum Anderen kann es Unterschiede geben zwischen Core und Compatibility Profile und der OpenGL Version.

Zum Beispiel gibts im WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB nicht die GL_ARB_compatibility Extension.

Dann kann man noch einen Context mit WGL_ARB_create_context_robustness, WGL_EXT_create_context_es2_profile oder GL_ARB_debug_context (via WGL_CONTEXT_DEBUG_BIT_ARB von WGL_ARB_create_context) erstellen, was sich auch in der Extensionsliste niederschlagen kann.

SaschaW
2011-08-10, 20:54:14
Ich nutze den OpenGL Extension Viewer:
http://www.realtech-vr.com/glview/download.html

Habs ja im Eingangspost erwähnt : glView speichert in der Onlinedatenbank nur Extensions, keine Limits und so. (Shadervariablen, Texturengröße, etc.). Das sind Infos die Entwickler durchaus brauchen, deshalb mein eigenes Tool.

Mit OpenGL 4.2 Preview Treiber und HD6850...
Woher kommen die Differenzen und welches Tool liegt richtig?

ScottManDeath hats ja bereit erklärt. Mein Tool erstellt quasi "blind" einen Kontext, also immer den Kontext mit der höchst verfügbaren Version und da bekommt man dann einen Kontext der kompatibel zu den alten ist, dadurch kann man auch alte States/Limits auslesen. Daher wohl wie ScottManDeath sagte die Unterschiede in der Zahl der Extensions.

ScottManDeath
2011-08-10, 22:49:49
Device::Renderer = GeForce GTX 480/PCI/SSE2
Device::Vendor = NVIDIA Corporation
Device::Version = 4.2.0
Device::ShadingLanguageVersion = 4.20 NVIDIA via Cg compiler

Mein Code : 289 = 264 GL extensions + 25 WGL extensions, WGL_EXT_swap_control doppelt gezaehlt da in GL und WGL Extensionstring enthalten
: 290 = 265 GL extensions + 25 WGL extensions wenn ich einen Debug Context erstelle.
glCapsViewer : 289 = 264 GL extensions + 25 WGL extensions http://delphigl.de/glcapsviewer/geforce_gtx_480_pci_sse2_420_win.xml
OpenGL Extensionsviewer: 288 compatible context (WGL_EXT_swap_control nur einmal als WGL gezaehlt)
OpenGL Extensionsviewer: 287 forward context


Ein paar Verbesserungsvorschlaege zur Praesentation:
Filtern und/oder sortieren/gruppieren nach Hersteller, Model, Treiberversion, Forward Context, Compatible Context

Inverse Suche, z.b. man klickt auf GL_MAX_texture_size und hat eine Liste der in allen Reports vorhandenen Werte:

1024
2048
4096

wenn man auf die klickt, bekommt man dann wiederum eine Liste aller Reports die dem entsprechen.

Das Gleiche waere schoen fuer jedes Attribut, z.b. wenn man auf GL_EXT_direct_state_access klickt, bekommt man eine Liste aller Reports die diese Extension haben.

Vergleichen waere cool wenn man z.b. mehrere Entries mit einer Checkbox markieren kann, und die dann alle nebeneinander angezeigt bekomme, mit den Unterschieden farblich markiert (z.b. rot fuer die Karte mit der kleinsten Texturgroesse, Gruen fuer die groesste, schwarz fuer die anderen Werte)

Als Key fuer jeden Report wuerde ich zusatzlich noch das OS und forward/compatible nutzen und die Treiberversion.

Im Program selbst ware es schoen wenn die Limits in einer Zeile dargestellt werden (z.b. mit einem TreeView widget mit 3 spalten), so dass man nicht so viel klicken muss:

Textures (8)
+-- GL_MAX_TEXTURE_SIZE | 16384 | Max. 1D/2D texture size
+-- GL_MAX_3D_TEXTURE_SIZE | 2048 | Max. 3D texture size

So oder so, das Tool ist cool :)

SaschaW
2011-08-10, 22:59:07
Danke für die vielen Vorschläge. Einige davon stehen schon fest auf meiner Liste, aber besonders alles was online angeht muss ich mich erstmal hinarbeiten, in Sachen PHP bin ich eher auf Anfängerniveau, zumal es ja momentan auch noch keine richtige Datenbank gibt, ich aber schon testweise mal ne SQL DB mit Reports befüllt hab (nicht öffentlicht). Da bin ich aber momentan noch am Überlegen wie genau ich das Umsetzen, denn spätestens bei mehreren hunderten Reports sollte es sehr unperformant sein wenn ich immer XML-Files parse.

Aber die ganzen Vergleichssachen kommen definitiv, und auch in der Anwendung selber.

Zu den max. Werten hatte ich folgende Vorstellung :
Man gibt den Wert an (z.B. GL_MAX_TEXTURE_SIZE) und dann bekommt man eine Liste mit den passenden Werten der jeweiligen Implementation und kann dann direkt sehen welche Karte welchen Wert hat, aber das mit dem markieren (rot/grün) hatt ich noch nicht im Sinn, werd ich dann aber wohl direkt mitimplementieren.

Und Treiberversion zum Report ist halt so ne Sache. OpenGL-Treiberversion ist ja drinne, die bekommt man auch plattformunabhängig sehr einfach. Will ich aber die richtige Treiberversion wirds schwerer. Eigentlich wollt ich das unter Windows z.b. via WMI machen, musste WMI aber rauswerfen weils damit auf einigen OSen Probleme gab. Und wie ich z.B. unter Linux an die Treiberversion komme ist mir auch (noch) nicht geläufig. Wäre also denkbar dass es irgendwann nen Eintrag dafür gibt, momentan haben aber noch andere Sachen Priorität, v.a der Vergleichskram.

Danke fürs Feedback, sowas liest man als Entwickler immer wieder gerne :)

ESAD
2011-08-11, 09:46:07
Danke für die vielen Vorschläge. Einige davon stehen schon fest auf meiner Liste, aber besonders alles was online angeht muss ich mich erstmal hinarbeiten, in Sachen PHP bin ich eher auf Anfängerniveau, zumal es ja momentan auch noch keine richtige Datenbank gibt, ich aber schon testweise mal ne SQL DB mit Reports befüllt hab (nicht öffentlicht). Da bin ich aber momentan noch am Überlegen wie genau ich das Umsetzen, denn spätestens bei mehreren hunderten Reports sollte es sehr unperformant sein wenn ich immer XML-Files parse.


es gibt auch für realtionale datanbanken zahlreiche erweiterungen um xml abzuspeicherung und zu durchsuchen. auch für das speichern der Werte gibt es zahlreiche verschiedene konzepte sodass man sich nicht auf die von der DB beherrschten ansätze begnügen muss. das funktioniert durchaus flott genug. Stichwort XQuery, XPath oder je nach gewählten ansatz auch normales sql, beim durchsuchen.

falls an dem thema interesse besteht. es gibt auch nicht realtionale datenbanken die auf xml spezialisiert sind.

Coda
2011-08-11, 11:34:34
Ich würde für sowas XML vermeiden wie der Teufel das Weihwasser.

Eine relationale Datenbank ist da schon das richtige. Im Zweifelsfall kann man ja auch ohne DB-Server SQLite verwenden.

SaschaW
2011-08-11, 11:56:25
Wie gesagt ist die aktuelle "Datenbank" aus XML-Dateien nur eine Übergangslösung. Eine echte Datenbank war von Anfang an geplant, aber da muss ich mich erstmal richtig reinarbeiten. Allerdings gibts schon nen Prototypen der die Daten statt via XML direkt in eine SQL-Datenbank hochlädt, XML-Export wirds dann nur noch lokal geben.

SaschaW
2011-08-15, 17:59:46
So, nach einem Crashkurs in SQL gibt es nun eine echte Datenbank die auf SQL basiert statt der einfachen Auflistung der Reprots. Zusammen damit gibts auch eine neue Version des Tools (0.5) die eure Reports in die SQL-Datenbank einspeisen kann. Die alten Reports habe ich in die Datenbank migriert, wer also seinen Report bereits hochgeladen hat muss dies nicht erneut tun.

Viel interessanter als das Tools selbst (an dem sich letztendlich nur intern was geändert hat) ist aber die Datenbank. Dadurch dass es jetzt eine echte DB ist kann ich natürlich viel mehr machen (mal abgesehen davon dass alles viel schneller läuft).

Wichtigste Neuerung dürfte der Reportvergleich sein. Neben der Auflistung der Reports findet ihr jetzt Checkboxen, bis zu 8 (werden mehr gewählt wird nach dem 8. gestoppt) Reports können gewählt werden die dann auf einer Seite verglichen werden, inkl. einer schönen Matrix für die Extensions. Ausserdem gibts jetzt auch ne Statistikseite die anzeigt welche Extensions wie oft unterstützt werden.

Der Link der Datenbank (http://delphigl.de/glcapsviewer/listreports.php) hat sich nicht verändert.

P.S. : Dies ist mein erstes Projekt dass SQL und PHP nutzt, von daher wirkt die Online-Datenbank evtl. noch ein wenig holprig. Aber die ist ja noch Work-in-Progress und ich plane weitere Funktionalität.

SaschaW
2011-09-05, 15:47:59
Es gibt jetzt auch eine Mac OS X - Version

Dank eines Users aus unserem Delphi/OpenGL-Forum gibt es jetzt auch eine Version für Apples Mac OSX. Leider besitze ich selbst keinen Mac und die Entwicklerdateien gibts wohl nur mit dem Kauf eines passenden Gerätes/OS (Apple halt...), dementsprechend konnte ich selbst nur eine Version via Compilerdirektiven vorbereiten die dann damadmax aus unserem Forum noch angepasst (u.a. OS-Nemensstring, etc.), für mich kompiliert und in ein .dmg gepackt hat.

Den direkten Download findet ihr hier (http://www.saschawillems.de/download/glcapsviewer-macosx.dmg) (Mac OS X, ~2,8 MByte, .dmg)

zeckensack
2011-09-08, 21:09:42
Auf Debian/Squeeze 64bit läuft das erstmal nicht, weil's ein 32bit-Programm ist und libs fehlen. Wahrscheinlich auch nicht auf anderen 64bit-Distros. Die Fehlermeldung sieht so aus:
./glCapsViewer: error while loading shared libraries: libgdk_pixbuf-2.0.so.0: cannot open shared object file: No such file or directory

Man muss das Paket ia32-libs-gtk nachinstallieren, dann geht's. Könnte man evtl in Hilfe/FAQ mit aufnehmen.

Ubuntu 11.04/32bit läuft.

Coda
2011-09-09, 00:07:35
Du lebst?

SaschaW
2011-09-09, 09:14:39
Ja, für Linux 64 braucht man wohl entsprechende 32-Bit Libraries. Deshalb hab ich auch bereits ein 64-Bit Windows inkl. Lazarus und FPC aufgesetzt damit ich auch eine 64-Bit Version bereitstellen kann. Mal schaun wann ich dazu komme, aber danke für den Hinweis.

SaschaW
2012-02-25, 14:41:10
Kleines Update :
Es gibt zwar keine neue Version vom glCapsViewer, aber die Datenbank hat einige neue Features, darunter :

Erweiterungsstatistik (http://delphigl.de/glcapsviewer/statistics.php)
Man kann sich jetzt alle in der Datenbank befindlichen Extensions mit der (prozentualen) Unterstüzung innerhalb der hochgeladenen Reports anzeigen, und kann diese Liste auch sortieren. So kann man z.B. abwägen welche Extension wie weit verbreitet ist.

Auflistung der Hardwarefähigkeiten (http://delphigl.de/glcapsviewer/statistics_openglcaps.php)
Vorher nur im direkten Reportvergleich möglich gibt es nun eine eigene Seite auf der man eine Hardwarefähigkeiten und deren Werte auflisten lassen kann. So kann man z.B. schnell sehen wie groß z.B. eine 3D-Textur maximal sein darf, bzw. mit welchem Minimalstwert man hier rechnen muss.

Überblick der OpenGL Versionen (http://delphigl.de/glcapsviewer/statistics_glversion.php)
Auf dieser Seite kann man in einer praktischen Tabelle erkennen wie stark welche OpenGL Versionen unterstützt werden. Die Werte sind absolut, sprich eine Hardwarereport der bis GL 4.2 unterstützt zählt logischerweise auch zu allen kleineren Versionen.

Direktverlinkungen
Kann z.B. in passenden Foren ganz praktisch sein. So kann man jetzt u.a. direkt eine Auflistung aller Reports für eine bestimmte Erweiterung verlinken (und anzeigen) lassen, das sieht dann in Linkform so aus (http://delphigl.de/glcapsviewer/listreports.php?listreportsbyextension=GL_AMD_debug_output). Selbiges gilt für die Hardwarestatistiken einer bestimmten Fähigkeit (http://delphigl.de/glcapsviewer/statistics_openglcap.php?listreportsbycap=GL_MAX_3D_TEXTURE_SIZE).


Ansonsten hab ich die Datenbank optisch etwas aufgebessert, und v.a. die Reports an sich sehen jetzt deutlich angenehmer aus.

Bis jetzt sinds schon über 200 Reports. Allerdings ist dass noch lange nicht genug um repräsentativ zu sein, zumal viele (oder gar die meisten) der Reports aus passenden Entwicklercommunities kommen, in denen eher aktuelle Hardware und Treiber kommen. Von daher hoffe ich dass in Zukunft noch mehr Reports folgen, dann kann man sich beim Release eines OpenGL-Spiels oder Programmes evtl. sogar an der Datenbank orientieren.

Stebs
2013-10-20, 12:40:39
Sorry dass ich diesen alten Thread aus dem Leichenkeller hole, aber evtl. liest SaschaW hier ja noch immer mit...

1. glCapsViewer funktioniert prinzipiell immer noch auf aktuellsten Linux-Systemen (auch 64bit) und wurde z.B. vor kurzem sogar auf g-truc.net (gute/bekannte Seite unter anderem über Opengl) als Tool erwähnt (http://www.g-truc.net/post-0601.html). Was nicht so verwunderlich ist, denn vergleichbare Tools gibt es unter Linux (anders als unter Windows) nicht so viele.

2. Leider zeigt glCapsviewer mit relativ neuen Mesa Treibern unter Linux ein nicht ganz korrektes Ergebnis an. Und zwar wird das Core-Profil (ab OpenGL 3.1) nicht berücksichtigt. Das muss ja explizit erfragt werden "OpenGL +3.1 is only available if requested at context creation because GL_ARB_compatibility is not supported."
Anders als die originalen AMD und Nvidia Treiber, unterstützen die OpenSource Mesa Treiber ab OpenGL 3.1 nur das Core Profil und nicht das Kompatibilitäts Profil. (Ubrigens ebenso die OSX Treiber, evtl. gibts da ja auch den Bug?)
Als Ergebnis steht dann da dass der Treiber nur OpenGL 3.0 könne (anstatt korrekt 3.1+), außerdem werden Extensions die nur im 3.1+ Core Profil vorhanden sind nicht angezeigt.
Ältere glxinfo Versionen hatten übrigens genau das gleiche Problem...

Ich hoffe dass das Tool noch upgedatet wird, gerade unter Linux ist es eigentlich sehr praktisch. Ich hätte auch noch paar Vorschläge um das Ergebnis im Programm übersichtlicher zu machen etc., aber erstmals schaun ob es nicht leider doch "tot" ist...

SaschaW
2013-10-20, 12:49:04
Nein, das Tool ist nicht tot (an der DB schraub ich z.B. regelmäßig, da gibts z.B. seit kurzem ein paar neue Sortierungsmölgihckeiten). Ich hab das ja damals entwickelt um eine Lücke in der Entwicklercommunity zu schliessen (als Ersatz für die GL-Caps-DB vom Tom Nyudens, die es schon lange nicht mehr gibt), und es wird auch aktiv genutzt. Sogar das OpenGL-ARB hat es vor einiger Zeit in einr seiner Präsentationen erwähnt :biggrin:

Die Sache mit den MESA-Treibern schau ich mir bei Gelegenheit mal an, hab hier diverse VMs (und echte Kisten) mit unterschiedlichen Linux-Distros.

Wann genau ich dazu komme kann ich leider nicht sagen, ich entwickel dass ja alles in meiner Freizeit, und wenn man auch beruflich coded hat man Abends oft nicht mehr so sonderlich Lust ne IDE zu starten ;)

Momentan werkel ich aber an einer Android-Version, und sobald die fertig ist kümmer ich mich um die Desktopversionen, da wollt ich eh noch einiges machen.

Stebs
2013-10-20, 15:37:48
Nein, das Tool ist nicht tot (an der DB schraub ich z.B. regelmäßigSupi :smile:
Wenn du Hilfe (rsp. Check ob ein Bugfix wirklich funktioniert etc. -bin kein Coder) brauchst, schreib einfach hier rein.

Die beiden recht aktuellen Einträge unter "Intel Open Source Technology Center" mit 3.0 Mesa 9.2.0 sind z.B. von mir (nenne mich auch da Stebs) und sollten (dank Ivy Bridge Pozessor) eigentlich 3.1 Mesa 9.2.0 zeigen. Und ein Beispiel einer Extension die bei mir in einer neuen glxinfo Version auftaucht und in glCapsVierwer nicht, ist GL_ARB_texture_buffer_object.

In der Datenbank wäre z.B. ein suchen nach "Submitted by Stebs" sehr hilfreich um neu hinzugekommene Funktionen bei neuen Mesa/Treiber Versionen sofort zu entdecken.
Im Programm selber wäre ein sortieren der Extensions z.B. nach abc (oder/und ARB, EXT, NV etc.) sehr hilfreich, ebenso suche nach einer speziellen Extension. Und richtig praktisch wäre ein ein Vergleich (mit markiertem "diff") der aktuellen Caps/Extensions mit einer gespeicherten XML Datei.
... Nur so als Denkanstoß für zukünftige Versionen.

Schön zu hören dass glCapsViewer noch lebt. Bisschen gepimpt und mit bisschen "Werbung" könnte das Programm dann noch bekannter werden (vor allem jetzt wo OpenGL doch wieder eine kleine Renaissance erlebt) und die Datenbank dementsprechend deutlich aussagekräftiger werden.

Nachtrag: ich poste hier mal mein Output von glxinfo das zu diesem Eintrag in der Datenbank (http://delphigl.de/glcapsviewer/generatereport.php?reportID=392) passt.
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_multisample, GLX_EXT_create_context_es2_profile,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_swap_control
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_create_context_es2_profile, GLX_EXT_fbconfig_packed_float,
GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context,
GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_MESA_multithread_makecurrent, GLX_MESA_swap_control,
GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGIS_multisample,
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_create_context_es2_profile, GLX_EXT_import_context,
GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_MESA_multithread_makecurrent, GLX_MESA_swap_control,
GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGIS_multisample,
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Mobile
OpenGL core profile version string: 3.1 (Core Profile) Mesa 9.2.0
OpenGL core profile shading language version string: 1.40
OpenGL core profile context flags: (none)
OpenGL core profile extensions:
GL_3DFX_texture_compression_FXT1, GL_AMD_draw_buffers_blend,
GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5,
GL_APPLE_object_purgeable, GL_ARB_ES2_compatibility,
GL_ARB_ES3_compatibility, GL_ARB_base_instance,
GL_ARB_blend_func_extended, GL_ARB_copy_buffer, GL_ARB_debug_output,
GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, GL_ARB_draw_buffers,
GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex,
GL_ARB_draw_instanced, GL_ARB_explicit_attrib_location,
GL_ARB_fragment_coord_conventions, GL_ARB_fragment_shader,
GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB,
GL_ARB_get_program_binary, GL_ARB_half_float_pixel,
GL_ARB_half_float_vertex, GL_ARB_instanced_arrays,
GL_ARB_internalformat_query, GL_ARB_invalidate_subdata,
GL_ARB_map_buffer_range, GL_ARB_occlusion_query2,
GL_ARB_pixel_buffer_object, GL_ARB_point_sprite, GL_ARB_provoking_vertex,
GL_ARB_robustness, GL_ARB_sampler_objects, GL_ARB_seamless_cube_map,
GL_ARB_shader_bit_encoding, GL_ARB_shader_objects,
GL_ARB_shader_texture_lod, GL_ARB_shading_language_420pack,
GL_ARB_shading_language_packing, GL_ARB_sync,
GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_object_rgb32,
GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map_array,
GL_ARB_texture_float, GL_ARB_texture_multisample,
GL_ARB_texture_non_power_of_two, GL_ARB_texture_query_lod,
GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui,
GL_ARB_texture_storage, GL_ARB_texture_storage_multisample,
GL_ARB_texture_swizzle, GL_ARB_timer_query, GL_ARB_uniform_buffer_object,
GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object,
GL_ARB_vertex_shader, GL_ARB_vertex_type_2_10_10_10_rev,
GL_ATI_blend_equation_separate, GL_ATI_texture_float, GL_EXT_abgr,
GL_EXT_blend_equation_separate, GL_EXT_draw_buffers2,
GL_EXT_draw_instanced, GL_EXT_framebuffer_blit,
GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled,
GL_EXT_framebuffer_sRGB, GL_EXT_packed_depth_stencil, GL_EXT_packed_float,
GL_EXT_pixel_buffer_object, GL_EXT_provoking_vertex, GL_EXT_texture_array,
GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_rgtc,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer,
GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode,
GL_EXT_texture_shared_exponent, GL_EXT_texture_snorm,
GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback,
GL_EXT_vertex_array_bgra, GL_IBM_multimode_draw_arrays,
GL_MESA_pack_invert, GL_MESA_texture_signed_rgba, GL_MESA_ycbcr_texture,
GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_packed_depth_stencil,
GL_OES_EGL_image, GL_OES_read_format, GL_S3_s3tc

OpenGL version string: 3.0 Mesa 9.2.0
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
GL_3DFX_texture_compression_FXT1, GL_AMD_draw_buffers_blend,
GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5,
GL_APPLE_object_purgeable, GL_APPLE_packed_pixels,
GL_APPLE_vertex_array_object, GL_ARB_ES2_compatibility,
GL_ARB_ES3_compatibility, GL_ARB_blend_func_extended,
GL_ARB_color_buffer_float, GL_ARB_copy_buffer, GL_ARB_debug_output,
GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, GL_ARB_depth_texture,
GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend,
GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced,
GL_ARB_explicit_attrib_location, GL_ARB_fragment_coord_conventions,
GL_ARB_fragment_program, GL_ARB_fragment_program_shadow,
GL_ARB_fragment_shader, GL_ARB_framebuffer_object,
GL_ARB_framebuffer_sRGB, GL_ARB_get_program_binary,
GL_ARB_half_float_pixel, GL_ARB_half_float_vertex,
GL_ARB_instanced_arrays, GL_ARB_internalformat_query,
GL_ARB_invalidate_subdata, GL_ARB_map_buffer_range, GL_ARB_multisample,
GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_occlusion_query2,
GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite,
GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects,
GL_ARB_seamless_cube_map, GL_ARB_shader_bit_encoding,
GL_ARB_shader_objects, GL_ARB_shader_texture_lod,
GL_ARB_shading_language_100, GL_ARB_shading_language_420pack,
GL_ARB_shading_language_packing, GL_ARB_shadow, GL_ARB_sync,
GL_ARB_texture_border_clamp, GL_ARB_texture_compression,
GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map,
GL_ARB_texture_cube_map_array, GL_ARB_texture_env_add,
GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
GL_ARB_texture_env_dot3, GL_ARB_texture_float,
GL_ARB_texture_mirrored_repeat, GL_ARB_texture_multisample,
GL_ARB_texture_non_power_of_two, GL_ARB_texture_query_lod,
GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui,
GL_ARB_texture_storage, GL_ARB_texture_storage_multisample,
GL_ARB_texture_swizzle, GL_ARB_timer_query, GL_ARB_transpose_matrix,
GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra,
GL_ARB_vertex_array_object, GL_ARB_vertex_buffer_object,
GL_ARB_vertex_program, GL_ARB_vertex_shader,
GL_ARB_vertex_type_2_10_10_10_rev, GL_ARB_window_pos,
GL_ATI_blend_equation_separate, GL_ATI_draw_buffers,
GL_ATI_envmap_bumpmap, GL_ATI_separate_stencil,
GL_ATI_texture_env_combine3, GL_ATI_texture_float, GL_EXT_abgr,
GL_EXT_bgra, GL_EXT_blend_color, GL_EXT_blend_equation_separate,
GL_EXT_blend_func_separate, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
GL_EXT_compiled_vertex_array, GL_EXT_copy_texture, GL_EXT_draw_buffers2,
GL_EXT_draw_instanced, GL_EXT_draw_range_elements, GL_EXT_fog_coord,
GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXT_framebuffer_multisample_blit_scaled, GL_EXT_framebuffer_object,
GL_EXT_framebuffer_sRGB, GL_EXT_gpu_program_parameters,
GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
GL_EXT_packed_float, GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object,
GL_EXT_point_parameters, GL_EXT_polygon_offset, GL_EXT_provoking_vertex,
GL_EXT_rescale_normal, GL_EXT_secondary_color,
GL_EXT_separate_shader_objects, GL_EXT_separate_specular_color,
GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap,
GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
GL_EXT_texture_array, GL_EXT_texture_compression_dxt1,
GL_EXT_texture_compression_rgtc, GL_EXT_texture_cube_map,
GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer,
GL_EXT_texture_lod_bias, GL_EXT_texture_object, GL_EXT_texture_rectangle,
GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode,
GL_EXT_texture_shared_exponent, GL_EXT_texture_snorm,
GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback,
GL_EXT_vertex_array, GL_EXT_vertex_array_bgra,
GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip,
GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,
GL_MESA_pack_invert, GL_MESA_texture_array, GL_MESA_texture_signed_rgba,
GL_MESA_window_pos, GL_MESA_ycbcr_texture, GL_NV_blend_square,
GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_light_max_exponent,
GL_NV_packed_depth_stencil, GL_NV_primitive_restart,
GL_NV_texgen_reflection, GL_NV_texture_env_combine4,
GL_NV_texture_rectangle, GL_OES_EGL_image, GL_OES_read_format,
GL_S3_s3tc, GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays