C

Building for INTEGRITY

To use Qt Safe Renderer with INTEGRITY, you need to build Qt and Qt Safe Renderer yourself from sources. When you build Qt Safe Renderer, you must build Qt Safe Renderer Runtime before building Qt Safe Renderer Tooling.

Note: Qt Safe Renderer 2.1.0 RC 2 supports building with Qt 6.5.6 onwards.

Preconditions

Install Qt Safe Renderer and Qt sources as instructed in Installing Qt Safe Renderer.

Note: You can also get the Qt sources via the Git version control system. Qt Wiki provides instructions for getting Qt sources via Git, see https://wiki.qt.io/Building_Qt_6_from_Git#Getting_the_source_code.

Setting Up INTEGRITY Environment

To build Qt Safe Renderer and its examples for INTEGRITY, you must modify your environment for INTEGRITY.

Enabling OpenWFD platform adaptation

Qualcomm Snapdragon hardware uses the OpenWFD platform adaption. You can enable the OpenWFD plugin by setting the following environment variables when building Qt Safe Renderer:

GL_INC_DIR
GL_LIB_DIR

The GL_INC_DIR path must point to the folder where the OpenWFD headers are located.

The GL_LIB_DIR path must point to the folder where the OpenWFD libraries are located.

Note: When you use the OpenWFD platform adaptation, the surface width must be divisible by 64.

After you have successfully enabled the OpenWFD plugin, you see OpenWFD graphics adaptation for INTEGRITY in the CMake output log.

The following code provides an example of the environment setup script for the Qualcomm Snapdragon target:

export PATH=$PATH:</path/to>/comp
export INTEGRITY_DIR=</path/to>/integrity
export INTEGRITY_BSP=platform-sa8155
export INTEGRITY_BUILD_TARGET=chk
export QC_MULTIMEDIA_INC_DIR=</path/to>/qc_bsp/include/amss/multimedia
export GL_INC_DIR=</path/to>/qc_bsp/AMSS/multimedia/graphics/include/public
export GL_LIB_DIR=</path/to>/qc_bsp/out/chk/libs/base:</path/to>/qc_bsp/out/chk/libs/multimedia/display:</path/to>/qc_bsp/out/chk/libs/multimedia/graphics:</path/to>/qc_bsp/out/chk/libs/platform/:</path/to>/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt/

Building Qt from Sources

See Qt for INTEGRITY for detailed instructions about how to build Qt for host and for INTEGRITY.

Building Qt Safe Renderer from Sources

When you build Qt Safe Renderer for INTEGRITY, you must build Qt Safe Renderer Runtime before building Qt Safe Renderer Tooling. Build both components for your host environment and INTEGRITY.

Building Qt Safe Renderer for Host Environment

First, build Qt Safe Renderer Runtime for host as follows:

mkdir <build directory>
cd <build directory>
<Qt installation directory>/host/bin/qt-cmake <path to QSR Runtime sources>
cmake --build .
cmake --build . --target install

Build Qt Safe Renderer Tooling for host as follows:

mkdir <build directory>
cd <build directory>
<Qt installation directory>/host/bin/qt-cmake <path to QSR Tooling sources>
cmake --build .
cmake --build . --target install

Building Qt Safe Renderer for INTEGRITY

First, build Qt Safe Renderer Runtime for INTEGRITY as follows:

<Qt installation directory>/<INTEGRITY target>/bin/qt-cmake <path to QSR Runtime sources>
cmake --build .
cmake --build . --target install

Build Qt Safe Renderer Tooling for INTEGRITY as follows:

<Qt installation directory>/<INTEGRITY target>/bin/qt-cmake <path to QSR Tooling sources>
cmake --build .
cmake --build . --target install

Address spaces for inter-process communication

Qt Safe Renderer Runtime resides in its own separate process. Sending messages from another processes such as a monitor or an unsafe UI to the Qt Safe Renderer requires inter-process communication. In INTEGRITY, this is handled by using shared message queues provided by the operating system.

To achieve this, each process needs to have its own address space defined. The address spaces contain connection objects where the connection to another object in another address space is defined. This is needed for sharing a common message queue between processes. The address spaces are defined in the INTEGRITY project's integrate file (.int). The following example demonstrates the definitions when you build the Qt Cluster and Telltales examples:

AddressSpace qtcluster
    Filename </path/to>/qtcluster
    MemoryPoolSize 0x4000000
    Language    C++
    HeapSize    0x50000
    Object    10
        Connection    telltales
        OtherObjectNumber    10
    EndObject
    Task Initial
        StackSize    0x50000
        StartIt    true
    EndTask
EndAddressSpace

AddressSpace telltales
    Filename </path/to>/telltales
    MemoryPoolSize 0x2000000
    Language    C++
    HeapSize    0x20000
    Object    10
        Connection    qtapp
        OtherObjectNumber    10
    EndObject
    Task Initial
        StackSize    0x20000
        StartIt    true
    EndTask
EndAddressSpace

</path/to> is the directory where the Telltales binaries are found.

Rebuild the project and run it on the target device as instructed in the INTEGRITY BSP instructions provided by Green Hills and the target device vendor.

Available under certain Qt licenses.
Find out more.