From Texas Instruments Wiki
What is XgxPerf ?
Xgxperf attempts to make it easier to create,evaluate, and benchmark Graphics Applications - for developers using TI Graphics Technologies.
A block diagram of Xgxperf toolkit is provided below.
Xgxperf has 3 purposes,
1. It enables creating Graphical Interfaces of varying complexities, and measure the performance impact of the UI elements and functionalities, by creating and running the UI on an actual Target Hardware.
- Questions like "Need to find CPU load for moving a UI window at 20 fps on screen" can be answered with this tool
2. Xgxperf provides readymade applications developers and customers to start using, and extending - Text and transparent windows, Medical ECG Monitors, Automotive Tacho meter displays, Browsers, Automation HMI, Surveillance HMI, Sewing Machine HMI, 3D OpenGL API, and various ways of using Vector Graphics and PNG. Demo programs using video streaming APIs provided by SGX driver and integrated into Qt, are provided. Sample application screenshots are provided below.
3. Xgxperf allows Xtending the application, and submitting new dynamic library to be run on the Hardware, without changing any Hardware or other settings. Complete source code is provided for the benchmarking suite.
What is supported ?
Below Software platforms on Linux are supported at the moment. As more users start contributing boards and builds, this will grow.
* Qt on OMAP3 EVM (fairly easy to extend to Qt on X, with narcissus - see bitbake recipe below) * SGXPERF on OMAP3 EVM (for OpenGL/openVG performance)
Become a member of the gforge project at,
Further details of the applications are provided in this page --> XgxPerfDemos
How to setup xgxperf for my own development, on my Hardware
A reference IPK is also provided for Qt/x11:
Host system Prerequisites:
Below software installations are required on the Host :
Bitbake from below recipe (recipes/ti/ti-xgxperf*)
For Angstrom setup from scratch, use the excellent Angstrom script that includes Proxy setup among others at
Step 2: Build any image that provides Qt - X11 or Embedded versions.
Step 3: Choose the appropriate Xgxperf recipe
ti-xgxperf-qt-x11 for X11 build, or
ti-xgxperf-qt-embedded for Qt/embedded build. An X11 build is shown below.
Step 4: Bitbake as below.
- Q^oe] sh oebb.sh bitbake ti-xgxperf-qt-x11
- Q^oe] ls -l build/tmp-angstrom_2008_1/deploy/glibc/ipk/armv7a/ti-xgxperf-qt-x11_18.104.22.168-r0+svnr54.5_armv7a.ipk
-rw-r--r-- 1 prabindh prabindh 4873428 2010-07-19 20:18 build/tmp-angstrom_2008_1/deploy/glibc/ipk/armv7a/ti-xgxperf-qt-x11_22.214.171.124- r0+svnr54.5_armv7a.ipk
- opkg install <ipk name>
The application can be run by invoking "qt_e -qws" (for Qt/e) or "qt_e" (for Qt/x11) from the shell.
Sample Prebuilt ipk for qt/X11 from (outdated - use OE or SVN)
Non-OpenEmbedded build - Host side Build:
Download the source package
Get the xgxperf complete development tarball package from gforge at,
Always check the gforge site to get the latest archive on SVN. SVN access instructions are provided in this SVN_Access_Link.
Follow the below instructions to setup your development environment. All source and build files are provided, including the webserver.
- [prabu@mapplinux01 ~]$ ls xgxperf_svn73.tar.gz
- [prabu@mapplinux01 ~]$ tar -xvf xgxperf_svn73.tar.gz
- [prabu@mapplinux01 ~]$ cd xgxperf
- [prabu@mapplinux01 xgxperf]$ vi Rules.make
Update QT_CONFIG_DIR, XGXPERF_TARGETFS, HAVESGX, SGXPERF_LIBDIR, SGXPERF_SDKDIR fields
- [prabu@mapplinux01 xgxperf]$ make && make install
Target side configuration (Non-OE)
Now, switch on the target board (ex. Hawkboard, or OMAP3 EVM, and perform following actions on console prompt.
- [root@omap3evm] cd /<SOME PATH>/<XGXPERF_TARGETFS specified in Rules.make>
- [root@omap3evm] ifconfig (Get the IP address of the board - ex. 172.24.190.80)
- [root@omap3evm] :/xgxperf/bin# export LD_LIBRARY_PATH=/xgxperf/bin && ./xgxperfserver -qws 172.24.190.80 8080 (IP address obtained from ifconfig, followed by a space, and port number)
Listening at IP 172.24.190.80 at port 8080...
Setup is complete at this stage, and any network connected browser can be used to control the target Hardware now.
On Host Machine (ex, Windows Laptop, or other Linux Machine connected on the network), open a browser, and enter the same address as in previous step.
ex. in the address bar, type:
The starting webpage should look like below.
Running the xgxperf application with local server and Matrix GUI (on target)
Xgxperf test bench can be executed directly on the target without network connection,with a loopback server running. To configure this, follow below steps:
* export LD_LIBRARY_PATH=/<XGXPERF INSTALL path>/bin && ./xgxperfserver -qws 127.0.0.1 8080 (IP address, followed by a space, and port number)
Now server is running on local Target.
* Launch any Browser application with the below parameters, for example, matrix_gui can be used as below
o ./matrix_gui -qws http://localhost:8080/xgxperf.html
The above step runs the server first, then the Xgxperf client is run by the browser app (or matrix gui) directly.
Sample screenshot of xgxperfserver served html page is below.
Running the xgxperf application directly (on target)
Xgxperf test bench can be executed directly on the target - for those who would prefer a console prompt to a web page control.
After the previous build and install process, the benchmark application is copied to the /xgxperf/bin folder of the root filesystem specified.
By invoking the application, a help menu is printed. This can be used to develop new applications further.
- root@omap3evm:/xgxperf/bin# ./xgxperf_app -qws
- Usage:xgxperf_app (Application manager for Qt applications)
Will show the help on the target's console prompt.These options can be used to run the application directly on the target. For rebuilding and additional development, steps given in above section to be followed.
A brief description of the architecture is at, XgxPerfArch.
A description of the classes used for HMI development is at, XgxPerf_HMI.
Application Note on adding a new application using Xgxperf
A more detailed application note that explores how to add a new application and benchmark it, is available in (Draft) form at,