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.
I can't get 3D acceleration working in the Qt examples using the latest graphics SDK (4.06.00.01) for QWS (i.e. not X.org). I have been _trying_ to follow the massively out of date instructions at http://processors.wiki.ti.com/index.php/Building_Qt_with_OpenGL_ES_accelerated_by_SGX to the best of my skill.
Here is what I do and what happens:
./configure -prefix <my installation target directory> -embedded arm -platform qws/linux-x86_64-g++
-xplatform qws/linux-TIarmv7-sgx-g++ -depths 16,24,32 -qt-freetype -no-mmx -no-3dnow -no-sse
-no-sse2 -no-sse3 -no-sse4.1 -no-sse4.2 -no-ssse3 -no-avx -no-cups -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
10. make -j 4
11. make install
12. On the target I run
/usr/local/share/ti/ti-media-controller-utils/load-hd-firmware.sh start
/etc/init.d/pvr-init
/etc/init.d/rc.pvr start
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib
export QT_QWS_FONTDIR=/lib/fonts
export QT_PLUGIN_PATH=/plugins
In case you wondered, here is what pvr-init does (it is a clone of 38xx-demo without the installation part):
RM_SGX_RSTCTRL=0x48180F04
CM_SGX_CLKSTCTRL=0x48180900
CM_SGX_SGX_CLKCTRL=0x48180920
devmem2 $RM_SGX_RSTCTRL w 0x0 # Bring SGX out of reset
devmem2 $CM_SGX_CLKSTCTRL w 0x2 # Enable the SGX clocks
devmem2 $CM_SGX_SGX_CLKCTRL w 0x2 # Bring SGX out of idle
# while((RD_MEM_32(CM_SGX_SGX_CLKCTRL)) != 0x00040002); //Wait for SGX to come out of idle
#sleep 2
devmem2 0x56000014 > /etc/init.d/sgxrevision.txt
13. Finally I run the application: with "/examples/opengl/hellogl_es2/hellogl_es2 -qws -display powervr". I had to relocate my libusc.so because of the changes I made to the qmake.conf.
# /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 = 4116 bytes
PVR:
PVR: 4116 bytes still allocated in 1 allocations
PVR:
PVR: 1 - 41PVR_K:(Error): PVRSRVCreateDCSwapChainKM: Failed to create 3rd party SwapChain [1123, home/ralphc/ezsdk/ti-ezsdk_dm816x-evm_5_03_01_15/component-sources/graphi
cs-sdk_4.06.00.01_qws/GFX_Linux_KM/services4/srvkm/common/deviceclass.c]
16 bytes at 0x55590 - eurasiacon/imgegl/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 = 4116 bytes
PVR:
PVR: 4116 bytes still allocated in 1 allocations
PVR:
PVR: 1 - 4116 bytes at 0x55590 - eurasiacon/imgegl/tls.c:49
PVR:
PVR:(Error): PVRSRVCreateDCSwapChain: Error - 3 returned [520, /bridged_pvr_dc_glue.c]
PVR:(Error): PVR2DCreateFlipChain: can't create flipchain [221, /pvr2dflip.c]
PVR:(Warning): InitContext: ignoring buffer type CBUF_TYPE_PDS_VERT_SECONDARY_PREGEN_BUFFER [778, /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 0.00 640.04 1280.08 853.39 1024.06 1024.06 975.30 975.30
PVR: H -> H: 0.00 0.00 0.00 640.04 1280.08 1024.06 1024.06 975.30 1024.06
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 [148, /sgxrender_context.c]
PVR:
PVR: Memory Stats
PVR: ------------
PVR:
PVR: High Water Mark = 2139345 bytes
PVR:
PVR: 4116 bytes still allocated in 1 allocations
PVR:
PVR: 1 - 4116 bytes at 0x55590 - eurasiacon/imgegl/tls.c:49
PVR:
PVR:
It just gives me a window with a green rectangle in.
Here is my gfx_check output:
# /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 sgxddk 17 1.7@783851 (debug) /home/ralphc/ezsdk/ti-ezsdk_dm816x-evm_5_03_01_15/component-sources/graphics-sdk_4.06.00.01_qws/GFX_Linux_KM
System Version String: SGX revision = 1.2.5
------
Framebuffer settings
------
Rotation settings
0
------
Kernel Module information
Module Size Used by Not tainted
omaplfb 10181 0
pvrsrvkm 397414 1 omaplfb
ti81xxhdmi 14668 0
ti81xxfb 20741 1
vpss 67003 3 omaplfb,ti81xxhdmi,ti81xxfb
syslink 1067008 0
------
Boot settings
console=ttyO2,115200n8 mem=364M mem=324M@0x9F900000 earlyprintk notifyk.vpssm3_sva=0xBF900000 vram=50M ti816xfb.vram=0:16M,1:16M,2:6M ip=dhcp vmalloc=500M root=/dev/nfs nfsr
oot=172.20.1.27:/home/ralphc/rootfs noinitrd
------
Linux Kernel version
Linux buildroot 2.6.37+ #1 PREEMPT Mon Mar 12 13:25:16 GMT 2012 armv7l GNU/Linux
I do _not_ want to use TI's pre-packaged "out of the box" binaries. I want to be able to build Qt myself and build the graphics drivers myself. This is necessary for the company strategy. I can run qt demos without acceleration as well as 3d-only demos with acceleration.
Please can someone help.
Thanks very much,
Ralph
Which ones are those?
About 6 months ago I definitely had some pre-built binaries running fine on my system but I'm not sure where these were from as it was a while ago. I think I may have downloaded them from this post: http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/p/132525/494540.aspx#494540
I'm certain I didn't compile them myself.
Ralph
Okay, breaking news. I have it working. Here is what I used:
#w
# 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/ralphc/qtdiy/qt-everywhere-opensource-src-4.7.1
SGX_SDK_ROOT = /home/ralphc/ezsdk/ti-ezsdk_dm816x-evm_5_03_01_15/component-sources/graphics-sdk_4.06.00.01_qws
TSLIB_INCDIR = /home/anand/ti/utils/tslib/include
TSLIB_LIBDIR = /home/anand/ti/utils/tslib
# 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_INCDIR += /home/ralphc/ezsdk/ti-ezsdk_dm816x-evm_5_03_01_15/component-sources/graphics-sdk_4.06.00.01_qws/include/OGLES
QMAKE_INCDIR += /home/ralphc/qtdiy/qt-everywhere-commercial-src-4.7.1/src/3rdparty/powervr
QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2
QMAKE_LIBDIR += $$TSLIB_LIBDIR
QMAKE_LIBS = $$QMAKE_LIBS_OPENGL_ES2 #-lts
load(qt_config)
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib
export QT_QWS_FONTDIR=/lib/fonts
export QT_PLUGIN_PATH=/plugins
./configure -prefix /home/ralphc/qtdiy/install -embedded arm -platform qws/linux-x86_64-g++ -xplatform qws/linux-TIarmv7-ogles2-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-linuxinput -plugin-mouse-pc -opengl es2 -openvg -qt-gfx-transformed -qt-gfx-linuxfb -qt-gfx-multiscreen -plugin-gfx-powervr -D QT_NO_QWS_CURSOR -D QT_QWS_CLIENTBLIT
If I had to guess which bit made this work, I would say that adding in the extra include directories in qmake.conf (for QMAKE_INCDIR_OPENGL_ES2) and getting the configure command right did the trick. It's hard to believe that the configure command is that sensitive but there you go.
Case closed... until Qt 4.8.
Ralph
If the patch had been applied properly, the correct pvr2d.h would have been used. It appears you are having multiple copies of pvr2d.h (different versions) in your setup causing QWS libraries to incorrectly initialise egl.
Qt4.8 is also validated. Note that instructions for qt4.8 are already at,
https://github.com/prabindh/qt-configs
Hi,
I'm able compile Qt.4.7.1 with opengl support without any error. But when i was trying to test the test app which is provided by Qt.
I got this error:
hellogl_es2: symbol lookup error: /lib_qt/libQtOpenGL.so.4: undefined symbol: _ZN11QEglContextC1Ev
Please help me to resolve this issue.
Thanks & Regards,
Gowthaman.P
In general - you can use strace or similar tool to find which library is missing. Are you able to run other non-opengl examples ?
Hi Prabindh,
Now i'm able to run default opengl (OGLESCoverflow examples) but if i run Qt opengl examples getting below error
Error:
QFactoryLoader::QFactoryLoader() looking at "/usr/local/Trolltech/QtEmbedded-4.7.1-arm/plugins/gfxdrivers/libqgfxpvregl.so"
keys ("powervr")
QFactoryLoader::QFactoryLoader() looking at "/usr/local/Trolltech/QtEmbedded-4.7.1-arm/plugins/mousedrivers/libqlinuxtpmousedriver.so"
keys ("LinuxTP")
QFactoryLoader::QFactoryLoader() looking at "/usr/local/Trolltech/QtEmbedded-4.7.1-arm/plugins/mousedrivers/libqpcmousedriver.so"
keys ("Auto", "IntelliMouse", "Microsoft", "MouseSystems", "MouseMan")
QEglContext::createSurface(): Unable to create EGL surface, error = 0x3001
I'm using graphics version as graphics-sdk_4.04.00.02 and Qt version as 4.7.1
Please let me know what could be an issue.
Note : I have attached a file for gfx_check.sh command output.
root@dm814x-evm:~# /etc/init.d/38xx-demo /dev/mem opened. Memory mapped at address 0x4042d000. Value at address 0x48180F04 (0x4042df04): 0x1 Written 0x0; readback 0x0 /dev/mem opened. Memory mapped at address 0x403f4000. Value at address 0x48180900 (0x403f4900): 0x1 Written 0x2; readback 0x2 /dev/mem opened. Memory mapped at address 0x4010e000. Value at address 0x48180920 (0x4010e920): 0x70000 Written 0x2; readback 0x2 0x10205 release6.x SGX Revision is 125... installing 6.x SGX release user libraries Installing PowerVR Consumer/Embedded DDK 1.6.16.4117 on target File system installation root is / Uninstalling existing version 1.6.16.4117 Uninstallation completed. boot script rc.pvr -> /etc/init.d/rc.pvr kernel module pvrsrvkm.ko -> /lib/modules/2.6.37/kernel/drivers/char/pvrsrvkm.ko kernel module omaplfb.ko -> /lib/modules/2.6.37/kernel/drivers/char/omaplfb.ko shared library libGLES_CM.so -> /usr/lib/libGLES_CM.so.1.1.16.4117 shared library libusc.so -> /usr/lib/libusc.so.1.1.16.4117 shared library libGLESv2.so -> /usr/lib/libGLESv2.so.1.1.16.4117 shared library libglslcompiler.so -> /usr/lib/libglslcompiler.so.1.1.16.4117 shared library libOpenVG.so -> /usr/lib/libOpenVG.so.1.1.16.4117 shared library libOpenVGU.so -> /usr/lib/libOpenVGU.so.1.1.16.4117 shared library libIMGegl.so -> /usr/lib/libIMGegl.so.1.1.16.4117 shared library libEGL.so -> /usr/lib/libEGL.so.1.1.16.4117 shared library libpvr2d.so -> /usr/lib/libpvr2d.so.1.1.16.4117 shared library libpvrPVR2D_BLITWSEGL.so -> /usr/lib/libpvrPVR2D_BLITWSEGL.so.1.1.16.4117 shared library libpvrPVR2D_FLIPWSEGL.so -> /usr/lib/libpvrPVR2D_FLIPWSEGL.so.1.1.16.4117 shared library libpvrPVR2D_FRONTWSEGL.so -> /usr/lib/libpvrPVR2D_FRONTWSEGL.so.1.1.16.4117 shared library libpvrPVR2D_LINUXFBWSEGL.so -> /usr/lib/libpvrPVR2D_LINUXFBWSEGL.so.1.1.16.4117 shared library libpvrEWS_WSEGL.so -> /usr/lib/libpvrEWS_WSEGL.so.1.1.16.4117 shared library libsrv_um.so -> /usr/lib/libsrv_um.so.1.1.16.4117 shared library libsrv_init.so -> /usr/lib/libsrv_init.so.1.1.16.4117 shared library libPVRScopeServices.so -> /usr/lib/libPVRScopeServices.so.1.1.16.4117 shared library libews.so -> /usr/lib/libews.so.1.1.16.4117 binary pvrsrvinit -> /usr/local/bin/pvrsrvinit binary sgx_init_test -> /usr/local/bin/sgx_init_test binary ews_server -> /usr/local/bin/ews_server binary services_test -> /usr/local/bin/services_test binary sgx_blit_test -> /usr/local/bin/sgx_blit_test binary sgx_clipblit_test -> /usr/local/bin/sgx_clipblit_test binary sgx_flip_test -> /usr/local/bin/sgx_flip_test binary sgx_render_flip_test -> /usr/local/bin/sgx_render_flip_test binary pvr2d_test -> /usr/local/bin/pvr2d_test binary gles1test1 -> /usr/local/bin/gles1test1 binary gles1_texture_stream -> /usr/local/bin/gles1_texture_stream binary gles2test1 -> /usr/local/bin/gles2test1 shader glsltest1_vertshader.txt -> /usr/local/bin/glsltest1_vertshader.txt shader glsltest1_fragshaderA.txt -> /usr/local/bin/glsltest1_fragshaderA.txt shader glsltest1_fragshaderB.txt -> /usr/local/bin/glsltest1_fragshaderB.txt binary gles2_texture_stream -> /usr/local/bin/gles2_texture_stream binary ovg_unit_test -> /usr/local/bin/ovg_unit_test binary eglinfo -> /usr/local/bin/eglinfo binary xgles1test1 -> /usr/local/bin/xgles1test1 binary xmultiegltest -> /usr/local/bin/xmultiegltest binary xgles1_texture_stream -> /usr/local/bin/xgles1_texture_stream binary xgles2test1 -> /usr/local/bin/xgles2test1 binary xgles2_texture_stream -> /usr/local/bin/xgles2_texture_stream binary xovg_unit_test -> /usr/local/bin/xovg_unit_test binary ews_test_gles1 -> /usr/local/bin/ews_test_gles1 binary ews_test_gles2 -> /usr/local/bin/ews_test_gles2 shader ews_test_gles2_main.vert -> /usr/local/bin/ews_test_gles2_main.vert shader ews_test_gles2_main.frag -> /usr/local/bin/ews_test_gles2_main.frag shader ews_test_gles2_pp.vert -> /usr/local/bin/ews_test_gles2_pp.vert shader ews_test_gles2_pp.frag -> /usr/local/bin/ews_test_gles2_pp.frag binary ews_test_swrender -> /usr/local/bin/ews_test_swrender Installation complete! You may now reboot your target. Loaded PowerVR consumer services. gfx_check.sh output: root@dm814x-evm:~# /gfx_check.sh WSEGL settings [default] WindowSystem=libpvrQWSWSEGL.so #WindowSystem=libpvrPVR2D_FRONTWSEGL.so #WindowSystem=libpvrPVR2D_FLIPWSEGL.so ------ ARM CPU information Processor : ARMv7 Processor rev 2 (v7l) BogoMIPS : 599.65 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 : ti8148evm Revision : 0000 Serial : 0000000000000000 ------ SGX driver information Version 1.6.16.4117 (release) /u/gowtham/Melco/graphics-sdk_4.04.00.02/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 1080 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 : 0x8b000000 Size : 33554432 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 omaplfb 10706 0 pvrsrvkm 153728 1 omaplfb bnep 9100 2 hidp 11397 0 rfcomm 29333 0 hci_uart 12074 0 bluetooth 135073 12 bnep,hidp,rfcomm,hci_uart wl12xx_sdio 3282 0 wl12xx 141231 1 wl12xx_sdio mac80211 239031 1 wl12xx cfg80211 145797 2 wl12xx,mac80211 compat 7247 3 bluetooth,wl12xx,mac80211 imanage 867269 0 ti81xxhdmi 16163 0 ti81xxfb 29388 3 vpss 70328 3 omaplfb,ti81xxhdmi,ti81xxfb syslink 1116450 0 ipv6 212846 12 tlc59108 1541 0 ------ Boot settings console=ttyO0,115200n8 root=/dev/mmcblk0p2 rootdelay=2 rootfstype=ext3 mem=256M vram=80M notifyk.vpssm3_sva=0xBF900000 ------ Linux Kernel version Linux dm814x-evm 2.6.37 #30 Wed Apr 17 18:38:18 IST 2013 armv7l unknown
Regards,
Gowthaman.P