3

问题:打电话IDXGIOutput1::DuplicateOutput 方法返回 DXGI_ERROR_UNSUPPORTED 当您在具有可切换图形的机器上使用独立图形控制器运行应用程序时。

这个答案为这个问题提供了一些启示。简而言之,独立显卡只渲染屏幕的一部分并将数据发送到集成显卡控制器的帧缓冲区——换句话说,所有输出总是通过集成显卡控制器。看来这就是 DuplicateOutput 返回 DXGI_ERROR_UNSUPPORTED 的原因。

我编写了一个示例,该示例使用winapiEnumDisplayDevices 函数)和directxIDXGIFactory::EnumAdapters 方法IDXGIAdapter::EnumOutputs 方法)获取所有输出及其视频适配器,以在具有可切换图形(Intel HD 4600 和 NVIDIA 840M)的机器上进行比较。这是结果:

在此处输入图像描述

不确定我的比较可能有多正确,但你可以看到winapi说 DISPLAY1 属于 Intel 卡,directx说 DISPLAY1 属于 NVIDIA 卡。一种解决方案是复制英特尔卡的输出(因为一切都通过它),但 EnumOutputs 不返回任何输出。

目前有一种解决方法:始终使用集成图形控制器运行使用 Duplication API 的应用程序。

问题:如何使 DuplicateOutput 与具有可切换显卡的笔记本电脑上的独立显卡控制器一起工作?还是桌面复制 API 的限制?

4

1 回答 1

5

解决了:

不幸的是,出现此问题是因为Desktop Duplication API 不支持在 Microsoft 混合系统上针对离散 GPU 运行。按照设计,在这种情况下,调用会与错误代码 DXGI_ERROR_UNSUPPORTED 一起失败。

要解决此问题,请在集成 GPU 上而不是在 Microsoft 混合系统上的独立 GPU 上运行应用程序。

从这里: https: //support.microsoft.com/en-us/kb/3019314

于 2016-06-13T09:57:22.120 回答