Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® Momentics® 6.3.0 Advanced Graphics Technology Development Kit 2.0.0 Release Notes

QNX® Momentics® 6.3.0

Date of this edition: October 23, 2007

Target OS: QNX® Neutrino® 6.3.0 SP2 or later.

Host OS: Microsoft Windows XP SP1 or SP2, 2000 SP4, NT SP6a; Sun Solaris 7, 8, 9, or 10; QNX® Neutrino® 6.3.0 SP2; Linux Red Hat 8, 9, or Enterprise

Required patches:

  • Core Advanced Graphics TDK Patch (Patch ID 331) -- contains updated graphics drivers, the Neutrino image library, Font Fusion library and headers, and the monitor process io-display

A Photon patch will be available at a later date for users who want to run both 3D and Photon applications on a target.


Note:
  • For information on installing this TDK, see the installation note.
  • For the most up-to-date version of these release notes, log into your myQNX account, and then go to the Download Center area of www.qnx.com.

Contents


Note: 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.

What's in this TDK?

This TDK contains libraries, binaries, and source code for sample applications for 2D (GF) and 3D (OpenGL-ES) graphics support on Neutrino.


Caution: You need to recompile and relink any Advanced Graphics applications after you update your development environment to this TDK. This includes any program linking with the GF and OpenGL ES libraries (that is, applications that use GF and OpenGL ES API calls).

This TDK is a complete replacement of the Advanced Graphics TDK 1.0.0 product. There is no binary compatibility between the two versions.

If you have a target system that contains runtime components from the Advanced Graphics TDK 1.0.0 (such as the io-display manager, *.so shared objects, and configuration files), then these must also be updated using the versions from this TDK.


Binary components

