stride3d/stride · error · InvalidOperationException
None of the graphics profiles
Error message
None of the graphics profiles [{notSupportedProfiles}] are supported by the Graphics Device. The highest available profile is [{availableGraphicsProfile}]. What it means
GraphicsDeviceManager.FindBestDevice throws this when no device was found and none of the profiles listed in PreferredGraphicsProfile are supported by the available hardware/driver. It reports the highest profile the device actually supports so the developer can lower their requirements. Stride checks profile support only after a failed device search because the query is expensive.
Solutions
- Lower the PreferredGraphicsProfile list to include profiles at or below the reported highest available profile (e.g. add GraphicsProfile.Level_10_0 or Level_9_1).
- Update the GPU driver, or run on physical hardware with adequate DirectX support instead of a VM/RDP session.
- Verify with the reported availableGraphicsProfile and set graphicsDeviceManager.PreferredGraphicsProfile accordingly before calling Run.
Example fix
// before
gdm.PreferredGraphicsProfile = new[] { GraphicsProfile.Level_11_1 };
// after
gdm.PreferredGraphicsProfile = new[] { GraphicsProfile.Level_11_1, GraphicsProfile.Level_10_0 }; Defensive patterns
Strategy: fallback
Validate before calling
// before Run: probe the max supported profile via the manager's
// IsPreferredProfileAvailable if accessible, else request a low floor:
gdm.PreferredGraphicsProfile = new[] {
GraphicsProfile.Level_11_1, GraphicsProfile.Level_10_0, GraphicsProfile.Level_9_1 }; Try / catch
try { game.Run(); }
catch (InvalidOperationException ex) when (ex.Message.StartsWith("None of the graphics profiles"))
{
// parse the reported highest available profile and lower requirements
logger.LogWarning(ex.Message);
} Prevention
- Always include a low GraphicsProfile (Level_9_1/10_0) as a fallback in PreferredGraphicsProfile.
- Test on VMs, RDP and low-end GPUs before release.
- Keep GPU drivers current on target machines.
When it happens
Trigger: CreateDevice/FindBestDevice runs, enumerates devices, finds none compatible, and IsPreferredProfileAvailable confirms the device's max profile is below every entry in preferredParameters.PreferredGraphicsProfile (e.g. requesting Level_11_1 on hardware limited to Level_10_0 or FL9_1).
Common situations: Running on old GPUs or virtual machines (no D3D11 support), remote desktop sessions without GPU, outdated drivers, or requesting a high profile like Level_12_0 on a machine that only has DirectX 11.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- No compatible screen modes found after ranking
- The length of the destination data buffer is larger than…
- A overlaps with another element. Check the element's offset
- A region can only be specified for Textures with…
- adapter
AI-assisted analysis of stride3d/stride@96fad776d2 (2026-09-14).
Data as JSON: /api/errors/3708fc30c7e8ad73.
Report an issue: GitHub.
Appendix: source
Thrown at sources/engine/Stride.Games/GraphicsDeviceManager.cs:684
: preferredParameters.PreferredBackBufferFormat.ToNonSRgb();
// Setup resized value if there is a resize pending
if (!IsFullScreen && isBackBufferToResize)
{
preferredParameters.PreferredBackBufferWidth = resizedBackBufferWidth;
preferredParameters.PreferredBackBufferHeight = resizedBackBufferHeight;
}
var devices = graphicsDeviceFactory.FindBestDevices(preferredParameters);
if (devices.Count == 0)
{
// Nothing was found; first, let's check if graphics profile was actually supported
// NOTE: We don't do this preemptively because in some cases it seems to take lot of time
// (happened on a test machine, several seconds freeze on ID3D11Device.Release())
if (!IsPreferredProfileAvailable(preferredParameters.PreferredGraphicsProfile, out var availableGraphicsProfile))
{
var notSupportedProfiles = string.Join(", ", preferredParameters.PreferredGraphicsProfile);
throw new InvalidOperationException($"None of the graphics profiles [{notSupportedProfiles}] are supported by the Graphics Device. " +
$"The highest available profile is [{availableGraphicsProfile}].");
}
// Otherwise, there was just no screen mode
throw new InvalidOperationException("No compatible screen mode found");
}
RankDevices(devices);
if (devices.Count == 0)
{
throw new InvalidOperationException("No compatible screen modes found after ranking");
}
return devices[0];
}
/// <summary>
/// Ranks a list of <see cref="GraphicsDeviceInformation"/>s before creating a new Graphics Device.View on GitHub (pinned to 96fad776d2)