diff mbox series

[master/kirkstone] mesa-pvr: convert bbappend into standalone alternative provider

Message ID 20230511184049.1074923-1-denis@denix.org
State Accepted
Delegated to: Ryan Eatmon
Headers show
Series [master/kirkstone] mesa-pvr: convert bbappend into standalone alternative provider | expand

Commit Message

Denys Dmytriyenko May 11, 2023, 6:40 p.m. UTC
From: Denys Dmytriyenko <denys@konsulko.com>

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 <denys@konsulko.com>
---
 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

Comments

Ryan Eatmon May 11, 2023, 7:22 p.m. UTC | #1
This does not apply against kirkstone cleanly because of the mesa 
version change from 22 to 23 for master.  I'll fix it as I apply the 
patch, but I wanted to inform anyone trying it themselves.


On 5/11/2023 1:40 PM, Denys Dmytriyenko wrote:
> From: Denys Dmytriyenko <denys@konsulko.com>
> 
> 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 <denys@konsulko.com>
> ---
>   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"
> diff --git a/meta-ti-bsp/conf/machine/include/omap-a15.inc b/meta-ti-bsp/conf/machine/include/omap-a15.inc
> index 49db1cb6..700b1a11 100644
> --- a/meta-ti-bsp/conf/machine/include/omap-a15.inc
> +++ b/meta-ti-bsp/conf/machine/include/omap-a15.inc
> @@ -12,6 +12,7 @@ PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-ti-staging"
>   PREFERRED_PROVIDER_u-boot ?= "u-boot-ti-staging"
>   
>   # Graphics providers and variables
> +require conf/machine/include/mesa-pvr.inc
>   PREFERRED_PROVIDER_virtual/gpudriver ?= ""
>   PVR_DISPLAY_CONTROLLER_ALIAS ?= "omapdrm"
>   
> diff --git a/meta-ti-bsp/conf/machine/include/ti33x.inc b/meta-ti-bsp/conf/machine/include/ti33x.inc
> index 4f6d90bf..bce88309 100644
> --- a/meta-ti-bsp/conf/machine/include/ti33x.inc
> +++ b/meta-ti-bsp/conf/machine/include/ti33x.inc
> @@ -13,6 +13,7 @@ PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-ti-staging"
>   PREFERRED_PROVIDER_u-boot ?= "u-boot-ti-staging"
>   
>   # Graphics providers and variables
> +require conf/machine/include/mesa-pvr.inc
>   PREFERRED_PROVIDER_virtual/gpudriver ?= ""
>   PVR_DISPLAY_CONTROLLER_ALIAS ?= "tilcdc"
>   
> diff --git a/meta-ti-bsp/conf/machine/include/ti43x.inc b/meta-ti-bsp/conf/machine/include/ti43x.inc
> index 5b40925e..c1009dc6 100644
> --- a/meta-ti-bsp/conf/machine/include/ti43x.inc
> +++ b/meta-ti-bsp/conf/machine/include/ti43x.inc
> @@ -13,6 +13,7 @@ PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-ti-staging"
>   PREFERRED_PROVIDER_u-boot ?= "u-boot-ti-staging"
>   
>   # Graphics providers and variables
> +require conf/machine/include/mesa-pvr.inc
>   PREFERRED_PROVIDER_virtual/gpudriver ?= ""
>   PVR_DISPLAY_CONTROLLER_ALIAS ?= "omapdrm"
>   
> diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-gl_23.%.bbappend b/meta-ti-bsp/recipes-graphics/mesa/mesa-gl_23.%.bbappend
> deleted file mode 100644
> index 912e9e9d..00000000
> --- a/meta-ti-bsp/recipes-graphics/mesa/mesa-gl_23.%.bbappend
> +++ /dev/null
> @@ -1 +0,0 @@
> -require ${@bb.utils.contains_any('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-driver ti-sgx-ddk-km', 'pvr-mesa.inc', '', d)}
> diff --git a/meta-ti-bsp/recipes-graphics/mesa/pvr-mesa.inc b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_22.3.5.bb
> similarity index 88%
> rename from meta-ti-bsp/recipes-graphics/mesa/pvr-mesa.inc
> rename to meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_22.3.5.bb
> index caf94156..0de3cb94 100644
> --- a/meta-ti-bsp/recipes-graphics/mesa/pvr-mesa.inc
> +++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_22.3.5.bb
> @@ -2,11 +2,13 @@
>   # upstream yet. This allows us to build the shims we need without completely
>   # clobbering mesa.
>   
> -FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
> +require recipes-graphics/mesa/mesa.inc
> +
> +SUMMARY += " (with PowerVR support for TI platforms)"
>   
>   LIC_FILES_CHKSUM = "file://docs/license.rst;md5=63779ec98d78d823a9dc533a0735ef10"
>   
> -BRANCH = "powervr/kirkstone/22.3.5"
> +BRANCH = "powervr/kirkstone/${PV}"
>   
>   SRC_URI = " \
>       git://gitlab.freedesktop.org/StaticRocket/mesa.git;protocol=https;branch=${BRANCH} \
> @@ -38,7 +40,6 @@ PACKAGECONFIG:remove = "xvmc"
>   PACKAGECONFIG[xvmc] = ""
>   
>   PACKAGE_ARCH = "${MACHINE_ARCH}"
> -PV = "22.3.5+pvr"
>   
>   GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'pvr', ',pvr', '', d)}"
>   GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'sgx', ',sgx', '', d)}"
> @@ -50,6 +51,7 @@ do_install:append () {
>       rm -rf ${D}${datadir}/pkgconfig
>   }
>   
> -FILES:mesa-vulkan-drivers += " ${libdir}/libpvr_mesa_wsi.so"
> +FILES:${PN}-dev += "${datadir}/mesa/wayland-drm.xml"
> +FILES:mesa-vulkan-drivers += "${libdir}/libpvr_mesa_wsi.so"
>   
>   RRECOMMENDS:mesa-megadriver:append:class-target = " ${@d.getVar('PREFERRED_PROVIDER_virtual/gpudriver')}"
> diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa_23.%.bbappend b/meta-ti-bsp/recipes-graphics/mesa/mesa_23.%.bbappend
> deleted file mode 100644
> index 912e9e9d..00000000
> --- a/meta-ti-bsp/recipes-graphics/mesa/mesa_23.%.bbappend
> +++ /dev/null
> @@ -1 +0,0 @@
> -require ${@bb.utils.contains_any('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-driver ti-sgx-ddk-km', 'pvr-mesa.inc', '', d)}
> 
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#16516): https://lists.yoctoproject.org/g/meta-ti/message/16516
> Mute This Topic: https://lists.yoctoproject.org/mt/98834047/6551054
> Group Owner: meta-ti+owner@lists.yoctoproject.org
> Unsubscribe: https://lists.yoctoproject.org/g/meta-ti/leave/10828724/6551054/1815494134/xyzzy [reatmon@ti.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Randolph Sapp May 12, 2023, 6:17 p.m. UTC | #2
On 5/11/23 13:40, Denys Dmytriyenko wrote:
> From: Denys Dmytriyenko <denys@konsulko.com>
> 
> 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 <denys@konsulko.com>
> ---
>   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"

