From Texas Instruments Wiki
Jump to: navigation, search

What is XgxPerf ?

Xgxperf logo

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 :

   * Qt [1]
   * If SGX is present on target platform, OMAP3 Graphics SDK [2]

OpenEmbedded Users

Bitbake from below recipe (recipes/ti/ti-xgxperf*)


Step 1:

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_1.0.0.0-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_1.0.0.0- r0+svnr54.5_armv7a.ipk

Step 5:

Install as

  • opkg install <ipk name>

Step 6:

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


  • [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.
  • [root@omap3evm] :/xgxperf/bin# export LD_LIBRARY_PATH=/xgxperf/bin && ./xgxperfserver -qws 8080 (IP address obtained from ifconfig, followed by a space, and port number)

Listening at IP 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 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)
  • cookie<0,1,2..>
  • <numWdgts=3,.>
  • <fx=0,1>
  • <transparency=0,1>
  • <texture=0,1,2>
  • <fontsize=8,16..>
  • <fps=1,..>
  • <prebuiltID=0,1,2,3,10>
  • <wdgtsize=100,256,512>
  • <numFrames=100,200..>
  • <appstring>

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,


OMAP3 Graphics SDK Getting Started Guide Link