/// <summary> /// Gets the highest supported hardware feature level of the primary adapter. /// </summary> /// <param name="adapter">The <see cref="IDXGIAdapter"/>.</param> /// <returns>The highest supported hardware feature level.</returns> public static FeatureLevel GetSupportedFeatureLevel(IDXGIAdapter adapter) { var featureLevel = FeatureLevel.Level_9_1; ID3D11Device device = null; ID3D11DeviceContext context = null; try { D3D11CreateDevice( adapter, DriverType.Unknown, IntPtr.Zero, 0, null, 0, SdkVersion, out device, out featureLevel, out context); } finally { context?.Dispose(); device?.Dispose(); } return(featureLevel); }
public static Result D3D11CreateDevice(IDXGIAdapter adapter, DriverType driverType, DeviceCreationFlags flags, FeatureLevel[] featureLevels, out ID3D11Device device) { ID3D11DeviceContext context = null; try { return(D3D11CreateDevice(adapter, driverType, flags, featureLevels, out device, out var featureLevel, out context)); } finally { context?.Dispose(); } }
/// <summary> /// Check if a feature level is supported by a particular adapter. /// </summary> /// <param name="adapter">The adapter.</param> /// <param name="featureLevel">The feature level.</param> /// <returns><c>true</c> if the specified adapter is supporting this feature level; otherwise, <c>false</c>.</returns> public static bool IsSupportedFeatureLevel(IDXGIAdapter adapter, FeatureLevel featureLevel) { ID3D11Device device = null; ID3D11DeviceContext context = null; try { var result = D3D11CreateDevice( adapter, DriverType.Unknown, IntPtr.Zero, 0, new[] { featureLevel }, 1, SdkVersion, out device, out var outputLevel, out context); return(result.Success && outputLevel == featureLevel); } finally { context?.Dispose(); device?.Dispose(); } }