[snip]

I'm concerned a potential version drift between mesa-native packages and 
mesa-target packages in this configuration, but otherwise this doesn't 
appear to cause any issues with target packages or dependency chains at 
the moment.
Denys Dmytriyenko May 12, 2023, 7:37 p.m. UTC | #3
On Fri, May 12, 2023 at 01:17:38PM -0500, Randolph Sapp wrote:
> On 5/11/23 13:40, Denys Dmytriyenko wrote:
> >From: Denys Dmytriyenko <denys@konsulko.com>
> >
> >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 <denys@konsulko.com>
> >---
> >  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"
> 
> [snip]
> 
> I'm concerned a potential version drift between mesa-native packages
> and mesa-target packages in this configuration, but otherwise this
> doesn't appear to cause any issues with target packages or
> dependency chains at the moment.

I have also successfully tested with these extra 2 lines:

PREFERRED_PROVIDER_virtual/libgl-native ?= "mesa-pvr-native"
PREFERRED_PROVIDER_virtual/nativesdk-libgl ?= "nativesdk-mesa-pvr"

We can add them back into conf/machine/include/mesa-pvr.inc
diff mbox series

Patch

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"
diff --git a/meta-ti-bsp/conf/machine/include/omap-a15.inc b/meta-ti-bsp/conf/machine/include/omap-a15.inc
index 49db1cb6..700b1a11 100644
--- a/meta-ti-bsp/conf/machine/include/omap-a15.inc
+++ b/meta-ti-bsp/conf/machine/include/omap-a15.inc
@@ -12,6 +12,7 @@  PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-ti-staging"
 PREFERRED_PROVIDER_u-boot ?= "u-boot-ti-staging"
 
 # Graphics providers and variables
+require conf/machine/include/mesa-pvr.inc
 PREFERRED_PROVIDER_virtual/gpudriver ?= ""
 PVR_DISPLAY_CONTROLLER_ALIAS ?= "omapdrm"
 
