WVR_EnableAdaptiveQuality

WVR_EXPORT bool WVR_EnableAdaptiveQuality(bool enable, uint32_t strategyFlags = WVR_QualityStrategy_Default)

Enables the adaptive render quality and CPU/GPU performance level.

Use this API to allow the WaveVR SDK runtime to adjust CPU/GPU performance level automatically. It will use the strategies to improve the FPS when rendering performance is insufficient.

If WVR_QualityStrategy is not specified, “WVR_QualityStrategy_Default” is used to adjust the CPU/GPU performance level based on the system workload only.

Return
true if enableAdaptiveQuality is successful, otherwise return false.
Version
API Level 4
Note
Supported since Runtime version 4 or higher.
Parameters
  • enable: Boolean to enable/disable WaveVR AdaptiveQuality.
  • strategyFlags: “bitwise-or” flags used to select strategies to improve the FPS when the rendering performance is insufficient.

Struct and enumeration

The enum WVR_QualityStrategy is defined as:

enum WVR_QualityStrategy

The folowing flags describe the strategies used by AdaptiveQuality when rendering quality is insufficent.

Values:

WVR_QualityStrategy_Default = 1

WVR_QualityStrategy_Default: Automatically adjusts CPU/GPU performance level if needed. This flag is always On.

WVR_QualityStrategy_SendQualityEvent = 1 << 1

WVR_QualityStrategy_QualityHint: Specify if it is needed to send events when the recommended quality has changed..

WVR_QualityStrategy_AutoFoveation = 1 << 2

WVR_QualityStrategy_AutoFoveation: Automatically enable/disable foveation rendering if needed.

WVR_QualityStrategy_AutoAMC = 1 << 3

WVR_QualityStrategy_AutoAMC: Experimental function

WVR_QualityStrategy_Reserved_2 = 1 << 28

WVR_QualityStrategy_Reserved_2: System reserved.

WVR_QualityStrategy_Reserved_1 = 1 << 29

WVR_QualityStrategy_Reserved_1: System reserved.

WVR_QualityStrategy_Reserved = 1 << 30

WVR_QualityStrategy_Reserved: System reserved.

How to use

The following is an example of this function:

#include <wvr/wvr_system.h>

// Enable WVR_EnableAdaptiveQuality
bool result = WVR_EnableAdaptiveQuality(true);
if (result)
    LOGI("Setting WVR_EnableAdaptiveQuality is done.");
else
    LOGE("Setting WVR_EnableAdaptiveQuality is failed");

// Disable WVR_EnableAdaptiveQuality
result = WVR_EnableAdaptiveQuality(false);

// Enable WVR_EnableAdaptiveQuality with "SendQualityEvent" strategy.
// (Support on SDK3.2.0 or later).
result = WVR_EnableAdaptiveQuality(true, WVR_QualityStrategy_SendQualityEvent);

// Enable WVR_EnableAdaptiveQuality with "SendQualityEvent" and "AutoFoveation" strategies. (Support on SDK3.2.0 or later).
result = WVR_EnableAdaptiveQuality(true, WVR_QualityStrategy_SendQualityEvent | WVR_QualityStrategy_AutoFoveation);

The API can be used to allow the WaveVR runtime to adjust the system performance automatically.

Starting from WaveVR SDK 3.2.0, this API will support specifying the WVR_QualityStrategy.

Note

The behaviors differ based on the WaveVR SDK version used to build the app.

WaveVR SDK 3.1.1 to 3.1.6: WVR_EnableAdaptiveQuality(true) allows the WaveVR runtime to adjust the CPU/GPU performance level automatically and send events when the recommended quality changes based on the system workload.

WaveVR SDK 3.2.0 or later: WVR_EnableAdaptiveQuality(true), without assigning any strategies, will only allow the WaveVR runtime to adjust the CPU/GPU performance level automatically.

Note

WVR_EnableAdaptiveQuality must be used after WVR_RenderInit is invoked.