【发布时间】:2016-07-08 07:51:46
【问题描述】:
我目前使用的是 nvidia 675M,在 Directx 11 中,我在功能级别 11_0 下运行良好
我正在关注 Directx 12 的指南,他们说我仍然可以创建功能级别为 11_0 的设备,但是当我运行它时说它不受支持
我知道 100% 我正在使用正确的适配器,因为它说 675m
所以只是想知道是否有任何方法可以解决这个或其他方法,或者我是否只是需要一个新显卡:(
【问题讨论】:
标签: directx-12
我目前使用的是 nvidia 675M,在 Directx 11 中,我在功能级别 11_0 下运行良好
我正在关注 Directx 12 的指南,他们说我仍然可以创建功能级别为 11_0 的设备,但是当我运行它时说它不受支持
我知道 100% 我正在使用正确的适配器,因为它说 675m
所以只是想知道是否有任何方法可以解决这个或其他方法,或者我是否只是需要一个新显卡:(
【问题讨论】:
标签: directx-12
NVidia 675M 是“Fermi”GPU,NVIDIA 根据this post 应该支持 DirectX 12。 NVidia 的 DX12 驱动程序支持的最初重点是他们的 Maxwell 和 Kepler 部件,因此请与 NVidia 联系以获取支持 Fermi 的驱动程序。
要记住的另一个问题是,在具有多个显卡的系统中,您需要确保实际上选择了正确的适配器。 DirectX 12 VS templates 使用下面的代码来实现这个:
void DX::DeviceResources::GetAdapter(IDXGIAdapter1** ppAdapter)
{
*ppAdapter = nullptr;
ComPtr<IDXGIAdapter1> adapter;
for (UINT adapterIndex = 0; DXGI_ERROR_NOT_FOUND != m_dxgiFactory->EnumAdapters1(adapterIndex, adapter.ReleaseAndGetAddressOf()); ++adapterIndex)
{
DXGI_ADAPTER_DESC1 desc;
DX::ThrowIfFailed(adapter->GetDesc1(&desc));
if (desc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE)
{
// Don't select the Basic Render Driver adapter.
continue;
}
// Check to see if the adapter supports Direct3D 12, but don't create the actual device yet.
if (SUCCEEDED(D3D12CreateDevice(adapter.Get(), m_d3dMinFeatureLevel, _uuidof(ID3D12Device), nullptr)))
{
#ifdef _DEBUG
WCHAR buff[256] = {};
swprintf_s(buff, L"Direct3D Adapter (%u): VID:%04X, PID:%04X - %ls\n", adapterIndex, desc.VendorId, desc.DeviceId, desc.Description);
OutputDebugStringW(buff);
#endif
break;
}
}
#if !defined(NDEBUG)
if (!adapter)
{
// Try WARP12 instead
if (FAILED(m_dxgiFactory->EnumWarpAdapter(IID_PPV_ARGS(adapter.ReleaseAndGetAddressOf()))))
{
throw std::exception("WARP12 not available. Enable the 'Graphics Tools' feature-on-demand");
}
OutputDebugStringA("Direct3D Adapter - WARP12\n");
}
#endif
if (!adapter)
{
throw std::exception("No Direct3D 12 device found");
}
*ppAdapter = adapter.Detach();
}
【讨论】:
NVIDIA 还没有在 Fermi 上发布支持 DX12 的驱动程序,所以这行不通。
【讨论】:
Guru3D here 和 here 上的用户观察到,在当前的 R384.76 中引入了 Fermi 中对 DirectX 12 的初始支持,尽管驱动程序发行说明没有说明这一点。
您可能需要运行 3DMark Time Spy 或类似的 DirectX 12 工作负载来确认这一点。
【讨论】: