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 supports building with Qt 6.5.7 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.