Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® Software Development Platform 6.6 Graphics Patch (Patch ID 3875): Release Notes

QNX® Software Development Platform 6.6 Graphics Patch (Patch ID 3875): Release Notes

Date of this edition: April 24, 2015


Note:

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: New:


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 -

Note:

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".

New: On your target, verify that your LD_LIBRARY_PATH includes your GRAPHICS_ROOT environment variable. If not, set LD_LIBRARY_PATH. For example:

export LD_LIBRARY_PATH=/usr/lib:/lib:/lib/dll:$GRAPHICS_ROOT:$LD_LIBRARY_PATH


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:

  1. Download patch-660-3875-660-Graphics-GA.tar from the Downloads area of our website into the working directory of your choice.
  2. 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
  • The GPU power is turned on by the GPU driver.
  • The GPU and VPU are always powered up after startup.
  • The GPU driver does not manage the GPU power usage; therefore it always consumes full power.
Optimal for when VPU (video playback) is required true true 1
  • The GPU power is turned on by the GPU driver.
  • The GPU and VPU are always powered up after startup.
  • The GPU driver manages the GPU power usage, but will not power down the GPU even when it is idle.
Optimal for when VPU (video playback) is NOT required true false 1
  • The GPU power is turned off and on by the GPU driver as necessary based on GPU usage
  • The VPU is powered on and off in conjunction with the GPU usage because the VPU and GPU are connected to the same power rail.
  • The GPU driver manages the GPU power usage and will fully power down the GPU when it is idle.
Diagnosing power-related board issues false true 0
  • The GPU power is not turned off or on by the GPU driver.
  • The GPU driver does not manage the GPU power usage.

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.


Note:

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:

  1. Select the VMware image from your virtual machine software. Ensure that your virtual machine is powered off.
  2. Select the Hardware tab from your virtual machine settings and enable "Accelerate 3D Graphics".
  3. Power on your virtual machine.
  4. New: 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
  5. 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.
  6. Start the GPU driver on your virtual machine.

    # gpu_drv

  7. Start screen on your virtual machine.

    # screen

  8. Run gles2-gears on your virtual machine to confirm that you have 3D Acceleration enabled.

    # gles2-gears

Troubleshooting 3D acceleration on your virtual machine

New: 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.
New: 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:
  1. Use Ctrl-C on your virtual machine to stop screen.
  2. Start the GPU driver on your virtual machine.

    # gpu_drv

  3. 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:
  1. Power off your virtual machine.
  2. Select the Hardware tab from your virtual machine settings and enable "Accelerate 3D Graphics".
  3. 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:
  1. Use Ctrl-C on your virtual machine.
  2. 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.
  3. 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.