diff mbox series

[meta-ti,master/kirkstone,v2,6/6] meta-ti-bsp: graphics: Rename SGX driver recipes to match Rogue

Message ID 20230412184242.29743-6-afd@ti.com
State Rejected
Delegated to: Ryan Eatmon
Headers show
Series [meta-ti,master/kirkstone,v2,1/6] ti-sgx-ddk-um: Remove RDEPENDS on libdrm-omap | expand

Commit Message

Andrew Davis April 12, 2023, 6:42 p.m. UTC
The names we use for the GPU components are not consistent nor do the
intuitively describe their function. Let's fix that.

We do 3 things, first powervr-drivers/ contains only the kernel-mode
half of the driver, for GPUs most of the driver lives in userspace,
and the "PowerVR" name is no longer correct for the latest GPUs. Rename
this to ti-img-gpu-km/ which matches better with our naming for the
user-mode half and the TI/IMG codecs.

Next, ti-img-rogue-driver is renamed ti-img-rogue-km, same reasoning
as above and matches the SGX version of the same.

The usermode driver lives in a directory named "libgles", but the
driver does not just provide libgles, it also can provide OpenCL,
DRI, and Vulkan. Rename to match the kernel-mode half.

Lastly, the acronym "DDK" is short for "Driver Development Kit".
This kit is provided by Imagination to TI and is what we use to
"Develop" the "Driver". What we ship is not the DDK, it is the
driver itself. The name DDK seems to have just been passed through.
Remove use of "ddk" where we can.

To summarize:

 * powervr-drivers     -> ti-img-gpu-km
 * ti-img-rogue-driver -> ti-img-rogue-km
 * ti-sgx-ddk-km       -> ti-img-sgx-km
 * libgles             -> ti-img-gpu-umlibs
 * ti-sgx-ddk-um       -> ti-img-sgx-umlibs

Signed-off-by: Andrew Davis <afd@ti.com>
---
 ...compiler-support-OpenEmbedded-nodistro-internal-aarc.patch | 0
 .../ti-img-rogue-km_1.18.6276027.bb}                          | 0
 .../ti-img-sgx-km_1.17.4948957.bb}                            | 2 +-
 meta-ti-bsp/recipes-graphics/mesa/mesa-gl_22.%.bbappend       | 2 +-
 meta-ti-bsp/recipes-graphics/mesa/mesa_22.%.bbappend          | 2 +-
 meta-ti-bsp/recipes-graphics/mesa/pvr-mesa.inc                | 4 ++--
 .../ti-img-rogue-umlibs_1.18.6276027.bb                       | 3 ++-
 .../ti-img-sgx-umlibs}/pvrsrvkm.rules                         | 0
 .../ti-img-sgx-umlibs_1.17.4948957.bb}                        | 2 +-
 9 files changed, 8 insertions(+), 7 deletions(-)
 rename meta-ti-bsp/recipes-bsp/{powervr-drivers/ti-img-rogue-driver => ti-img-gpu-km/ti-img-rogue-km}/0001-compiler-support-OpenEmbedded-nodistro-internal-aarc.patch (100%)
 rename meta-ti-bsp/recipes-bsp/{powervr-drivers/ti-img-rogue-driver_1.18.6276027.bb => ti-img-gpu-km/ti-img-rogue-km_1.18.6276027.bb} (100%)
 rename meta-ti-bsp/recipes-bsp/{powervr-drivers/ti-sgx-ddk-km_1.17.4948957.bb => ti-img-gpu-km/ti-img-sgx-km_1.17.4948957.bb} (97%)
 rename meta-ti-bsp/recipes-graphics/{libgles => ti-img-gpu-umlibs}/ti-img-rogue-umlibs_1.18.6276027.bb (94%)
 rename meta-ti-bsp/recipes-graphics/{libgles/ti-sgx-ddk-um => ti-img-gpu-umlibs/ti-img-sgx-umlibs}/pvrsrvkm.rules (100%)
 rename meta-ti-bsp/recipes-graphics/{libgles/ti-sgx-ddk-um_1.17.4948957.bb => ti-img-gpu-umlibs/ti-img-sgx-umlibs_1.17.4948957.bb} (98%)

Comments