diff --git a/meta-ti-bsp/conf/machine/include/ti33x.inc b/meta-ti-bsp/conf/machine/include/ti33x.inc
index 4f6d90bf..bce88309 100644
--- a/meta-ti-bsp/conf/machine/include/ti33x.inc
+++ b/meta-ti-bsp/conf/machine/include/ti33x.inc
@@ -13,6 +13,7 @@  PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-ti-staging"
 PREFERRED_PROVIDER_u-boot ?= "u-boot-ti-staging"
 
 # Graphics providers and variables
+require conf/machine/include/mesa-pvr.inc
 PREFERRED_PROVIDER_virtual/gpudriver ?= ""
 PVR_DISPLAY_CONTROLLER_ALIAS ?= "tilcdc"
 
diff --git a/meta-ti-bsp/conf/machine/include/ti43x.inc b/meta-ti-bsp/conf/machine/include/ti43x.inc
index 5b40925e..c1009dc6 100644
--- a/meta-ti-bsp/conf/machine/include/ti43x.inc
+++ b/meta-ti-bsp/conf/machine/include/ti43x.inc
@@ -13,6 +13,7 @@  PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-ti-staging"
 PREFERRED_PROVIDER_u-boot ?= "u-boot-ti-staging"
 
 # Graphics providers and variables
+require conf/machine/include/mesa-pvr.inc
 PREFERRED_PROVIDER_virtual/gpudriver ?= ""
 PVR_DISPLAY_CONTROLLER_ALIAS ?= "omapdrm"
 
diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-gl_23.%.bbappend b/meta-ti-bsp/recipes-graphics/mesa/mesa-gl_23.%.bbappend
deleted file mode 100644
index 912e9e9d..00000000
--- a/meta-ti-bsp/recipes-graphics/mesa/mesa-gl_23.%.bbappend
+++ /dev/null
@@ -1 +0,0 @@ 
-require ${@bb.utils.contains_any('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-driver ti-sgx-ddk-km', 'pvr-mesa.inc', '', d)}
diff --git a/meta-ti-bsp/recipes-graphics/mesa/pvr-mesa.inc b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_22.3.5.bb
similarity index 88%
rename from meta-ti-bsp/recipes-graphics/mesa/pvr-mesa.inc
rename to meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_22.3.5.bb
index caf94156..0de3cb94 100644
--- a/meta-ti-bsp/recipes-graphics/mesa/pvr-mesa.inc
+++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_22.3.5.bb
@@ -2,11 +2,13 @@ 
 # upstream yet. This allows us to build the shims we need without completely
 # clobbering mesa.
 
-FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+require recipes-graphics/mesa/mesa.inc
+
+SUMMARY += " (with PowerVR support for TI platforms)"
 
 LIC_FILES_CHKSUM = "file://docs/license.rst;md5=63779ec98d78d823a9dc533a0735ef10"
 
-BRANCH = "powervr/kirkstone/22.3.5"
+BRANCH = "powervr/kirkstone/${PV}"
 
 SRC_URI = " \
     git://gitlab.freedesktop.org/StaticRocket/mesa.git;protocol=https;branch=${BRANCH} \
@@ -38,7 +40,6 @@  PACKAGECONFIG:remove = "xvmc"
 PACKAGECONFIG[xvmc] = ""
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
-PV = "22.3.5+pvr"
 
 GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'pvr', ',pvr', '', d)}"
 GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'sgx', ',sgx', '', d)}"
@@ -50,6 +51,7 @@  do_install:append () {
     rm -rf ${D}${datadir}/pkgconfig
 }
 
-FILES:mesa-vulkan-drivers += " ${libdir}/libpvr_mesa_wsi.so"
+FILES:${PN}-dev += "${datadir}/mesa/wayland-drm.xml"
+FILES:mesa-vulkan-drivers += "${libdir}/libpvr_mesa_wsi.so"
 
 RRECOMMENDS:mesa-megadriver:append:class-target = " ${@d.getVar('PREFERRED_PROVIDER_virtual/gpudriver')}"
diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa_23.%.bbappend b/meta-ti-bsp/recipes-graphics/mesa/mesa_23.%.bbappend
deleted file mode 100644
index 912e9e9d..00000000
--- a/meta-ti-bsp/recipes-graphics/mesa/mesa_23.%.bbappend
+++ /dev/null
@@ -1 +0,0 @@ 
-require ${@bb.utils.contains_any('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-driver ti-sgx-ddk-km', 'pvr-mesa.inc', '', d)}