我需要在 MacOS High Sierra 上编写显示驱动程序以用于外部显示。我找到了设备驱动程序的 IOKit 示例和有关 IOVideoDevice 的基本文档。但我找不到 IOVideoDevice 的详细文档或示例代码。
我以每年 99 美元的价格加入了 Apple 开发者计划。我是否必须加入专门的 Apple 计划来编写视频驱动程序?我想知道显卡供应商 DisplayLink 和 AirParrot 是如何获得这些信息的。
最佳答案
“视频驱动程序”是指视频捕获设备还是显卡 (GPU)?
IOVideoDevice
表示视频捕获设备,例如网络摄像头或视频采集卡。然而,这个API很旧,现在视频捕获设备的驱动程序应该是written as CoreMediaIO plugins 。 (尽管自从图书馆验证的流行以来 代码签名标志,此路线也存在问题,例如第 3 方捕获驱动程序无法与 FaceTime 和类似应用程序一起使用;这超出了这个问题的范围。)- “显卡”表明您有一个想要用作 Mac 显示器的设备。 Apple 并未正式支持此功能。过去您可以创建一个 IOFramebuffer 子类。从 macOS 10.13 开始,这不再按预期工作(黑屏),并且从 10.13.4-10.13.6 开始根本不起作用。 GPU 制造商(Intel、AMD 和 NVidia)是 Apple 的供应商,因此他们可以深入访问图形管道。他们用来实现驱动程序的 API 不是公开的。
更新:从 10.14 和 10.15 开始,IOFramebuffer
子类再次发挥作用。至少,足以使操作系统将显示范围扩展到这样的虚拟屏幕,尽管“vram”实际上从未填充有图像数据。您需要通过 Core Graphics API 或类似的方法在用户空间中捕获它。
关于macos - 如何编写MacOS显示驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51846999/