Denys Dmytriyenko April 12, 2023, 8:21 p.m. UTC | #1
On Wed, Apr 12, 2023 at 01:42:42PM -0500, Andrew Davis via lists.yoctoproject.org wrote:
> The names we use for the GPU components are not consistent nor do the
> intuitively describe their function. Let's fix that.
> 
> We do 3 things, first powervr-drivers/ contains only the kernel-mode
> half of the driver, for GPUs most of the driver lives in userspace,
> and the "PowerVR" name is no longer correct for the latest GPUs. Rename
> this to ti-img-gpu-km/ which matches better with our naming for the
> user-mode half and the TI/IMG codecs.
> 
> Next, ti-img-rogue-driver is renamed ti-img-rogue-km, same reasoning
> as above and matches the SGX version of the same.
> 
> The usermode driver lives in a directory named "libgles", but the
> driver does not just provide libgles, it also can provide OpenCL,
> DRI, and Vulkan. Rename to match the kernel-mode half.
> 
> Lastly, the acronym "DDK" is short for "Driver Development Kit".
> This kit is provided by Imagination to TI and is what we use to
> "Develop" the "Driver". What we ship is not the DDK, it is the
> driver itself. The name DDK seems to have just been passed through.
> Remove use of "ddk" where we can.
> 
> To summarize:
> 
>  * powervr-drivers     -> ti-img-gpu-km
>  * ti-img-rogue-driver -> ti-img-rogue-km
>  * ti-sgx-ddk-km       -> ti-img-sgx-km
>  * libgles             -> ti-img-gpu-umlibs
>  * ti-sgx-ddk-um       -> ti-img-sgx-umlibs

Renaming recipes will have a huge impact downstream! Last time we renamed 
omap5-sgx-ddk-um-linux to ti-sgx-ddk-um, there's been a lot of breakage and 
tons of complaints from customers and the community at large (in public and 
even more so in private)...

First of all, you are only advised to do such thing in master (and not right 
before the next release, which is now), definitely not in a stable branch, 
especially not in a LTS branch (e.g. kirkstone).

Second, do it during the version bump - keep the old version under the old 
name, add a new version with the new name.

Third, you have to provide backward compatibility and setup corresponding 
preemption/replacement policy (at least RPROVIDES, RREPLACES, RCONFLICTS). 
But that alone won't help with downstream layers adding their bbappends.

Just checking a few public OEM layers that are downstream to meta-ti (and 
that's just the tip of the iceberg, as majority of customer layers are not 
even public!):

Phytec:
https://github.com/phytec/meta-phytec/blob/kirkstone/dynamic-layers/meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver_1.18.6276027.bbappend

