如何在 DirectX 11 应用程序中为 select 图形适配器提供选项?
How to give an option to select graphics adapter in a DirectX 11 application?
我想我知道它应该如何工作——只是它没有。我有一台 860m 的 lenovo 笔记本电脑和一张 intel 集成卡。
我可以 运行 我的应用程序从外部使用两个 gpu,一切正常:selected gpu 将是索引为 0 的适配器,它有笔记本电脑屏幕作为输出,等等.
但是,如果我尝试使用索引为 1 的适配器(如果我正常 运行 应用程序,那就是 nvidia,如果我 运行 它与 nvidia gpu,那就是 intel ), IDXGIOutput::EnumOutputs 没有找到任何东西,所以我无法正确配置显示设置。
我正在考虑简单地跳过配置,或者使用其他适配器的输出 - 但是没有办法过滤掉没有实际输出的适配器 - 例如我的电脑也有一块集成卡,但它没有物理连接显示器,所以不能使用它。
我也试图找到 "Run with graphical processor" 上下文菜单按钮的确切功能,但我找不到任何东西。
目标是让用户能够 select 应用程序内部的适配器,his/her 选择被保存到配置文件,并在重启后使用 - 但我找不到过滤可能的适配器的方法。
您可能有一个 'heterogenous adapter' 系统(a.k.a。NVIDIA Optimus 或 AMD PowerXPress)。这些解决方案让驱动程序操纵默认适配器和设备枚举来控制使用哪个卡。您确实对此没有任何编程控制,但您可以在 Win32 'classic' 桌面应用程序中注入一些东西,这将鼓励驱动程序 select 离散部分:
// Indicates to hybrid graphics systems to prefer the discrete part by default
extern "C"
{
__declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
}
UPDATE 使用 Windows 2018 年 4 月 10 日更新 (17134) 或更高版本,您可以使用 DXGI 1.6 接口 EnumAdapterByGpuPreference
。有关示例用法,请参阅 GitHub。
我想我知道它应该如何工作——只是它没有。我有一台 860m 的 lenovo 笔记本电脑和一张 intel 集成卡。
我可以 运行 我的应用程序从外部使用两个 gpu,一切正常:selected gpu 将是索引为 0 的适配器,它有笔记本电脑屏幕作为输出,等等.
但是,如果我尝试使用索引为 1 的适配器(如果我正常 运行 应用程序,那就是 nvidia,如果我 运行 它与 nvidia gpu,那就是 intel ), IDXGIOutput::EnumOutputs 没有找到任何东西,所以我无法正确配置显示设置。
我正在考虑简单地跳过配置,或者使用其他适配器的输出 - 但是没有办法过滤掉没有实际输出的适配器 - 例如我的电脑也有一块集成卡,但它没有物理连接显示器,所以不能使用它。
我也试图找到 "Run with graphical processor" 上下文菜单按钮的确切功能,但我找不到任何东西。
目标是让用户能够 select 应用程序内部的适配器,his/her 选择被保存到配置文件,并在重启后使用 - 但我找不到过滤可能的适配器的方法。
您可能有一个 'heterogenous adapter' 系统(a.k.a。NVIDIA Optimus 或 AMD PowerXPress)。这些解决方案让驱动程序操纵默认适配器和设备枚举来控制使用哪个卡。您确实对此没有任何编程控制,但您可以在 Win32 'classic' 桌面应用程序中注入一些东西,这将鼓励驱动程序 select 离散部分:
// Indicates to hybrid graphics systems to prefer the discrete part by default
extern "C"
{
__declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
}
UPDATE 使用 Windows 2018 年 4 月 10 日更新 (17134) 或更高版本,您可以使用 DXGI 1.6 接口 EnumAdapterByGpuPreference
。有关示例用法,请参阅 GitHub。