diff mbox series

[meta-ti,kirkstone/master] mesa-pvr: add dynamic-layer append for llvmpipe

Message ID 20230822011137.3183727-2-rs@ti.com
State Accepted
Delegated to: Ryan Eatmon
Headers show
Series [meta-ti,kirkstone/master] mesa-pvr: add dynamic-layer append for llvmpipe | expand

Commit Message

Randolph Sapp Aug. 22, 2023, 1:11 a.m. UTC
From: Randolph Sapp <rs@ti.com>

Meta-clang provides a bbappend for mesa to use clang to accelerate it's
rasterization with runtime code generation through the use of llvmpipe.
With the addition of mesa-pvr we no longer get this for free with the
blanket mesa bbappend on the devices that explicitly request mesa-pvr so
lets add a dynamic layer to append the same args meta-clang does.

Though the number of devices that would select pvr-mesa and still want
to use software rendering is small, it's not zero due to debug and
testing purposes.

Signed-off-by: Randolph Sapp <rs@ti.com>
---

Please let me know if I'm overlooking some specification like some reason bsp
layers shouldn't have dynamic-layers or something like that. The
yocto-check-layer didn't seem to care.

 meta-ti-bsp/conf/layer.conf                        |  4 ++++
 .../recipes-graphics/mesa/mesa-pvr_%.bbappend      | 14 ++++++++++++++
 2 files changed, 18 insertions(+)
 create mode 100644 meta-ti-bsp/dynamic-layers/clang-layer/recipes-graphics/mesa/mesa-pvr_%.bbappend

Comments

Denys Dmytriyenko Aug. 28, 2023, 2:57 p.m. UTC | #1
On Mon, Aug 21, 2023 at 08:11:38PM -0500, rs@ti.com wrote:
> From: Randolph Sapp <rs@ti.com>
> 
> Meta-clang provides a bbappend for mesa to use clang to accelerate it's
> rasterization with runtime code generation through the use of llvmpipe.
> With the addition of mesa-pvr we no longer get this for free with the
> blanket mesa bbappend on the devices that explicitly request mesa-pvr so
> lets add a dynamic layer to append the same args meta-clang does.
> 
> Though the number of devices that would select pvr-mesa and still want
> to use software rendering is small, it's not zero due to debug and
> testing purposes.
> 
> Signed-off-by: Randolph Sapp <rs@ti.com>
> ---
> 
> Please let me know if I'm overlooking some specification like some reason bsp
> layers shouldn't have dynamic-layers or something like that. The
> yocto-check-layer didn't seem to care.

Well, normally you wouldn't want a pure BSP layer to depend on anything extra 
besides OE-Core. But compiler and toolchain dependencies are rather special 
and there were and still are such cases. Plus bigger plan for clang is to get 
into OE-Core eventually, similar to how Rust has been handled. So, a dynamic 
dependency for meta-clang is probably fine for now, just need to make sure it 
works both ways and gets validated with and w/o such dependency...


>  meta-ti-bsp/conf/layer.conf                        |  4 ++++
>  .../recipes-graphics/mesa/mesa-pvr_%.bbappend      | 14 ++++++++++++++
>  2 files changed, 18 insertions(+)
>  create mode 100644 meta-ti-bsp/dynamic-layers/clang-layer/recipes-graphics/mesa/mesa-pvr_%.bbappend
> 
> diff --git a/meta-ti-bsp/conf/layer.conf b/meta-ti-bsp/conf/layer.conf
> index 26cbb4b5..56ca392b 100644
> --- a/meta-ti-bsp/conf/layer.conf
> +++ b/meta-ti-bsp/conf/layer.conf
> @@ -18,6 +18,10 @@ LAYERDEPENDS_meta-ti-bsp = " \
>      meta-arm \
>  "
>  
> +BBFILES_DYNAMIC += " \
> +    clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/recipes*/*/*.bbappend \
> +"
> +
>  SIGGEN_EXCLUDERECIPES_ABISAFE += " \
>      mesa-pvr \
>  "
> diff --git a/meta-ti-bsp/dynamic-layers/clang-layer/recipes-graphics/mesa/mesa-pvr_%.bbappend b/meta-ti-bsp/dynamic-layers/clang-layer/recipes-graphics/mesa/mesa-pvr_%.bbappend
> new file mode 100644
> index 00000000..7e5c36fd
> --- /dev/null
> +++ b/meta-ti-bsp/dynamic-layers/clang-layer/recipes-graphics/mesa/mesa-pvr_%.bbappend
> @@ -0,0 +1,14 @@
> +# This is a copy of meta-clang/recipes-graphics/mesa/mesa_%.bbappend required
> +# for llvmpipe when using pvr-mesa since we aren't caught by that glob.
> +
> +FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
> +
> +LDFLAGS:append:toolchain-clang = " -latomic -lm"
> +DEPENDS:append:toolchain-clang = " libatomic-ops"
> +
> +EXTRA_OEMASON:append:toolchain-clang:x86 = " -Dasm=false"
> +EXTRA_OEMASON:append:toolchain-clang:x86-64 = " -Dasm=false"
> +
> +export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm-config"
> +
> +PACKAGECONFIG[gallium-llvm] = "-Dllvm=true -Dshared-llvm=true -Ddraw-use-llvm=true,-Dllvm=false,clang clang-native elfutils"
> -- 
> 2.41.0
>
diff mbox series

Patch

diff --git a/meta-ti-bsp/conf/layer.conf b/meta-ti-bsp/conf/layer.conf
index 26cbb4b5..56ca392b 100644
--- a/meta-ti-bsp/conf/layer.conf
+++ b/meta-ti-bsp/conf/layer.conf
@@ -18,6 +18,10 @@  LAYERDEPENDS_meta-ti-bsp = " \
     meta-arm \
 "
 
+BBFILES_DYNAMIC += " \
+    clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/recipes*/*/*.bbappend \
+"
+
 SIGGEN_EXCLUDERECIPES_ABISAFE += " \
     mesa-pvr \
 "
diff --git a/meta-ti-bsp/dynamic-layers/clang-layer/recipes-graphics/mesa/mesa-pvr_%.bbappend b/meta-ti-bsp/dynamic-layers/clang-layer/recipes-graphics/mesa/mesa-pvr_%.bbappend
new file mode 100644
index 00000000..7e5c36fd
--- /dev/null
+++ b/meta-ti-bsp/dynamic-layers/clang-layer/recipes-graphics/mesa/mesa-pvr_%.bbappend
@@ -0,0 +1,14 @@ 
+# This is a copy of meta-clang/recipes-graphics/mesa/mesa_%.bbappend required
+# for llvmpipe when using pvr-mesa since we aren't caught by that glob.
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+LDFLAGS:append:toolchain-clang = " -latomic -lm"
+DEPENDS:append:toolchain-clang = " libatomic-ops"
+
+EXTRA_OEMASON:append:toolchain-clang:x86 = " -Dasm=false"
+EXTRA_OEMASON:append:toolchain-clang:x86-64 = " -Dasm=false"
+
+export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm-config"
+
+PACKAGECONFIG[gallium-llvm] = "-Dllvm=true -Dshared-llvm=true -Ddraw-use-llvm=true,-Dllvm=false,clang clang-native elfutils"