# AdaptivePerformanceSubsystemBase<TSubsystem, TSubsystemDescriptor, TProvider>

> Base class for subsystems to create your custom provider subsystem to deliver data from your provider to Adaptive Performance.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine.AdaptivePerformance.Provider](/engine/6000.5/script-reference/unityengine/adaptiveperformance/provider.md)
* **Assembly:** UnityEngine.AdaptivePerformanceModule
* **Inherits from:** [SubsystemWithProvider\<T, T, T>](/engine/6000.5/script-reference/unityengine/subsystemsimplementation/subsystemwithprovider.md)
* **Implements:** [ISubsystem](/engine/6000.5/script-reference/unityengine/isubsystem.md)

```csharp
public abstract class AdaptivePerformanceSubsystemBase<TSubsystem, TSubsystemDescriptor, TProvider> : SubsystemWithProvider<TSubsystem, TSubsystemDescriptor, TProvider>, ISubsystem where TSubsystem : SubsystemWithProvider, new() where TSubsystemDescriptor : SubsystemDescriptorWithProvider where TProvider : SubsystemProvider<TSubsystem>
```

## Properties

| Property                                                                                                                                                         | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [ApplicationLifecycle](/engine/6000.5/script-reference/unityengine/adaptiveperformance/provider/adaptiveperformancesubsystembase3/applicationlifecycle.md)       | Application lifecycle events to be consumed by subsystem. Can be null if the subsystem does not need special handling on life-cycle events. The returned reference does not change after startup.                                                                                                                                                                                                                                                                                                                                                                                                             |
| [Capabilities](/engine/6000.5/script-reference/unityengine/adaptiveperformance/provider/adaptiveperformancesubsystembase3/capabilities.md)                       | Bitset of supported features. Does not change after startup.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| [Initialized](/engine/6000.5/script-reference/unityengine/adaptiveperformance/provider/adaptiveperformancesubsystembase3/initialized.md)                         | Returns if the subsystem is initialized successfully.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| [PerformanceLevelControl](/engine/6000.5/script-reference/unityengine/adaptiveperformance/provider/adaptiveperformancesubsystembase3/performancelevelcontrol.md) | Control CPU or GPU performance levels of the device. Can be null if the subsystem does not support controlling CPU/GPU performance levels. Is null when the [Feature.PerformanceLevelControl](/engine/6000.5/script-reference/unityengine/adaptiveperformance/provider/feature/performancelevelcontrol.md) bit is not set in [AdaptivePerformanceSubsystemBase\<TSubsystem, TSubsystemDescriptor, TProvider>.Capabilities](/engine/6000.5/script-reference/unityengine/adaptiveperformance/provider/adaptiveperformancesubsystembase3/capabilities.md). The returned reference does not change after startup. |
| [Stats](/engine/6000.5/script-reference/unityengine/adaptiveperformance/provider/adaptiveperformancesubsystembase3/stats.md)                                     | Generates a human readable string of subsystem internal stats. Optional and only used for development.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| [Version](/engine/6000.5/script-reference/unityengine/adaptiveperformance/provider/adaptiveperformancesubsystembase3/version.md)                                 | Returns the version of the subsystem implementation. Can be used together with SubsystemDescriptor to identify a subsystem.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

## Methods

| Method                                                                                                                         | Description                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Update](/engine/6000.5/script-reference/unityengine/adaptiveperformance/provider/adaptiveperformancesubsystembase3/update.md) | To be called once per frame. The returned data structure's fields are populated with the latest available data, according to the supported [AdaptivePerformanceSubsystemBase\<TSubsystem, TSubsystemDescriptor, TProvider>.Capabilities](/engine/6000.5/script-reference/unityengine/adaptiveperformance/provider/adaptiveperformancesubsystembase3/capabilities.md). |

## Inheritance

**Inherited Members:**

* [SubsystemWithProvider.Start()](/engine/6000.5/script-reference/unityengine/subsystemsimplementation/subsystemwithprovider/start.md)
* [SubsystemWithProvider.Stop()](/engine/6000.5/script-reference/unityengine/subsystemsimplementation/subsystemwithprovider/stop.md)
* [SubsystemWithProvider.Destroy()](/engine/6000.5/script-reference/unityengine/subsystemsimplementation/subsystemwithprovider/destroy.md)
* [SubsystemWithProvider.running](/engine/6000.5/script-reference/unityengine/subsystemsimplementation/subsystemwithprovider/running.md)
