Registriert: Do Jun 18, 2009 07:17 Beiträge: 44 Wohnort: Gießen/Hessen
Auch wenn das Folgende nur indirekt etwas mit OpenGL zu tun haben sollte, wollte ich es doch mal posten.
Vor kurzem habe ich meinen Hauptrechner neu aufgestzt, und dabei meine Virtualisierungslösung - VirtualBoxaktualisiert.
Ich verwende diese um meine verschiedenen Entwicklungsumgebungen plattformunabhängig zu halten, so... Nun habe ich also die neue Version 3.0.2r aufgespielt meine alte Virtuelle-Maschine(n) wieder eingespielt und festgestellt das alle meine OpenGL Projekte die ich in FPC / Lazarus erstellt habe nach dem Start sofort eine Access Violation auslösen, egal ob es die Alten oder die Neuübersetzten sind.
Host-System : Windows XP (darauf läuft VirtualBox)
VirtualBox: 3.0.2r
Gast-System: Windows XP (Mit den neuen Treibern für die Gasterweiterung)
Framework: Lazarus/LCL 9.27 (beta)
Compiler: FPC 2.2.5
OpenGL Header: dglOpenGL.pas (3.0.2 )
Kann das jemand bestätigen?
Auch das aufsetzen einer neuen Virtuellen-Maschine hatte leider keinen Erfolg - sofort nach dem Start der OpenGL Progrmme - Access Violation. Ich gehe davon aus das es sich entweder um die VirtualBox handelt (sehr wahrscheinlich), oder der OpenGL-Header Angepasst werden muss. Seltsam ist nur das der TuxRacer doch so halbwegs zu funktionieren scheint - ich bekomme zumindest das Menü angezeigt - , ok... wenn die Strecke geladen werden soll dann schmiert der TuxRacer ab.
PS: Muss ich eventuell die OpenGL.dll austauschen?
_________________ Gruß Andreas (aka DeepCopy) - Sic Luceat Lux
Classified Directive: initialization write in function for finalization, repeat until public case uses begin, if not case type as default, var in virtual override for while, in case of class type type asm until read begin.
Registriert: Di Jul 01, 2003 18:59 Beiträge: 887 Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
Did you reinstall the Guest Additions? If not you should do so. E.g. the old virtualbox support opengl1.5 and the new up to opengl2.0 . Not that glsl is working with the new version. They probeably need a few more releases for that.
E.g. on my first attempts on getting my opengl applications to work on the old virtual box (opengl1.5) i needed to make some changes to the way the opengl context was created. But the switch to the new virtualbox did not cause problems so far.
Registriert: Do Jun 18, 2009 07:17 Beiträge: 44 Wohnort: Gießen/Hessen
Thanks for the advice and response,
but as mentioned earlier I did really reinstall the Guest Addions - (German: Mit den neuen Treiber für die Gasterweiterung).
I've found a solution by switching back to the previous version of VirtualBox, im currently running 2.1.2 everything works fine!
But I could not say whether it's the VirtualBox or OpenGL that causing the touble, and sadly I have no time nor the nerve to work it out
nicely.
Anyway, I guess it's best practice not to change a winning team and stick with old one, as long as the problem remains.
Zitat:
Not that glsl is working with the new version. They probeably need a few more releases for that.
That may become an important point for my further OpenGL developments - keep waiting.... one at a time.
_________________ Gruß Andreas (aka DeepCopy) - Sic Luceat Lux
Classified Directive: initialization write in function for finalization, repeat until public case uses begin, if not case type as default, var in virtual override for while, in case of class type type asm until read begin.
Registriert: Do Jun 18, 2009 07:17 Beiträge: 44 Wohnort: Gießen/Hessen
Nope, 3.04 doesn't do the trick besides It seem's to work faster as the previous version anyway.
Ah, nice ... I've no access violations anymore but simply the OpenGL program won't start. *sad*
I've changed the host-system to Linux 2.6.28-14-generic, the strange 3D behaviour remains unchanged, OpenGL seem's neither to work
on a windows-host nor a linux-host for a WindowsXP Sp3 - guest, since VBox version 3+
Haven't had any virtual machine settings problem yet - at least so far -
_________________ Gruß Andreas (aka DeepCopy) - Sic Luceat Lux
Classified Directive: initialization write in function for finalization, repeat until public case uses begin, if not case type as default, var in virtual override for while, in case of class type type asm until read begin.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also ich hatte das auch mal ausprobiert und bei mir knallen die Beispiele aus meiner TextSuite auch. Und die laufen selbst mit der schrottigen OpenGL 1.1 Softwareimplementation von Microsoft. Nur mit der neusten VirtualBox klappts net. Ich will aber auch nicht ausschließen, dass die ein Feature entfernt haben was vom Header benutzt wird, ohne das er das sinnvoll überprüft. Müsste ich nur mal schauen, dass ich das mal debugged bekomme und im Falle eines Problemes dann fixe.
Registriert: Do Jun 28, 2007 17:58 Beiträge: 193
Programmiersprache: Pascal, C
Ich hatte die selben Probleme - Allerdings hatte ich nur eine Beta oder Alpha-Version, von daher habe ich es darauf geschoben. Das Gastbetriebsystem ist Windows 7.
Registriert: Do Jun 18, 2009 07:17 Beiträge: 44 Wohnort: Gießen/Hessen
Ich habe die Lösung des Problems gefunden, zuerst einmal es ist kein Problem von OpenGL oder dem Header der dlgOpenGL.pas... sehr beruhigend!
Ich bin eher zufällig über die Lösung gestolpert, als das ich sagen könnte ich hätte sie gefunden. Beim Erstellen einer neuen VM für 64bit, wollte ich die Mehrprozessor-Unterstützung aktivieren, ich wurde aber von der VBox mit dem Fehler "VT-x/AMD-V nicht verfügbar" zurückgepfiffen.
Ich hatte mich zwar von der SVM-Unterstützung durch den Prozessor in Linux $> /proc/cpuinfo versichert, aber und jetzt kommt's - und auch den Eintrag VIRTUALIZATION im BIOS aktiviert (Phoenix BIOS) - ABER den speziellen Eintrag "SECURE VIRTUAL MACHINE MODE" nicht aktiviert (warum auch -habe ich vorher gedacht- da ich davon ausgegangen bin, das die Virtuellen Maschinen dann einfach nur in einem "Sicheren Modus" laufen , naja... was ja auch fast stimmt), nach nochmaliger Recherche im Internet habe ich dann den Zusammenhang zwischen SVM und SECURE VIRTUAL MACHINE MODE entdeckt, und das es dabei um um einen 9-teiligen SVM-Befehlssatz für den Prozessor handelt, der es dem Hypervisor (der VirtualBox) erlaubt den Gast im höchsten aller CPL (Current Privilege Levels) - dem CPL-0 - auf der CPU laufen zu lassen, also so, als würde der Gast-VM die Hardware tatsächlich alleine gehören (bis auf ein paar Einschränkungen). Das heißt durch SVM wird quasi ein noch höherer Level als CPL-0 auf der Hostseite (dem Virtualbox-Host) geschaffen, um der Gast-VM zu erlauben Programme und Treiber auf CPL-0 Ebene auszuführen, wer weitere Informationen zum Thema SVM und Virtualisierung haben möchte kann sie hier nachlesen.
Lange Rede kurzer Sinn: Den Eintrag SECURE VIRTUAL MACHINE MODE im BIOS auf ENABLED gestellt den Host hochgefahren, die VM gestartet (mehrere Prozessoren waren jetzt vom Start weg möglich) und bemerkt, daß das Chip-Icon in der Statusbar der Gast-VM nicht mehr ausgegraut war, eine beliebige meiner OpenGL-Anwendungen in der Gast-VM gestartet und ca. ~400 - ~500 FPS bewundert (ohne nur ~35 FPS).
Die Einstellungen der VirtualBox (gilt für alle meine Konfigurationen 32/64bit - Windows/Linux)
Prozessoren: 2 // oder so viele wie man eben zuweisen möchte
VT-x/AMD-V: aktiviert
Nestet Paging: deaktiviert // sollte auch deaktiviert bleiben - massive Performance-Verluste
Grafikspeicher: 64MB
3D-Beschleunigung: aktiviert
GuestAdditions: installiert;
Kleiner Nachtrag: Wenn man einen Mehrkernprozessor mit SVM Unterstützung hat, aber sich keine Virtuelle Maschine mit Mehrkernprozessor starten lässt (das gilt auch für die alten virtuellen Maschinen!), dann liegt der Verdacht nahe das die BIOS-Einstellungen falsch sind, oder das Mainboard (Chip-Satz) unterstützt SVM nicht richtig. Sollte das Starten mit nur einem Kern dennoch möglich sein kann das dazu führen, das die Virtualbox versucht totzdem über SVM auf die Hardware (hier Grafikkarte) zuzugreifen, und eben genau das die "Access Violations" in der Gast-VM auslöst.
_________________ Gruß Andreas (aka DeepCopy) - Sic Luceat Lux
Classified Directive: initialization write in function for finalization, repeat until public case uses begin, if not case type as default, var in virtual override for while, in case of class type type asm until read begin.
Registriert: Do Jun 18, 2009 07:17 Beiträge: 44 Wohnort: Gießen/Hessen
Couldn't say that, besides it's not a dual core feature only it's also a multi core one.
Regarding your problem: Did you disabled the "Nested Paging" feature? This could cause massive performance losses if your host doesn't support it.
_________________ Gruß Andreas (aka DeepCopy) - Sic Luceat Lux
Classified Directive: initialization write in function for finalization, repeat until public case uses begin, if not case type as default, var in virtual override for while, in case of class type type asm until read begin.
Registriert: Di Jul 01, 2003 18:59 Beiträge: 887 Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
No nested paging is off, with that one on things become even worser. My virtual pc is back to one cpu again, but on showing the desktop it goes peaking at 100% for about a few minutes. Enough experimenting for me now...
Mitglieder in diesem Forum: 0 Mitglieder und 25 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.