You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS22调试HLSL着色器模型6.7及以上失败求助(RTX3090)

解决方案:VS22中RTX3090无法启用HLSL SM6.6以上版本的问题

核心排查点与修复步骤

  • 验证系统版本兼容性
    SM 6.7要求Windows 10 2004(内部版本19041)或更高,SM 6.8需要Windows 10 21H2/Windows 11。按下Win+R输入winver确认系统版本,若低于要求需升级系统。

  • 正确配置Agility SDK引用
    仅安装Agility SDK不足以生效,需在项目中明确启用:

    1. 在VS项目的NuGet包管理器中安装Microsoft.Direct3D.D3D12Agility最新版
    2. 右键项目→属性→配置属性→常规,将“目标平台版本”设置为10.0.19041.0或更高
    3. 初始化D3D12设备时,确保代码中指定使用Agility SDK扩展(例如通过D3D12CreateDevice的参数启用,或在项目设置中开启“启用D3D12 Agility SDK”选项)
  • 改用D3D12 API直接查询SM版本
    DXCaps可能仅检测系统原生DX运行时,而非Agility SDK提供的扩展。可通过以下代码片段验证GPU实际支持的SM版本:

    D3D12_FEATURE_DATA_D3D12_OPTIONS3 options3 = {};
    HRESULT hr = pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS3, &options3, sizeof(options3));
    if (SUCCEEDED(hr)) {
        UINT maxSM = options3.MaxShaderModel;
        // maxSM为67表示支持SM6.7,68表示支持SM6.8
    }
    
  • 确认着色器编译配置

    1. 右键HLSL文件→属性→常规,将“着色器编译器”设置为DXC(而非旧版FXC,SM6.6+仅支持DXC编译)
    2. 将“着色器模型”设置为6.7或6.8,确保与目标版本匹配
  • 驱动深度验证

    1. 卸载当前NVIDIA驱动(使用NVIDIA官方卸载工具NVIDIA Display Driver Uninstaller清理残留)
    2. 重新安装对应RTX3090的最新工作室驱动(优先选择工作室驱动而非游戏就绪驱动,稳定性更好)
    3. 在NVIDIA控制面板→3D设置→管理3D设置中,确认“DirectX版本”设置为“自动选择”或对应系统支持的最高版本

关键说明

RTX3090硬件原生支持SM6.8,DXCaps显示SM6.6通常是因为系统默认DX运行时未启用Agility SDK扩展,而非硬件不支持。无需开启开发者模式即可使用SM6.7,开发者模式仅针对早期Agility SDK预览版的SM6.8功能。

内容的提问来源于stack exchange,提问作者MeshingAround

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:27:37