# Check for feature support

> Verify if your device supports a specific Adaptive Performance feature.

Verify if your device supports a specific Adaptive Performance capability.

Adaptive Performance comes with different features. You can check which features a device supports using [`IAdaptivePerformance.SupportedFeature`](/engine/6000.7/script-reference/unityengine/adaptiveperformance/iadaptiveperformance/supportedfeature.md). For available provider features, refer to the [`Feature`](/engine/6000.7/script-reference/unityengine/adaptiveperformance/provider/feature.md) enumeration.

The following example checks for the [`Feature.ClusterInfo`](/engine/6000.7/script-reference/unityengine/adaptiveperformance/provider/feature/clusterinfo.md):

```lang-cs
using UnityEngine;
using UnityEngine.AdaptivePerformance;
using UnityEngine.AdaptivePerformance.Provider;

public class AdaptivePerformanceFeatureChecker : MonoBehaviour
{
    // Declare 'ap' as a private class-level field to hold the IAdaptivePerformance instance.
    private IAdaptivePerformance ap;

    void Start()
    {
        // Get the Adaptive Performance instance.
        ap = Holder.Instance;

        // Check if Adaptive Performance is active.
        if (ap == null || !ap.Active)
        {
            Debug.Log("[AP ClusterInfo] Adaptive Performance not active.");
            return;
        }
        // Check if the ClusterInfo feature is supported by the active provider.
        if (!ap.SupportedFeature(Feature.ClusterInfo))
        {
            Debug.Log("[AP ClusterInfo] Feature not supported.");
        }
        // Access ClusterInfo metrics if the feature is supported.
        var clusterInfo = ap.PerformanceStatus.PerformanceMetrics.ClusterInfo;
    }
}
```

Check [`Feature.LowPowerMode`](/engine/6000.7/script-reference/unityengine/adaptiveperformance/provider/feature.md) and [`Feature.EnergyEfficiencyMode`](/engine/6000.7/script-reference/unityengine/adaptiveperformance/provider/feature.md) before using power-related features, because support varies by provider. For the full support matrix, refer to [Feature support by provider](/engine/6000.7/manual/analysis/runtime-performance-scaling/adaptive-performance/get-started/supported-features.md).

## Additional resources

* [Scripting with Adaptive Performance](/engine/6000.7/manual/analysis/runtime-performance-scaling/adaptive-performance/get-started/scripting-api.md)
* [Introduction to providers](/engine/6000.7/manual/analysis/runtime-performance-scaling/adaptive-performance/get-started/providers/introduction.md)
* [Track timing and thermal data](/engine/6000.7/manual/analysis/runtime-performance-scaling/adaptive-performance/performance-metrics/track-timing-thermal-data.md)
* [Adaptive Performance Device Simulator plug-in reference](/engine/6000.7/manual/analysis/runtime-performance-scaling/adaptive-performance/performance-optimization-strategies/device-simulator-reference.md)
* [Operation modes](/engine/6000.7/manual/analysis/runtime-performance-scaling/adaptive-performance/performance-optimization-strategies/operation-modes.md)
