From: Denys Dmytriyenko <[email protected]>
There are some unobvious issues with adding PVR support to Mesa
via a bbappend:
1. We need to mark mesa package as machine-specific, due to
differences in builds between SGX, Rogue and software-rendering
2. We also need to then mark mesa package as providing safe
ABIs (EGL/GLES/GBM) in order for all generic dependent packages
to not be treated as machine-specific, allowing their re-use
across different machines of the same architecture
But doing the above alters the upstream mesa package and changes
its signatures even when not building for TI platforms, which is
a Yocto Project compliance violation.
In order to resolve this issue, convert Mesa bbappend, that adds
PVR support, into its own standalone alternative provider, called
mesa-pvr and allow selecting it with PREFERRED_PROVIDER settings.
Signed-off-by: Denys Dmytriyenko <[email protected]>
---
meta-ti-bsp/conf/layer.conf | 2 +-
meta-ti-bsp/conf/machine/beagleplay.conf | 1 +
meta-ti-bsp/conf/machine/include/am62xx.inc | 1 +
meta-ti-bsp/conf/machine/include/am65xx.inc | 1 +
meta-ti-bsp/conf/machine/include/j721e.inc | 1 +
meta-ti-bsp/conf/machine/include/j721s2.inc | 1 +
meta-ti-bsp/conf/machine/include/j784s4.inc | 1 +
meta-ti-bsp/conf/machine/include/mesa-pvr.inc | 8 ++++++++
meta-ti-bsp/conf/machine/include/omap-a15.inc | 1 +
meta-ti-bsp/conf/machine/include/ti33x.inc | 1 +
meta-ti-bsp/conf/machine/include/ti43x.inc | 1 +
.../recipes-graphics/mesa/mesa-gl_23.%.bbappend | 1 -
.../mesa/{pvr-mesa.inc => mesa-pvr_22.3.5.bb} | 10 ++++++----
meta-ti-bsp/recipes-graphics/mesa/mesa_23.%.bbappend | 1 -
14 files changed, 24 insertions(+), 7 deletions(-)
create mode 100644 meta-ti-bsp/conf/machine/include/mesa-pvr.inc
delete mode 100644 meta-ti-bsp/recipes-graphics/mesa/mesa-gl_23.%.bbappend
rename meta-ti-bsp/recipes-graphics/mesa/{pvr-mesa.inc => mesa-pvr_22.3.5.bb}
(88%)
delete mode 100644 meta-ti-bsp/recipes-graphics/mesa/mesa_23.%.bbappend
diff --git a/meta-ti-bsp/conf/layer.conf b/meta-ti-bsp/conf/layer.conf
index 5520c7c2..bb286c2b 100644
--- a/meta-ti-bsp/conf/layer.conf
+++ b/meta-ti-bsp/conf/layer.conf
@@ -19,7 +19,7 @@ LAYERDEPENDS_meta-ti-bsp = " \
"
SIGGEN_EXCLUDERECIPES_ABISAFE += " \
- mesa \
+ mesa-pvr \
"
HOSTTOOLS_NONFATAL += "truncate xxd comm"
diff --git a/meta-ti-bsp/conf/machine/beagleplay.conf
b/meta-ti-bsp/conf/machine/beagleplay.conf
index e8d25cd9..c7b1414a 100644
--- a/meta-ti-bsp/conf/machine/beagleplay.conf
+++ b/meta-ti-bsp/conf/machine/beagleplay.conf
@@ -10,6 +10,7 @@ MACHINE_FEATURES += "screen gpu"
SERIAL_CONSOLES = "115200;ttyS2"
SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
+require conf/machine/include/mesa-pvr.inc
PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
TFA_BOARD = "lite"
diff --git a/meta-ti-bsp/conf/machine/include/am62xx.inc
b/meta-ti-bsp/conf/machine/include/am62xx.inc
index 623d90eb..c4582c13 100644
--- a/meta-ti-bsp/conf/machine/include/am62xx.inc
+++ b/meta-ti-bsp/conf/machine/include/am62xx.inc
@@ -3,6 +3,7 @@ SOC_FAMILY:append = ":am62xx"
MACHINE_FEATURES += "screen gpu"
+require conf/machine/include/mesa-pvr.inc
PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
# Default tiboot3.bin on AM62x is for HS-FS
diff --git a/meta-ti-bsp/conf/machine/include/am65xx.inc
b/meta-ti-bsp/conf/machine/include/am65xx.inc
index 9fe851f4..9cbce243 100644
--- a/meta-ti-bsp/conf/machine/include/am65xx.inc
+++ b/meta-ti-bsp/conf/machine/include/am65xx.inc
@@ -3,6 +3,7 @@ SOC_FAMILY:append = ":am65xx"
MACHINE_FEATURES += "screen touchscreen gpu"
+require conf/machine/include/mesa-pvr.inc
PREFERRED_PROVIDER_virtual/gpudriver ?= ""
KERNEL_DEVICETREE_PREFIX = "ti/k3-am654"
diff --git a/meta-ti-bsp/conf/machine/include/j721e.inc
b/meta-ti-bsp/conf/machine/include/j721e.inc
index 5e325ffe..f707cf26 100644
--- a/meta-ti-bsp/conf/machine/include/j721e.inc
+++ b/meta-ti-bsp/conf/machine/include/j721e.inc
@@ -3,6 +3,7 @@ SOC_FAMILY:append = ":j721e"
MACHINE_FEATURES += "screen gpu"
+require conf/machine/include/mesa-pvr.inc
PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
# On J721e the file tiboot3.bin comes from the bootloader not ti-sci-fw
diff --git a/meta-ti-bsp/conf/machine/include/j721s2.inc
b/meta-ti-bsp/conf/machine/include/j721s2.inc
index 70569a16..98cc611f 100644
--- a/meta-ti-bsp/conf/machine/include/j721s2.inc
+++ b/meta-ti-bsp/conf/machine/include/j721s2.inc
@@ -3,6 +3,7 @@ SOC_FAMILY:append = ":j721s2"
MACHINE_FEATURES += "screen gpu"
+require conf/machine/include/mesa-pvr.inc
PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
TFA_BOARD = "generic"
diff --git a/meta-ti-bsp/conf/machine/include/j784s4.inc
b/meta-ti-bsp/conf/machine/include/j784s4.inc
index d03ee4a4..de207687 100644
--- a/meta-ti-bsp/conf/machine/include/j784s4.inc
+++ b/meta-ti-bsp/conf/machine/include/j784s4.inc
@@ -3,6 +3,7 @@ SOC_FAMILY:append = ":j784s4"
MACHINE_FEATURES += "screen gpu"
+require conf/machine/include/mesa-pvr.inc
PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
TFA_BOARD = "j784s4"
diff --git a/meta-ti-bsp/conf/machine/include/mesa-pvr.inc
b/meta-ti-bsp/conf/machine/include/mesa-pvr.inc
new file mode 100644
index 00000000..d5581315
--- /dev/null
+++ b/meta-ti-bsp/conf/machine/include/mesa-pvr.inc
@@ -0,0 +1,8 @@
+PREFERRED_PROVIDER_virtual/mesa ?= "mesa-pvr"
+PREFERRED_PROVIDER_virtual/egl ?= "mesa-pvr"
+PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa-pvr"
+PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa-pvr"
+PREFERRED_PROVIDER_virtual/libgles3 ?= "mesa-pvr"
+PREFERRED_PROVIDER_virtual/libgbm ?= "mesa-pvr"
+PREFERRED_PROVIDER_virtual/libglx ?= "mesa-pvr"
+PREFERRED_PROVIDER_virtual/libgl ?= "mesa-pvr"