Ich arbeite an einem erweitern Grafiktreiber für MacOS, und verwenden Sie IOFrameBuffer-Klasse, um eine lineare Frame-Puffer-Gerät zu veröffentlichen. In meinem Treiber verwenden wir getVRAMRange(), um die Video-RAM-Adressinformationen für das gesamte Speicherfenster des Framepuffergeräts zurückzugeben.IOFramebuffer kann nicht auf VRAM Framebuffer in Mac OS 10.13 zugreifen
Die Frage ist: Der Treiber kann gut auf MacOS 10.12 funktionieren, aber sobald ich das System auf MacOS 10.13 High Sierra umgerüstet habe, kann ich nicht mehr auf Video-RAM-Daten zugreifen. Hast du Tipps zu diesem Thema? Vielen Dank!
Außerdem bin ich auch verwirrt, warum der Treiber gut mit dem abgesicherten Modus funktioniert?
Vielen Dank für Ihre hilfreiche Antwort. Ich denke auch, dass es von Metall beeinflusst wurde. Ich habe versucht, CGDislplayCreateImage() -Funktion im Benutzerraum zu verwenden, aber die Leistung ist zu schlecht, um unsere Anforderungen zu erfüllen. Wie ich weiß, der neueste Treiber von DisplayLink (http://www.displaylink.com/downloads/file?id=1033) kann gut unter MacOS 10.13, so denke ich, auf jeden Fall gibt es eine Möglichkeit, auf die Video-RAM-Daten. Hättest du noch andere Vorschläge? –
Soweit ich weiß, ist 'CGDislplayCreateImage()' die einzige Methode, die momentan funktioniert. Es ist definitiv möglich, damit Echtzeit-Performance zu erzielen, obwohl es sicherlich eine zusätzliche Framebuffer-Kopie hinzufügt. Richte einen Fehler (Radar) bei Apple ein, um ihn zu ermutigen, ihn zu reparieren. – pmdj