# Run sample applications

The following workflow shows how to get started with a graphics application on a Qualcomm device.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export getting-started-graphics.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="15.5833in" height="2.50694in" viewbox="0 0 1122 180.5" xml:space="preserve" color-interpolation-filters="sRGB" class="st8" aria-label="../../_images/getting-started-graphics.svg"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #f7f8fa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.5 }
.svg-1 .st2 { fill: none; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.5 }
.svg-1 .st3 { fill: #000000; font-family: Arial; font-size: 1.16666em }
.svg-1 .st4 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-1 .st5 { font-size: 1em }
.svg-1 .st6 { marker-end: url("#mrkr5-36"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.5 }
.svg-1 .st7 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.49800796812749 }
.svg-1 .st8 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend5">		<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"></path>	</g>	<marker id="mrkr5-36" class="st7" v:arrowtype="5" v:arrowsize="2" v:setback="3.514" refx="-3.514" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-2.008,-2.008) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape1009-1" v:mid="1009" v:groupcontext="shape" transform="translate(19.25,-19.25)">		<title></title>		<rect x="0" y="38.5" width="1083.5" height="142" class="st1"></rect>	</g>	<g id="shape3-3" v:mid="3" v:groupcontext="shape" transform="translate(248.125,-40.4969)">		<title></title>		<desc>Run sample applications</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="195.75" cy="129.748" width="391.5" height="101.503"></v:textrect>		<rect x="0" y="78.9969" width="391.5" height="101.503" rx="9" ry="9" class="st2"></rect>		<text x="122.99" y="112.4" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist><v:lf></v:lf>Run sample applications</text>		</g>	<g id="shape7-6" v:mid="7" v:groupcontext="shape" transform="translate(394.187,-47.5)">		<title></title>		<desc>OpenCL sample application</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="55.7171" cy="154.946" width="111.44" height="51.1072"></v:textrect>		<rect x="0" y="129.393" width="111.434" height="51.1072" rx="9" ry="9" class="st2"></rect>		<text x="12.36" y="151.35" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>OpenCL sample <tspan x="27.03" dy="1.2em" class="st5">application</tspan></text>		</g>	<g id="shape8-10" v:mid="8" v:groupcontext="shape" transform="translate(260.286,-47.5)">		<title></title>		<desc>OpenGL ES sample application</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.089" cy="154.946" width="124.18" height="51.1072"></v:textrect>		<rect x="0" y="129.393" width="124.178" height="51.1072" rx="9" ry="9" class="st2"></rect>		<text x="8.73" y="151.35" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>OpenGL ES sample <tspan x="33.4" dy="1.2em" class="st5">application</tspan></text>		</g>	<g id="shape10-14" v:mid="10" v:groupcontext="shape" transform="translate(515.875,-47.5)">		<title></title>		<desc>Vulkan sample application</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="55.7171" cy="153.38" width="111.44" height="54.2409"></v:textrect>		<rect x="0" y="126.259" width="111.434" height="54.2409" rx="9" ry="9" class="st2"></rect>		<text x="16.36" y="149.78" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Vulkan sample <tspan x="27.03" dy="1.2em" class="st5">application</tspan></text>		</g>	<g id="shape1016-18" v:mid="1016" v:groupcontext="shape" transform="translate(29.875,-40.4969)">		<title></title>		<desc>Generate Platform eSDK</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="80.1985" cy="129.748" width="160.4" height="101.503"></v:textrect>		<rect x="0" y="78.9969" width="160.397" height="101.503" rx="9" ry="9" class="st2"></rect>		<text x="23.01" y="123.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Generate Platform <tspan x="61.91" dy="1.457em" class="st5">eSDK</tspan></text>		</g>	<g id="shape1017-22" v:mid="1017" v:groupcontext="shape" transform="translate(697.978,-41.7484)">		<title></title>		<desc>Debug sample applications</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="80.1985" cy="129.748" width="160.4" height="101.503"></v:textrect>		<rect x="0" y="78.9969" width="160.397" height="101.503" rx="9" ry="9" class="st2"></rect>		<text x="35.06" y="123.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Debug sample <v:lf></v:lf><tspan x="46.73" dy="1.457em" class="st5">applications</tspan></text>		</g>	<g id="shape1018-26" v:mid="1018" v:groupcontext="shape" transform="translate(912.375,-41.7484)">		<title></title>		<desc>Run the Snapdragon Profiler tool for profiling sample applica...</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="89.9375" cy="129.748" width="179.88" height="101.503"></v:textrect>		<rect x="0" y="78.9969" width="179.875" height="101.503" rx="9" ry="9" class="st2"></rect>		<text x="25.33" y="114.75" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Run the Snapdragon  <tspan x="17.96" dy="1.2em" class="st5">Profiler tool for profiling </tspan><tspan x="28.46" dy="1.457em" class="st5">sample applications</tspan></text>		</g>	<g id="shape1022-31" v:mid="1022" v:groupcontext="shape" v:layermember="0" transform="translate(190.272,-82.2484)">		<title></title>		<path d="M0 171.5 L49.07 171.5" class="st6"></path>	</g>	<g id="shape1024-37" v:mid="1024" v:groupcontext="shape" v:layermember="0" transform="translate(639.625,-82.8742)">		<title></title>		<path d="M0 171.5 L49.57 171.5" class="st6"></path>	</g>	<g id="shape1025-42" v:mid="1025" v:groupcontext="shape" v:layermember="0" transform="translate(858.375,-83.5)">		<title></title>		<path d="M0 171.5 L45.21 171.5" class="st6"></path>	</g></g>
</svg>