Toradex (seems to be a bit outdated, I'm guessing they pin to specific SHA):
https://git.toradex.com/cgit/meta-toradex-ti.git/tree/recipes-bsp/powervr-drivers/ti-img-rogue-driver_1.15.6133109.bbappend?h=kirkstone-6.x.y
https://git.toradex.com/cgit/meta-toradex-ti.git/tree/recipes-graphics/libgles/ti-img-rogue-umlibs_1.15.6133109.bbappend?h=kirkstone-6.x.y

Variscite:
Their meta-variscite-bsp-ti layer doesn't appear to touch graphics and is 
still on dunfell...

SanCloud:
Also doesn't appear to modify graphics recipes directly.

AGL:
https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl.git;a=blob;f=meta-agl-bsp/meta-ti-bsp/recipes-bsp/ti-sgx-ddk-km/ti-sgx-ddk-km_%25.bbappend;hb=HEAD
https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl.git;a=blob;f=meta-agl-bsp/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_%25.bbappend;hb=HEAD

These are just bbappends, but I'm sure there are other references to these 
current names in configs and/or their recipes...

AFAIK, AGL, for example, hasn't yet fully recovered from the latest graphics 
changes separating Mesa - there's work in progress going on right now.

I fully understand the desire to simplify and unify things, like directory 
and recipe names. But it comes with a lot of complications and require extra 
thought put into how not to break things for everyone around...

Yocto Project guidelines for public BSPs are much stricter than those for 
Distros or customer/product layers. It may be convenient to think of meta-ti 
as a "leaf" of the project, but it is actually quite a large "branch" with 
other "branches" and "leaves" downstream depending on it...
Andrew Davis April 12, 2023, 9:42 p.m. UTC | #2
On 4/12/23 3:21 PM, Denys Dmytriyenko wrote:
> On Wed, Apr 12, 2023 at 01:42:42PM -0500, Andrew Davis via lists.yoctoproject.org wrote:
>> The names we use for the GPU components are not consistent nor do the
>> intuitively describe their function. Let's fix that.
>>
>> We do 3 things, first powervr-drivers/ contains only the kernel-mode
>> half of the driver, for GPUs most of the driver lives in userspace,
>> and the "PowerVR" name is no longer correct for the latest GPUs. Rename
>> this to ti-img-gpu-km/ which matches better with our naming for the
>> user-mode half and the TI/IMG codecs.
>>
>> Next, ti-img-rogue-driver is renamed ti-img-rogue-km, same reasoning
>> as above and matches the SGX version of the same.
>>
>> The usermode driver lives in a directory named "libgles", but the
>> driver does not just provide libgles, it also can provide OpenCL,
>> DRI, and Vulkan. Rename to match the kernel-mode half.
>>
>> Lastly, the acronym "DDK" is short for "Driver Development Kit".
>> This kit is provided by Imagination to TI and is what we use to
>> "Develop" the "Driver". What we ship is not the DDK, it is the
>> driver itself. The name DDK seems to have just been passed through.
>> Remove use of "ddk" where we can.
>>
>> To summarize:
>>
>>   * powervr-drivers     -> ti-img-gpu-km
>>   * ti-img-rogue-driver -> ti-img-rogue-km
>>   * ti-sgx-ddk-km       -> ti-img-sgx-km
>>   * libgles             -> ti-img-gpu-umlibs
>>   * ti-sgx-ddk-um       -> ti-img-sgx-umlibs
> 
> Renaming recipes will have a huge impact downstream! Last time we renamed
> omap5-sgx-ddk-um-linux to ti-sgx-ddk-um, there's been a lot of breakage and
> tons of complaints from customers and the community at large (in public and
> even more so in private)...
> 
> First of all, you are only advised to do such thing in master (and not right
> before the next release, which is now), definitely not in a stable branch,
> especially not in a LTS branch (e.g. kirkstone).
> 

That's fine, this last patch doesn't need to go to kirkstone, I'll post
it separately for master branch only.

> Second, do it during the version bump - keep the old version under the old
> name, add a new version with the new name.
> 
> Third, you have to provide backward compatibility and setup corresponding
> preemption/replacement policy (at least RPROVIDES, RREPLACES, RCONFLICTS).
> But that alone won't help with downstream layers adding their bbappends.
> 
> Just checking a few public OEM layers that are downstream to meta-ti (and
> that's just the tip of the iceberg, as majority of customer layers are not
> even public!):
> 
> Phytec:
> https://github.com/phytec/meta-phytec/blob/kirkstone/dynamic-layers/meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver_1.18.6276027.bbappend
> 
> Toradex (seems to be a bit outdated, I'm guessing they pin to specific SHA):
> https://git.toradex.com/cgit/meta-toradex-ti.git/tree/recipes-bsp/powervr-drivers/ti-img-rogue-driver_1.15.6133109.bbappend?h=kirkstone-6.x.y
> https://git.toradex.com/cgit/meta-toradex-ti.git/tree/recipes-graphics/libgles/ti-img-rogue-umlibs_1.15.6133109.bbappend?h=kirkstone-6.x.y
> 
> Variscite:
> Their meta-variscite-bsp-ti layer doesn't appear to touch graphics and is
> still on dunfell...
> 
> SanCloud:
> Also doesn't appear to modify graphics recipes directly.
> 
> AGL:
> https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl.git;a=blob;f=meta-agl-bsp/meta-ti-bsp/recipes-bsp/ti-sgx-ddk-km/ti-sgx-ddk-km_%25.bbappend;hb=HEAD
> https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl.git;a=blob;f=meta-agl-bsp/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_%25.bbappend;hb=HEAD
> 

All three changes to the KM above are for adding compiler name support
which is only needed due to our odd way of detection arch. That
can be fixed then these should go away. The other two for UM are
easy enough to fix and we should fix them in meta-ti for them.

Meta-ti is the upstream, fixes should go upstream. I get not doing
this to the LTS branch, but for master branch we do need to make
forward progress and clean things up like this patch does.

> These are just bbappends, but I'm sure there are other references to these
> current names in configs and/or their recipes...
> 
> AFAIK, AGL, for example, hasn't yet fully recovered from the latest graphics
> changes separating Mesa - there's work in progress going on right now.
> 

Well SGX isn't working at all right now now in kirkstone, so not sure what
they are trying to fix at the moment..

> I fully understand the desire to simplify and unify things, like directory
> and recipe names. But it comes with a lot of complications and require extra
> thought put into how not to break things for everyone around...
> 
> Yocto Project guidelines for public BSPs are much stricter than those for
> Distros or customer/product layers. It may be convenient to think of meta-ti
> as a "leaf" of the project, but it is actually quite a large "branch" with
> other "branches" and "leaves" downstream depending on it...
>
diff mbox series

Patch

diff --git a/meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver/0001-compiler-support-OpenEmbedded-nodistro-internal-aarc.patch b/meta-ti-bsp/recipes-bsp/ti-img-gpu-km/ti-img-rogue-km/0001-compiler-support-OpenEmbedded-nodistro-internal-aarc.patch
similarity index 100%
rename from meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver/0001-compiler-support-OpenEmbedded-nodistro-internal-aarc.patch
rename to meta-ti-bsp/recipes-bsp/ti-img-gpu-km/ti-img-rogue-km/0001-compiler-support-OpenEmbedded-nodistro-internal-aarc.patch
diff --git a/meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver_1.18.6276027.bb b/meta-ti-bsp/recipes-bsp/ti-img-gpu-km/ti-img-rogue-km_1.18.6276027.bb
similarity index 100%
rename from meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver_1.18.6276027.bb
rename to meta-ti-bsp/recipes-bsp/ti-img-gpu-km/ti-img-rogue-km_1.18.6276027.bb
diff --git a/meta-ti-bsp/recipes-bsp/powervr-drivers/ti-sgx-ddk-km_1.17.4948957.bb b/meta-ti-bsp/recipes-bsp/ti-img-gpu-km/ti-img-sgx-km_1.17.4948957.bb
similarity index 97%
rename from meta-ti-bsp/recipes-bsp/powervr-drivers/ti-sgx-ddk-km_1.17.4948957.bb
rename to meta-ti-bsp/recipes-bsp/ti-img-gpu-km/ti-img-sgx-km_1.17.4948957.bb
index bf4fa98a..a624017d 100644
--- a/meta-ti-bsp/recipes-bsp/powervr-drivers/ti-sgx-ddk-km_1.17.4948957.bb
+++ b/meta-ti-bsp/recipes-bsp/ti-img-gpu-km/ti-img-sgx-km_1.17.4948957.bb
@@ -45,4 +45,4 @@  do_install:am65xx() {
     make -C ${STAGING_KERNEL_DIR} M=${B}/eurasia_km/eurasiacon/binary_omap_linux_${PVR_WS}_${PVR_BUILD}/target_aarch64/kbuild INSTALL_MOD_PATH=${D}${root_prefix} PREFIX=${STAGING_DIR_HOST} modules_install
 }
 
-RRECOMMENDS:${PN} += "ti-sgx-ddk-um"
+RRECOMMENDS:${PN} += "ti-img-sgx-umlibs"
diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-gl_22.%.bbappend b/meta-ti-bsp/recipes-graphics/mesa/mesa-gl_22.%.bbappend
index 912e9e9d..17187330 100644
--- a/meta-ti-bsp/recipes-graphics/mesa/mesa-gl_22.%.bbappend
+++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-gl_22.%.bbappend
@@ -1 +1 @@ 
-require ${@bb.utils.contains_any('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-driver ti-sgx-ddk-km', 'pvr-mesa.inc', '', d)}
+require ${@bb.utils.contains_any('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-km ti-img-sgx-km', 'pvr-mesa.inc', '', d)}
diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa_22.%.bbappend b/meta-ti-bsp/recipes-graphics/mesa/mesa_22.%.bbappend
index 912e9e9d..17187330 100644
--- a/meta-ti-bsp/recipes-graphics/mesa/mesa_22.%.bbappend
+++ b/meta-ti-bsp/recipes-graphics/mesa/mesa_22.%.bbappend
@@ -1 +1 @@ 
-require ${@bb.utils.contains_any('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-driver ti-sgx-ddk-km', 'pvr-mesa.inc', '', d)}
+require ${@bb.utils.contains_any('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-km ti-img-sgx-km', 'pvr-mesa.inc', '', d)}
diff --git a/meta-ti-bsp/recipes-graphics/mesa/pvr-mesa.inc b/meta-ti-bsp/recipes-graphics/mesa/pvr-mesa.inc
index 96c484a7..85f6968e 100644
--- a/meta-ti-bsp/recipes-graphics/mesa/pvr-mesa.inc
+++ b/meta-ti-bsp/recipes-graphics/mesa/pvr-mesa.inc
@@ -23,8 +23,8 @@  S = "${WORKDIR}/git"
 SRCREV = "44b82a7b6fa8a86243911b1b0d6a07b0fd8ecfba"
 
 PACKAGECONFIG:append = " \
-    ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-driver', 'pvr', '', d)} \
-    ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-sgx-ddk-km', 'sgx', '', d)} \
+    ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-km', 'pvr', '', d)} \
+    ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-sgx-km', 'sgx', '', d)} \
 "
 
 PVR_DISPLAY_CONTROLLER_ALIAS ??= "tidss"
diff --git a/meta-ti-bsp/recipes-graphics/libgles/ti-img-rogue-umlibs_1.18.6276027.bb b/meta-ti-bsp/recipes-graphics/ti-img-gpu-umlibs/ti-img-rogue-umlibs_1.18.6276027.bb
similarity index 94%
rename from meta-ti-bsp/recipes-graphics/libgles/ti-img-rogue-umlibs_1.18.6276027.bb
rename to meta-ti-bsp/recipes-graphics/ti-img-gpu-umlibs/ti-img-rogue-umlibs_1.18.6276027.bb
index 94d14ded..32525d48 100644
--- a/meta-ti-bsp/recipes-graphics/libgles/ti-img-rogue-umlibs_1.18.6276027.bb
+++ b/meta-ti-bsp/recipes-graphics/ti-img-gpu-umlibs/ti-img-rogue-umlibs_1.18.6276027.bb
@@ -22,7 +22,8 @@  TARGET_PRODUCT:am62xx = "am62_linux"
 PVR_BUILD = "release"
 PVR_WS = "lws-generic"
 
-RDEPENDS:${PN} += "mesa-megadriver libdrm ti-img-rogue-driver"
+RDEPENDS:${PN} += "mesa-megadriver libdrm"
+RDEPENDS:${PN} += "ti-img-rogue-km"
 
 do_install:append() {
     if ${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'true', 'false', d)}; then
diff --git a/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules b/meta-ti-bsp/recipes-graphics/ti-img-gpu-umlibs/ti-img-sgx-umlibs/pvrsrvkm.rules
similarity index 100%
rename from meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules
rename to meta-ti-bsp/recipes-graphics/ti-img-gpu-umlibs/ti-img-sgx-umlibs/pvrsrvkm.rules
diff --git a/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb b/meta-ti-bsp/recipes-graphics/ti-img-gpu-umlibs/ti-img-sgx-umlibs_1.17.4948957.bb
similarity index 98%
rename from meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
rename to meta-ti-bsp/recipes-graphics/ti-img-gpu-umlibs/ti-img-sgx-umlibs_1.17.4948957.bb
index 755cc4f5..4b34e8b7 100644
--- a/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb
+++ b/meta-ti-bsp/recipes-graphics/ti-img-gpu-umlibs/ti-img-sgx-umlibs_1.17.4948957.bb
@@ -36,7 +36,7 @@  inherit ${@oe.utils.ifelse(use_initscript(d), 'update-rc.d', '')}
 
 RDEPENDS:${PN} += "libdrm"
 
-RRECOMMENDS:${PN} += "ti-sgx-ddk-km"
+RRECOMMENDS:${PN} += "ti-img-sgx-km"
 
 S = "${WORKDIR}/git"