调用DRED GetAutoBreadcrumbsOutput返回DXGI_ERROR_UNSUPPORTED错误求助
核心原因
该错误表明当前系统或硬件不支持你启用的DRED功能,或是配置流程存在问题。
具体排查与解决步骤
核对硬件与系统版本要求
Auto Breadcrumbs和Page Fault功能要求GPU支持DirectX 12.1及以上,系统需为Windows 10 1809(版本号10.0.17763)或更高版本。先确认你的GPU型号、系统版本是否达标。调整DRED配置时机
DRED的设置必须在创建D3D12设备之前完成。如果你的配置代码是在D3D12CreateDevice之后执行的,设置不会生效,后续调用必然报错。确保配置ID3D12DeviceRemovedExtendedDataSettings的代码先于设备创建逻辑执行。确认Debug Layer已启用
DRED部分功能依赖DirectX Debug Layer,创建设备时需在D3D12CreateDevice的D3D12_CREATE_DEVICE_FLAGS参数中包含D3D12_CREATE_DEVICE_FLAG_DEBUG,同时系统需安装Windows SDK中的Debug Tools组件。分功能验证兼容性
不要同时启用Auto Breadcrumbs和Page Fault,先单独启用其中一项测试,排查具体是哪个功能不被当前系统支持。比如先仅调用SetAutoBreadcrumbsEnablement,再尝试获取输出,定位问题点。验证接口获取有效性
确保device是有效的D3D12设备指针,且QueryInterface成功获取到ID3D12DeviceRemovedExtendedData接口。如果这一步本身失败,后续调用必然报错,需先排查设备指针的有效性。主动查询功能支持性
通过ID3D12Device::CheckFeatureSupport提前确认系统是否支持目标DRED功能,避免无效调用:D3D12_FEATURE_DATA_DRED_FEATURES dredFeatures = {}; HRESULT hr = device->CheckFeatureSupport(D3D12_FEATURE_DRED_FEATURES, &dredFeatures, sizeof(dredFeatures)); if (SUCCEEDED(hr)) { bool supportsAutoBreadcrumbs = dredFeatures.AutoBreadcrumbsSupported; bool supportsPageFault = dredFeatures.PageFaultSupported; }
内容的提问来源于stack exchange,提问作者Tom Huntington

