Complete Yocto mirror with license table for TQMa6UL (2038-compliance)

- 264 license table entries with exact download URLs (224/264 resolved)
- Complete sources/ directory with all BitBake recipes
- Build configuration: tqma6ul-multi-mba6ulx, spaetzle (musl)
- Full traceability for Softwarefreigabeantrag
- GCC 13.4.0, Linux 6.6.102, U-Boot 2023.04, musl 1.2.4
- License distribution: GPL-2.0 (24), MIT (23), GPL-2.0+ (18), BSD-3 (16)
This commit is contained in:
Siggi (OpenClaw Agent)
2026-03-01 20:58:18 +00:00
commit 16accb6b24
15086 changed files with 1292356 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
do_install:append() {
rm -f ${D}${sysconfdir}/xdg/weston/weston.ini
}

View File

@@ -0,0 +1,65 @@
SUMMARY = "i.MX Optional Execution Image"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b66f32a90f9577a5a3255c21d79bc619"
INHIBIT_DEFAULT_DEPS = "1"
DEPENDS = "gcc-arm-none-eabi-native"
SRC_URI = "${IMX_OEI_SRC};branch=${SRCBRANCH}"
IMX_OEI_SRC ?= "git://github.com/nxp-imx/imx-oei.git;protocol=https"
SRCBRANCH = "master"
SRCREV = "ca91ce798b2f3a2a0bab8c0f835f4bea88c9b080"
S = "${WORKDIR}/git"
inherit deploy
PACKAGE_ARCH = "${MACHINE_ARCH}"
OEI_CONFIGS ?= "UNDEFINED"
OEI_CORE ?= "UNDEFINED"
OEI_SOC ?= "UNDEFINED"
OEI_BOARD ?= "UNDEFINED"
OEI_DDRCONFIG ?= ""
LDFLAGS[unexport] = "1"
EXTRA_OEMAKE = "\
board=${OEI_BOARD} \
DEBUG=1 \
OEI_CROSS_COMPILE=arm-none-eabi-"
EXTRA_OEMAKE:append:mx95-generic-bsp = " r=${IMX_SOC_REV}"
EXTRA_OEMAKE:append = " ${@' DDR_CONFIG=${OEI_DDRCONFIG}' if d.getVar('OEI_DDRCONFIG') else ''}"
do_configure() {
for oei_config in ${OEI_CONFIGS}; do
oe_runmake clean oei=$oei_config
done
}
do_compile() {
for oei_config in ${OEI_CONFIGS}; do
oe_runmake oei=$oei_config
done
}
do_install() {
install -d ${D}/firmware
for oei_config in ${OEI_CONFIGS}; do
install -m 0644 ${B}/build/${OEI_BOARD}/$oei_config/oei-*.bin ${D}/firmware
done
}
addtask deploy after do_install
do_deploy() {
cp -rf ${D}/firmware/* ${DEPLOYDIR}/
}
FILES:${PN} = "/firmware"
SYSROOT_DIRS += "/firmware"
PROVIDES += "virtual/imx-oei"
COMPATIBLE_MACHINE = "(mx95-generic-bsp)"

View File

@@ -0,0 +1,44 @@
# Set generic compiler for system manager core
INHIBIT_DEFAULT_DEPS = "1"
DEPENDS = "${SM_COMPILER}"
SM_COMPILER ?= "gcc-arm-none-eabi-native"
PROVIDES += "virtual/imx-system-manager"
inherit deploy
PACKAGE_ARCH = "${MACHINE_ARCH}"
# Set monitor mode for none, one, or two
PACKAGECONFIG[m0] = "M=0,,,,,m1 m2"
PACKAGECONFIG[m1] = ",,,,,m0 m2"
PACKAGECONFIG[m2] = "M=2,,,,,m0 m1"
SYSTEM_MANAGER_CONFIG ?= "INVALID"
LDFLAGS[unexport] = "1"
EXTRA_OEMAKE = " \
V=1 \
SM_CROSS_COMPILE=arm-none-eabi- \
${PACKAGECONFIG_CONFARGS} \
"
do_configure() {
oe_runmake config=${SYSTEM_MANAGER_CONFIG} clean
oe_runmake config=${SYSTEM_MANAGER_CONFIG} cfg
}
do_compile() {
oe_runmake config=${SYSTEM_MANAGER_CONFIG}
}
do_install[noexec] = "1"
addtask deploy after do_compile
do_deploy() {
install -D -p -m 0644 \
${B}/build/${SYSTEM_MANAGER_CONFIG}/${SYSTEM_MANAGER_FIRMWARE_BASENAME}.bin \
${DEPLOYDIR}/${SYSTEM_MANAGER_FIRMWARE_BASENAME}-${SYSTEM_MANAGER_CONFIG}.bin
}
COMPATIBLE_MACHINE = "(mx95-generic-bsp)"

View File

@@ -0,0 +1,23 @@
SUMMARY = "i.MX System Manager Firmware"
DESCRIPTION = "\
The System Manager (SM) is a firmware that runs on a Cortex-M processor on \
many NXP i.MX processors. The Cortex-M is the boot core, runs the boot ROM \
which loads the SM (and other boot code), and then branches to the SM. The \
SM then configures some aspects of the hardware such as isolation mechanisms \
and then starts other cores in the system. After starting these cores, it \
enters a service mode where it provides access to clocking, power, sensor, \
and pin control via a client RPC API based on ARM's System Control and \
Management Interface (SCMI)."
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b66f32a90f9577a5a3255c21d79bc619"
SRC_URI = "${IMX_SYSTEM_MANAGER_SRC};branch=${SRCBRANCH}"
IMX_SYSTEM_MANAGER_SRC ?= "git://github.com/nxp-imx/imx-sm.git;protocol=https"
SRCBRANCH = "master"
SRCREV = "709deccd9338399eb39b5cf99a60eab4fa60d539"
S = "${WORKDIR}/git"
require imx-system-manager.inc
PACKAGECONFIG ??= "m2"

View File

@@ -0,0 +1,10 @@
# Copyright (C) 2015 O.S. Systems Software LTDA.
PACKAGES += " \
${PN}-f2fs \
"
RDEPENDS:${PN}-f2fs = " \
${PN}-base \
f2fs-tools \
"

View File

@@ -0,0 +1,5 @@
PACKAGECONFIG:imxgpu3d ??= " \
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', \
bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx x11', \
'', d), d)} \
"

View File

@@ -0,0 +1,5 @@
PACKAGECONFIG:imxgpu3d ??= " \
cogl-pango gles2 \
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'egl-wayland', \
bb.utils.contains('DISTRO_FEATURES', 'x11', 'egl-x11', \
'', d), d)}"

View File

@@ -0,0 +1 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"

View File

@@ -0,0 +1,109 @@
[core]
shell=ivi-shell.so
modules=hmi-controller.so
#gbm-format=argb8888
idle-time=0
#use-g2d=1
#repaint-window=16
#enable-overlay-view=1
#[shell]
#size=1920x1080
[libinput]
touchscreen_calibrator=true
[ivi-shell]
ivi-shell-user-interface=weston-ivi-shell-user-interface
#developermode=true
cursor-theme=default
cursor-size=32
base-layer-id=1000
base-layer-id-offset=10000
workspace-background-layer-id=2000
workspace-layer-id=3000
application-layer-id=4000
transition-duration=300
background-image=/usr/share/weston/background.png
background-id=1001
panel-image=/usr/share/weston/panel.png
panel-id=1002
surface-id-offset=10
tiling-image=/usr/share/weston/tiling.png
tiling-id=1003
sidebyside-image=/usr/share/weston/sidebyside.png
sidebyside-id=1004
fullscreen-image=/usr/share/weston/fullscreen.png
fullscreen-id=1005
random-image=/usr/share/weston/random.png
random-id=1006
home-image=/usr/share/weston/home.png
home-id=1007
workspace-background-color=0x99000000
workspace-background-id=2001
[ivi-launcher]
workspace-id=0
icon-id=4001
icon=/usr/share/weston/icon_ivi_flower.png
path=/usr/bin/weston-flower
[ivi-launcher]
workspace-id=0
icon-id=4002
icon=/usr/share/weston/icon_ivi_clickdot.png
path=/usr/bin/weston-clickdot
[ivi-launcher]
workspace-id=1
icon-id=4003
icon=/usr/share/weston/icon_ivi_simple-egl.png
path=/usr/bin/weston-simple-egl
[ivi-launcher]
workspace-id=1
icon-id=4004
icon=/usr/share/weston/icon_ivi_simple-shm.png
path=/usr/bin/weston-simple-shm
[ivi-launcher]
workspace-id=2
icon-id=4005
icon=/usr/share/weston/icon_ivi_smoke.png
path=/usr/bin/weston-smoke
[ivi-launcher]
workspace-id=3
icon-id=4006
icon=/usr/share/weston/icon_ivi_flower.png
path=/usr/bin/weston-flower
[ivi-launcher]
workspace-id=3
icon-id=4007
icon=/usr/share/weston/icon_ivi_clickdot.png
path=/usr/bin/weston-clickdot
[ivi-launcher]
workspace-id=3
icon-id=4008
icon=/usr/share/weston/icon_ivi_simple-egl.png
path=/usr/bin/weston-simple-egl
[ivi-launcher]
workspace-id=3
icon-id=4009
icon=/usr/share/weston/icon_ivi_simple-shm.png
path=/usr/bin/weston-simple-shm
[ivi-launcher]
workspace-id=3
icon-id=4010
icon=/usr/share/weston/icon_ivi_smoke.png
path=/usr/bin/weston-smoke

View File

@@ -0,0 +1,20 @@
# List of supported machines from this layer
COMPATIBLE_MACHINE:imx8mm-lpddr4-evk = "imx8mm-lpddr4-evk"
TFA_BUILD_TARGET:imx8mm-lpddr4-evk = "all"
TFA_INSTALL_TARGET:imx8mm-lpddr4-evk = "bl31"
TFA_PLATFORM:imx8mm-lpddr4-evk = "imx8mm"
COMPATIBLE_MACHINE:imx8mn-ddr4-evk = "imx8mn-ddr4-evk"
TFA_BUILD_TARGET:imx8mn-ddr4-evk = "all"
TFA_INSTALL_TARGET:imx8mn-ddr4-evk = "bl31"
TFA_PLATFORM:imx8mn-ddr4-evk = "imx8mn"
COMPATIBLE_MACHINE:imx8mp-lpddr4-evk = "imx8mp-lpddr4-evk"
TFA_BUILD_TARGET:imx8mp-lpddr4-evk = "all"
TFA_INSTALL_TARGET:imx8mp-lpddr4-evk = "bl31"
TFA_PLATFORM:imx8mp-lpddr4-evk = "imx8mp"
COMPATIBLE_MACHINE:imx8mq-evk = "imx8mq-evk"
TFA_BUILD_TARGET:imx8mq-evk = "all"
TFA_INSTALL_TARGET:imx8mq-evk = "bl31"
TFA_PLATFORM:imx8mq-evk = "imx8mq"

View File

@@ -0,0 +1,41 @@
From 2cac94185824aa7df07ec48a2872f3d26d517a6d Mon Sep 17 00:00:00 2001
From: Shengjiu Wang <shengjiu.wang@nxp.com>
Date: Tue, 28 Nov 2023 10:23:42 +0800
Subject: [PATCH] launch: allow pipewire-pulse can be started by root.
revert commit 8942f6b40 ("launch: avoid autostarting pipewire-pulse
systemd units for root")
Upstream-Status: Inappropriate [i.MX specific]
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
---
src/daemon/systemd/user/pipewire-pulse.service.in | 1 -
src/daemon/systemd/user/pipewire-pulse.socket | 1 -
2 files changed, 2 deletions(-)
diff --git a/src/daemon/systemd/user/pipewire-pulse.service.in b/src/daemon/systemd/user/pipewire-pulse.service.in
index 73d22e532..da7728ee3 100644
--- a/src/daemon/systemd/user/pipewire-pulse.service.in
+++ b/src/daemon/systemd/user/pipewire-pulse.service.in
@@ -14,7 +14,6 @@ Description=PipeWire PulseAudio
# After=pipewire-pulse.socket is not needed, as it is already implicit in the
# socket-service relationship, see systemd.socket(5).
Requires=pipewire-pulse.socket
-ConditionUser=!root
Wants=pipewire.service pipewire-session-manager.service
After=pipewire.service pipewire-session-manager.service
Conflicts=pulseaudio.service
diff --git a/src/daemon/systemd/user/pipewire-pulse.socket b/src/daemon/systemd/user/pipewire-pulse.socket
index 1ae5edafb..d27fb0e26 100644
--- a/src/daemon/systemd/user/pipewire-pulse.socket
+++ b/src/daemon/systemd/user/pipewire-pulse.socket
@@ -1,6 +1,5 @@
[Unit]
Description=PipeWire PulseAudio
-ConditionUser=!root
Conflicts=pulseaudio.socket
[Socket]
--
2.34.1

View File

@@ -0,0 +1,16 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI:append:imx-nxp-bsp = " file://0001-launch-allow-pipewire-pulse-can-be-started-by-root.patch"
SYSTEMD_AUTO_ENABLE:imx-nxp-bsp = "disable"
DEPENDS:append:mx95-nxp-bsp = " libdrm"
PACKAGECONFIG:remove:mx6-nxp-bsp = "gstreamer"
PACKAGECONFIG:remove:mx7-nxp-bsp = "gstreamer"
PACKAGECONFIG:remove:mx8-nxp-bsp = "gstreamer"
PACKAGECONFIG:remove:mx93-nxp-bsp = "gstreamer"
PACKAGECONFIG:class-target:append:imx-nxp-bsp = " ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez-lc3', '', d)}"
# FIXME: Needs to qualify on PACKAGECONFIG
SYSTEMD_SERVICE:${PN}-pulse = "pipewire-pulse.service"

View File

@@ -0,0 +1,2 @@
# vivante drivers does not provide glx
PACKAGECONFIG:remove:imxgpu = "x11"

View File

@@ -0,0 +1,5 @@
# 6 and 7 Vivante do not provide virtual/libgbm required for any drm* flavour
DRM-REMOVE = ""
DRM-REMOVE:imxgpu:mx6-nxp-bsp = "drm-gl drm-gles2"
DRM-REMOVE:imxgpu:mx7-nxp-bsp = "drm-gl drm-gles2"
PACKAGECONFIG:remove = "${DRM-REMOVE}"

View File

@@ -0,0 +1,40 @@
SUMMARY = "i.MX code signing tool"
DESCRIPTION = "Provides software code signing support designed that integrate the HABv4 and AHAB library"
SECTION = "cst"
LICENSE = "BSD-3-Clause & Apache-2.0"
LIC_FILES_CHKSUM = "\
file://LICENSE.bsd3;md5=14aba05f9fa6c25527297c8aac95fcf6 \
file://LICENSE.hidapi;md5=e0ea014f523f64f0adb13409055ee59e \
file://LICENSE.openssl;md5=3441526b1df5cc01d812c7dfc218cea6 \
"
DEPENDS = "byacc-native flex-native openssl"
# debian: 3.4.0+dfsg-2
DEBIAN_PGK_NAME = "imx-code-signing-tool"
DEBIAN_PGK_VERSION = "${PV}+dfsg"
SRC_URI = "\
${DEBIAN_MIRROR}/main/i/${DEBIAN_PGK_NAME}/${DEBIAN_PGK_NAME}_${DEBIAN_PGK_VERSION}.orig.tar.xz \
"
SRC_URI[sha256sum] = "52ee3cee3bc500a42095f73c4584e223b4b9d2dfc1cd3e5df965c5952eba8c8d"
S = "${WORKDIR}/${DEBIAN_PGK_NAME}-${DEBIAN_PGK_VERSION}"
EXTRA_OEMAKE = 'CC="${CC}" LD="${CC}" AR="${AR}" OBJCOPY="${OBJCOPY}"'
do_compile() {
oe_runmake -C code/obj.linux64 OSTYPE=linux64 ENCRYPTION=yes COPTIONS="${CFLAGS} ${CPPFLAGS}" LDOPTIONS="${LDFLAGS}"
oe_runmake -C add-ons/hab_csf_parser COPTS="${CFLAGS} ${CPPFLAGS} ${LDFLAGS}"
}
do_install () {
install -d ${D}${bindir}
install -m 755 ${S}/code/obj.linux64/cst ${D}${bindir}/
install -m 755 ${S}/code/obj.linux64/srktool ${D}${bindir}
install -m 755 ${S}/add-ons/hab_csf_parser/csf_parser ${D}${bindir}
}
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,55 @@
SUMMARY = "Frame Manager Configuration tool"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=a504ab5a8ff235e67c7301214749346c"
PR = "r2"
DEPENDS = "libxml2 fmlib tclap"
SRC_URI = "git://github.com/nxp-qoriq/fmc;protocol=https;nobranch=1"
SRCREV = "5b9f4b16a864e9dfa58cdcc860be278a7f66ac18"
S = "${WORKDIR}/git"
EXTRA_OEMAKE = 'FMD_USPACE_HEADER_PATH="${STAGING_INCDIR}/fmd" \
FMD_USPACE_LIB_PATH="${STAGING_LIBDIR}" LIBXML2_HEADER_PATH="${STAGING_INCDIR}/libxml2" \
TCLAP_HEADER_PATH="${STAGING_INCDIR}" '
EXTRA_OEMAKE:class-native = 'FMCHOSTMODE=1 FMD_USPACE_HEADER_PATH="${STAGING_INCDIR}/fmd" \
FMD_USPACE_LIB_PATH="${STAGING_LIBDIR}" LIBXML2_HEADER_PATH="${STAGING_INCDIR}/libxml2" \
TCLAP_HEADER_PATH="${STAGING_INCDIR}" '
EXTRA_OEMAKE_PLATFORM ?= ""
EXTRA_OEMAKE_PLATFORM:ls1043a = "ls1043"
EXTRA_OEMAKE_PLATFORM:ls1046a = "ls1046"
EXTRA_OEMAKE_PLATFORM:ls1088a = "ls1088"
EXTRA_OEMAKE_PLATFORM:p1020 = "p4080ds"
EXTRA_OEMAKE_PLATFORM:p2020 = "p4080ds"
EXTRA_OEMAKE_PLATFORM:p2041 = "p4080ds"
EXTRA_OEMAKE_PLATFORM:p3041 = "p4080ds"
EXTRA_OEMAKE_PLATFORM:p4080 = "p4080ds"
EXTRA_OEMAKE_PLATFORM:p5040 = "p4080ds"
do_compile () {
oe_runmake MACHINE=${EXTRA_OEMAKE_PLATFORM} -C source
}
do_install () {
install -d ${D}/${bindir}
install -m 755 ${S}/source/fmc ${D}/${bindir}
install -d ${D}${sysconfdir}/fmc/config
install -m 644 ${S}${sysconfdir}/fmc/config/* ${D}${sysconfdir}/fmc/config
install -d ${D}/${includedir}/fmc
install ${S}/source/fmc.h ${D}/${includedir}/fmc
install -d ${D}/${libdir}
install ${S}/source/libfmc.a ${D}/${libdir}
}
PARALLEL_MAKE = ""
PACKAGE_ARCH = "${MACHINE_SOCARCH}"
COMPATIBLE_MACHINE = "(qoriq)"

View File

@@ -0,0 +1,2 @@
# testbuild/../test.c:10: undefined reference to `glXCreateContext'
PACKAGECONFIG:remove:imxgpu = "x11"

View File

@@ -0,0 +1 @@
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1 @@
include qt4-imx-support.inc

View File

@@ -0,0 +1,30 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/qt4:"
python __anonymous () {
families = ['mx6']
cur_families = (d.getVar('MACHINEOVERRIDES') or '').split(':')
if any(map(lambda x: x in cur_families,
families)):
d.appendVarFlag('do_configure', 'depends', ' virtual/kernel:do_shared_workdir')
}
SRC_URI:append:imxgpu2d = " \
file://0001-Add-support-for-i.MX-codecs-to-phonon.patch \
file://0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch \
file://0003-i.MX6-force-egl-visual-ID-33.patch \
file://0001-config.tests-add-DEFINES-to-compile-egl-test-with-im.patch \
file://0002-config.tests-add-DEFINES-to-compile-egl4gles1-test-w.patch \
"
DEPENDS:append:imxgpu2d = " virtual/kernel virtual/libgles2"
QT_GLFLAGS:imxgpu2d = "-opengl es2 -openvg"
QT_CONFIG_FLAGS:append:imxgpu2d = " -I${STAGING_KERNEL_DIR}/include/uapi \
-I${STAGING_KERNEL_DIR}/include/ \
-DLINUX=1 -DEGL_API_FB=1 \
-DQT_QPA_EXPERIMENTAL_TOUCHEVENT=1"
# The QT_CONFIG_FLAGS can pollute *.la files with -Dxxx
do_compile:append:mx6-nxp-bsp () {
find lib -name "*.la" | xargs -n1 sed -i 's/-D.*=1//g'
}

View File

@@ -0,0 +1 @@
include qt4-imx-support.inc

View File

@@ -0,0 +1,469 @@
From 2ff5682e42771519757756dedbf27b7a9e8e25d9 Mon Sep 17 00:00:00 2001
From: Rogerio Pimentel <rogerio.pimentel@freescale.com>
Date: Tue, 24 Jul 2012 13:47:01 -0300
Subject: [PATCH] Add support for i.MX codecs to phonon
Add support for i.MX codecs to phonon
Upstream-Status: Pending
Signed-off-by: Daniele Dall'Acqua <daniele.d@freescale.com>
Signed-off-by: Rogerio Pimentel <rogerio.pimentel@freescale.com>
---
src/3rdparty/phonon/gstreamer/abstractrenderer.h | 1 +
src/3rdparty/phonon/gstreamer/mediaobject.cpp | 4 +
src/3rdparty/phonon/gstreamer/videowidget.cpp | 60 ++------
src/3rdparty/phonon/gstreamer/videowidget.h | 1 +
src/3rdparty/phonon/gstreamer/widgetrenderer.cpp | 169 ++++++++++++++--------
src/3rdparty/phonon/gstreamer/widgetrenderer.h | 17 ++-
src/3rdparty/phonon/gstreamer/x11renderer.cpp | 22 +---
7 files changed, 141 insertions(+), 133 deletions(-)
diff --git a/src/3rdparty/phonon/gstreamer/abstractrenderer.h b/src/3rdparty/phonon/gstreamer/abstractrenderer.h
index 10a2822..fa0d87d 100644
--- a/src/3rdparty/phonon/gstreamer/abstractrenderer.h
+++ b/src/3rdparty/phonon/gstreamer/abstractrenderer.h
@@ -49,6 +49,7 @@ public:
virtual bool eventFilter(QEvent *) = 0;
virtual void handlePaint(QPaintEvent *) {}
virtual bool paintsOnWidget() { return true; } // Controls overlays
+ virtual void handleMove(QMoveEvent * event ) {};
protected:
VideoWidget *m_videoWidget;
diff --git a/src/3rdparty/phonon/gstreamer/mediaobject.cpp b/src/3rdparty/phonon/gstreamer/mediaobject.cpp
index 23a60c0..f806d64 100644
--- a/src/3rdparty/phonon/gstreamer/mediaobject.cpp
+++ b/src/3rdparty/phonon/gstreamer/mediaobject.cpp
@@ -515,6 +515,9 @@ void MediaObject::createPipeline()
// reduce buffer overruns as these are not gracefully handled at the moment.
m_audioPipe = gst_element_factory_make("queue", NULL);
g_object_set(G_OBJECT(m_audioPipe), "max-size-time", MAX_QUEUE_TIME, (const char*)NULL);
+ g_object_set(G_OBJECT(m_audioPipe), "max-size-time", 0, (const char*)NULL);
+ g_object_set(G_OBJECT(m_audioPipe), "max-size-buffers", 0, (const char*)NULL);
+ g_object_set(G_OBJECT(m_audioPipe), "max-size-bytes", 0, (const char*)NULL);
gst_bin_add(GST_BIN(m_audioGraph), m_audioPipe);
GstPad *audiopad = gst_element_get_pad (m_audioPipe, "sink");
gst_element_add_pad (m_audioGraph, gst_ghost_pad_new ("sink", audiopad));
@@ -527,6 +530,7 @@ void MediaObject::createPipeline()
m_videoPipe = gst_element_factory_make("queue", NULL);
g_object_set(G_OBJECT(m_videoPipe), "max-size-time", MAX_QUEUE_TIME, (const char*)NULL);
+ g_object_set(G_OBJECT(m_videoPipe), "max-size-time", 33000, (const char*)NULL);
gst_bin_add(GST_BIN(m_videoGraph), m_videoPipe);
GstPad *videopad = gst_element_get_pad (m_videoPipe, "sink");
gst_element_add_pad (m_videoGraph, gst_ghost_pad_new ("sink", videopad));
diff --git a/src/3rdparty/phonon/gstreamer/videowidget.cpp b/src/3rdparty/phonon/gstreamer/videowidget.cpp
index a4c6f79..3682d3f 100644
--- a/src/3rdparty/phonon/gstreamer/videowidget.cpp
+++ b/src/3rdparty/phonon/gstreamer/videowidget.cpp
@@ -83,50 +83,16 @@ void VideoWidget::setupVideoBin()
Q_ASSERT(m_videoBin);
gst_object_ref (GST_OBJECT (m_videoBin)); //Take ownership
gst_object_sink (GST_OBJECT (m_videoBin));
-
- //The videoplug element is the final element before the pluggable videosink
- m_videoplug = gst_element_factory_make ("identity", NULL);
-
- //Colorspace ensures that the output of the stream matches the input format accepted by our video sink
- m_colorspace = gst_element_factory_make ("ffmpegcolorspace", NULL);
-
- //Video scale is used to prepare the correct aspect ratio and scale.
- GstElement *videoScale = gst_element_factory_make ("videoscale", NULL);
-
- //We need a queue to support the tee from parent node
- GstElement *queue = gst_element_factory_make ("queue", NULL);
-
- if (queue && m_videoBin && videoScale && m_colorspace && videoSink && m_videoplug) {
- //Ensure that the bare essentials are prepared
- gst_bin_add_many (GST_BIN (m_videoBin), queue, m_colorspace, m_videoplug, videoScale, videoSink, (const char*)NULL);
- bool success = false;
- //Video balance controls color/sat/hue in the YUV colorspace
- m_videoBalance = gst_element_factory_make ("videobalance", NULL);
- if (m_videoBalance) {
- // For video balance to work we have to first ensure that the video is in YUV colorspace,
- // then hand it off to the videobalance filter before finally converting it back to RGB.
- // Hence we nede a videoFilter to convert the colorspace before and after videobalance
- GstElement *m_colorspace2 = gst_element_factory_make ("ffmpegcolorspace", NULL);
- gst_bin_add_many(GST_BIN(m_videoBin), m_videoBalance, m_colorspace2, (const char*)NULL);
- success = gst_element_link_many(queue, m_colorspace, m_videoBalance, m_colorspace2, videoScale, m_videoplug, videoSink, (const char*)NULL);
- } else {
- //If video balance is not available, just connect to sink directly
- success = gst_element_link_many(queue, m_colorspace, videoScale, m_videoplug, videoSink, (const char*)NULL);
- }
-
- if (success) {
- GstPad *videopad = gst_element_get_pad (queue, "sink");
- gst_element_add_pad (m_videoBin, gst_ghost_pad_new ("sink", videopad));
- gst_object_unref (videopad);
-#ifndef Q_WS_QPA
- QWidget *parentWidget = qobject_cast<QWidget*>(parent());
- if (parentWidget)
- parentWidget->winId(); // Due to some existing issues with alien in 4.4,
- // we must currently force the creation of a parent widget.
-#endif
- m_isValid = true; //initialization ok, accept input
- }
- }
+ gst_bin_add_many (GST_BIN (m_videoBin), videoSink, NULL);
+ GstPad *videopad = gst_element_get_pad (videoSink,"sink");
+ gst_element_add_pad (m_videoBin, gst_ghost_pad_new ("sink", videopad));
+ gst_object_unref (videopad);
+ QWidget *parentWidget = qobject_cast<QWidget*>(parent());
+
+ if (parentWidget)
+ parentWidget->winId(); // Due to some existing issues with alien in 4.4,
+ // we must currently force the creation of a parent widget.
+ m_isValid = true; //initialization ok, accept input
}
void VideoWidget::paintEvent(QPaintEvent *event)
@@ -135,6 +101,12 @@ void VideoWidget::paintEvent(QPaintEvent *event)
m_renderer->handlePaint(event);
}
+void VideoWidget::moveEvent(QMoveEvent * event )
+{
+ Q_ASSERT(m_renderer);
+ m_renderer->handleMove(event);
+}
+
void VideoWidget::setVisible(bool val) {
Q_ASSERT(m_renderer);
diff --git a/src/3rdparty/phonon/gstreamer/videowidget.h b/src/3rdparty/phonon/gstreamer/videowidget.h
index 8603f6a..38c7b17 100644
--- a/src/3rdparty/phonon/gstreamer/videowidget.h
+++ b/src/3rdparty/phonon/gstreamer/videowidget.h
@@ -65,6 +65,7 @@ public:
qreal saturation() const;
void setSaturation(qreal);
void setMovieSize(const QSize &size);
+ void moveEvent(QMoveEvent * event );
QSize sizeHint() const;
QRect scaleToAspect(QRect srcRect, int w, int h) const;
QRect calculateDrawFrameRect() const;
diff --git a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
index 423af9d..aa4925a 100644
--- a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
+++ b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
@@ -15,7 +15,9 @@
along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <QMouseEvent>
#include <QtGui/QPainter>
+#include <QPaintEvent>
#include <gst/gst.h>
#include "common.h"
#include "message.h"
@@ -24,6 +26,18 @@
#include "widgetrenderer.h"
#include "qrgb.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdint.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <unistd.h>
+#include <linux/mxcfb.h>
+
+#define MXCFB_GBL_ALPHA 255
+#define MXCFB_CLR_KEY 0x00000000 // ARGB8888
+
// support old OpenGL installations (1.2)
// assume that if TEXTURE0 isn't defined, none are
#ifndef GL_TEXTURE0
@@ -35,26 +49,6 @@
#ifndef QT_NO_PHONON_VIDEO
QT_BEGIN_NAMESPACE
-static void frameRendered()
-{
- static QString displayFps = qgetenv("PHONON_GST_FPS");
- if (displayFps.isEmpty())
- return;
-
- static int frames = 0;
- static QTime lastTime = QTime::currentTime();
- QTime time = QTime::currentTime();
-
- int delta = lastTime.msecsTo(time);
- if (delta > 2000) {
- printf("FPS: %f\n", 1000.0 * frames / qreal(delta));
- lastTime = time;
- frames = 0;
- }
-
- ++frames;
-}
-
namespace Phonon
{
namespace Gstreamer
@@ -62,17 +56,11 @@ namespace Gstreamer
WidgetRenderer::WidgetRenderer(VideoWidget *videoWidget)
: AbstractRenderer(videoWidget)
- , m_width(0)
- , m_height(0)
{
- videoWidget->backend()->logMessage("Creating QWidget renderer");
- if ((m_videoSink = GST_ELEMENT(g_object_new(get_type_RGB(), NULL)))) {
- gst_object_ref (GST_OBJECT (m_videoSink)); //Take ownership
+ if ((m_videoSink = gst_element_factory_make("mfw_v4lsink", NULL)) && m_videoSink != NULL) {
+
+ gst_object_ref (GST_OBJECT (m_videoSink)); //Take ownership
gst_object_sink (GST_OBJECT (m_videoSink));
-
- QWidgetVideoSinkBase* sink = reinterpret_cast<QWidgetVideoSinkBase*>(m_videoSink);
- // Let the videosink know which widget to direct frame updates to
- sink->renderWidget = videoWidget;
}
// Clear the background with black by default
@@ -84,67 +72,124 @@ WidgetRenderer::WidgetRenderer(VideoWidget *videoWidget)
m_videoWidget->setAttribute(Qt::WA_PaintOnScreen, false);
}
-void WidgetRenderer::setNextFrame(const QByteArray &array, int w, int h)
+WidgetRenderer::~WidgetRenderer()
{
- if (m_videoWidget->root()->state() == Phonon::LoadingState)
- return;
-
- m_frame = QImage();
- {
- m_frame = QImage((uchar *)array.constData(), w, h, QImage::Format_RGB32);
- }
+ if (m_videoSink) {
+ gst_object_unref (GST_OBJECT (m_videoSink));
+ m_videoSink = 0;
+ }
+}
- m_array = array;
- m_width = w;
- m_height = h;
+void WidgetRenderer::setVideoSize(void)
+{
- m_videoWidget->update();
+ int adj_x;
+ int adj_y;
+
+ QSize wSize = m_videoWidget->size();
+ m_drawFrameRect = m_videoWidget->calculateDrawFrameRect();
+ framePos = m_videoWidget->mapToGlobal(QPoint(0,0));
+
+ //Center the video in the widget
+
+ adj_x = (wSize.width()/2) - (m_drawFrameRect.width()/2);
+ adj_y = (wSize.height()/2) - (m_drawFrameRect.height()/2);
+ g_object_set(G_OBJECT(m_videoSink), "axis-left",adj_x + framePos.x(),(const char*)NULL);
+ g_object_set(G_OBJECT(m_videoSink), "axis-top", adj_y + framePos.y(), (const char*)NULL);
+ g_object_set(G_OBJECT(m_videoSink), "disp-width", m_drawFrameRect.width(), (const char*)NULL);
+ g_object_set(G_OBJECT(m_videoSink), "disp-height", m_drawFrameRect.height(), (const char*)NULL);
+ g_object_set(G_OBJECT(m_videoSink), "setpara", 1, (const char*)NULL);
}
void WidgetRenderer::handleMediaNodeEvent(const MediaNodeEvent *event)
{
switch (event->type()) {
- case MediaNodeEvent::SourceChanged:
- {
- clearFrame();
- break;
- }
default:
break;
}
}
-void WidgetRenderer::clearFrame()
+void WidgetRenderer::handlePaint(QPaintEvent *event)
{
- m_frame = QImage();
- m_array = QByteArray();
- m_videoWidget->update();
+ Q_UNUSED(event);
+ QPainter painter(m_videoWidget);
+ painter.fillRect(m_videoWidget->rect(), m_videoWidget->palette().background());
}
-const QImage &WidgetRenderer::currentFrame() const
+int WidgetRenderer::setOverlay(void)
{
- return m_frame;
+ struct mxcfb_color_key color_key;
+ struct mxcfb_gbl_alpha alpha;
+ int fd_fb;
+
+ if ((fd_fb = open("/dev/fb0", O_RDWR, 0)) < 0)
+ {
+ printf("Unable to open %s\n", "/dev/fb0");
+ return -1;
+
+ }
+
+ alpha.alpha = MXCFB_GBL_ALPHA;
+ alpha.enable = 1;
+
+ if (ioctl(fd_fb, MXCFB_SET_GBL_ALPHA, &alpha) < 0) {
+ printf("Error in applying Alpha\n");
+ }
+
+ color_key.color_key = MXCFB_CLR_KEY & 0x00FFFFFF;
+ color_key.enable = 1;
+ if ( ioctl(fd_fb, MXCFB_SET_CLR_KEY, &color_key) < 0) {
+
+ printf("Error in applying Color Key\n");
+ return -1;
+ }
+
+ close (fd_fb);
+
+ return 0;
}
-void WidgetRenderer::handlePaint(QPaintEvent *event)
+void WidgetRenderer::handleMove( QMoveEvent * event)
{
- Q_UNUSED(event);
- QPainter painter(m_videoWidget);
- m_drawFrameRect = m_videoWidget->calculateDrawFrameRect();
- painter.drawImage(drawFrameRect(), currentFrame());
- frameRendered();
+ Q_UNUSED(event);
+
+ if (framePos != m_videoWidget->mapToGlobal(QPoint(0,0)))
+ setVideoSize();
}
bool WidgetRenderer::eventFilter(QEvent * event)
{
- if (event->type() == QEvent::User) {
- NewFrameEvent *frameEvent= static_cast <NewFrameEvent *>(event);
- setNextFrame(frameEvent->frame, frameEvent->width, frameEvent->height);
- return true;
+ if (event->type() == QEvent::Show) {
+
+ setOverlay();
+ return true;
+
+ } else if (event->type() == QEvent::Resize) {
+
+ setVideoSize();
+ return true;
}
+ if (framePos != m_videoWidget->mapToGlobal(QPoint(0,0)))
+ setVideoSize();
return false;
}
+void WidgetRenderer::aspectRatioChanged(Phonon::VideoWidget::AspectRatio)
+{
+ setVideoSize();
+}
+
+void WidgetRenderer::scaleModeChanged(Phonon::VideoWidget::ScaleMode)
+{
+ setVideoSize();
+}
+
+void WidgetRenderer::movieSizeChanged(const QSize &movieSize)
+{
+ Q_UNUSED(movieSize);
+ setVideoSize();
+}
+
}
} //namespace Phonon::Gstreamer
diff --git a/src/3rdparty/phonon/gstreamer/widgetrenderer.h b/src/3rdparty/phonon/gstreamer/widgetrenderer.h
index 03ee9c0..6de1a03 100644
--- a/src/3rdparty/phonon/gstreamer/widgetrenderer.h
+++ b/src/3rdparty/phonon/gstreamer/widgetrenderer.h
@@ -40,20 +40,21 @@ class WidgetRenderer : public AbstractRenderer
{
public:
WidgetRenderer(VideoWidget *videoWidget);
+ ~WidgetRenderer(void);
bool eventFilter(QEvent * event);
void handlePaint(QPaintEvent *paintEvent);
void handleMediaNodeEvent(const MediaNodeEvent *event);
- const QImage& currentFrame() const;
QRect drawFrameRect() const { return m_drawFrameRect; }
- void setNextFrame(const QByteArray &array, int width, int height);
- bool frameIsSet() { return !m_array.isNull(); }
- void clearFrame();
+ void aspectRatioChanged(Phonon::VideoWidget::AspectRatio aspectRatio);
+ void scaleModeChanged(Phonon::VideoWidget::ScaleMode scaleMode);
+ void movieSizeChanged(const QSize &movieSize);
+ void setVideoSize(void);
+ int setOverlay(void);
+ void handleMove(QMoveEvent* event);
private:
- mutable QImage m_frame;
- QByteArray m_array;
- int m_width;
- int m_height;
+ void paintEvent ( QPaintEvent * event );
QRect m_drawFrameRect;
+ QPoint framePos;
};
}
diff --git a/src/3rdparty/phonon/gstreamer/x11renderer.cpp b/src/3rdparty/phonon/gstreamer/x11renderer.cpp
index 968f3a8..c4662e7 100644
--- a/src/3rdparty/phonon/gstreamer/x11renderer.cpp
+++ b/src/3rdparty/phonon/gstreamer/x11renderer.cpp
@@ -31,6 +31,8 @@
#include "mediaobject.h"
#include "message.h"
+#define FSL_GSTREAMER 1
+
QT_BEGIN_NAMESPACE
namespace Phonon
@@ -78,31 +80,16 @@ X11Renderer::~X11Renderer()
{
m_renderWidget->setAttribute(Qt::WA_PaintOnScreen, false);
m_renderWidget->setAttribute(Qt::WA_NoSystemBackground, false);
+ if (m_videoSink) {
+ gst_object_unref (GST_OBJECT (m_videoSink));
+ }
delete m_renderWidget;
}
GstElement* X11Renderer::createVideoSink()
{
- GstElement *videoSink = gst_element_factory_make ("xvimagesink", NULL);
- if (videoSink) {
- // Check if the xv sink is usable
- if (gst_element_set_state(videoSink, GST_STATE_READY) != GST_STATE_CHANGE_SUCCESS) {
- gst_object_unref(GST_OBJECT(videoSink));
- videoSink = 0;
- } else {
- // Note that this should not really be necessary as these are
- // default values, though under certain conditions values are retained
- // even between application instances. (reproducible on 0.10.16/Gutsy)
- g_object_set(G_OBJECT(videoSink), "brightness", 0, (const char*)NULL);
- g_object_set(G_OBJECT(videoSink), "contrast", 0, (const char*)NULL);
- g_object_set(G_OBJECT(videoSink), "hue", 0, (const char*)NULL);
- g_object_set(G_OBJECT(videoSink), "saturation", 0, (const char*)NULL);
- }
- }
-
- if (!videoSink)
- videoSink = gst_element_factory_make ("ximagesink", NULL);
+ GstElement *videoSink = gst_element_factory_make ("mfw_v4lsink", NULL);
gst_object_ref (GST_OBJECT (videoSink)); //Take ownership
gst_object_sink (GST_OBJECT (videoSink));
--
1.7.1

View File

@@ -0,0 +1,26 @@
From 234580de9d63fd79a8b444358cdaeac111a17061 Mon Sep 17 00:00:00 2001
From: Mauro Salvini <m.salvini@koansoftware.com>
Date: Thu, 29 Sep 2022 16:06:04 +0200
Subject: [PATCH 1/2] config.tests: add DEFINES to compile egl test with
imxgpu2d (Vivante)
Upstream-Status: Pending
Signed-off-by: Mauro Salvini <m.salvini@koansoftware.com>
---
config.tests/unix/egl/egl.pro | 1 +
1 file changed, 1 insertion(+)
diff --git a/config.tests/unix/egl/egl.pro b/config.tests/unix/egl/egl.pro
index f04d0535..bc35b908 100644
--- a/config.tests/unix/egl/egl.pro
+++ b/config.tests/unix/egl/egl.pro
@@ -6,5 +6,6 @@ for(p, QMAKE_LIBDIR_EGL) {
!isEmpty(QMAKE_INCDIR_EGL): INCLUDEPATH += $$QMAKE_INCDIR_EGL
!isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL
+DEFINES += LINUX=1 EGL_API_FB=1
CONFIG -= qt
--
2.17.1

View File

@@ -0,0 +1,26 @@
From adb19c68d3c92eb1a88e49e447ce827f14943486 Mon Sep 17 00:00:00 2001
From: Mauro Salvini <m.salvini@koansoftware.com>
Date: Thu, 29 Sep 2022 16:12:11 +0200
Subject: [PATCH 2/2] config.tests: add DEFINES to compile egl4gles1 test with
imxgpu2d (Vivante)
Upstream-Status: Pending
Signed-off-by: Mauro Salvini <m.salvini@koansoftware.com>
---
config.tests/unix/egl4gles1/egl4gles1.pro | 1 +
1 file changed, 1 insertion(+)
diff --git a/config.tests/unix/egl4gles1/egl4gles1.pro b/config.tests/unix/egl4gles1/egl4gles1.pro
index 667ea8e3..14cb4a76 100644
--- a/config.tests/unix/egl4gles1/egl4gles1.pro
+++ b/config.tests/unix/egl4gles1/egl4gles1.pro
@@ -6,5 +6,6 @@ for(p, QMAKE_LIBDIR_EGL) {
!isEmpty(QMAKE_INCDIR_EGL): INCLUDEPATH += $$QMAKE_INCDIR_EGL
!isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL
+DEFINES += LINUX=1 EGL_API_FB=1
CONFIG -= qt
--
2.17.1

View File

@@ -0,0 +1,47 @@
From 023befba9aad60ef58177fd987a6aa40c357b2b2 Mon Sep 17 00:00:00 2001
From: Eric Nelson <eric.nelson@boundarydevices.com>
Date: Fri, 16 Aug 2013 11:42:23 -0700
Subject: [PATCH] i.MX video renderer: Allow v4l device from environment
The i.MX6 supports multiple IPUs and multiple V4L2 output
devices for each.
Devices are numbered starting with /dev/video16 and defined
for each configured display. In general, /dev/video16 will
correspond to the RGB (background) layer for /dev/fb0.
If a display is the first on an IPU, an additional V4L2
output will be defined that corresponds to the normally
YUV overlay (foreground) layer.
This patch allows association of the proper device for
a particular session for use in multi-headed applications.
The default is /dev/video17:
export v4lsinkdev=/dev/video17
Upstream-Status: Pending
Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
---
src/3rdparty/phonon/gstreamer/widgetrenderer.cpp | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
index aa4925a..a502ccd 100644
--- a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
+++ b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
@@ -58,9 +58,12 @@ WidgetRenderer::WidgetRenderer(VideoWidget *videoWidget)
: AbstractRenderer(videoWidget)
{
if ((m_videoSink = gst_element_factory_make("mfw_v4lsink", NULL)) && m_videoSink != NULL) {
-
+ char *videodev;
gst_object_ref (GST_OBJECT (m_videoSink)); //Take ownership
gst_object_sink (GST_OBJECT (m_videoSink));
+ videodev=getenv("v4lsinkdev");
+ if (videodev)
+ g_object_set (G_OBJECT (m_videoSink), "device", videodev, NULL);
}
// Clear the background with black by default
--
1.8.1.2

View File

@@ -0,0 +1,35 @@
From: Javier Viguera <javier.viguera@digi.com>
Date: Mon, 3 Mar 2014 17:10:41 +0100
Subject: [PATCH] i.MX6: force egl visual ID 33
Workaround mismatch between EGL binary libraries and QT for FSL MX6
based platforms.
Error:
Warning: EGL suggested using X Visual ID 33 (ARGB0888) for EGL config 28 (ARGB0444), but this is incompatable
Unable to find an X11 visual which matches EGL config 28
Patch adapted from:
http://wiki.wandboard.org/index.php/Integrate_Qt5_into_yocto_sato_image_on_Wandboard
Upstream-Status: Inappropriate [workaround]
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
---
src/gui/egl/qegl_x11.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp
index 196d0f77bf2d..8acf5a6c99d4 100644
--- a/src/gui/egl/qegl_x11.cpp
+++ b/src/gui/egl/qegl_x11.cpp
@@ -319,7 +319,7 @@ VisualID QEgl::getCompatibleVisualId(EGLConfig config)
}
qWarning("Unable to find an X11 visual which matches EGL config %d", configId);
- return (VisualID)0;
+ return (VisualID)33;
}
void qt_set_winid_on_widget(QWidget* w, Qt::HANDLE id)

View File

@@ -0,0 +1,40 @@
#
# qmake configuration for common gcc
#
QMAKE_COMPILER = gcc
QMAKE_CC = $(OE_QMAKE_CC)
QMAKE_CFLAGS += $(OE_QMAKE_CFLAGS) -DLINUX=1 -DEGL_API_FB=1
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $(OE_QMAKE_CFLAGS)
QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
QMAKE_CXX = $(OE_QMAKE_CXX)
QMAKE_CXXFLAGS += $(OE_QMAKE_CXXFLAGS) -DLINUX=1 -DEGL_API_FB=1
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
QMAKE_LINK = $(OE_QMAKE_LINK)
QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK)
QMAKE_LINK_C = $(OE_QMAKE_LINK)
QMAKE_LINK_C_SHLIB = $(OE_QMAKE_LINK)
QMAKE_LFLAGS += $(OE_QMAKE_LDFLAGS)
QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined
QMAKE_LFLAGS_RPATH = -Wl,-rpath-link,
QMAKE_PCH_OUTPUT_EXT = .gch
# -Bsymbolic-functions (ld) support
QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
# do not depend on gdb
CONFIG -= gdb_dwarf_index
# some linking helper...
CONFIG += rpath_libdirs
# for the SDK
isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $(OE_QMAKE_QT_CONFIG)

View File

@@ -0,0 +1,66 @@
#
# qmake configuration for common linux
#
QMAKE_CFLAGS_THREAD += -D_REENTRANT
QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD
QMAKE_INCDIR =
QMAKE_LIBDIR =
QMAKE_INCDIR_X11 =
QMAKE_LIBDIR_X11 =
QMAKE_INCDIR_QT = $(OE_QMAKE_INCDIR_QT)
QMAKE_LIBDIR_QT = $(OE_QMAKE_LIBDIR_QT)
QMAKE_INCDIR_OPENGL =
QMAKE_LIBDIR_OPENGL =
QMAKE_INCDIR_OPENGL_ES1 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES1 = $$QMAKE_LIBDIR_OPENGL
QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
QMAKE_INCDIR_EGL =
QMAKE_LIBDIR_EGL =
QMAKE_INCDIR_OPENVG =
QMAKE_LIBDIR_OPENVG =
QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11)
QMAKE_LIBS_X11SM = $(OE_QMAKE_LIBS_X11SM)
QMAKE_LIBS_NIS = -lnsl
QMAKE_LIBS_EGL = -lEGL -lGAL -DLINUX=1 -DEGL_API_FB=1
QMAKE_LIBS_OPENGL = -lGL
QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_OPENGL_ES1 = -lGLES_CM
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 -lGAL -lEGL -DLINUX=1 -DEGL_API_FB=1
QMAKE_LIBS_OPENVG = -lOpenVG -lGAL -lEGL -DLINUX=1 -DEGL_API_FB=1
QMAKE_LIBS_THREAD = -lpthread
QMAKE_MOC = $(OE_QMAKE_MOC)
QMAKE_UIC = $(OE_QMAKE_UIC)
QMAKE_UIC3 = $(OE_QMAKE_UIC3)
QMAKE_RCC = $(OE_QMAKE_RCC)
QMAKE_QDBUSCPP2XML = $(OE_QMAKE_QDBUSCPP2XML)
QMAKE_QDBUSXML2CPP = $(OE_QMAKE_QDBUSXML2CPP)
QMAKE_AR = $(OE_QMAKE_AR) cqs
QMAKE_OBJCOPY = objcopy
QMAKE_RANLIB =
QMAKE_TAR = tar -cf
QMAKE_GZIP = gzip -9f
QMAKE_COPY = cp -f
QMAKE_COPY_FILE = $(COPY)
QMAKE_COPY_DIR = $(COPY) -r
QMAKE_MOVE = mv -f
QMAKE_DEL_FILE = rm -f
QMAKE_DEL_DIR = rmdir
QMAKE_STRIP = $(OE_QMAKE_STRIP)
QMAKE_STRIPFLAGS_LIB += --strip-unneeded
QMAKE_CHK_DIR_EXISTS = test -d
QMAKE_MKDIR = mkdir -p
QMAKE_INSTALL_FILE = install -m 644 -p
QMAKE_INSTALL_PROGRAM = install -m 755 -p
include(unix.conf)

View File

@@ -0,0 +1,32 @@
From 3f9703fecd670b36030e1093466f6d11b370c19f Mon Sep 17 00:00:00 2001
From: Yuqing Zhu <carol.zhu@nxp.com>
Date: Mon, 27 Mar 2017 15:33:35 +0800
Subject: [PATCH] egl.prf: Fix build error when egl headers need platform
definition
Gain the value through pkg-config and pass it through QMAKE_CFLAGS_EGL.
Upstream-Status: Pending [https://bugreports.qt.io/browse/QTBUG-61712]
Signed-off-by: Yuqing Zhu <carol.zhu@nxp.com>
---
mkspecs/features/egl.prf | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/mkspecs/features/egl.prf b/mkspecs/features/egl.prf
index 9fa0c9e..85d5852 100644
--- a/mkspecs/features/egl.prf
+++ b/mkspecs/features/egl.prf
@@ -1,3 +1,9 @@
+# egl headers need a definition
+PKG_CONFIG = $$pkgConfigExecutable()
+PKGCONFIG_CFLAGS = $$system($$PKG_CONFIG --cflags egl)
+PKGCONFIG_CFLAGS = $$find(PKGCONFIG_CFLAGS, ^-D.*)
+QMAKE_CFLAGS_EGL = $$PKGCONFIG_CFLAGS
+
INCLUDEPATH += $$QMAKE_INCDIR_EGL
LIBS_PRIVATE += $$QMAKE_LIBS_EGL
QMAKE_CFLAGS += $$QMAKE_CFLAGS_EGL
--
1.9.1

View File

@@ -0,0 +1,15 @@
Upstream-Status: Pending
Index: git/mkspecs/linux-oe-g++/qmake.conf
===================================================================
--- git.orig/mkspecs/linux-oe-g++/qmake.conf 2017-06-26 10:20:57.139653321 -0500
+++ git/mkspecs/linux-oe-g++/qmake.conf 2017-06-26 10:30:12.000000000 -0500
@@ -39,5 +39,9 @@
include(../oe-device-extra.pri)
+QMAKE_LIBS_EGL += -lEGL
+QMAKE_LIBS_OPENGL_ES2 += -lEGL -lGLESv2
+QMAKE_LIBS_OPENVG += -lEGL -lOpenVG
+
load(device_config)
load(qt_config)

View File

@@ -0,0 +1,39 @@
# Copyright (C) 2013 Eric Bénard - Eukréa Electromatique
# Copyright (C) 2016 Freescale Semiconductor
# Copyright (C) 2016, 2017 O.S. Systems Software LTDA.
# Copyright (C) 2017-2018 NXP
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI:append:imxgpu = " \
file://0014-Add-IMX-GPU-support.patch \
file://0001-egl.prf-Fix-build-error-when-egl-headers-need-platfo.patch \
"
PACKAGECONFIG_GL_IMX_GPU = ""
PACKAGECONFIG_GL_IMX_GPU:mx8-nxp-bsp = "gbm kms"
PACKAGECONFIG_GL_IMX_GPU:mx95-nxp-bsp = "gbm kms"
PACKAGECONFIG_GL:imxpxp = "gles2"
PACKAGECONFIG_GL:imxgpu2d = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', ' gl', '', d)} \
${PACKAGECONFIG_GL_IMX_GPU}"
PACKAGECONFIG_GL:imxgpu3d = "gles2 \
${PACKAGECONFIG_GL_IMX_GPU}"
PACKAGECONFIG_GL:use-mainline-bsp ?= "gles2 gbm kms"
PACKAGECONFIG_PLATFORM = ""
PACKAGECONFIG_PLATFORM:imxgpu2d = "no-opengl linuxfb"
PACKAGECONFIG_PLATFORM:imxgpu3d = " \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', \
bb.utils.contains('DISTRO_FEATURES', 'wayland', '', \
'eglfs', d), d)}"
PACKAGECONFIG_PLATFORM:use-mainline-bsp = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'eglfs', d)}"
PACKAGECONFIG += "${PACKAGECONFIG_PLATFORM}"
PACKAGECONFIG_VULKAN_IMX_GPU = ""
PACKAGECONFIG_VULKAN_IMX_GPU:mx8-nxp-bsp = "vulkan"
PACKAGECONFIG_VULKAN_IMX_GPU:mx9-nxp-bsp = "vulkan"
PACKAGECONFIG_VULKAN_IMX_GPU:mx8mm-nxp-bsp = ""
PACKAGECONFIG_VULKAN = ""
PACKAGECONFIG_VULKAN:imxgpu = "${PACKAGECONFIG_VULKAN_IMX_GPU}"
PACKAGECONFIG += "${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', '${PACKAGECONFIG_VULKAN}', '', d)}"

View File

@@ -0,0 +1,9 @@
# Fixes QT5 application builds searching for libimx6vivantevideonode.so
# via cmake cmake/Qt5Multimedia/Qt5MultimediaConfig.cmake
do_install:append:imxgpu() {
install -d ${D}${libdir}/plugins/videoimx6vivantevideonode
ln -sf ../video/videonode/libeglvideonode.so ${D}${libdir}/plugins/videoimx6vivantevideonode/libeglvideonode.so
ln -sf ../video/videonode/libimx6vivantevideonode.so ${D}${libdir}/plugins/videoimx6vivantevideonode/libimx6vivantevideonode.so
}
INSANE_SKIP:${PN}-plugins:imxgpu = "dev-so"

View File

@@ -0,0 +1,9 @@
# etnaviv mesa does not have glx
PACKAGECONFIG:remove:use-mainline-bsp = "xcomposite-glx"
PACKAGECONFIG:remove:mx6-nxp-bsp = "xcomposite-egl xcomposite-glx"
PACKAGECONFIG:remove:mx7-nxp-bsp = "xcomposite-egl xcomposite-glx"
# i.MX8 does never provide native x11, so required dependencies are not met
PACKAGECONFIG:remove:mx8-nxp-bsp = "xcomposite-egl xcomposite-glx"
PACKAGECONFIG:remove:mx95-nxp-bsp = "xcomposite-egl xcomposite-glx"

View File

@@ -0,0 +1,57 @@
# Copyright (C) 2013 Eric Bénard - Eukréa Electromatique
# Copyright (C) 2016 Freescale Semiconductor
# Copyright (C) 2016, 2017 O.S. Systems Software LTDA.
# Copyright (C) 2017-2018 NXP
PACKAGECONFIG_GRAPHICS:imxpxp = " \
gles2"
PACKAGECONFIG_GRAPHICS:imxgpu2d = " \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', ' gl', '', d)} \
${PACKAGECONFIG_GRAPHICS_IMX_GPU}"
PACKAGECONFIG_GRAPHICS:imxgpu3d = " \
gles2 \
${PACKAGECONFIG_GRAPHICS_IMX_GPU}"
PACKAGECONFIG_GRAPHICS_IMX_GPU = ""
PACKAGECONFIG_GRAPHICS_IMX_GPU:mx8-nxp-bsp = " \
gbm kms"
PACKAGECONFIG_GRAPHICS_IMX_GPU:mx95-nxp-bsp = " \
gbm kms"
PACKAGECONFIG_GRAPHICS:use-mainline-bsp ?= " \
gles2 gbm kms"
PACKAGECONFIG += " \
${PACKAGECONFIG_PLATFORM}"
PACKAGECONFIG_PLATFORM = ""
PACKAGECONFIG_PLATFORM:imxgpu2d = " \
no-opengl \
linuxfb \
${PACKAGECONFIG_PLATFORM_EGLFS}"
PACKAGECONFIG_PLATFORM:imxgpu3d = " \
${PACKAGECONFIG_PLATFORM_EGLFS}"
PACKAGECONFIG_PLATFORM_EGLFS = ""
PACKAGECONFIG_PLATFORM_EGLFS:imxgpu3d = " \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', \
bb.utils.contains('DISTRO_FEATURES', 'wayland', '', \
'eglfs', d), d)}"
PACKAGECONFIG_PLATFORM_EGLFS:mx8-nxp-bsp = " \
eglfs"
PACKAGECONFIG_PLATFORM:use-mainline-bsp = " \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'eglfs', d)}"
PACKAGECONFIG += " \
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '${PACKAGECONFIG_WAYLAND}', '', d)}"
PACKAGECONFIG_WAYLAND = "wayland"
PACKAGECONFIG += " \
${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', '${PACKAGECONFIG_VULKAN}', '', d)}"
PACKAGECONFIG_VULKAN = ""
PACKAGECONFIG_VULKAN:imxgpu = " \
${PACKAGECONFIG_VULKAN_IMX_GPU}"
PACKAGECONFIG_VULKAN_IMX_GPU = ""
PACKAGECONFIG_VULKAN_IMX_GPU:mx8-nxp-bsp = "vulkan"
PACKAGECONFIG_VULKAN_IMX_GPU:mx95-nxp-bsp = "vulkan"
PACKAGECONFIG_VULKAN_IMX_GPU:mx8mm-nxp-bsp = ""

View File

@@ -0,0 +1,7 @@
# etnaviv mesa does not have glx
PACKAGECONFIG:remove:use-mainline-bsp = "xcomposite-glx"
PACKAGECONFIG:remove:mx6-nxp-bsp = "xcomposite-egl xcomposite-glx"
PACKAGECONFIG:remove:mx7-nxp-bsp = "xcomposite-egl xcomposite-glx"
PACKAGECONFIG:remove:mx8-nxp-bsp = "xcomposite-egl xcomposite-glx"
PACKAGECONFIG:remove:mx95-nxp-bsp = "xcomposite-egl xcomposite-glx"

View File

@@ -0,0 +1,465 @@
# Master configuration file for the QEMU driver.
# All settings described here are optional - if omitted, sensible
# defaults are used.
# VNC is configured to listen on 127.0.0.1 by default.
# To make it listen on all public interfaces, uncomment
# this next option.
#
# NB, strong recommendation to enable TLS + x509 certificate
# verification when allowing public access
#
#vnc_listen = "0.0.0.0"
# Enable this option to have VNC served over an automatically created
# unix socket. This prevents unprivileged access from users on the
# host machine, though most VNC clients do not support it.
#
# This will only be enabled for VNC configurations that do not have
# a hardcoded 'listen' or 'socket' value. This setting takes preference
# over vnc_listen.
#
#vnc_auto_unix_socket = 1
# Enable use of TLS encryption on the VNC server. This requires
# a VNC client which supports the VeNCrypt protocol extension.
# Examples include vinagre, virt-viewer, virt-manager and vencrypt
# itself. UltraVNC, RealVNC, TightVNC do not support this
#
# It is necessary to setup CA and issue a server certificate
# before enabling this.
#
#vnc_tls = 1
# Use of TLS requires that x509 certificates be issued. The
# default it to keep them in /etc/pki/libvirt-vnc. This directory
# must contain
#
# ca-cert.pem - the CA master certificate
# server-cert.pem - the server certificate signed with ca-cert.pem
# server-key.pem - the server private key
#
# This option allows the certificate directory to be changed
#
#vnc_tls_x509_cert_dir = "/etc/pki/libvirt-vnc"
# The default TLS configuration only uses certificates for the server
# allowing the client to verify the server's identity and establish
# an encrypted channel.
#
# It is possible to use x509 certificates for authentication too, by
# issuing a x509 certificate to every client who needs to connect.
#
# Enabling this option will reject any client who does not have a
# certificate signed by the CA in /etc/pki/libvirt-vnc/ca-cert.pem
#
#vnc_tls_x509_verify = 1
# The default VNC password. Only 8 letters are significant for
# VNC passwords. This parameter is only used if the per-domain
# XML config does not already provide a password. To allow
# access without passwords, leave this commented out. An empty
# string will still enable passwords, but be rejected by QEMU,
# effectively preventing any use of VNC. Obviously change this
# example here before you set this.
#
#vnc_password = "XYZ12345"
# Enable use of SASL encryption on the VNC server. This requires
# a VNC client which supports the SASL protocol extension.
# Examples include vinagre, virt-viewer and virt-manager
# itself. UltraVNC, RealVNC, TightVNC do not support this
#
# It is necessary to configure /etc/sasl2/qemu.conf to choose
# the desired SASL plugin (eg, GSSPI for Kerberos)
#
#vnc_sasl = 1
# The default SASL configuration file is located in /etc/sasl2/
# When running libvirtd unprivileged, it may be desirable to
# override the configs in this location. Set this parameter to
# point to the directory, and create a qemu.conf in that location
#
#vnc_sasl_dir = "/some/directory/sasl2"
# QEMU implements an extension for providing audio over a VNC connection,
# though if your VNC client does not support it, your only chance for getting
# sound output is through regular audio backends. By default, libvirt will
# disable all QEMU sound backends if using VNC, since they can cause
# permissions issues. Enabling this option will make libvirtd honor the
# QEMU_AUDIO_DRV environment variable when using VNC.
#
#vnc_allow_host_audio = 0
# SPICE is configured to listen on 127.0.0.1 by default.
# To make it listen on all public interfaces, uncomment
# this next option.
#
# NB, strong recommendation to enable TLS + x509 certificate
# verification when allowing public access
#
#spice_listen = "0.0.0.0"
# Enable use of TLS encryption on the SPICE server.
#
# It is necessary to setup CA and issue a server certificate
# before enabling this.
#
#spice_tls = 1
# Use of TLS requires that x509 certificates be issued. The
# default it to keep them in /etc/pki/libvirt-spice. This directory
# must contain
#
# ca-cert.pem - the CA master certificate
# server-cert.pem - the server certificate signed with ca-cert.pem
# server-key.pem - the server private key
#
# This option allows the certificate directory to be changed.
#
#spice_tls_x509_cert_dir = "/etc/pki/libvirt-spice"
# The default SPICE password. This parameter is only used if the
# per-domain XML config does not already provide a password. To
# allow access without passwords, leave this commented out. An
# empty string will still enable passwords, but be rejected by
# QEMU, effectively preventing any use of SPICE. Obviously change
# this example here before you set this.
#
#spice_password = "XYZ12345"
# Enable use of SASL encryption on the SPICE server. This requires
# a SPICE client which supports the SASL protocol extension.
#
# It is necessary to configure /etc/sasl2/qemu.conf to choose
# the desired SASL plugin (eg, GSSPI for Kerberos)
#
#spice_sasl = 1
# The default SASL configuration file is located in /etc/sasl2/
# When running libvirtd unprivileged, it may be desirable to
# override the configs in this location. Set this parameter to
# point to the directory, and create a qemu.conf in that location
#
#spice_sasl_dir = "/some/directory/sasl2"
# By default, if no graphical front end is configured, libvirt will disable
# QEMU audio output since directly talking to alsa/pulseaudio may not work
# with various security settings. If you know what you're doing, enable
# the setting below and libvirt will passthrough the QEMU_AUDIO_DRV
# environment variable when using nographics.
#
#nographics_allow_host_audio = 1
# Override the port for creating both VNC and SPICE sessions (min).
# This defaults to 5900 and increases for consecutive sessions
# or when ports are occupied, until it hits the maximum.
#
# Minimum must be greater than or equal to 5900 as lower number would
# result into negative vnc display number.
#
# Maximum must be less than 65536, because higher numbers do not make
# sense as a port number.
#
#remote_display_port_min = 5900
#remote_display_port_max = 65535
# VNC WebSocket port policies, same rules apply as with remote display
# ports. VNC WebSockets use similar display <-> port mappings, with
# the exception being that ports starts from 5700 instead of 5900.
#
#remote_websocket_port_min = 5700
#remote_websocket_port_max = 65535
# The default security driver is SELinux. If SELinux is disabled
# on the host, then the security driver will automatically disable
# itself. If you wish to disable QEMU SELinux security driver while
# leaving SELinux enabled for the host in general, then set this
# to 'none' instead. It's also possible to use more than one security
# driver at the same time, for this use a list of names separated by
# comma and delimited by square brackets. For example:
#
# security_driver = [ "selinux", "apparmor" ]
#
# Notes: The DAC security driver is always enabled; as a result, the
# value of security_driver cannot contain "dac". The value "none" is
# a special value; security_driver can be set to that value in
# isolation, but it cannot appear in a list of drivers.
#
#security_driver = "selinux"
# If set to non-zero, then the default security labeling
# will make guests confined. If set to zero, then guests
# will be unconfined by default. Defaults to 1.
#security_default_confined = 1
# If set to non-zero, then attempts to create unconfined
# guests will be blocked. Defaults to 0.
#security_require_confined = 1
# The user for QEMU processes run by the system instance. It can be
# specified as a user name or as a user id. The qemu driver will try to
# parse this value first as a name and then, if the name doesn't exist,
# as a user id.
#
# Since a sequence of digits is a valid user name, a leading plus sign
# can be used to ensure that a user id will not be interpreted as a user
# name.
#
# Some examples of valid values are:
#
# user = "qemu" # A user named "qemu"
# user = "+0" # Super user (uid=0)
# user = "100" # A user named "100" or a user with uid=100
#
#user = "root"
# The group for QEMU processes run by the system instance. It can be
# specified in a similar way to user.
#group = "root"
# Whether libvirt should dynamically change file ownership
# to match the configured user/group above. Defaults to 1.
# Set to 0 to disable file ownership changes.
#dynamic_ownership = 1
# What cgroup controllers to make use of with QEMU guests
#
# - 'cpu' - use for schedular tunables
# - 'devices' - use for device whitelisting
# - 'memory' - use for memory tunables
# - 'blkio' - use for block devices I/O tunables
# - 'cpuset' - use for CPUs and memory nodes
# - 'cpuacct' - use for CPUs statistics.
#
# NB, even if configured here, they won't be used unless
# the administrator has mounted cgroups, e.g.:
#
# mkdir /dev/cgroup
# mount -t cgroup -o devices,cpu,memory,blkio,cpuset none /dev/cgroup
#
# They can be mounted anywhere, and different controllers
# can be mounted in different locations. libvirt will detect
# where they are located.
#
#cgroup_controllers = [ "cpu", "devices", "memory", "blkio", "cpuset", "cpuacct" ]
# This is the basic set of devices allowed / required by
# all virtual machines.
#
# As well as this, any configured block backed disks,
# all sound device, and all PTY devices are allowed.
#
# This will only need setting if newer QEMU suddenly
# wants some device we don't already know about.
#
cgroup_device_acl = [
"/dev/null", "/dev/full", "/dev/zero",
"/dev/random", "/dev/urandom",
"/dev/ptmx", "/dev/kvm", "/dev/kqemu",
"/dev/rtc", "/dev/hpet", "/dev/vfio/vfio", "/dev/net/tun"
]
# The default format for Qemu/KVM guest save images is raw; that is, the
# memory from the domain is dumped out directly to a file. If you have
# guests with a large amount of memory, however, this can take up quite
# a bit of space. If you would like to compress the images while they
# are being saved to disk, you can also set "lzop", "gzip", "bzip2", or "xz"
# for save_image_format. Note that this means you slow down the process of
# saving a domain in order to save disk space; the list above is in descending
# order by performance and ascending order by compression ratio.
#
# save_image_format is used when you use 'virsh save' or 'virsh managedsave'
# at scheduled saving, and it is an error if the specified save_image_format
# is not valid, or the requested compression program can't be found.
#
# dump_image_format is used when you use 'virsh dump' at emergency
# crashdump, and if the specified dump_image_format is not valid, or
# the requested compression program can't be found, this falls
# back to "raw" compression.
#
# snapshot_image_format specifies the compression algorithm of the memory save
# image when an external snapshot of a domain is taken. This does not apply
# on disk image format. It is an error if the specified format isn't valid,
# or the requested compression program can't be found.
#
#save_image_format = "raw"
#dump_image_format = "raw"
#snapshot_image_format = "raw"
# When a domain is configured to be auto-dumped when libvirtd receives a
# watchdog event from qemu guest, libvirtd will save dump files in directory
# specified by auto_dump_path. Default value is /var/lib/libvirt/qemu/dump
#
#auto_dump_path = "/var/lib/libvirt/qemu/dump"
# When a domain is configured to be auto-dumped, enabling this flag
# has the same effect as using the VIR_DUMP_BYPASS_CACHE flag with the
# virDomainCoreDump API. That is, the system will avoid using the
# file system cache while writing the dump file, but may cause
# slower operation.
#
#auto_dump_bypass_cache = 0
# When a domain is configured to be auto-started, enabling this flag
# has the same effect as using the VIR_DOMAIN_START_BYPASS_CACHE flag
# with the virDomainCreateWithFlags API. That is, the system will
# avoid using the file system cache when restoring any managed state
# file, but may cause slower operation.
#
#auto_start_bypass_cache = 0
# If provided by the host and a hugetlbfs mount point is configured,
# a guest may request huge page backing. When this mount point is
# unspecified here, determination of a host mount point in /proc/mounts
# will be attempted. Specifying an explicit mount overrides detection
# of the same in /proc/mounts. Setting the mount point to "" will
# disable guest hugepage backing.
#
# NB, within this mount point, guests will create memory backing files
# in a location of $MOUNTPOINT/libvirt/qemu
#
#hugetlbfs_mount = "/dev/hugepages"
# Path to the setuid helper for creating tap devices. This executable
# is used to create <source type='bridge'> interfaces when libvirtd is
# running unprivileged. libvirt invokes the helper directly, instead
# of using "-netdev bridge", for security reasons.
#bridge_helper = "/usr/libexec/qemu-bridge-helper"
# If clear_emulator_capabilities is enabled, libvirt will drop all
# privileged capabilities of the QEmu/KVM emulator. This is enabled by
# default.
#
# Warning: Disabling this option means that a compromised guest can
# exploit the privileges and possibly do damage to the host.
#
#clear_emulator_capabilities = 1
# If enabled, libvirt will have QEMU set its process name to
# "qemu:VM_NAME", where VM_NAME is the name of the VM. The QEMU
# process will appear as "qemu:VM_NAME" in process listings and
# other system monitoring tools. By default, QEMU does not set
# its process title, so the complete QEMU command (emulator and
# its arguments) appear in process listings.
#
#set_process_name = 1
# If max_processes is set to a positive integer, libvirt will use
# it to set the maximum number of processes that can be run by qemu
# user. This can be used to override default value set by host OS.
# The same applies to max_files which sets the limit on the maximum
# number of opened files.
#
#max_processes = 0
#max_files = 0
# mac_filter enables MAC addressed based filtering on bridge ports.
# This currently requires ebtables to be installed.
#
#mac_filter = 1
# By default, PCI devices below non-ACS switch are not allowed to be assigned
# to guests. By setting relaxed_acs_check to 1 such devices will be allowed to
# be assigned to guests.
#
#relaxed_acs_check = 1
# If allow_disk_format_probing is enabled, libvirt will probe disk
# images to attempt to identify their format, when not otherwise
# specified in the XML. This is disabled by default.
#
# WARNING: Enabling probing is a security hole in almost all
# deployments. It is strongly recommended that users update their
# guest XML <disk> elements to include <driver type='XXXX'/>
# elements instead of enabling this option.
#
#allow_disk_format_probing = 1
# To enable 'Sanlock' project based locking of the file
# content (to prevent two VMs writing to the same
# disk), uncomment this
#
#lock_manager = "sanlock"
# Set limit of maximum APIs queued on one domain. All other APIs
# over this threshold will fail on acquiring job lock. Specially,
# setting to zero turns this feature off.
# Note, that job lock is per domain.
#
#max_queued = 0
###################################################################
# Keepalive protocol:
# This allows qemu driver to detect broken connections to remote
# libvirtd during peer-to-peer migration. A keepalive message is
# sent to the deamon after keepalive_interval seconds of inactivity
# to check if the deamon is still responding; keepalive_count is a
# maximum number of keepalive messages that are allowed to be sent
# to the deamon without getting any response before the connection
# is considered broken. In other words, the connection is
# automatically closed approximately after
# keepalive_interval * (keepalive_count + 1) seconds since the last
# message received from the deamon. If keepalive_interval is set to
# -1, qemu driver will not send keepalive requests during
# peer-to-peer migration; however, the remote libvirtd can still
# send them and source libvirtd will send responses. When
# keepalive_count is set to 0, connections will be automatically
# closed after keepalive_interval seconds of inactivity without
# sending any keepalive messages.
#
#keepalive_interval = 5
#keepalive_count = 5
# Use seccomp syscall whitelisting in QEMU.
# 1 = on, 0 = off, -1 = use QEMU default
# Defaults to -1.
#
#seccomp_sandbox = 1
# Override the listen address for all incoming migrations. Defaults to
# 0.0.0.0 or :: in case if both host and qemu are capable of IPv6.
#migration_address = "127.0.0.1"
# Override the port range used for incoming migrations.
#
# Minimum must be greater than 0, however when QEMU is not running as root,
# setting the minimum to be lower than 1024 will not work.
#
# Maximum must not be greater than 65535.
#
#migration_port_min = 49152
#migration_port_max = 49215

View File

@@ -0,0 +1,9 @@
PACKAGECONFIG:qoriq-ppc = "qemu yajl lxc test remote macvtap libvirtd netcf udev python"
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
SRC_URI:append:qoriq-ppc = " file://qemu.conf"
do_install:append:qoriq-ppc() {
install -m 0644 ${WORKDIR}/qemu.conf ${D}${sysconfdir}/libvirt/qemu.conf
}