This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Continuing Issues with Qt with OpenGL Support

Guru 10685 points
Other Parts Discussed in Thread: UKERNEL

I've just built the SGX Graphics SDK version 4.04.00.03. I have a TI8168 EVM.

I've built Qt embedded commerical 4.7.2 against this graphics SDK using gfx_dbg_es6.x..

When I copy all the files to the target and run this command on the Qt demos, I just end up with a Qt window on the HDMI output with a black rectangle in:

 /examples/opengl/hellogl_es2/hellogl_es2 -qws -driver powervr
PVR: Hint: Setting WindowSystem to libpvrQWSWSEGL.so
PVR:(Warning): PVRSRVMetricsTimeNow: not implemented [120, /pvr_metrics.c]
PVR:(Warning): InitContext: ignoring buffer type CBUF_TYPE_PDS_VERT_SECONDARY_PREGEN_BUFFER [717, eglglue.c]
PVR:(Warning): Running StartUpMemSpeedTest. High memory watermark will be ruined. Disable using apphint EnableMemorySpeedTest [57, metrics.c]
PVR: Bytes  :    512    1024    2048    4096    8192   16384   32768   65536  131072
PVR: ---------------|-------|-------|-------|-------|-------|-------|-------|-------|
PVR: H -> VB: 160.01  320.03  640.06  426.71  853.41  853.41  930.99  930.99 1050.35
PVR: H ->  H:   0.00  320.03    0.00 1280.12 2560.23 1280.12 1137.88 1077.99 1107.13
PVR:
PVR:  Texture allocation HWM = 8 bytes
PVR:(Warning): HW Recovery stats: Host: 0        uKernel: 0 [131, /sgxrender_context.c]
PVR:
PVR: Memory Stats
PVR: ------------
PVR:
PVR: High Water Mark = 2132113 bytes
PVR:
PVR: 4104 bytes still allocated in 1 allocations
PVR:
PVR: 1   -  4104 bytes at 0x24578 - tls.c:49
PVR:
PVR:

Here's my output of the "gfx_check.sh" script. The 3D-only SGX demos run fine (e.g. Skybox, etc).

# ./gfx_check.sh
WSEGL settings
[default]
#WindowSystem=libpvrPVR2D_FRONTWSEGL.so
#WindowSystem=libpvrPVR2D_FLIPWSEGL.so
WindowSystem=libpvrQWSWSEGL.so
------
ARM CPU information
Processor       : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 986.31
Features        : swp half thumb fastmult vfp edsp neon vfpv3
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x3
CPU part        : 0xc08
CPU revision    : 2

Hardware        : ti8168evm
Revision        : 0000
Serial          : 0000000000000000
------
SGX driver information
Version 1.6.16.4117 (debug) /home/ralph/ezsdk/ti-ezsdk_dm816x-evm_5_02_01_59/component-sources/graphics-sdk_4.04.00.03/GFX_Linux_KM
System Version String: SGX revision = 1.2.5
------
Framebuffer settings

mode "1920x1080-60"
    # D: 148.500 MHz, H: 67.500 kHz, V: 60.000 Hz
    geometry 1920 1080 1920 3240 32
    timings 6734 148 88 36 4 44 5
    rgba 8/16,8/8,8/0,8/24
endmode

Frame buffer device information:
    Name        : ti81xxfb
    Address     : 0x8ce00000
    Size        : 25165824
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 1
    YPanStep    : 1
    YWrapStep   : 0
    LineLength  : 7680
    Accelerator : No
------
Rotation settings
0
------
Kernel Module information
Module                  Size  Used by    Not tainted
bufferclass_ti          4946  0
omaplfb                10762  0
pvrsrvkm              381012  2 bufferclass_ti,omaplfb
ti81xxhdmi             12992  0
ti81xxfb               20247  1
vpss                   61787  3 omaplfb,ti81xxhdmi,ti81xxfb
syslink              1108175  0
------
Boot settings
console=ttyO2,115200n8 root=/dev/nfs nfsroot=10.0.0.2:/home/ralph/rootfs mem=256MB@0x80000000 earlyprink notifyk.vpssm3_sva=0xBF900000 vram=50M ti816xfb.vram=0:16M,1:16M,2:6M ip=dhcp noinitrd
------
Linux Kernel version
Linux buildroot 2.6.37 #1 Mon Sep 5 14:35:41 BST 2011 armv7l GNU/Linux

Any ideas what's going wrong?

