DirectX 9无法检测到处于睡眠模式的Laptop gpu

时间:2019-07-03 08:11:48

标签: c++ gpu directx directx-9

当前情况::我已经从Bios启用了Intel HD GPU(因为在安装专用的Card bios之后,请禁用集成GPU)。这样我可以同时拥有两个Gpu,我尝试运行一些DirectX示例代码(下面的代码)以获取适配器列表,这表明我所有带有台式机机箱的GPU(Amd和Intel)均已关闭。但是笔记本电脑上的相同代码(下面的代码)不起作用,仅显示Intel HD,我怀疑GPU处于睡眠模式,DirectX无法从其中检索数据。

已尝试的方法:谷歌无休止的使用后,我发现还有其他C++ Directx 11 Multiple Video Cards个具有相同问题的用户,则使用DirectX 11版本发布了解决方案。我需要DirectX 9中的解决方案(如果可能的话),因为我要使用的硬件是AMD Radeon HD3970 X2和更早的版本,这意味着DirectX 11此类卡无法使用。而且我不使用任何DirectX效果或渲染内容,我需要DirectX的CreateDevice方法来分配要处理的GPU。

我的代码:

LPDIRECT3D9 d3d;    // the pointer to our Direct3D interface
d3d = Direct3DCreate9(D3D_SDK_VERSION);


LPDIRECT3DDEVICE9 d3ddev;    // the pointer to the device class
HWND hWnd = GetForegroundWindow();
HRESULT result;
D3DADAPTER_IDENTIFIER9 adapter;
for (int i = d3d->GetAdapterCount(); i--;)
{
    std::cout << d3d->GetAdapterIdentifier(0, NULL, &adapter) << std::endl;
    std::cout << adapter.DeviceName << std::endl;
    std::cout << adapter.Driver << std::endl;
    std::cout << adapter.Description << std::endl;
    std::cout << adapter.DeviceId << std::endl;
    std::cout << adapter.SubSysId << std::endl;

    result = d3d->CreateDevice(i,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&d3ddev);
    if (result == S_OK)
    {
        std::cout << "OK" << std::endl;
    }
    else {
        std::cout << result << std::endl;
    }
    d3d->Release();
}

如何解决此问题?谢谢。

更新:尝试使用cuda运行无限循环,在Nvidia gpu上的负载被创建了约20%的使用率,但是DirectX 9仍仅检测到Intel Gpu,这是否意味着DirectX仅检测到连接到显示器的gpu,我该怎么办在这种情况下?

0 个答案:

没有答案