2017-10-24 6 views
1

MacOS用の拡張グラフィックドライバで作業していて、IOFrameBufferクラスを使用してリニアフレームバッファデバイスを公開しています。私のドライバでは、getVRAMRange()を使用して、フレームバッファデバイスのメモリウィンドウ全体のビデオRAMアドレス情報を返します。IOFramebufferがmacOSのVRAMフレームバッファにアクセスできない10.13

問題は次のとおりです。ドライバはMacOS 10.12でも正常に動作しますが、システムをMacOS 10.13 High Sierraにアップグレードすると、もうビデオRAMデータにアクセスできなくなります。この問題に関するヒントはありますか?どうもありがとう!

さらに、ドライバがセーフモードでうまく動作する理由も混乱していますか?

答えて

0

この問題は、macOS 10.13のMetalコンポジッタで導入されました。私はベータサイクルの早い段階でアップルに報告しましたが、これまでのところ何の反応もなく、確かに修正されていません。

ディスプレイの内容はWindowServerのどこかに描画されますが、CGDisplayCreateImage()のスクリーンショット(ユーザー空間内)を使ってアクセスできます。あなたがしようとしていることに応じて、それはあなたのために働くかもしれませんか?

セーフモードで問題が存在しないのは、セーフモードでハードウェアアクセラレーション合成(Quartz Extreme)が無効になっているため、Metalコンポジットは使用されないためです。この問題は、Metalをサポートしていない古いMacでは発生しません。

+0

ご協力いただきありがとうございます。私はそれが金属の影響を受けたとも思う。ユーザー空間でCGDislplayCreateImage()関数を使用しようとしましたが、パフォーマンスが低すぎて私たちの要件を満たせません。 私が知っているように、DisplayLinkの最新ドライバ(http://www.displaylink.com/downloads/file?id=1033)はMacOS 10.13でもうまくいくので、間違いなく、ビデオラムデータ。他の提案はありますか? –

+0

私が知っている限り、 'CGDislplayCreateImage()'は現在のところ動作する唯一のメソッドです。それは確かに余分なフレームバッファのコピーを追加しますが、それとリアルタイムのパフォーマンスを達成することは間違いありません。アップルにバグ(レーダー)を提出して、それを修正するよう促してください。 – pmdj

関連する問題