4

我使用 Microsoft Desktop Duplication API,如果我的代码在集成(英特尔)显卡上运行,那么一切正常。但是如果我在专用卡上运行,我会得到一个错误。

我发现Microsoft 不支持在 Microsoft Hybrid 系统上的专用卡上使用此功能

DXGI_ERROR_UNSUPPORTED

没有解决我需求的类似问题:

解决方法是在集成卡上启动程序。

我想从代码中解决这个问题。
我发现可以从我的代码中强制使用 NVIDIA / AMD 卡

extern "C" { // Hint to Hybrid laptop drivers that our app would really rather use the NVidia/AMD GPU that you've got sitting over there rather than Intel Graphics...
    _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
    _declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
}
  1. 英特尔卡有类似的选项吗?
  2. 或者是否可以从我的代码中更改 NVIDIA / AMD 卡设置,以便下次在集成 GPU 上运行?我的意思是:启动我的应用程序,它检查 NVIDIA / AMD 设置,如果它没有被强制使用集成显卡(如果可用),那么修改这个设置并重新启动我的应用程序。
  3. 还有其他使用集成卡的解决方案吗?(不是手动解决方案)
4

1 回答 1

2

尽管您可以使用 NVAPI 创建应用程序配置文件并设置特定标志以使您的应用程序在集成芯片上运行,但较新版本的 Windows 可能会覆盖您的偏好。因此,最可靠/最简单的方法是设置在Windows 10 build 17093中引入的注册表值

或者是否可以从我的代码中更改 NVIDIA / AMD 卡设置,以便下次在集成 GPU 上运行?我的意思是:启动我的应用程序,它检查 NVIDIA / AMD 设置,如果它没有被强制使用集成显卡(如果可用),那么修改这个设置并重新启动我的应用程序。

您可以使用注册表值执行此操作,是的。我在实践中使用这种方法,并概述了我如何选择进行 GPU 检查。我相信 Roman Ryltsov 在他的DxgiTakeSnapshot应用程序中做了类似的事情(他有很多关于这个主题的帖子值得一读)。

于 2021-01-20T00:10:18.223 回答