**Figure : Workflow of graphics applications**

## Compile and run OpenGL ES-based applications

The Platform eSDK provides an OpenGL ES-based sample application called glmark2. This application renders a variety of scenes using OpenGL ES API.

To compile and run OpenGL ES-based applications, you must have an understanding of the [OpenGL ES API](https://registry.khronos.org/OpenGL/specs/es/3.0/es_spec_3.0.pdf).

**Prerequisites**

- Install the Platform eSDK using either of the following methods:

    - [Using Qualcomm release archive](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-51/install-sdk.html#download-qim-platform-esdk)
    - [Manually compile the Qualcomm Linux SDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/how_to.html#generate-an-esdk)
- Establish an SSH connection from the Linux host computer to the device. For instructions, see [Sign in using SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/how_to.html#use-ssh).
- Ensure that the Weston application is running. If not, start the Weston application by running the following commands:

> 
> 
> mount -o remount,rw /
>         export XDG_RUNTIME_DIR=/dev/socket/weston && mkdir -p $XDG_RUNTIME_DIR
>         weston --idle-time=0 --continue-without-input
>         Copy to clipboard
> 
> 
> For more information about the Weston application, see [Qualcomm Linux Display Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-18).

For information about the OpenGL ES extensions supported on Qualcomm Linux devices, see [EGL extensions](https://docs.qualcomm.com/doc/80-70018-19/topic/supported_extensions.html#supported-egl-client-extensions).

**Compile and run the glmark2 application**

1. To set the SDK environment on the Linux host computer, run the following command:

source environment-setup-armv8-2a-qcom-linux
        Copy to clipboard
2. To compile and generate a binary, run the following commands:

devtool modify glmark2
        devtool build glmark2
        Copy to clipboard

If you encounter any umask error, set the umask to 022.

    After successful compilation, you can find the output files in the `<path-to-installed-eSDK>/workspace/sources/glmark2/oe-workdir/image/usr/bin` directory.
3. To push the binary to the device, run the following commands:

scp -r <path-to-installed-Platform-eSDK>/workspace/sources/glmark2/oe-workdir/image/usr/bin/glmark2-es2-wayland root@[IP-address-of-device]:/tmp
        Copy to clipboard

scp -r <path-to-installed-Platform-eSDK>/workspace/sources/glmark2/oe-workdir/image/usr/share/glmark2 root@[IP-address-of-device]:/tmp
        Copy to clipboard
4. To run the application on the device, open the SSH terminal using the IP address of the device and run the following commands:

export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
        chmod 777 /tmp/glmark2-es2-wayland
        chmod -R 777 /tmp/glmark2
        cd /tmp
        ./glmark2-es2-wayland --data-path /tmp/glmark2 -b jellyfish
        Copy to clipboard

Note

To run the sample application from the UART shell, remount the file system using the following command:

mount -o remount,rw /
        Copy to clipboard

## Compile and run OpenCL-based applications

The [Adreno OpenCL SDK](https://softwarecenter.qualcomm.com/#/catalog/item/Adreno_OpenCL_SDK) has many sample applications. The steps to compile and run them are the same. You can develop several applications using the Adreno OpenCL SDK. However, consider the GPU capabilities before you compile and run applications.

Note

Currently, Qualcomm Linux supports OpenCL v2.1.

The steps to run the hello world application are as follows:

**Prerequisites**

- Install the Platform eSDK using either of the following methods:

    - [Using Qualcomm release archive](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-51/install-sdk.html#download-qim-platform-esdk)
    - [Manually compile the Qualcomm Linux SDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/how_to.html#generate-an-esdk)
- Establish an SSH connection from the Linux host computer to the device. For instructions, see [Sign in using SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/how_to.html#use-ssh).
- Download the [Adreno OpenCL SDK](https://softwarecenter.qualcomm.com/#/catalog/item/Adreno_OpenCL_SDK).

Note

You must be a registered user to download the Adreno OpenCL SDK.

For information about the OpenCL extensions supported on Qualcomm Linux devices, see [OpenCL extensions](https://docs.qualcomm.com/doc/80-70018-19/topic/supported_extensions.html#supported-opencl-extensions).

**Compile and run the hello world sample application**

1. To compile the application, run the following commands on the Linux host computer:

cd opencl-sdk
        Copy to clipboard

source <path-to-installed-Platform-eSDK>/environment-setup-armv8-2a-qcom-linux
        Copy to clipboard

cmake -B build -DCLSDK_OPENCL_LIBRARY=$OECORE_TARGET_SYSROOT/usr/lib/libOpenCL.so -DCLSDK_DMABUFHEAP_LIBRARY=$OECORE_TARGET_SYSROOT/usr/lib/libdmabufheap.so -DOPEN_EMBEDDED=1
        cmake --build build
        Copy to clipboard

    After you successfully compile the code, the system generates binary files in the `/build` directory.
2. To run the application, open the SSH terminal using the IP address of the device and run the following commands:

mkdir -p /opt/data
        mkdir -p /opt/data/opencl
        Copy to clipboard

Note

To run the sample application from the UART shell, remount the file system using the following command:

mount -o remount,rw /
        Copy to clipboard
3. To push the binary to the device, run the following commands:

scp -r <opencl-sdk>/build/* root@[IP-address-of-the device]:/opt/data/opencl/
        Copy to clipboard

scp -r <opencl-sdk>/example_images/* root@[IP-address-of-the device]:/opt/data/opencl/
        Copy to clipboard
4. To start the application, run the following commands on the device using the SSH terminal:

cd /opt/data/opencl/
        mkdir out
        chmod 777 ./*
        echo "run hello world 2.0 opencl sdk" > hello_world_input.txt
        touch out/hello_world_output.txt
        cat out/hello_world_output.txt
        ./cl_sdk_hello_world hello_world_input.txt out/hello_world_output.txt
        cat out/hello_world_output.txt
        Copy to clipboard

## Compile and run Vulkan-based applications

The Adreno SDK has many sample applications based on Vulkan. The steps to compile and run any Vulkan-based application are the same. You can develop Vulkan-based applications using the Adreno SDK. To compile and run these applications, refer to the following procedures. As an example, this section describes the steps to run Sascha Willems and Khronos Vulkan-based applications.

### Compile and run Sascha Willems Vulkan-based applications

You can find the Sascha Willems Vulkan sample applications at [https://github.com/SaschaWillems/Vulkan.git](https://github.com/SaschaWillems/Vulkan.git). The steps to compile and run any Sascha Willems Vulkan application are the same.

For information about the Vulkan extensions supported on Qualcomm Linux devices, see [Vulkan extensions](https://docs.qualcomm.com/doc/80-70018-19/topic/supported_extensions.html#supported-vulkan-extensions).

**Prerequisites**

- Install the Platform eSDK using either of the following methods:

    - [Using Qualcomm release archive](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-51/install-sdk.html#download-qim-platform-esdk)
    - [Manually compile the Qualcomm Linux SDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/how_to.html#generate-an-esdk)
- Establish an SSH connection from the Linux host computer to the device. For instructions, see [Sign in using SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/how_to.html#use-ssh).

**Steps to compile and run the triangle bin sample application**

1. To compile the application, run the following commands on the Linux host computer:

git clone --recurse-submodules https://github.com/SaschaWillems/Vulkan.git
        cd Vulkan
        Copy to clipboard

source <path-to-installed-Platform-eSDK>/environment-setup-armv8-2a-qcom-linux
        Copy to clipboard

cmake -G "Unix Makefiles" -Bbuild/linux -DUSE_WAYLAND_WSI=ON -DRESOURCE_INSTALL_DIR="/tmp/"
        cmake --build build/linux --config Release  -j$(nproc)
        Copy to clipboard

    After successful compilation, you can find the binary files in the `build/linux/bin` directory.
2. To push the binary to the device, run the following commands:

cd Vulkan
        Copy to clipboard

scp -r assets root@[IP-address-of-device]:/tmp/
        Copy to clipboard

scp -r shaders root@[IP-address-of-device]:/tmp/
        Copy to clipboard

scp -r build/linux/bin/triangle root@[IP-address-of-device]:/tmp/
        Copy to clipboard
3. To run the application, open the SSH terminal using the IP address of the device and run the following commands:

cd /tmp
        chmod -R 777 assets/
        chmod -R 777 shaders/
        chmod 777 triangle
        export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
        ./triangle
        Copy to clipboard

### Compile and run Khronos Vulkan-based applications

You can find the Khronos Vulkan-based applications at [https://github.com/KhronosGroup/Vulkan-Samples.git](https://github.com/KhronosGroup/Vulkan-Samples.git). The steps to compile and run any Khronos Vulkan-based application are the same.

For information about the Vulkan extensions supported on Qualcomm Linux devices, see [Vulkan extensions](https://docs.qualcomm.com/doc/80-70018-19/topic/supported_extensions.html#supported-vulkan-extensions).

**Prerequisites**

- Install the Platform eSDK using either of the following methods:

    - [Using Qualcomm release archive](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-51/install-sdk.html#download-qim-platform-esdk)
    - [Manually compile the Qualcomm Linux SDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/how_to.html#generate-an-esdk)
- Establish an SSH connection from the Linux host computer to the device. For instructions, see [Sign in using SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/how_to.html#use-ssh).

**Steps to compile and run the vulkan\_samples application**

1. To compile the application, run the following commands on the Linux host computer:

sudo apt-get install -y libwayland-dev
        git clone --recurse-submodules https://github.com/KhronosGroup/Vulkan-Samples.git
        cd Vulkan-Samples/
        Copy to clipboard

source <path-to-installed-Platform-eSDK>/environment-setup-armv8-2a-qcom-linux
        Copy to clipboard

cmake -G "Unix Makefiles" -Bbuild/linux -DCMAKE_BUILD_TYPE=Release -DVKB_WSI_SELECTION=WAYLAND -DGLFW_BUILD_X11=OFF
        Copy to clipboard

    If the compilation fails, do the following:

    1. Open the `Vulkan-Samples/build/linux/CmakeCache.txt` file.
    2. Change `GLFW_BUILD_X11` to `OFF`.
2. To generate the binary files, run the following command:

cmake --build build/linux --config Release --target vulkan_samples -j$(nproc)
        Copy to clipboard

    After successful compilation, you can find the binary files in the `Vulkan-Samples/build/linux/app/bin/Release/aarch64` directory.
3. To push the binary to the device, run the following commands:

cd Vulkan-Samples
        Copy to clipboard

scp -r assets root@[IP-address-of-device]:/tmp/
        Copy to clipboard

scp -r shaders root@[IP-address-of-device]:/tmp/
        Copy to clipboard

scp -r build/linux/app/bin/Release/aarch64/vulkan_samples root@[IP-address-of-device]:/tmp/
        Copy to clipboard
4. To run the application, open the SSH terminal using the IP address of the device and run the following commands:

cd /tmp
        chmod -R 777 assets/
        chmod -R 777 shaders/
        chmod 777 vulkan_samples
        export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
        ./vulkan_samples sample swapchain_images
        Copy to clipboard

Note

If you are facing issues compiling the application or running it, use the following commands to checkout the specific version. Later, repeat the steps from 2 to 4 and recompile the application and run.

git checkout b3cb3822e8896ab650c4310f2c5f66a101469e9e
        git submodule sync
        git submodule update
        Copy to clipboard

If you are unable to run these sample applications from the `/tmp` directory due to storage issues, try alternative directories such as `/etc`.

## Compile and run X11-based applications

The X11 applications are graphical programs designed for the X Window system, a widely used display protocol on Linux and other Unix-like OS.

**Prerequisites**

- Install the Platform eSDK using either of the following methods:

    - [Using Qualcomm release archive](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-51/install-sdk.html#download-qim-platform-esdk)
    - [Manually compile the Qualcomm Linux SDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/how_to.html#generate-an-esdk)
- Establish an SSH connection from the Linux host computer to the device. For instructions, see [Sign in using SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/how_to.html#use-ssh).
- Install X11-related binaries from the following Gitlab sites:

> 
> 
> - Install libXt (X Toolkit Intrinsics)
> 
> 
> 
> > 
> > 
> > git clone https://gitlab.freedesktop.org/xorg/lib/libxt.git
> >             cd libxt
> >             Copy to clipboard
> > 
> > 
> > source <path-to-installed-Platform-eSDK>/environment-setup-armv8-2a-qcom-linux
> >             Copy to clipboard
> > 
> > 
> > ./autogen.sh --host=aarch64-linux-gnu --prefix=<path-to-installed-Platform-eSDK>/tmp/sysroots/qcs6490-rb3gen2-core-kit/usr
> >             Copy to clipboard
> > 
> > 
> > ./configure --host=aarch64-linux-gnu --prefix=<path-to-installed-Platform-eSDK>/tmp/sysroots/qcs6490-rb3gen2-core-kit/usr
> >             Copy to clipboard
> > 
> > 
> > make
> >             make install
> >             cd src/.libs/
> >             Copy to clipboard
> > 
> > 
> > cp -r libX* <path-to-installed-Platform-eSDK>/tmp/sysroots/qcs6490-rb3gen2-core-kit/usr/lib
> >             Copy to clipboard
> > 
> > 
> > cd ../../..
> >             Copy to clipboard
>     - Install libxmu (Miscellaneous utility functions for X11)
> 
> 
> 
> > 
> > 
> > git clone https://gitlab.freedesktop.org/xorg/lib/libxmu.git
> >             cd libxmu
> >             Copy to clipboard
> > 
> > 
> > source <path-to-installed-Platform-eSDK>/environment-setup-armv8-2a-qcom-linux
> >             Copy to clipboard
> > 
> > 
> > ./autogen.sh --host=aarch64-linux-gnu --prefix=<path-to-installed-Platform-eSDK>/tmp/sysroots/qcs6490-rb3gen2-core-kit/usr
> >             Copy to clipboard
> > 
> > 
> > ./configure --host=aarch64-linux-gnu --prefix=<path-to-installed-Platform-eSDK>/tmp/sysroots/qcs6490-rb3gen2-core-kit/usr
> >             Copy to clipboard
> > 
> > 
> > make
> >             make install
> >             cd src/.libs/
> >             Copy to clipboard
> > 
> > 
> > cp -r libX* <path-to-installed-Platform-eSDK>/tmp/sysroots/qcs6490-rb3gen2-core-kit/usr/lib
> >             Copy to clipboard
> > 
> > 
> > cd ../../..
> >             Copy to clipboard
>     - Install X development libraries for host computer
> 
> 
> 
> > 
> > 
> > sudo apt-get install xorg-dev
> >             Copy to clipboard

**Compile and run the X11-based application**

1. To compile the Xeyes application, run the following commands:

> 
> 
> git clone https://gitlab.freedesktop.org/xorg/app/xeyes.git
>         cd xeyes
>         Copy to clipboard
> 
> 
> source <path-to-installed-Platform-eSDK>/environment-setup-armv8-2a-qcom-linux
>         Copy to clipboard
> 
> 
> ./autogen.sh --host=aarch64-linux-gnu
>         make
>         Copy to clipboard
2. Open new SSH terminal using the IP address of the device and run the following commands:

> 
> 
> killall weston
>         export XDG_RUNTIME_DIR=/dev/socket/weston && mkdir -p $XDG_RUNTIME_DIR && weston --continue-without-input --idle-time=0 --backend=drm-backend.so --xwayland
>         Copy to clipboard
3. Open the original terminal where Xeyes has been compiled and run the following commands:

scp -r xeyes/ root@[IP-address-of-device]:/etc/data
        Copy to clipboard

scp -r <path-to-installed-Platform-eSDK>/tmp/sysroots/qcs6490-rb3gen2-core-kit/usr/lib/ root@[IP-address-of-device]:/etc/data
        Copy to clipboard
4. To run the application on the device, open the SSH terminal using the IP address of the device and run the following commands:

. /etc/profile
        export XDG_RUNTIME_DIR=/dev/socket/weston
        mkdir --parents $XDG_RUNTIME_DIR
        chmod 0700 $XDG_RUNTIME_DIR
        export WAYLAND_DISPLAY=wayland-1
        export DISPLAY=:0
        export LD_LIBRARY_PATH=/etc/data/lib
        cd /etc/data/xeyes
        ./xeyes
        Copy to clipboard

Last Published: May 09, 2025

[Previous Topic
Graphics overview](https://docs.qualcomm.com/bundle/publicresource/80-70018-19/topics/graphics-overview.md) [Next Topic
Snapdragon Profiler tool](https://docs.qualcomm.com/bundle/publicresource/80-70018-19/topics/graphics_developer_tools.md)