These files are installed under $QNX_TARGET/, under the subdirectories for each supported target platform:

  • armle/bin/demo-alpha
  • armle/bin/demo-chroma
  • armle/bin/egl-gears-lite
  • armle/bin/font-cache
  • armle/bin/font-test
  • armle/bin/img_decode_mem
  • armle/bin/img_decode_simple
  • armle/bin/img_decode_surface
  • armle/bin/img_encode
  • armle/bin/img_resize
  • armle/bin/img_rotate
  • armle/bin/img_thn
  • armle/bin/vsync
  • armle/usr/lib/libGLES_CL.so.1
  • armle/usr/lib/libGLES_CL.so
  • armle/usr/lib/libGLES_CLS.a
  • armle/usr/lib/libgf.a
  • armle/usr/lib/libgfS.a
  • armle/usr/lib/libgf_g.a
  • armle/usr/lib/libgf_gS.a
  • ppcbe/bin/alphalayer
  • ppcbe/bin/coral-capture
  • ppcbe/bin/demo-alpha
  • ppcbe/bin/demo-chroma
  • ppcbe/bin/egl-gears
  • ppcbe/bin/egl-intermix
  • ppcbe/bin/egl-pdemo
  • ppcbe/bin/egl-planetary
  • ppcbe/bin/egl-spheres
  • ppcbe/bin/egl-testegl
  • ppcbe/bin/egl-tunnel
  • ppcbe/bin/font-cache
  • ppcbe/bin/font-test
  • ppcbe/bin/gf_cursor
  • ppcbe/bin/img_decode_mem
  • ppcbe/bin/img_decode_simple
  • ppcbe/bin/img_decode_surface
  • ppcbe/bin/img_encode
  • ppcbe/bin/img_resize
  • ppcbe/bin/img_rotate
  • ppcbe/bin/img_thn
  • ppcbe/bin/vsync
  • ppcbe/usr/lib/libGLES_CM.so.1
  • ppcbe/usr/lib/libGLES_CM.so
  • ppcbe/usr/lib/libGLES_CMS.a
  • ppcbe/usr/lib/libgf.a
  • ppcbe/usr/lib/libgfS.a
  • ppcbe/usr/lib/libgf_g.a
  • ppcbe/usr/lib/libgf_gS.a
  • shle/bin/alphalayer
  • shle/bin/carmine-capture
  • shle/bin/coral-capture
  • shle/bin/demo-alpha
  • shle/bin/demo-chroma
  • shle/bin/egl-gears
  • shle/bin/egl-intermix
  • shle/bin/egl-pdemo
  • shle/bin/egl-planetary
  • shle/bin/egl-spheres
  • shle/bin/egl-testegl
  • shle/bin/egl-tunnel
  • shle/bin/font-cache
  • shle/bin/font-test
  • shle/bin/gf_cursor
  • shle/bin/img_decode_mem
  • shle/bin/img_decode_simple
  • shle/bin/img_decode_surface
  • shle/bin/img_encode
  • shle/bin/img_resize
  • shle/bin/img_rotate
  • shle/bin/img_thn
  • shle/bin/vsync
  • shle/usr/lib/libGLES_CM.so.1
  • shle/usr/lib/libGLES_CM.so
  • shle/usr/lib/libGLES_CMS.a
  • shle/usr/lib/libgf.a
  • shle/usr/lib/libgfS.a
  • shle/usr/lib/libgf_g.a
  • shle/usr/lib/libgf_gS.a
  • usr/include/GLES/egl.h
  • usr/include/GLES/eglimp.h
  • usr/include/GLES/egltypes.h
  • usr/include/GLES/gl.h
  • usr/include/gf/gf.h
  • usr/include/gf/gf3d.h
  • usr/include/gf/gf_devctl.h
  • usr/include/gf/gf_errno.h
  • usr/include/gf/gf_internals.h
  • usr/include/gf/gf_rop.h
  • usr/include/gf/iod.h
  • usr/include/gf/polyline.h
  • usr/include/gfpr/gfpr.h
  • usr/include/gfpr/mman.h
  • usr/share/gles/textures/bw.rgb
  • usr/share/gles/textures/mars.rgb
  • usr/share/gles/textures/qnx.rgb
  • usr/share/gles/textures/tilesmall.rgb
  • usr/src/doc/FF_Ref_Guide.pdf
  • x86/bin/demo-alpha
  • x86/bin/demo-chroma
  • x86/bin/egl-gears
  • x86/bin/egl-intermix
  • x86/bin/egl-pdemo
  • x86/bin/egl-planetary
  • x86/bin/egl-spheres
  • x86/bin/egl-testegl
  • x86/bin/egl-tunnel
  • x86/bin/font-cache
  • x86/bin/font-test
  • x86/bin/gf_cursor
  • x86/bin/img_decode_mem
  • x86/bin/img_decode_simple
  • x86/bin/img_decode_surface
  • x86/bin/img_encode
  • x86/bin/img_resize
  • x86/bin/img_rotate
  • x86/bin/img_thn
  • x86/bin/vsync
  • x86/usr/lib/libGLES_CM.so.1
  • x86/usr/lib/libGLES_CM.so
  • x86/usr/lib/libGLES_CMS.a
  • x86/usr/lib/libgf.a
  • x86/usr/lib/libgfS.a
  • x86/usr/lib/libgf_g.a
  • x86/usr/lib/libgf_gS.a