Thanks,
Ralph

  • Ralph,

    You need a patch to use Qt with the latest SGX PowerVR drivers. Please refer to the following post:

    http://tigraphics.blogspot.com/2011/06/qtopengles-with-latest-sgx-powervr.html

    Please apply the given patch and rebuild Qt. You can run the hellogl_es2 application as follows:

    hellogl_es2 -qws -display powervr

    Regards,

    Anand Balagopalakrishnan

  • Hi, I've already done this. I used this download instead, https://gforge.ti.com/gf/download/docmanfileversion/264/4456/qt_wsegl_1.6.tar.gz but the contents is the same:

    I had a second attempt all the same and instead of a black rectangle I get a green one. Here is the text output:

    # /examples/opengl/hellogl_es2/hellogl_es2 -qws -display powervr
    PVR: Hint: Setting WindowSystem to libpvrQWSWSEGL.so
    PVR:(Warning): PVRSRVMetricsTimeNow: not implemented [120, /pvr_metrics.c]
    PVR:
    PVR: Memory Stats
    PVR: ------------
    PVR:
    PVR: High Water Mark = 4104 bytes
    PVR:
    PVR: 4104 bytes still allocated in 1 allocations
    PVR: PVR_K:(Error): PVRSRVCreateDCSwapChainKM: Failed to create 3rd party SwapChain [1091, home/ralphc/ezsdk/ti-ezsdk_dm816x-evm_5_02_01_59/component-sources/graphics-sdk_4
    .04.00.03/GFX_Linux_KM/services4/srvkm/common/deviceclass.c]

    PVR: 1   -  4104 bytes at 0x535b0 - tls.c:49
    PVR:
    PVR:(Warning): PVR2DEnumerateDevices: display device name too long, truncating [161, /pvr2dinit.c]
    PVR:
    PVR: Memory Stats
    PVR: ------------
    PVR:
    PVR: High Water Mark = 4104 bytes
    PVR:
    PVR: 4104 bytes still allocated in 1 allocations
    PVR:
    PVR: 1   -  4104 bytes at 0x535b0 - tls.c:49
    PVR:
    PVR:(Error): PVRSRVCreateDCSwapChain: Error - 3 returned [512, /bridged_pvr_dc_glue.c]
    PVR:(Error): PVR2DCreateFlipChain: can't create flipchain [217, /pvr2dflip.c]
    PVR:(Warning): InitContext: ignoring buffer type CBUF_TYPE_PDS_VERT_SECONDARY_PREGEN_BUFFER [717, eglglue.c]
    PVR:(Warning): Running StartUpMemSpeedTest. High memory watermark will be ruined. Disable using apphint EnableMemorySpeedTest [57, metrics.c]
    PVR: Bytes  :    512    1024    2048    4096    8192   16384   32768   65536  131072
    PVR: ---------------|-------|-------|-------|-------|-------|-------|-------|-------|
    PVR: H -> VB:   0.00  320.03  640.06 1280.12 1280.12 1280.12 1137.88 1024.09  999.12
    PVR: H ->  H:   0.00    0.00    0.00 1280.12 1280.12 1280.12 1280.12 1077.99 1050.35
    QEglContext::createSurface(): Unable to create EGL surface, error = 0x3001
    PVR:
    PVR:  Texture allocation HWM = 8 bytes
    PVR:(Warning): HW Recovery stats: Host: 0        uKernel: 0 [131, /sgxrender_context.c]
    PVR:
    PVR: Memory Stats
    PVR: ------------
    PVR:
    PVR: High Water Mark = 2132113 bytes
    PVR:
    PVR: 4104 bytes still allocated in 1 allocations
    PVR:
    PVR: 1   -  4104 bytes at 0x535b0 - tls.c:49
    PVR:
    PVR:

    The output of gfxcheck.sh is exactly the same.

    Has anyone on the forums ever had accelerated Qt graphics working on the DM8168?

    What do I do to debug this problem?

    Thanks,
    Ralph

     

    Ralph

  • Please could someone from TI help, or at least let me know if they are looking into this? I've been bangng my head against a wall for ages on this one.

    Ralph

  • Ralph,

    I'll make sure someone gets back to you ASAP.

    Regards,
    Marc

  • It's been two weeks since any activity on this thread.

    Is there any answer yet?

    Thanks,
    Ralph

  • I'm sorry Ralph - I will ask again.

    Marc

  • Qt + OpenGLES is always verified before an SDK release. I think there is some build or installation issue on your setup.

    To check if it's a build issue or setup issue, let's do the following:

    A. Run the prebuilt Qt 4.7.2 on your current target file system

    ==============================================

    1. We had shared the target file system for Qt as part of this thread:

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/104516.aspx

    https://gforge.ti.com/gf/download/docmanfileversion/266/4573/tfs_sgx_qt.tar.gz

    Copy the Qt from /usr/local/qt-4.7.2-ogles2 in this tarball to your own target file system at exactly the same location

    2. Ensure that Graphics SDK 04.04.00.02 is installed correctly on your target. All the pre-requisites (kernel, file system, HDVPSS, Syslink) mentioned should have been present.

    3. Run some OpenGLES demo applications to ensure that your Graphics SDK is installed correctly

    4. Change the /etc/powervr.ini to ensure that the Window System is changed

    5. Run hellogl_es2 demo with display powervr. If there is some problem here, there is a setup related issue

     

    B. Build Qt 4.7.2 with OpenGLES

    =========================

    1. Apply the patch at

    http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/qt4/files/0001-wsegl2-support.patch

    2. Use the following Qmake mkspec with appropriate path changes.

    https://gforge.ti.com/gf/download/docmanfileversion/293/5028/linux-TIarmv7-ogles2-g%2B%2B.tar.gz

    3. The following configure command for Qt works for us:

    /home/anand/gfx/qt/qt-everywhere-opensource-src-4.7.1/configure -prefix /usr/local/qt-4.7.2-ogles2 -embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-TIarmv7-ogles2-g++ -opensource -confirm-license -fast -little-endian -depths 16,24,32 -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-linuxinput -qt-mouse-tslib -plugin-mouse-linuxtp -plugin-mouse-pc -plugin-mouse-tslib -qt-gfx-transformed -qt-gfx-vnc -qt-gfx-linuxfb -qt-gfx-multiscreen -webkit -javascript-jit -script -scripttools -opengl es2 -plugin-gfx-powervr -D QT_NO_QWS_CURSOR -D QT_QWS_CLIENTBLIT

    4. make ; make install

  • Your qmake.conf is for "es5.0". The latest EZSDK has "es6.0". Can you provide a qmake.conf that works with the latest EZSDK?

    Thanks,
    Ralph

  • Ralph,

    You can change es5.0 to es6.0 globally. That should work.

    To clarify things a bit further:

    es5.0 refers to AM37x and es6.0 is for DM816x. The Qt configurations are dependent on CPU and GPU. Both have a Cortex-A8 core and the same SGX core. Of course, the kernels are different - but this should be handled while building the Graphics SDK itself. In short, you can change es5.0 to es6.0.

    Regards,
    Anand

  • Hello,

     I also just get a green box when loading the hello_gles2 application after I compile Qt 4.7.2 with openGL and Graphics SDK 04.04.00.02.  I've applied the patch and adjusted the mkspec for es6.x.

     

    The tfs_sgx_qt.tar.gz version of hello_gles2 shows the spinning Q just fine though.

     

    Here is my  gfx_check output:

    WSEGL settings
    [default]
    WindowSystem=libpvrQWSWSEGL.so
    #WindowSystem=libpvrPVR2D_FLIPWSEGL.so

    ------
    ARM CPU information
    Processor       : ARMv7 Processor rev 2 (v7l)
    BogoMIPS        : 986.31
    Features        : swp half thumb fastmult vfp edsp neon vfpv3
    CPU implementer : 0x41
    CPU architecture: 7
    CPU variant     : 0x3
    CPU part        : 0xc08
    CPU revision    : 2

    Hardware        : ti8168evm
    Revision        : 0000
    Serial          : 0000000000000000
    ------
    SGX driver information
    Version 1.6.16.4117 (release) /home/jaredf/Graphics_SDK_4_04_00_02/GFX_Linux_KM
    System Version String: SGX revision = 1.2.5
    ------
    Framebuffer settings

    mode "1280x720-60"
        # D: 74.250 MHz, H: 45.000 kHz, V: 60.000 Hz
        geometry 1280 720 1280 2160 32
        timings 13468 220 110 20 5 40 5
        rgba 8/16,8/8,8/0,8/24
    endmode

    Frame buffer device information:
        Name        : ti81xxfb
        Address     : 0x84e00000
        Size        : 25165824
        Type        : PACKED PIXELS
        Visual      : TRUECOLOR
        XPanStep    : 1
        YPanStep    : 1
        YWrapStep   : 0
        LineLength  : 5120
        Accelerator : No
    ------
    Rotation settings
    0
    ------
    Kernel Module information
    Module                  Size  Used by
    bufferclass_ti          4946  0
    omaplfb                10706  0
    pvrsrvkm              155106  2 bufferclass_ti,omaplfb
    ti81xxhdmi             12992  0
    ti81xxfb               20247  3
    vpss                   61787  3 omaplfb,ti81xxhdmi,ti81xxfb
    syslink              1107355  0
    ipv6                  209879  12
    ------
    Boot settings
    console=ttyO2,115200n8 rootwait root=/dev/nfs nfsroot=10.40.100.11:/home/jaredf/targetfs rw mem=128M earlyprink notifyk.vpssm3_sva=0xBF900000 vram=50M ti816xfb.vram=0:20M,1:20M,2:6M ip=dhcp noinitrd
    ------
    Linux Kernel version
    Linux dm816x-evm 2.6.37 #1 Tue Sep 27 09:52:48 MDT 2011 armv7l unknown
    root@dm816x-evm:~#

    [UPDATE]

    On closer inspection I found some typos in my configuration.  I'm recompiling now to see if it fixes my issue.

     

  • Thanks for your reply Jared, I'd like to hear how you get on. I'll post my exact setup in due course and hope someone from TI can say where I'm going wrong.

    Ralph

  • I'm still having the same issue after I fixed my typo and recompiled.

    I've also tried to use the mkspec out of the tfs_sgx_qt.tar.gz file to no avail.

     

    I'm wondering if I set everything up in OE rather than using the ezsdk if it would work.

     

    Also, I noticed that the mkspec in the tfs_sgx_qt.tar.gz referred to a ddk-1.6 folder for the powervr include directory.

    I'm wondering if that may be a different version of the wsegl patch.

  • Jared,

    The latest patch for wsegl2 is available here:

    http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/qt4/files/0001-wsegl2-support.patch

    Please refer to the link below for some of the most common problems in Qt-SGX integration:

    https://gforge.ti.com/gf/download/docmanfileversion/265/4572/qt_powervr_dbg.txt

    Regards,

    Anand

  • Hi,

    I've applied the latest patch as you suggested. It still doesn't work. I just get a green rectangle where there should be 3D graphics.

    Here is what I did to try and get Qt working:

    1. Extract qt-everywhere-commercial-src-4.7.2.tar.gz.
    2. export TOOLCHAIN_INSTALL_ROOT=<Path to Code Sourcery toolchain>/arm-2009q1
    3. export PATH=$PATH:$TOOLCHAIN_INSTALL_ROOT/bin
    4. Download this file which contains the appropriate qmake.conf.
    5. Extract the .tar.gz file to "<Qt extraction directory>/mkspecs/qws/".
    6. Edit the file "<Qt extraction directory>/mkspecs/qws/linux-TIarmv7-ogles2-g++/qmake.conf" as follows:
      1. Change "SGX_SDK_ROOT" to be set as "<EZSDK>/component-sources/graphics-sdk_4.04.00.03".
      2. Comment out "QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/LinuxOMAP3/Include/"
      3. Change "QMAKE_LIBS_OPENGL_ES2" to be set as "-lEGL -lGLESv2 -lGLES_CM -lIMGegl -lsrv_um $$SGX_SDK_ROOT/gfx_dbg_es6.x/libusc.so"
      4. Change "QMAKE_LIBS" to be set as "$$QMAKE_LIBS_OPENGL_ES2" only. i.e. No touchscreen library.
      5. Replace any instances of "es5" with "es6".
    7. Apply the patch to create new versions of "wsegl.h" and "pvr2d.h" in "<Qt extraction directory>/src/3rdparty/powervr/" and add some extra code to "<Qt extraction directory>/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwswsegl.c".
    8. Change to the Qt extraction directory and run the configure command (assuming 64 bit host):

    ./configure -prefix ../install -embedded arm -platform qws/linux-x86_64-g++ -xplatform qws/linux-TIarmv7-ogles2-g++ -depths 16,24,32 -qt-mouse-pc -no-mouse-tslib -qt-mouse-linuxinput -plugin-mouse-pc -little-endian -commercial -opengl es2 -openvg -qt-gfx-transformed -qt-gfx-linuxfb -qt-gfx-multiscreen -plugin-gfx-powervr -D QT_NO_QWS_CURSOR -D QT_QWS_CLIENTBLIT

    Here is what happens when I try to run the hellogl_es2 demo:

    # /examples/opengl/hellogl_es2/hellogl_es2 -qws -display powervr
    PVR: Hint: Setting WindowSystem to libpvrQWSWSEGL.so
    PVR:(Warning): PVRSRVMetricsTimeNow: not implemented [120, /pvr_metrics.c]
    PVR:
    PVR: Memory Stats
    PVR: ------------
    PVR:
    PVR: High Water Mark = 4104 bytes
    PVR:
    PVR: 4104 bytes still allocated in 1 alPVR_K:(Error): PVRSRVCreateDCSwapChainKM: Failed to create 3rd party SwapChain [1091, home/ralphc/ezsdk/ti-ezsdk_dm816x-evm_5_02_02_60
    /component-sources/graphics-sdk_4.04.00.03/GFX_Linux_KM/services4/srvkm/common/deviceclass.c]
    locations
    PVR:
    PVR: 1   -  4104 bytes at 0x52ac0 - tls.c:49
    PVR:
    PVR:(Warning): PVR2DEnumerateDevices: display device name too long, truncating [161, /pvr2dinit.c]
    PVR:
    PVR: Memory Stats
    PVR: ------------
    PVR:
    PVR: High Water Mark = 4104 bytes
    PVR:
    PVR: 4104 bytes still allocated in 1 allocations
    PVR:
    PVR: 1   -  4104 bytes at 0x52ac0 - tls.c:49
    PVR:
    PVR:(Error): PVRSRVCreateDCSwapChain: Error - 3 returned [512, /bridged_pvr_dc_glue.c]
    PVR:(Error): PVR2DCreateFlipChain: can't create flipchain [217, /pvr2dflip.c]
    PVR:(Warning): InitContext: ignoring buffer type CBUF_TYPE_PDS_VERT_SECONDARY_PREGEN_BUFFER [717, eglglue.c]
    PVR:(Warning): Running StartUpMemSpeedTest. High memory watermark will be ruined. Disable using apphint EnableMemorySpeedTest [57, metrics.c]
    PVR: Bytes  :    512    1024    2048    4096    8192   16384   32768   65536  131072
    PVR: ---------------|-------|-------|-------|-------|-------|-------|-------|-------|
    PVR: H -> VB:   0.00    0.00    0.00  640.04  853.39 1280.08 1024.06  975.30 1077.96
    PVR: H ->  H:   0.00  320.02    0.00  640.04 1280.08 1024.06 1137.85 1077.96 1107.09
    QEglContext::createSurface(): Unable to create EGL surface, error = 0x3001
    PVR:
    PVR:  Texture allocation HWM = 8 bytes
    PVR:(Warning): HW Recovery stats: Host: 0        uKernel: 0 [131, /sgxrender_context.c]
    PVR:
    PVR: Memory Stats
    PVR: ------------
    PVR:
    PVR: High Water Mark = 2132113 bytes
    PVR:
    PVR: 4104 bytes still allocated in 1 allocations
    PVR:
    PVR: 1   -  4104 bytes at 0x52ac0 - tls.c:49
    PVR:
    PVR:

    Standalone 3D graphics applications work fine. Has TI ever tested ES6.0 with Qt on the DM8168 and the current EZSDK? Where do we go next? It's not just me having this problem.

    Ralph

  • Thanks for the response Anand. 

    I found that document last week when I was looking around the forums for Ideas of what may be wrong.  I went ahead and double checked through it though.

    The only thing that seems to possibly be amiss to me from that list is my libpvrQWSWEGL.so file is in /opt/qt-4.7.2/lib/ instead of <QTINSTALLdir>/plugins/gfxdrivers/.

    I copied libpvrQWSWEGL.so from lib/ to qfxdrivers with no change.  I still just get the green box.

     

    Ralph:

    I noticed that you were getting the following error in your debug out put.

    QEglContext::createSurface(): Unable to create EGL surface, error = 0x3001

    I usually get that error when my powervr.ini file is not set to libpvrQWSWEGL.so

    I've noticed whenever i install a new copy of the Graphics driver that it rewrites the powervr.ini.

     

    My debug for hellogl_es2 looks like this:

    PVR: Hint: Setting WindowSystem to libpvrQWSWSEGL.so
    PVR:(Warning): PVRSRVMetricsTimeNow: not implemented [120, /pvr_metrics.c]
    PVR:
    PVR: Memory Stats
    PVR: ------------
    PVR:
    PVR: High Water Mark = 4104 bytes
    PVR:
    PVR: 4104 bytes still allocated in 1 allocations
    PVR:
    PVR: 1   -  4104 bytes at 0x26b78 - tls.c:49
    PVR:
    PVR:(Warning): PVR2DEnumerateDevices: display device name too long, truncating [161, /pvr2dinit.c]
    PVR:
    PVR: Memory Stats
    PVR: ------------
    PVR:
    PVR: High Water Mark = 4104 bytes
    PVR:
    PVR: 4104 bytes still allocated in 1 allocations
    PVR:
    PVR: 1   -  4104 bytes at 0x26b78 - tls.c:49
    PVR:
    PVR:(Warning): InitContext: ignoring buffer type CBUF_TYPE_PDS_VERT_SECONDARY_PREGEN_BUFFER [717, eglglue.c]
    PVR:(Warning): Running StartUpMemSpeedTest. High memory watermark will be ruined. Disable using apphint EnableMemorySpeedTest [57, metrics.c]
    PVR: Bytes  :    512    1024    2048    4096    8192   16384   32768   65536  131072
    PVR: ---------------|-------|-------|-------|-------|-------|-------|-------|-------|
    PVR: H -> VB:   0.00  320.02    0.00  640.04 1280.08 1024.06 1024.06  975.30  975.30
    PVR: H ->  H: 160.01    0.00  640.04 1280.08 1280.08 1024.06 1137.85 1024.06 1077.96
    PVR:(Warning): PB Watermark Info - Alloc: 0x0 , Free: 0x5dd [472, /sgxrender_targets.c]
    PVR:(Warning): PB Watermark Info - Alloc: 0x0 , Free: 0x5dd [472, /sgxrender_targets.c]
    PVR:(Error): SGXQueueTransfer: all paths failed [7582, /sgxtransfer_queue.c]
    PVR:(Warning): HWTQTextureUpload: Failed to load texture image (error=3). Falling back to SW [566, texdata.c]
    PVR:(Error): SGXQueueTransfer: all paths failed [7582, /sgxtransfer_queue.c]
    PVR:(Warning): HWTQTextureUpload: Failed to load texture image (error=3). Falling back to SW [566, texdata.c]
    PVR:(Error): SGXQueueTransfer: all paths failed [7582, /sgxtransfer_queue.c]
    PVR:(Warning): HWTQTextureUpload: Failed to load texture image (error=3). Falling back to SW [566, texdata.c]
    PVR:(Error): SGXQueueTransfer: all paths failed [7582, /sgxtransfer_queue.c]
    PVR:(Warning): HWTQTextureUpload: Failed to load texture image (error=3). Falling back to SW [566, texdata.c]
    PVR:(Error): SGXQueueTransfer: all paths failed [7582, /sgxtransfer_queue.c]
    PVR:(Warning): HWTQTextureUpload: Failed to load texture image (error=3). Falling back to SW [566, texdata.c]
    PVR:(Error): SGXQueueTransfer: all paths failed [7582, /sgxtransfer_queue.c]
    PVR:(Warning): HWTQTextureUpload: Failed to load texture image (error=3). Falling back to SW [566, texdata.c]
    PVR:(Error): SGXQueueTransfer: all paths failed [7582, /sgxtransfer_queue.c]
    PVR:(Warning): HWTQTextureUpload: Failed to load texture image (error=3). Falling back to SW [566, texdata.c]
    PVR:(Error): SGXQueueTransfer: all paths failed [7582, /sgxtransfer_queue.c]
    PVR:(Warning): HWTQTextureUpload: Failed to load texture image (error=3). Falling back to SW [566, texdata.c]

     

  • I too have been through the text file for ideas but didn't find any.

    My powervr.ini is correct and says to use "libpvrQWSWSEGL.so".

    Ralph

  • I noticed that there were references to openVG libraries in the qmake.conf file, but when I was configuring qt it wasn't showing openVG enabled.

    So i was looking around and found on nokia's website that they were using the -openvg switch in the configure script that they were using.

     

    I  added "-openvg" to my configure script and now the hellogl_es2 example works!

     

    Thanks for your help!

     

    If you need I can post my entire configuration.

  • Jared Falter said:
    If you need I can post my entire configuration.

    Please can you post it! If you could give your qmake.conf, configure command arguments and your target environment variables (just run "export" on the target) I think I'll be able to crack it.

    I assume you have a DM8168 and EZSDK 5.02.02.60 with full source for the SGX "graphics" folder!

    Thanks very much,

    Ralph

  • Here is my qmake:

     

    #
    # qmake configuration for building with arm-linux-g++
    #

    include(../../common/g++.conf)
    include(../../common/linux.conf)
    include(../../common/qws.conf)

    #User specific Path - To Be edited by User
    QT_INSTALL_DIR          = /home/jaredf/qt-everywhere-opensource-src-4.7.2
    SGX_SDK_ROOT            = /home/jaredf/Graphics_SDK_4_04_00_02
    TSLIB_INCDIR            = /home/jaredf/tslib-1.0/src
    TSLIB_LIBDIR            = /home/jaredf/targetfs/usr/lib

    # modifications to g++.conf
    QMAKE_CFLAGS_RELEASE    = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
    QMAKE_CXXFLAGS_RELEASE    = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
    QMAKE_CC                = arm-none-linux-gnueabi-gcc
    QMAKE_CXX               = arm-none-linux-gnueabi-g++
    QMAKE_LINK              = arm-none-linux-gnueabi-g++
    QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++

    # modifications to linux.conf
    QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
    QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy
    QMAKE_STRIP             = arm-none-linux-gnueabi-strip

    #Do not edit beyond this

    QMAKE_INCDIR_OPENGL_ES2 = $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/
    QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/LinuxOMAP3/Include/
    QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/include
    QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include/
    QMAKE_LIBDIR_OPENGL_ES2 = $$SGX_SDK_ROOT/gfx_dbg_es6.x/
    QMAKE_LIBS_OPENGL_ES2   = -lEGL -lGLESv2 -lGLES_CM -lIMGegl -lsrv_um -lusc

    QMAKE_INCDIR_OPENGL     += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include/
    QMAKE_LIBDIR_OPENGL     = $$SGX_SDK_ROOT/gfx_dbg_es6.x
    QMAKE_LIBDIR_OPENGL_QT  = $$SGX_SDK_ROOT/gfx_dbg_es6.x
    QMAKE_LIBS_OPENGL_ES1   = -lEGL -lGLES_CM -lIMGegl -lsrv_um -lusc

    QMAKE_INCDIR_OPENVG     = $$SGX_SDK_ROOT/GFX_Linux_SDK/OVG/SDKPackage/Builds/OVG/Include/
    QMAKE_LIBDIR_OPENVG     = $$SGX_SDK_ROOT/gfx_dbg_es6.x/
    QMAKE_LIBS_OPENVG       = -lEGL -lGLESv2 -lGLES_CM -lIMGegl -lsrv_um -lOpenVG -lOpenVGU

    QMAKE_INCDIR_EGL        = $$QMAKE_INCDIR_OPENGL_ES2
    QMAKE_INCDIR_EGL        += $$QT_INSTALL_DIR/src/3rdparty/powervr/wsegl2
    QMAKE_INCDIR_POWERVR    = $$QT_INSTALL_DIR/src/3rdparty/powervr/wsegl2
    QMAKE_LIBDIR_EGL        = $$QMAKE_LIBDIR_OPENGL_ES2
    QMAKE_LIBS_EGL          = -lEGL -lIMGegl -lsrv_um -lGLESv2 -lGLES_CM -lusc

    QMAKE_INCDIR += $$TSLIB_INCDIR
    QMAKE_INCDIR += $$QMAKE_INCDIR_OPENGL_ES2
    QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2
    QMAKE_LIBDIR += $$TSLIB_LIBDIR
    QMAKE_LIBS = $$QMAKE_LIBS_OPENGL_ES2 -lts

    load(qt_config)

     

    My configure script its this:

    ./configure -prefix /usr/local/qt-4.7.2 -embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-TIarmv7-ogles2-g++ -opensource -confirm-license -fast -little-endian -depths 16,24,32 -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-linuxinput -qt-mouse-tslib -plugin-mouse-linuxtp -plugin-mouse-pc -plugin-mouse-tslib -qt-gfx-transformed -qt-gfx-vnc -qt-gfx-linuxfb -qt-gfx-multiscreen -webkit -javascript-jit -script -scripttools -openvg -opengl es2 -plugin-gfx-powervr -D QT_NO_QWS_CURSOR -D QT_QWS_CLIENTBLIT -v

     

    As far as environment variables go, all I did was added /home/jaredf/arm-2009a1/bin/ to $PATH.

     

    I'm running the ti-ezsdk_dm816x-evm_5_02_01_59. and the Graphics_SDK_4_04_00_02.

     

    I plan on updating everything today.  If I have problems there I will let you know.

     

  • Hi Jared, thanks for the post. How did you obtain the "GFX_Linux_SDK" folder in the graphics SDK folder, given that EZSDK 5.02.01.59 did not come with this?

    Update: Jared, I see you used "-fast" in your configure command. I might be wrong, but I believe this will not build the examples that we are trying to get working. Surely the examples need to be rebuilt now that you have "-openvg"?

    Does anyone know if my "install" directory have to be the same path on the host as on the target?

    Thanks,

    Ralph

  • The only way that I know to get the Folder GFX_Linux_SDK is to download the Graphics SDK. 

    The latest version is here: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/gfxsdk/latest/index_FDS.html

    The version found in the ezsdk is here :http://software-dl.ti.com/dsps/dsps_public_sw/gfxsdk/4_03_00_02/index_FDS.html

    Install Instructions are here: http://processors.wiki.ti.com/index.php/Graphics_SDK_Quick_installation_and_user_guide#Build_and_install_instructions

     

    I have had to keep the install directory the same on the host and target to make my stuff work.

     

    I will look into the "-fast" option, but at first glance it looks like it still compiles it when I use the option.  I believe it just creates the makefiles differently when using this option to speed up the configuration process.

  • Thanks for the link to 4.03.00.02. I didn't know about that, only the .03 version.

    I would do a "make confclean" before re-running the configure, and then the make for Qt.

    Ralph

  • I've upgraded my EZSDK to ti-ezsdk_dm816x-evm_5_02_02_60; the graphics SDK to Graphics_SDK_4_04_00_03 and Qt to 4.7.4 and everything still works for me.

     

    I always do a make clean and a make confclean before I recompile qt.

  • Just a heads up.  I've noticed while trying to get a cursor working with qt and opengl that it does not work when I remove the "-D QT_NO_QWS_CURSOR" from the config script

  • Yes, I saw this in some documentation somewhere. Somewhat defeats the point of graphics acceleration in Qt if you can't see the mouse pointer to click on things!

    Thanks for your post before last; I'm going to have another go at getting graphics acceleration working when the next EZSDK comes out.

    Ralph

  • You can try out this patch for adding a basic cursor when OpenGLES is enabled. Remove the QT_NO_QWS_CURSOR from your Qt configurations.

     

    http://cgit.openembedded.org/openembedded/tree/recipes/qt4/qt4-embedded-gles-4.6.3/cursor-hack.diff

    Regards,
    Anand

  • That cursor patch worked!

     

    Thanks Anand,

    -Jared

  • Hi Guys,

    I am also trying to build Qt with OpenGL support with the hope of improving the 2D performance of my Qt applications.

    I have been following the procedure at http://processors.wiki.ti.com/index.php/Building_Qt_with_OpenGL_ES_accelerated_by_SGX supplemented with suggestions from this thread.

    I am using the latest graphics SDK installed in /home/user/Graphics_SDK_4_05_00_01

    I am using Qt 4.7.4 installed in /home/user/qt-everywhere-opensource-src-4.7.4

    I can build Qt without openGL support.

    I am using the following configure command to build Qt with openGL support ...

    ./configure -embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-TIarmv7-g++ -depths 16,24,32 -no-mmx -no-3dnow -no-sse -no-sse2 -no-glib -no-cups -no-largefile -no-accessibility -no-openssl -no-gtkstyle -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-linuxinput -plugin-mouse-linuxtp -plugin-mouse-pc -fast -opengl es2 -openvg -qt-gfx-transformed -qt-gfx-vnc -qt-gfx-linuxfb -qt-gfx-multiscreen -plugin-gfx-powervr -D QT_NO_QWS_CURSOR -D QT_QWS_CLIENTBLIT

    After the creation of qmake, the configuration process aborts and I receive the following error ...

    The OpenGL ES 2.0 functionality test failed!
     You might need to modify the include and library search paths by editing
     QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in
     /home/user/qt-everywhere-opensource-src-4.7.4/mkspecs/qws/linux-TIarmv7-g++.

    Here is the contents of my .conf file ...

    #
    # qmake configuration for building with arm-linux-g++
    #

    include(../../common/g++.conf)
    include(../../common/linux.conf)
    include(../../common/qws.conf)

    # modifications to g++.conf
    QMAKE_CFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
    QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
    QMAKE_CC                = arm-none-linux-gnueabi-gcc
    QMAKE_CXX               = arm-none-linux-gnueabi-g++
    QMAKE_LINK              = arm-none-linux-gnueabi-g++
    QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++

    #User specific Path - To Be edited by User
    #e.g
    QT_INSTALL_DIR  = /home/user/qt-everywhere-opensource-src-4.7.4
    SGX_SDK_ROOT = /home/user/Graphics_SDK_4_05_00_01/
    #TSLIB_INCDIR =
    #TSLIB_LIBDIR  =

    #Do not edit beyond this
    QT_INSTALL_DIR_TIBLT    = $$PWD/../../..

    QMAKE_INCDIR_OPENGL_ES2 = $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/
    QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/LinuxOMAP3/Include/
    QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/include
    QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include/
    QMAKE_LIBDIR_OPENGL_ES2 = $$SGX_SDK_ROOT/gfx_dbg_es5.x/
    QMAKE_LIBS_OPENGL_ES2 = -lEGL -lGLESv2 -lGLES_CM -lIMGegl -lsrv_um

    QMAKE_INCDIR_OPENGL += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include/
    QMAKE_LIBDIR_OPENGL = $$SGX_SDK_ROOT/gfx_dbg_es5.x
    QMAKE_LIBDIR_OPENGL_QT = $$SGX_SDK_ROOT/gfx_dbg_es5.x
    QMAKE_LIBS_OPENGL_ES1 = -lEGL -lGLES_CM -lIMGegl -lsrv_um

    QMAKE_INCDIR_OPENVG = $$SGX_SDK_ROOT/GFX_Linux_SDK/OVG/SDKPackage/Builds/OVG/Include/
    QMAKE_LIBDIR_OPENVG = $$SGX_SDK_ROOT/gfx_dbg_es5.x/
    QMAKE_LIBS_OPENVG = -lEGL -lGLESv2 -lGLES_CM -lIMGegl -lsrv_um -lOpenVG -lOpenVGU

    QMAKE_INCDIR_EGL = $$QMAKE_INCDIR_OPENGL_ES2
    QMAKE_INCDIR_EGL += $$QT_INSTALL_DIR_TIBLT/src/3rdparty/powervr/
    QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2
    QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um -lGLESv2 -lGLES_CM

    QMAKE_INCDIR += $$TSLIB_INCDIR
    QMAKE_INCDIR += $$QMAKE_INCDIR_OPENGL_ES2
    QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2
    QMAKE_LIBDIR += $$TSLIB_LIBDIR
    QMAKE_LIBS = $$QMAKE_LIBS_OPENGL_ES2 -lts

    # modifications to linux.conf
    QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
    QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy
    QMAKE_STRIP             = arm-none-linux-gnueabi-strip

    load(qt_config)

    I'm not sure how to proceed. I'd appreciate any suggestions that you might have for me!

    Thx, Steve

     

  • It doesn't look like you've edited any of the paths as you should have in qmake.conf.

    e.g.

    Steve Boone said:
    QT_INSTALL_DIR  = /home/user/qt-everywhere-opensource-src-4.7.4
    SGX_SDK_ROOT = /home/user/Graphics_SDK_4_05_00_01/

    Ralph

  • Hi Ralph,

    Actually, I did change the paths in qmake.conf for QT_INSTALL_DIR and SGX_SDK_PATH to match my installation.

    Steve

  • Can you post your actual .conf file? Who's to say there aren't other changes.

    Did you do:

    1. export TOOLCHAIN_INSTALL_ROOT=<Path to Code Sourcery toolchain>/arm-2009q1
    2. export PATH=$PATH:$TOOLCHAIN_INSTALL_ROOT/bin

    ?

  • Hi Ralph,

    Here is my config file ...

    #
    # qmake configuration for building with arm-linux-g++
    #
    
    include(../../common/g++.conf)
    include(../../common/linux.conf)
    include(../../common/qws.conf)
    
    # modifications to g++.conf
    QMAKE_CFLAGS_RELEASE	= -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
    QMAKE_CXXFLAGS_RELEASE	= -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
    QMAKE_CC                = arm-none-linux-gnueabi-gcc
    QMAKE_CXX               = arm-none-linux-gnueabi-g++
    QMAKE_LINK              = arm-none-linux-gnueabi-g++
    QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++
    
    #User specific Path - To Be edited by User
    #e.g
    QT_INSTALL_DIR  = /home/user/qt-everywhere-opensource-src-4.7.4
    SGX_SDK_ROOT	= /home/user/Graphics_SDK_4_05_00_01
    #TSLIB_INCDIR	=
    #TSLIB_LIBDIR 	=
    
    #Do not edit beyond this
    QT_INSTALL_DIR_TIBLT    = $$PWD/../../..
    
    QMAKE_INCDIR_OPENGL_ES2 = $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/
    QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/LinuxOMAP3/Include/
    QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/include
    QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include/
    QMAKE_LIBDIR_OPENGL_ES2 = $$SGX_SDK_ROOT/gfx_dbg_es5.x/ 
    QMAKE_LIBS_OPENGL_ES2 = -lEGL -lGLESv2 -lGLES_CM -lIMGegl -lsrv_um
    
    QMAKE_INCDIR_OPENGL += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include/
    QMAKE_LIBDIR_OPENGL = $$SGX_SDK_ROOT/gfx_dbg_es5.x
    QMAKE_LIBDIR_OPENGL_QT = $$SGX_SDK_ROOT/gfx_dbg_es5.x
    QMAKE_LIBS_OPENGL_ES1 = -lEGL -lGLES_CM -lIMGegl -lsrv_um
    
    QMAKE_INCDIR_OPENVG = $$SGX_SDK_ROOT/GFX_Linux_SDK/OVG/SDKPackage/Builds/OVG/Include/
    QMAKE_LIBDIR_OPENVG = $$SGX_SDK_ROOT/gfx_dbg_es5.x/
    QMAKE_LIBS_OPENVG = -lEGL -lGLESv2 -lGLES_CM -lIMGegl -lsrv_um -lOpenVG -lOpenVGU
    
    QMAKE_INCDIR_EGL = $$QMAKE_INCDIR_OPENGL_ES2
    QMAKE_INCDIR_EGL += $$QT_INSTALL_DIR_TIBLT/src/3rdparty/powervr/
    QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2
    QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um -lGLESv2 -lGLES_CM
    
    QMAKE_INCDIR += $$TSLIB_INCDIR 
    QMAKE_INCDIR += $$QMAKE_INCDIR_OPENGL_ES2
    QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2 
    QMAKE_LIBDIR += $$TSLIB_LIBDIR
    QMAKE_LIBS = $$QMAKE_LIBS_OPENGL_ES2 -lts
    
    # modifications to linux.conf
    QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
    QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy
    QMAKE_STRIP             = arm-none-linux-gnueabi-strip
    
    load(qt_config)
    

    I did append the toolchain bin folder to the path.

    I added a -v to the configure command and I received some additional output ...

    OpenGL ES 2.x auto-detection... ()
    arm-none-linux-gnueabi-g++ -c -pipe -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -Wall -W  -I../../../mkspecs/qws/linux-TIarmv7-g++ -I. -I../../../../Graphics_SDK_4_05_00_01/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include -I/home/user/Graphics_SDK_4_05_00_01/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/LinuxOMAP3/Include/ -I../../../../Graphics_SDK_4_05_00_01/include -I../../../../Graphics_SDK_4_05_00_01/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include -I../../../../Graphics_SDK_4_05_00_01/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include -I/home/user/Graphics_SDK_4_05_00_01/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/LinuxOMAP3/Include/ -I../../../../Graphics_SDK_4_05_00_01/include -I../../../../Graphics_SDK_4_05_00_01/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include -o opengles2.o opengles2.cpp
    arm-none-linux-gnueabi-g++ -Wl,-O1 -o opengles2 opengles2.o    -L/home/user/Graphics_SDK_4_05_00_01/gfx_dbg_es5.x/ -lts -L/home/user/Graphics_SDK_4_05_00_01/gfx_dbg_es5.x/ -lEGL -lGLESv2 -lGLES_CM -lIMGegl -lsrv_um
    /home/user/z3/z3-netra-RPS-20111017/toolchain/codesourcery_arm2009q1-203/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lts
    collect2: ld returned 1 exit status
    make: *** [opengles2] Error 1
    OpenGL ES 2.x disabled.
    The OpenGL ES 2.0 functionality test failed!
     You might need to modify the include and library search paths by editing
     QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in
     /home/user/qt-everywhere-opensource-src-4.7.4/mkspecs/qws/linux-TIarmv7-g++.

    Seems like the test is looking for a  library "ts"?

    Steve

  • "ts" means touchscreen. Look at your .conf file - what do you think you should remove to get things working?

  • If it helps here is a copy of my working configuration for compiling qt without tslib and the steps I took.

     

    qmake.conf:

    #
    # qmake configuration for building with arm-linux-g++
    #

    include(../../common/g++.conf)
    include(../../common/linux.conf)
    include(../../common/qws.conf)

    #User specific Path - To Be edited by User
    QT_INSTALL_DIR          = /home/jaredf/qt-everywhere-opensource-src-4.7.4
    SGX_SDK_ROOT            = /home/jaredf/Graphics_SDK_4_04_00_03
    TSLIB_INCDIR            = /home/jaredf/tslib-1.0/src
    TSLIB_LIBDIR            = /home/jaredf/targetfs/usr/lib

    # modifications to g++.conf
    QMAKE_CFLAGS_RELEASE    = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
    QMAKE_CXXFLAGS_RELEASE    = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
    QMAKE_CC                = arm-none-linux-gnueabi-gcc
    QMAKE_CXX               = arm-none-linux-gnueabi-g++
    QMAKE_LINK              = arm-none-linux-gnueabi-g++
    QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++

    # modifications to linux.conf
    QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
    QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy
    QMAKE_STRIP             = arm-none-linux-gnueabi-strip

    #Do not edit beyond this

    QMAKE_INCDIR_OPENGL_ES2 = $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/
    QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/LinuxOMAP3/Include/
    QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/include
    QMAKE_INCDIR_OPENGL_ES2 += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include/
    QMAKE_LIBDIR_OPENGL_ES2 = $$SGX_SDK_ROOT/gfx_dbg_es6.x/
    QMAKE_LIBS_OPENGL_ES2   = -lEGL -lGLESv2 -lGLES_CM -lIMGegl -lsrv_um -lusc

    QMAKE_INCDIR_OPENGL     += $$SGX_SDK_ROOT/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include/
    QMAKE_LIBDIR_OPENGL     = $$SGX_SDK_ROOT/gfx_dbg_es6.x
    QMAKE_LIBDIR_OPENGL_QT  = $$SGX_SDK_ROOT/gfx_dbg_es6.x
    QMAKE_LIBS_OPENGL_ES1   = -lEGL -lGLES_CM -lIMGegl -lsrv_um -lusc

    QMAKE_INCDIR_OPENVG     = $$SGX_SDK_ROOT/GFX_Linux_SDK/OVG/SDKPackage/Builds/OVG/Include/
    QMAKE_LIBDIR_OPENVG     = $$SGX_SDK_ROOT/gfx_dbg_es6.x/
    QMAKE_LIBS_OPENVG       = -lEGL -lGLESv2 -lGLES_CM -lIMGegl -lsrv_um -lOpenVG -lOpenVGU

    QMAKE_INCDIR_EGL        = $$QMAKE_INCDIR_OPENGL_ES2
    QMAKE_INCDIR_EGL        += $$QT_INSTALL_DIR/src/3rdparty/powervr/wsegl2
    QMAKE_INCDIR_POWERVR    = $$QT_INSTALL_DIR/src/3rdparty/powervr/wsegl2
    QMAKE_LIBDIR_EGL        = $$QMAKE_LIBDIR_OPENGL_ES2
    QMAKE_LIBS_EGL          = -lEGL -lIMGegl -lsrv_um -lGLESv2 -lGLES_CM -lusc

    QMAKE_INCDIR += $$TSLIB_INCDIR
    QMAKE_INCDIR += $$QMAKE_INCDIR_OPENGL_ES2
    QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2
    QMAKE_LIBDIR += $$TSLIB_LIBDIR
    QMAKE_LIBS = $$QMAKE_LIBS_OPENGL_ES2
    # -lts

    load(qt_config)

     

    Configure script:

    ./configure -prefix /opt/qt-4.7.4 -embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-TIarmv7-ogles2-g++ -opensource -confirm-license -fast -little-endian -depths 16,24,32 -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-linuxinput -plugin-mouse-linuxtp -plugin-mouse-pc -qt-gfx-transformed -qt-gfx-vnc -qt-gfx-linuxfb -qt-gfx-multiscreen -webkit -javascript-jit -script -scripttools -openvg -opengl es2 -plugin-gfx-powervr -D QT_QWS_CLIENTBLIT -v

     

    I've added "-openvg" and "-v"    The v is nice for finding where things are failing!

     

    Step 1: Setup the qmake.conf adjusting needed paths.

        - Graphics SDK path

        - Set the SGX version

        - Remove the "-lts" (tslib)

    Step 2: Apply the necissary patches

        - The egl patch (as mentioned in an earler post).

        - (optional) the cursor patch (as mentioned in an earlier post).  It is needed if you do not use the "-D QT_NO_QWS_CURSOR" in the config

    Step 3: Configure and compile

        - Run the configure as stated above (or modified to your needs)

        - compile as directed.

     

    Hope this helps.

     

    -Jared Falter

  • Thank Guys. It is building now. Hopefully all goes well. Steve

  • Would be good to hear how it goes. I haven't tried Jared's stuff as I'm working on something else right now but I will at some point.

    Ralph

  • I will post something when I finish my tests. My main motiviation for using openGL is improve 2D painting in Qt. We have an application that needs to continuously paint images (i.e. video frames) in a window and the current performance level is not acceptable. We have seen significant improvements when running our apps with OpenGL on Windows PCs.

    Steve

  • Er, hmm. Long term I think that might end up being possible. Short term, apparently the OpenGL drivers do not provide any performance advantage for drawing 2D graphics compared to just using the CPU. I wish I could dig out where I read that but can't remember right now.

    Ralph

  • Steve,

    I am assuming you are planning to use drawImage() to update the widget surface. What is the size of video frame you want to paint? What's the format of video? Does it go through any color space conversion for YUV->RGB on the ARM?

    The use case you mentioned will not be accelerated by the powervr backend. You might be worse off than by using the CPU. Please refer to the link below:

    http://processors.wiki.ti.com/index.php/SGXDbg#High_CPU_load_while_using_glTexImage2D.2C_or_when_using_OpenVG

    Our recommended approach for video + UI => render graphics to one framebuffer, video to another framebuffer and use chroma keying to punch a hole through the graphics layer. An example of  this approach can be found in the 3DFX demo application:

    http://processors.wiki.ti.com/index.php/3dfxuserguide

    Regards,

    Anand

  • Why do the PowerVR drivers not support 2D acceleration when the SGX530 core does?

    Thanks,

    Ralph

  • Hi Anand,

    Yes, I am using drawImage to update the widget. The widget is a QGLWidget (inside of a QGraphicsView). The frame size in this particular case is 1k x 1k and the format is 8-bit grayscale. Here is the code we use to do the display ...

    typedef boost::shared_ptr< QImage > ImageHandle;

     

     

    VideoViewer::Impl::ImageViewer::CustomItem::paint( QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget )DataType::width( hFrame->dataType() ), DataType::height( hFrame->dataType() ), DataType::stride( hFrame->dataType() ), QImage::Format_Indexed8 ) );

    This paint() function is for a custom graphics item (QGraphicsItem) that we use to draw the image. In this particular case, there is no conversion. We simply construct a QImage from an hFrame object (our own interal type that stores video frames), set the color table for the QImage and then call drawImage() to draw the image.

    I will look at the 3DFX examples.

    Steve

     

     

     

    {

    ImageHandle hImage( new QImage (

    reinterpret_cast

     

    < const unsigned char* >( hFrame->buffer()->data() ),

     

     

    image->setColorTable( m_colorTable );

    painter->drawImage( QPoint( 0, 0 ), *hImage.get() );

    }

  • Hi Anand,

    I have some issues running the 3dfx demos.

    Note: I am using the Z3 development board and the 4.05.00.01 graphics SDK, EZSDK 5.02.01.59

    When I run the "routeFb1toHDMI" script, I get the following output ...

    root@arago:/opt/v3dfx# ./routeFb1toHDMI.sh
    VPSS_GRPX : please open fb1 node first.
    VPSS_GRPX : please open fb1 node first.

    There seems to be no cmem.ko file in the 389xx folder so the loadmodules389xx script fails. I found a cmem.ko file elsewhere in the ezsdk and I copied it to the 389xx folder. Now I see the following output ...

    root@arago:/opt/v3dfx# ./loadmodules389xx.sh
    CMEMK module: built on Oct 24 2011 at 11:57:05
      Reference Linux version 2.6.37
      File /home/user/z3/z3-netra-RPS-20111017/ezsdk/component-sources/linuxutils_3_21_00_04/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c
    CMEM Range Overlaps Kernel Physical - allowing overlap
    CMEM phys_start (0x88000000) overlaps kernel (0x80000000 -> 0x8ce00000)
    CMEMK Error: Failed to request_mem_region(0x88000000, 89128960)
    insmod: can't insert '389xx/cmemk.ko': Bad address

    Here is the kernel command line that I have been using (with Z3)...

    console=ttyO2,115200n8 rootwait rw mem=256M earlyprintk notifyk.vpssm3_sva=0xBF900000 vram=50M ti814xfb.vram=0:16M,1:16M,2:6M root=/dev/nfs nfsroot=192.168.0.13:/home/user/z3/z3-netra-RPS-20111017/filesys/fs ip=dhcp

    If I use the command line suggested in the 3dfx manual, my system will not boot.

    Any help would be greatly appreciated.

    Steve

  • I have managed to get a little further by changing the memory range in the loadmodules389xx script as follows ...

    insmod 389xx/cmemk.ko phys_start=0x98000000 phys_end=0x9D500000 pools=1x89128960 allowOverlap=1 

    I still see the "VPSS_GRPX: please open fb1 node first" error.

    If I just ignore this error and run the "v3dfx" application,  here is what I see ...

    root@arago:/opt/v3dfx/binaries# ./v3dfx
    input video file : davinciEffect_720x480_uyvy422.yuv
     Loading video data from file ...... Finished ......

     Display Resolution: 1920x1080

     MAX Number of Texture Buffers: 16
     Selected Template : 0
    VPSS_FVID2: queue timeout
    detected fb_set_par error, error code: -110
    omaplfb: OMAPLFBFlip: Device 0: fb_set_var failed (Y Offset: 1080, Error: -110)

    Here are my frame buffer settings ...

    root@arago:~# fbset -fb /dev/fb0

    mode "1920x1080-60"
            # D: 148.500 MHz, H: 67.500 kHz, V: 60.000 Hz
            geometry 1920 1080 1920 1080 32
            timings 6734 148 88 36 4 44 5
            accel false
            rgba 8/16,8/8,8/0,8/24
    endmode

    root@arago:~# fbset -fb /dev/fb1

    mode "1920x1080-60"
            # D: 148.500 MHz, H: 67.500 kHz, V: 60.000 Hz
            geometry 1920 1080 1920 1080 32
            timings 6734 148 88 36 4 44 5
            accel false
            rgba 8/16,8/8,8/0,8/24
    endmode

    root@arago:~# fbset -fb /dev/fb2

    mode "720x480-471"
            # D: 216.029 MHz, H: 250.034 kHz, V: 470.874 Hz
            geometry 720 480 720 480 32
            timings 4629 68 12 41 5 64 5
            accel false
            rgba 8/16,8/8,8/0,8/24
    endmode

    Any help would be appreciated.

    Thx, Steve

  • All,

    FYI - the latest EZSDK release 05.03.00.09 has out-of-box support for Qt+OpenGLES

    http://software-dl.ti.com/dsps/dsps_public_sw/ezsdk/latest/index_FDS.html

    Please refer to the following page for enabling the SGX acceleration

    http://processors.wiki.ti.com/index.php/Qt_Tips#Enabling_SGX_PowerVR_Acceleration

    Regards,
    Anand

  • Hi ,I run into the same question,but I don't find any solution . the following post I can not open it :

    http://tigraphics.blogspot.com/2011/06/qtopengles-with-latest-sgx-powervr.html

    I can not find that patch . please give me help.i ' m really appreciated that .

    Regards,

    Eames Qi

  • hi ,I want to ask a question about how to update DDK v1.4 to 1.6+ . this is my target environment about pvr. 

    Version 1.4.14.2616 (release) /sdk/build/DVSDK_4_02/4_02_00_06/arago-install/arago-tmp/work/dm37x-evm-none-linux-gnueabi/omap3-sgx-modules-1.4.14.2616-r94h/Graphics_SDK_4_00_00_01/GFX_Linux_KM
    System Version String: SGX revision = 1.2.5

    how to change it to 1.6+ ? any help I will be really appreciated.

    thanks.

    Regards,

    Eames Qi

     

     

  • thanks a lot .