gpt4 book ai didi

c++ - 英特尔集成显卡错误识别 (DXGI)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:17 27 4
gpt4 key购买 nike

我正在用 DirectX 12 处理的空白交换链填充一个窗口。在使用 Explicit Multi-Adapter 玩一圈时,我遇到了这种奇怪的行为......

如目前存在的几乎所有 DX12 演示代码所示,我遍历所有使用 IDXGIFactory4::EnumAdapters1() 获得的 DXGI 适配器以找到最合适的(或在我的情况下)每个) 适配器在 D3D_FEATURE_LEVEL_11_0 或更高。如演示中所示,我丢弃了所有具有 DXGI_ADAPTER_FLAG_SOFTWARE 的适配器,如下所示:

if ((adapterDesc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE) != FALSE) 
continue; // Check the next adapter.

在我的实现中,我随后将所有兼容的适配器转储到 std::vector 中以备后用。

如果我使用断点来检查运行时的一切情况,我注意到我的适配器列表在循环退出后只包含一个适配器,这不是我所期望的,因为我同时拥有 NVIDIA GeForce GT 650M 和英特尔核芯显卡 4000。

通过在循环中中断并检查每个适配器的 DXGI_ADAPTER_DESC2 结构,我发现我得到的确实是 GT 650M,这意味着我的集成显卡将自己识别为软件适配器.

这本身是合理的,但如果您查看 picture of an Ivy Bridge die (这就是我所拥有的)你看到一个很大的区域被封锁为“处理器图形”,英特尔自己这样定义:“处理器图形指的是物理上位于处理器封装中的图形或集成到处理器芯片中。”这简直是在对我尖叫“硬件适配器”。

如果我删除上面的代码块,我确实会在列表中得到两个适配器,但第二个适配器将自己标识为 “Microsoft Basic Render Driver” 并提供 0x1414 的供应商 ID ,而 Google 表示英特尔通常返回 0x8086 作为其 ID。 This list甚至没有提到 0x1414 的所有者。

而且,更令人困惑的是,如果我在我的 Intel 高清显卡控制面板中查看信息中心,它会显示它的供应商 ID 为 0x8086!

在任何人问之前:是的,我的驱动程序应该是最新的;我一注意到这一点就更新了它们。奇怪的是,DxDiag 为我提供了错误的集成显卡驱动程序日期,但为 GT 650M 提供了相同的驱动程序日期(虽然稍微接近事实)。独立GPU驱动是WDDM 2.0,而集成显卡驱动是WDDM 1.3,这可能是相关的,因为我认为它也应该是2.0。 (可能是更新失败了?)

最佳答案

if (adapterDesc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE) 过滤器的主要原因是避免选择 Microsoft Basic Render Driver。这使用不支持 DirectX 12 的 WARP11 软件设备。

WARP11 is supported in all versions of Windows with DirectX 11. WARP12 is currently a developer only device (i.e. "Graphics Tools" optional feature-on-demand is installed).

如果您的离散部分为此标志返回 true,则可能是一个错误。它可能是您的代码中的错误、驱动程序错误或 Optimus 样式选择的一些奇怪的副作用。 WARP/MBR 实际上是唯一预期返回 DXGI_ADAPTER_FLAG_SOFTWARE 的东西。

您还可以通过 if ( ( adapterDesc.VendorId == 0x1414 ) && ( adapterDesc.DeviceId == 0x8c ) ) 测试 well-known VendorID/DeviceID 来排除 MBR。 ,但我建议深入研究您的代码,以了解为什么您错误地为硬件设备返回了 DXGI_ADAPTER_FLAG_SOFTWARE

参见 Anatomy of Direct3D 11 Create Device

关于c++ - 英特尔集成显卡错误识别 (DXGI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35996360/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com