Search code examples
driverkernel-extensionmacos-high-sierra

IOFramebuffer can't access VRAM framebuffer in macOS 10.13


I am working on a extend graphic driver for MacOS, and use IOFrameBuffer class to publish a linear frame buffer device. In my driver we use getVRAMRange() to return the video ram address information for the entire memory window of frame buffer device.

The question is: The driver can works well on MacOS 10.12, but once upgrading system to MacOS 10.13 High Sierra, I can't access video ram data any more. Do you have any tips on this issue? Thanks very much!

besides, I am also confused why the driver can works well with safe mode?


Solution

  • This is an old issue, Apple deprecated IOFramebuffer class. we can access screen steam buffer through IOSurfaceRef, and use IOSurfaceGetBaseAddress function get screen data address.