Documentation

  • $QNX_TARGET/usr/help/product/gf/*
  • $QNX_TARGET/usr/src/doc/FF_Ref_Guide.pdf
  • readme files under $QNX_TARGET/etc/readme/tdk/*
  • version and shiplist under $QNX_TARGET/install/tdk/ag/*

Source

The Advanced Graphics TDK includes source code and binaries for several sample applications, in an archive file installed as $QNX_TARGET/usr/src/archives/qnx/tdk-ag-src.zip. These applications illustrate various features and functionality provided by the Advanced Graphics TDK. To view command-line options for these examples, use the use utility; for example: use vsync.


Note: If you require source code for the Coral graphics driver, please contact your QNX sales representative.

The sample applications are:

alphalayer
This application demonstrates how to use the alpha layer on a supported device. Two layers are initialized and set up to display a single, opaque color. Then the alpha layer is set up to enable per-pixel alpha blending between the foreground and background layers.
coral-capture and carmine-capture
These sample applications demonstrate the video capture API. The applications are specifically written to run on Coral P, Coral PA and Carmine reference boards that use the Philips SAA7113 for decoding PAL and NTSC signals, and the Analog Devices AD9883 for decoding VGA signals. You can use this application as a starting point for larger applications requiring video capture functionality using Coral and Carmine chips. You'll need to modify it to work with decoder chips other than the SAA7113 and the AD9883.
demo-alpha
Displays various alpha effects.
demo-chroma
Displays various chroma effects.
egl-gears
OpenGL ES port of the classic Gears demo by Brian Paul.
egl-intermix
Demonstrates 2D/3D intermixing on the same surface.
egl-pdemo
EGL Pixmap/PBuffer interactive demo.
egl-planetary
OpenGL ES port of the Planetary demo by Brian Paul.
egl-testegl
Exercises various EGL calls, and prints out details about all of the supported EGL configurations available.
egl-tunnel
Port of the Tunnel demo by David Bucciarelli.
font-cache
Demonstrates caching alpha-map glyphs in Coral video memory for improved performance.
font-test
Demonstrates font rendering with the FontFusion Engine.
gf_cursor
A sample GF application that illustrates using cursors. This application fills the screen and moves a cursor across it.
img_decode_mem
This application builds on img_decode_simple to demonstrate how to decode from an alternate source, in this case a memory buffer.
img_decode_simple
A basic demonstration of how to decode and display an image. This application also demonstrates format preselection and load-time clipping.
img_decode_surface
This application builds on img_decode_simple and demonstrates how to decode directly to a preallocated GF surface.
img_encode
Illustrates image encoding. This application loads a specified image and applies requested transformations. It then encodes the transformed image back to a file.
img_resize
Demonstrates techniques to load, resize and display an image. This application renders an image from the filesystem to the screen, exercising the decoders.
img_rotate
Demonstrates image rotation.
img_thn
Demonstrates displaying image thumbnails. This application scans a directory for image files, then displays them in thumbnail form.
vsync
Demonstrates artifact-free double buffering using vertical synchronization simultaneously among multiple layers

If you have QNX Momentics PE, you can compile the sample applications using the IDE or the command-line tools; if you have SE, you have to use the command-line tools.

Configuration files

The Advanced Graphics TDK installs these configuration files:

  • $QNX_TARGET/etc/system/config/img.conf -- the image loader configuration file. This file is required if you use the image loading library libimg.
  • $QNX_TARGET/etc/system/config/display.conf -- the io-display configuration file.

By default, the software will run on the Fujitsu Coral reference board. To tailor for other boards, you can specify various settings via the Coral configuration file. This configuration file is normally located in /usr/photon/config. Use the environment variable GF_MODEFILE to set the fullpath to the configuration file on the target, for example: GF_MODEFILE=/usr/photon/config/coral.conf ./3D-demo.

Fixed issues

  • Calls to glCopyTexImage2D() and glCopyTexSubImage2D() are faster. (Ref# 40236)
  • New options in the configuration file make LVDS panel control more generic. (Ref# 38708)
  • New support for the Intel Extreme2 for 2D and 3D rendering. (Ref# 38684)
  • GF applications on SHLE targets no longer crash when drawing thick lines with more than two points. (Ref# 38413)
  • Slaying io-display when a driver name is overridden in display.conf no longer causes a SEGV. (Ref# 38367)
  • New gf_surface_sidlist() API provides a list of allocated surfaces. (Ref# 29892)
  • New gf_dev_get_meminfo() API provides the amount of free memory. (Ref# 29888)
  • New vcap_mask member of gf_layer_info_t indicates which layers can be bound to a video capture engine. (Ref# 29887)
  • New gf_display_query_mode() and gf_display_set_mode() API allows for dynamic mode-switching. (Ref# 29882)
  • The quality of line anti-aliasing in OpenGL-ES is improved. (Ref# 28939).
  • The io-display server no longer crashes when trying to set the hotspot of the second cursor outside the cursor's size. (Ref# 28238)
  • Software rendering of circles using gf_draw_polyline() no longer produces a choppy circle with gaps. (Ref# 28215)
  • Using gf_draw_polyline() with gf_context_set_penwidth() no longer alters point coordinates for a software surface. (Ref 28216)
  • A new reference count in io-display ensures that memory isn't released until all clients have freed shared attached surfaces. (Ref# 27887)
  • The filter modules devg-stats.so and devg-rotate90.so now work with io-display. (Ref# 27515)
  • A potential deadlock problem with io-display is fixed. (Ref# 29165)
  • Structures in the GF header files now use explicit types, and are aligned on 64 bits. (Ref# 41191)
  • The gf_draw_blit1() API no longer overwrites memory used to store color and cursor information in the devg-carmine.so driver. (Ref# 41178)
  • Using gf_draw_blit2() to blit from one alpha map in video memory to another no longer fails on Coral and Carmine hardware. (Ref# 40608)
  • Surface allocation now sets the correct pixel format on SH targets. (Ref# 26093)
  • ROP code 0x8b is now calculated correctly in the FFB library. (Ref# 28792)
  • The FFB library now correctly calculates the combination of an alpha map with a global alpha value. (Ref# 29017)
  • New gf_display_set_mode() and gf_display_query_mode() APIs support dynamic mode switching. (Ref# 29882)
  • New line join types now work correctly. (Ref# 38378, Ref# 40302)
  • The demo-alpha example application no longer crashes on an ARMLE target. (Ref# 38445)
  • The font-test example application now produces correct output on targets with Coral graphics hardware. (Ref# 38455)
  • The img_decode_surface example application now produces correct output on targets with Carmine graphics hardware. (Ref# 38483)
  • The devg-vesabios.so driver now renders certain primitives correctly. (Ref# 38713)
  • Polygon and polyline code in the GF library now uses the correct clipping coordinates. (Ref# 39170)
  • A memory leak in io-display caused whenever an application terminates unexpectedly is fixed. (Ref# 39561)
  • io-display no longer occasionally crashes when a client application connects at the same time another client application is exiting. (Ref# 39564)
  • Buffer Object support is implemented as an OpenGL ES 1.0 extension. (Ref# 39947)
  • Two bugs in VBO support are fixed: the offset into the buffer object can now be 0, and the first argument to glDrawArrays() is no longer ignored. (Ref# 40700)
  • The vsync example application no longer leaks memory when run on a target with Carmine graphics hardware. (Ref# 41049)

Known issues

  • Some EGL applications crash with a floating point exception on ARMLE processors due to a bug in the math library. (Ref# 38434, Ref# 38432)
  • The gears-lite sample application is the arm variant only. (Ref# 40211)
  • The carmine-capture example application doesn't work on x86 targets, as it becomes reply-blocked on io-display. (Ref# 41501)
  • Using img_encode to convert a .png file to a .tga file corrupts the .tga file. (Ref# 41496)
  • The gf_cursor example application produces corrupted output on these targets: shle with Coral or Carmine graphics hardware, x86 with Carmine graphics hardware, and ppcbe with Coral graphics hardware. (Ref# 41464)
  • Compiling the included sample applications causes compiler warnings using both gcc 2.9.5 and 3.3.5 compilers. You can safely ignore these warnings. (Ref# 41619)

    Workaround: To remove the 2.9.5 compiler warnings, you need to add #include <string.h> to the gf_setup.h file for each of the following applications:

    • img_decode_mem
    • img_decode_surface
    • img_decode_simple
    • img_resize
    • img_rotate
    • img_thn

    You also need to remove the last %d from the printf() statement in main.c of gears-lite.

    To remove the 3.3.5 compiler warnings, in addition to the above steps, you need to:

    1. Change the index variable to gindex in gf_cursor.c in the gf_cursor application.
    2. Also in gf_cursor.c, you need to add the break to the default declaration in the case statement:
          default:
              break;
              
    3. In the planetary application, add #include <string.h> to dlist.c.

Documentation

The functionality provided by the Advanced Graphics TDK is described in the QNX Advanced Graphics Developer's Guide, which is installed under $QNX_TARGET/usr/help/product/gf/bookset.html. For information on using the TDK, see:

  • the "Using ..." chapters of the Developer's Guide for a description of using various parts of the Advanced Graphics TDK, including 2D GF and 3D GL-ES functionality
  • the GF API reference in the Developer's Guide for details about all the 2D and 3D functions
  • the image library API reference in the Developer's Guide for details about the image library functions
  • the Bitstream FontFusion 2.4 Reference Guide for information about using the FontFusion API to render fonts, installed under /usr/src/doc/FF_Ref_Guide.pdf.

Technical support

If you have any questions, comments, or problems with a QNX product, please contact Technical Support. For more information, see the How to Get Help chapter of the Welcome to QNX Momentics guide or visit our website, www.qnx.com.