QNX Technical Articles
QNX® Software Development Platform 6.6 Graphics Patch (Patch ID 3875): Release Notes
Date of this edition: April 24, 2015
![]() |
For the most up-to-date version of these notes, go to our website (www.qnx.com), log into your myQNX account, and then go to the Download Center.
Changes to these notes since July 7, 2014 are highlighted
below with this icon:
|
Target OS: This patch is compatible with targets that are running the QNX® Neutrino® RTOS 6.6.
Host OS: In order to apply this patch, you must have installed the QNX Software Development Platform 6.6 on one of the following development hosts:
- Microsoft Windows 8 Professional 64-bit, Windows 7 Professional 64-bit, or XP Professional SP3
- Linux Red Hat Enterprise Linux 6 64-bit or Ubuntu Workstation LTS 12.04 32- and 64-bit
You must have already installed the following patch:
- QNX® Software Development Platform 6.6 Applypatch Patch (Patch ID 4024)
Contents
Throughout this document, you may see reference numbers associated with particular issues, changes, etc. When corresponding with our Technical Support staff about a given issue, please quote the relevant reference number. You might also find the reference numbers useful for tracking issues as they become fixed.
Which platforms does this patch support?
Board Supplier | Board Name | CPU | GPU | Display Controller | Display Interface | Number of Displays | Display Resolution | Monitor Name | Notes |
---|---|---|---|---|---|---|---|---|---|
Freescale | SaberSmart | i.MX6Q |
GC2000 GC355 GC320 |
(2) IPU3 | (2) LVDS, HDMI | 2 |
LCD: 800x480 LVDS:1024x600 HDMI:720p,1080p |
Liliput Okaya Hannstar Innolux |
- |
BoundaryDevices | Saberlite | i.MX6Q |
GC2000 GC355 GC320 |
(2) IPU3 |
LCD LVDS HDMI |
2 |
LCD: 800x480 LVDS:1024x600 HDMI:720p,1080p |
Liliput Okaya Hannstar Innolux |
- |
Freescale | SaberAI (DualLite) | i.MX6DL |
GC880 GC320 |
IPU3 |
LCD LVDS HDMI |
1 |
LCD: 800x480 LVDS:1024x600 HDMI:720p,1080p |
Liliput Okaya Hannstar Innolux |
- |
Freescale | SaberAI (Solo) | i.MX6S |
GC880 GC320 |
IPU3 |
LCD LVDS HDMI |
1 |
LCD: 800x480 LVDS:1024x600 HDMI:720p,1080p |
Liliput Okaya Hannstar Innolux |
- |
Texas Instruments | BeagleBoneBlack (BBB) | ARM Cortex A8 | SGX530 | DSS | HDMI | 1 | HDMI:1024x768 | Liliput | - |
Texas Instruments | AM335 EVM | ARM Cortex A8 | SGX530 | DSS | LCD | 1 | LCD: 800x480 | Liliput | - |
Texas Instruments | AM335 StarterKit | ARM Cortex A8 | SGX530 | DSS | LCD | - | - | - | - |
Texas Instruments | Jacinto6 | ARM Dual Cortex A15 | SGX544MP2 | DSS | DPI/HDMI | 3 |
LCD: 800x480 HDMI:720p |
Liliput On-board LCD |
- |
Texas Instruments | Jacinto5 | ARM Cortex A8 | SGX530 | HDVPSS | HDMI/DPI | 2 |
LCD: 800x480 HDMI:720p |
Liliput On-board LCD |
- |
Texas Instruments | OMAP 5ES2 | ARM Dual Cortex A15 |
SGX544MP2 GC320 |
DSS | DPI/HDMI | 2 | HDMI:720p | Liliput | - |
Texas Instruments | OMAP 4430 EVM | ARM Dual Cortex A9 | SGX540 | DSS | HDMI/DVI | 2 | HDMI:720p | Liliput | - |
Texas Instruments | OMAP 4460 EVM | ARM Dual Cortex A9 | SGX540 | DSS | HDMI/DVI | 2 | HDMI:720p | Liliput | - |
Intel | SandyBridge |
i3 i5 i7 |
IntelHD 2000 IntelHD 3000 |
IntelHD |
HDMI DVI VGA |
3 | HDMI:720p | Liliput | - |
Intel | IvyBridge |
i3 i5 i7 |
IntelHD 4000 | IntelHD | 2xHDMI | 2 | HDMI:720p | Liliput | 0x166h |
Intel | Haswell-I |
i3 i5 i7 |
IntelHD 4400 | IntelHD |
HDMI DVI VGA |
3 | HDMI:720p | Liliput | 0x416h |
Intel | Haswell |
i3 i5 i7 |
IntelHD 4400 | IntelHD |
HDMI DP |
2 | HDMI:720p | Liliput | 0xA16h |
Intel | Baytrail (Valleyview) | Atom | IntelHD 4000 | IntelHD | HDMI | 1 | HDMI:720p | Liliput | 0xF31h |
VMware | VMware | N/A | Tunneling | N/A | N/A | - |
1280x768 1600x1200 800x480 800x600 |
N/A | - |
![]() |
After applying this patch, you need to rebuild an OS image and transfer this new OS image to your board. For more information on how to do this, see Building Embedded Systems and QNX SDP 6.6.0 BSPs. For BSP information specific to your board, go to our website (www.qnx.com), log into your myQNX account, go to the QNX Download Center, and then go to BSPs. For information on your VMware image, see "Enabling 3D acceleration when running VMware as a target".
|
What's in this patch?
This patch provides the following improvements:
- Improved GPU performance and robustness for the following platforms:
- AM355x
- i.MX6
- OMAP5
- Added support of multiple displays for the following platforms:
- i.MX6
- OMAP5
- Added support for TI Jacinto 6 DRA74x EVM platform.
- For BSP information specific to this platform, go to our website (www.qnx.com), log into your myQNX account, go to the Download Center, and then go to BSPs.
- Added accelerated GPU driver support for VMware.
- Added GPU driver support for Intel. Changes that were made include the
following:
- Updated to support Mesa 9.
- Changed the name of the DRM server. Now use drm-intel to start the DRM server. This name was changed from drm_intel_hd.
Installed files
Files included in this patch are installed under $QNX_TARGET/ and under the subdirectories for each supported target platform. To see the full list of these files, do the following:
- Download patch-660-3875-660-Graphics-GA.tar from the Downloads area of our website into the working directory of your choice.
- Use the following command: tar -tvf patch-660-3875-660-Graphics-GA.tar.
Configuring multiple displays (Ref# J269439)
This patch improves stability for multiple-display support. To configure multiple displays, you must correctly configure graphics.conf and calibrate your touchscreens.
-
graphics.conf
To use multiple displays, you must have the following configurations set in graphics.conf:
- one display section for each physical display supported by your platform.
- one mtouch section for each touchscreen supported by your platform.
For more information on the configuring Screen, see the Screen Graphics Subsystem Developer's Guide.
-
calib-touch
You can use the -display option to specify the display you want to calibrate; this option is required when you are configuring multiple touchscreens. Once screen is running, run the calib-touch utility with the -display option from either your startup script or from a shell to calibrate your touchscreens.
For more information on the calib-touch utility, please see the Utilities Reference.
Setting device and source indexes for Vcapture (Ref# J691754)
The Vcapture API has been updated. You now must specify both CAPTURE_PROPERTY_DEVICE and CAPTURE_PROPERTY_SRC_INDEX properties using capture_set_property_i(). These two properties refer to the capture device and the index that identifies the device's source input respectively. You need to call capture_update() to apply the property change to your capture device.
The vcapture-test utility has also been updated. You now must specify the device and input source indexes. Otherwise, vcapture-test fails.
For example,
# vcapture-test -device=0 -source=0
For more information on the Vcapture API, please see the Video Capture Developer's Guide.
Enabling GPU power management (Ref# J699034)
On i.MX6x platforms, GPU power management is disabled by default. If you want to enable the GPU power management, do so in the wfd device section of your graphics.conf file by adding the appropriate GPU power management settings:
- gpu-pm-enable
- Turns GPU power and clocks on or off as controlled by the GPU driver. Valid values for this setting are: true or false.
- gpu-pm-force-power-on
- Controls whether the GPU and VPU are always powered on. Valid values for this setting are: true or false.
- gpu-powerManagement
- Controls GPU power state transitions. If enabled (gpu-powerManagement =1), the GPU driver manages the GPU power usage. Valid values for this setting are: 0 or 1.
The following table provides guidelines and recommendations for setting your GPU power management configurations:
GPU power usage | gpu-pm-enable | gpu-pm-force-power-on | gpu-powerManagement | GPU power management behavior |
---|---|---|---|---|
Default (highest possible power consumption) | true | true | 0 |
|
Optimal for when VPU (video playback) is required | true | true | 1 |
|
Optimal for when VPU (video playback) is NOT required | true | false | 1 |
|
Diagnosing power-related board issues | false | true | 0 |
This particular configuration of GPU power management settings will not work if the boot loader (e.g., U-boot) disables the GPU power before loading the QNX Neutrino OS. The fact that no power-related registers are modified, and that minimal runtime changes occur under this configuration, make this configuration useful when attempting to diagnose board problems that could be related to power. |
![]() |
Configurations of GPU power management settings that are not listed in the above table are not recommended. For more information on the configuring Screen, see the Screen Graphics Subsystem Developer's Guide. |
Enabling 3D acceleration when running VMware image as a target (Ref# J661261)
This patch added support for 3D acceleration when using a VMware image as your target.
In order to use 3D acceleration, you must:
- have installed QNX SDP 6.6.0 runtime ISO for vmware (or virtual machine). You can find this in Downloads area on our website (http://www.qnx.com/)
- have applied this patch: QNX Software Development Platform 6.6 Graphics Patch (Patch ID 3875)
-
be using one of the following:
- VMware Workstation 9.x or higher
- VMPlayer 5.x or higher
To enable 3D acceleration when using VMware image as a target, do the following:
- Select the VMware image from your virtual machine software. Ensure that your virtual machine is powered off.
- Select the Hardware tab from your virtual machine settings and enable "Accelerate 3D Graphics".
- Power on your virtual machine.
-
Either using a prepared USB flash drive, or by means of a network mount, make the necessary files (listed in following table) on your host accessible to your virtual machine. Copy these files from your host to your virtual machine using filepaths specified below:
Host (under $QNX_TARGET/) Virtual machine (under root directory(/) ) etc/system/config/scaling.conf etc/system/config/scaling.conf usr/share/gles/textures/brick_wall.tga usr/share/gles/textures/brick_wall.tga usr/share/gles/textures/bubble.png usr/share/gles/textures/bubble.png usr/share/images/wallpaper.jpg usr/share/images/wallpaper.jpg x86/bin/screeninfo bin/screeninfo x86/lib/dll/libwfdcfg-sample.so lib/dll/libwfdcfg-sample.so x86/lib/dll/screen-gles1.so lib/dll/screen-gles1.so x86/lib/dll/screen-gles2blt.so lib/dll/screen-gles2blt.so x86/lib/dll/screen-gles2.so lib/dll/screen-gles2.so x86/lib/dll/screen-sw.so lib/dll/screen-sw.so x86/lib/libgestures.so.1 lib/libgestures.so.1 x86/lib/libinputevents.so.1 lib/libinputevents.so.1 x86/lib/libkalman.so.1 lib/libkalman.so.1 x86/lib/libmtouch-calib.so.1 lib/libmtouch-calib.so.1 x86/lib/libmtouch-devi.so.1 lib/libmtouch-devi.so.1 x86/lib/libmtouch-fake.so.1 lib/libmtouch-fake.so.1 x86/lib/libmtouch-inject.so.1 lib/libmtouch-inject.so.1 x86/sbin/gpu_drv sbin/gpu_drv x86/sbin/screen sbin/screen x86/usr/bin/calib-touch usr/bin/calib-touch x86/usr/bin/display_image usr/bin/display_image x86/usr/bin/egl-configs usr/bin/egl-configs x86/usr/bin/events usr/bin/events x86/usr/bin/font-freetype usr/bin/font-freetype x86/usr/bin/gles1-gears usr/bin/gles1-gears x86/usr/bin/gles2-gears usr/bin/gles2-gears x86/usr/bin/gles2-maze usr/bin/gles2-maze x86/usr/bin/gpudbg usr/bin/gpudbg x86/usr/bin/print-gestures usr/bin/print-gestures x86/usr/bin/screenshot usr/bin/screenshot x86/usr/bin/sw-vsync usr/bin/sw-vsync x86/usr/bin/vkey usr/bin/vkey x86/usr/bin/yuv-test usr/bin/yuv-test x86/usr/lib/graphics/vmware/graphics.conf usr/lib/graphics/vmware/graphics.conf x86/usr/lib/graphics/vmware/libAtcDecompressor.so usr/lib/graphics/vmware/libAtcDecompressor.so x86/usr/lib/graphics/vmware/libAtcDecompressor.so.1 usr/lib/graphics/vmware/libAtcDecompressor.so.1 x86/usr/lib/graphics/vmware/libegl_gallium.so usr/lib/graphics/vmware/libegl_gallium.so x86/usr/lib/graphics/vmware/libHwEGL.so usr/lib/graphics/vmware/libHwEGL.so x86/usr/lib/graphics/vmware/libHwglapi.so usr/lib/graphics/vmware/libHwglapi.so x86/usr/lib/graphics/vmware/libHwGLESv1_CM_g.so usr/lib/graphics/vmware/libHwGLESv1_CM_g.so x86/usr/lib/graphics/vmware/libHwGLESv1_CM.so usr/lib/graphics/vmware/libHwGLESv1_CM.so x86/usr/lib/graphics/vmware/libHwGLESv2.so usr/lib/graphics/vmware/libHwGLESv2.so x86/usr/lib/graphics/vmware/libHwGPU.so usr/lib/graphics/vmware/libHwGPU.so x86/usr/lib/graphics/vmware/libHwWFDvmware.so usr/lib/graphics/vmware/libHwWFDvmware.so x86/usr/lib/graphics/vmware/libllvmpipe_drv.so usr/lib/graphics/vmware/libllvmpipe_drv.so x86/usr/lib/graphics/vmware/libmesa_texcompress_atc.so usr/lib/graphics/vmware/libmesa_texcompress_atc.so x86/usr/lib/graphics/vmware/libmesa_texcompress_pvrt.so usr/lib/graphics/vmware/libmesa_texcompress_pvrt.so x86/usr/lib/graphics/vmware/libmesa_texcompress.so usr/lib/graphics/vmware/libmesa_texcompress.so x86/usr/lib/graphics/vmware/libpipe_vmwgfx_drv.so usr/lib/graphics/vmware/libpipe_vmwgfx_drv.so x86/usr/lib/graphics/vmware/libst_HwGL_g.so usr/lib/graphics/vmware/libst_HwGL_g.so x86/usr/lib/graphics/vmware/libst_HwGL.so usr/lib/graphics/vmware/libst_HwGL.so x86/usr/lib/graphics/vmware/libvmwsvga.so usr/lib/graphics/vmware/libvmwsvga.so x86/usr/lib/libEGL.so.1 usr/lib/libEGL.so.1 x86/usr/lib/libGLESv1_CL.so.1 usr/lib/libGLESv1_CL.so.1 x86/usr/lib/libGLESv1_CM.so.1 usr/lib/libGLESv1_CM.so.1 x86/usr/lib/libGLESv2.so.1 usr/lib/libGLESv2.so.1 x86/usr/lib/libscreen.so.1 usr/lib/libscreen.so.1 x86/usr/lib/libswblit.so.1 usr/lib/libswblit.so.1 x86/usr/lib/libWFD.so.1 usr/lib/libWFD.so.1 x86/lib/libgestures.so lib/libgestures.so x86/lib/libinputevents.so lib/libinputevents.so x86/lib/libkalman.so lib/libkalman.so x86/lib/libmtouch-calib.so lib/libmtouch-calib.so x86/lib/libmtouch-devi.so lib/libmtouch-devi.so x86/lib/libmtouch-fake.so lib/libmtouch-fake.so x86/lib/libmtouch-inject.so lib/libmtouch-inject.so x86/usr/lib/libEGL.so usr/lib/libEGL.so x86/usr/lib/libGLESv1_CL.so usr/lib/libGLESv1_CL.so x86/usr/lib/libGLESv1_CM.so usr/lib/libGLESv1_CM.so x86/usr/lib/libGLESv2.so usr/lib/libGLESv2.so x86/usr/lib/libscreen.so usr/lib/libscreen.so x86/usr/lib/libswblit.so usr/lib/libswblit.so x86/usr/lib/libWFD.so usr/lib/libWFD.so - Copy the file x86/lib/libcpp-ne.so.5 from your QNX Software Development Platform 6.6 installation to /lib, or a location which is included in your LD_LIBRARY_PATH, on your virtual machine.
-
Start the GPU driver on your virtual machine.
# gpu_drv
-
Start screen on your virtual machine.
# screen
-
Run gles2-gears on your virtual machine to
confirm that you have 3D Acceleration enabled.
# gles2-gears
Troubleshooting 3D acceleration on your virtual machine
-
Why do I get a gpu_drv: Command not found. error when I try to start gpu_drv?
- It's likely that your PATH has not included /sbin. Ensure that both /sbin and /usr/bin are set in your PATH and then try starting gpu_drv again.
-
Why do I get a ldd:FATAL: Could not load library libvmwsvga.so error when I run gpu_drv?
- It's likely that your LD_LIBRARY_PATH has not included GRAPHICS_ROOT. Set your LD_LIBRARY_PATH and then try starting gpu_drv again.
- Why is screen not running?
-
It's likely that the GPU driver was not started.
To recover from this scenario, do the following:
- Use Ctrl-C on your virtual machine to stop screen.
-
Start the GPU driver on your virtual machine.
# gpu_drv
-
Start screen on your virtual machine.
# screen
- Why do I get a libEGL warning: no gpu support error when I try to start screen?
-
It's likely that the "Accelerate 3D Graphics" setting was not selected.
To recover from this scenario, do the following:
- Power off your virtual machine.
- Select the Hardware tab from your virtual machine settings and enable "Accelerate 3D Graphics".
- Power your virtual machine back on and continue to start the GPU driver and screen as per usual.
- Why do I get a libEGL warning: Could not open driver error when I try to start gles2-gears?
-
It's likely that you are missing the libcpp-ne.so.5 library.
To recover from this scenario, do the following:
- Use Ctrl-C on your virtual machine.
- Copy the file x86/lib/libcpp-ne.so.5 from your QNX Software Development Platform 6.6 installation to /lib, or a location which is included in your LD_LIBRARY_PATH, on your virtual machine.
- Start the GPU driver and screen as per usual.
Configuring i.MX6 graphics.conf if you have QNX CAR Platform for Infotainment 2.1 installed (Ref# J691743)
If you have QNX CAR Platform 2.1 installed and are using an i.MX6 SABRELite board, you will need to make modifications to your graphics.conf file (default location is: installation-path/deployment/qnx-car/boards/imx61sabre/etc/system/config/graphics.conf). In this file, do the following:
-
Remove the following lines from the wfd device section:
- gpu-contiguousNoinit = 1
- gpu-contiguousMB = 248
-
Add the following lines to the wfd device section:
- gpu-internalPoolMB = 16
- gpu-sharedPoolMB = 2
- gpu-contiguousOnly = false
- gpu-contiguousMB = 64
If you are using the QNX Runtime for APK, you will need to add, in addition to the above modifications, the following line to the egl display section:
- gralloc-module = vivante
After making these modifications, apply the changes by rebooting or regenerating your CAR2 image.
Known issues
-
On AM335x platforms, display remains blank after setting
SCREEN_PROPERTY_MODE through Screen API. (Ref# J677938)
- Workaround: Slay and restart screen.
-
On Intel platforms, the DRM server (drm-intel)
being terminated and then restarted may occasionally result in
unpredictable behavior. (Ref# J716074)
- Workaround: Reboot your board.
Technical support
To obtain technical support for any QNX product, visit the Support area on our website (www.qnx.com). You'll find a wide range of support options, including community forums.