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:
@@ -0,0 +1,3 @@
|
||||
do_install:append() {
|
||||
rm -f ${D}${sysconfdir}/xdg/weston/weston.ini
|
||||
}
|
||||
@@ -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)"
|
||||
@@ -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)"
|
||||
@@ -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"
|
||||
@@ -0,0 +1,10 @@
|
||||
# Copyright (C) 2015 O.S. Systems Software LTDA.
|
||||
|
||||
PACKAGES += " \
|
||||
${PN}-f2fs \
|
||||
"
|
||||
|
||||
RDEPENDS:${PN}-f2fs = " \
|
||||
${PN}-base \
|
||||
f2fs-tools \
|
||||
"
|
||||
@@ -0,0 +1,5 @@
|
||||
PACKAGECONFIG:imxgpu3d ??= " \
|
||||
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', \
|
||||
bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx x11', \
|
||||
'', d), d)} \
|
||||
"
|
||||
@@ -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)}"
|
||||
@@ -0,0 +1 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
|
||||
@@ -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
|
||||
@@ -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"
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
@@ -0,0 +1,2 @@
|
||||
# vivante drivers does not provide glx
|
||||
PACKAGECONFIG:remove:imxgpu = "x11"
|
||||
@@ -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}"
|
||||
@@ -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"
|
||||
@@ -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)"
|
||||
@@ -0,0 +1,2 @@
|
||||
# testbuild/../test.c:10: undefined reference to `glXCreateContext'
|
||||
PACKAGECONFIG:remove:imxgpu = "x11"
|
||||
@@ -0,0 +1 @@
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
@@ -0,0 +1 @@
|
||||
include qt4-imx-support.inc
|
||||
@@ -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'
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
include qt4-imx-support.inc
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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)}"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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 = ""
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user