# Debug graphics issues

You can use the Snapdragon Profiler and kernel commands for performance profiling of the applications. This section describes how to collect information for profiling and debugging using the kernel commands, and how to collect logs.

Caution

Use these commands with caution because these commands may impact the power consumption of the device.

## Capture Weston/Wayland logs

You can use the Wayland/Weston logs to verify whether the display driver is loaded on the device and to find the supported OpenGL ES extensions. To capture the Weston/Wayland debug logs, run the following command before launching the Weston or any other application:

export WAYLAND_DEBUG=server/client
    Copy to clipboard

## Debug Kernel/KGSL

You can evaluate the performance of your application by adjusting the GPU to different frequency levels and setting the GPU or CPU to performance mode. Based on these evaluations, you can optimize the performance of your application.

### Set CPU to performance mode

1. Remount the file system using the following command:

mount -o remount,rw /
        Copy to clipboard
2. To set all CPU cores, replace `cpux` with `cpu0`, `cpu1`, and `cpun`.

echo 1 > /sys/devices/system/cpu/[cpux]/online
        Copy to clipboard

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
        Copy to clipboard

    **Sample output**

ondemand userspace performance schedutil
3. If any CPU clock is running at a low frequency, set the CPU to performance mode and verify the issue by running the following command:

echo performance > /sys/devices/system/cpu/[cpux]/cpufreq/scaling_governor
        Copy to clipboard
4. To validate the trial settings, run the following commands:

cat /sys/devices/system/cpu/[cpux]/online (cpux : cpu0,cpu1 …)
        Copy to clipboard

cat /sys/devices/system/cpu/[cpux]/cpufreq/scaling_governor(cpux : cpu0, cpu1 …)
        Copy to clipboard

### Set GPU frequency

1. Remount the file system using the following command:

mount -o remount,rw /
        Copy to clipboard
2. For the power level, check the `available_frequencies` sys node.

cat /sys/class/kgsl/kgsl-3d0/devfreq/available_frequencies
        Copy to clipboard

    **Sample output**

812000000 700000000 608000000 550000000 450000000 315000000

    From the sample output, you can interpret GPU power levels as:

    | **Frequency** | 812000000 | 700000000 | 608000000 | 550000000 | 450000000 | 315000000 |
    | --- | --- | --- | --- | --- | --- | --- |
    | **Power level** | 0 | 1 | 2 | 3 | 4 | 5 |
3. Increment the GPU power level by one and perform the GPU power-level test by substituting `<level>` with 0, 1, 2, 3, 4, and 5 in the following commands:

echo <level> > /sys/class/kgsl/kgsl-3d0/min_pwrlevel
        Copy to clipboard

echo <level> > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
        Copy to clipboard

Note

For QCS5430:

- The Adreno GPU frequency is fixed at 315 MHz.
- The power levels specified here aren’t supported and the output of the `available_frequencies` command displays 315000000.

### Set GPU to performance mode

- To set the GPU to performance mode, run the following commands:

mount -o remount,rw /
        echo 0 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel
        echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
        Copy to clipboard

Note

These commands force the GPU to always run at the maximum frequency.
- To ensure that the GPU doesn’t enter the low-power state even if the device is idle for 10000000 ms, run the following command:

mount -o remount,rw /
        echo 10000000 > /sys/class/kgsl/kgsl-3d0/idle_timer
        Copy to clipboard
- To set the GPU to performance mode while ensuring that the GPU doesn’t enter the low-power state, run the following commands:

mount -o remount,rw /
        echo 0 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel
        echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
        echo 10000000 > /sys/class/kgsl/kgsl-3d0/idle_timer
        Copy to clipboard

Note

QCS5430 doesn’t support performance mode because the Adreno GPU frequency is fixed at 315 MHz.

### Check other KGSL settings

- To enable the KGSL clock, run the following command:

echo 1 > /sys/class/kgsl/kgsl-3d0/force_clk_on
        Copy to clipboard
- To enable the KGSL rail, run the following command:

echo 1 > /sys/class/kgsl/kgsl-3d0/force_rail_on
        Copy to clipboard
- To enable the KGSL bus, run the following command:

echo 1 > /sys/class/kgsl/kgsl-3d0/force_bus_on
        Copy to clipboard

## Debug OpenGL ES-based applications

You can use the Snapdragon Profiler tool to capture snapshots and real-time traces of OpenGL ES applications. For more information, see [Snapdragon Profiler](https://docs.qualcomm.com/doc/80-70020-19/topic/graphics_developer_tools.html#graphics-developer-tools).

## Debug OpenCL-based applications

You can use the Snapdragon Profiler tool to capture snapshots and real-time traces of OpenCL applications.

- For more information, see [Snapdragon Profiler](https://docs.qualcomm.com/doc/80-70020-19/topic/graphics_developer_tools.html#graphics-developer-tools).
- For performance profiling, see **Performance profiling** in [Qualcomm® Snapdragon™ Mobile Platform OpenCL General Programming and Optimization Guide](https://docs.qualcomm.com/bundle/publicresource/80-NB295-11_REV_C_Qualcomm_Snapdragon_Mobile_Platform_Opencl_General_Programming_and_Optimization.pdf).

Note

Some sections in the [Qualcomm® Snapdragon™ Mobile Platform OpenCL General Programming and Optimization Guide](https://docs.qualcomm.com/bundle/publicresource/80-NB295-11_REV_C_Qualcomm_Snapdragon_Mobile_Platform_Opencl_General_Programming_and_Optimization.pdf) apply to Android platforms but not to Qualcomm Linux devices. However, some profiling options are purely based on the OpenCL API and are therefore supported on the Qualcomm Linux devices. For example, the `clGetEventProfilingInfo` API.

Last Published: Jul 27, 2025

[Previous Topic
Snapdragon Profiler tool](https://docs.qualcomm.com/bundle/publicresource/80-70020-19/topics/graphics_developer_tools.md) [Next Topic
Supported extensions](https://docs.qualcomm.com/bundle/publicresource/80-70020-19/topics/supported_extensions.md)