diff mbox series

[meta-arago,kirkstone,v2] meta-arago-distro: add meta-clang dependency and llvmpipe

Message ID 20230905201852.4056578-2-rs@ti.com
State Superseded
Delegated to: Ryan Eatmon
Headers show
Series [meta-arago,kirkstone,v2] meta-arago-distro: add meta-clang dependency and llvmpipe | expand

Commit Message

Randolph Sapp Sept. 5, 2023, 8:18 p.m. UTC
From: Randolph Sapp <rs@ti.com>

Devices that must use software rendering should use llvmpipe over the
default softpipe. There are significant performance improvements
associated with this change for devices like AM62A which lack a GPU.

This, unfortunately is only available on armv6+ devices so we'll
conditionally drop this for the omapl138 device. (I'd switch this
directly based on platform architecture but this doesn't appear to work
correctly for PACKAGECONFIG strings in the distro.conf)

Signed-off-by: Randolph Sapp <rs@ti.com>
---
 meta-arago-distro/conf/distro/arago.conf | 7 +++++++
 meta-arago-distro/conf/layer.conf        | 1 +
 2 files changed, 8 insertions(+)

Comments

Denys Dmytriyenko Sept. 5, 2023, 9:56 p.m. UTC | #1
On Tue, Sep 05, 2023 at 03:18:53PM -0500, rs@ti.com wrote:
> From: Randolph Sapp <rs@ti.com>
> 
> Devices that must use software rendering should use llvmpipe over the
> default softpipe. There are significant performance improvements
> associated with this change for devices like AM62A which lack a GPU.
> 
> This, unfortunately is only available on armv6+ devices so we'll
> conditionally drop this for the omapl138 device. (I'd switch this
> directly based on platform architecture but this doesn't appear to work
> correctly for PACKAGECONFIG strings in the distro.conf)
> 
> Signed-off-by: Randolph Sapp <rs@ti.com>
> ---
>  meta-arago-distro/conf/distro/arago.conf | 7 +++++++
>  meta-arago-distro/conf/layer.conf        | 1 +
>  2 files changed, 8 insertions(+)
> 
> diff --git a/meta-arago-distro/conf/distro/arago.conf b/meta-arago-distro/conf/distro/arago.conf
> index 48f053bb..b029360b 100644
> --- a/meta-arago-distro/conf/distro/arago.conf
> +++ b/meta-arago-distro/conf/distro/arago.conf
> @@ -102,6 +102,13 @@ PACKAGECONFIG:append:pn-piglit = " \
>  PACKAGECONFIG:pn-opengl-es-cts = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "surfaceless", d)}"
>  PACKAGECONFIG:pn-vulkan-cts = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "surfaceless", d)}"
>  
> +# Use llvmpipe for better performance with software rendering
> +# Only available for armv6+ devices
> +PACKAGECONFIG:append:pn-mesa = " gallium-llvm"
> +PACKAGECONFIG:remove:pn-mesa:omapl138 = " gallium-llvm"
> +PACKAGECONFIG:append:pn-mesa-pvr = " gallium-llvm"
> +PACKAGECONFIG:remove:pn-mesa-pvr:omapl138 = " gallium-llvm"

While :remove happens last, it's not recommended to rely on it, especially 
when you have nested overrides - there's no guaranteed order of processing 
overrides. A better option would be:

GALLIUM_LLVM = " gallium-llvm"
GALLIUM_LLVM:omapl138 = ""
PACKAGECONFIG:append:pn-mesa = "${GALLIUM_LLVM}"
PACKAGECONFIG:append:pn-mesa-pvr = "${GALLIUM_LLVM}"


>  # Enable encryption support in open62541
>  PACKAGECONFIG:append:pn-open62541 = " encrypt"
>  
> diff --git a/meta-arago-distro/conf/layer.conf b/meta-arago-distro/conf/layer.conf
> index 5de46fc9..02d5beaa 100644
> --- a/meta-arago-distro/conf/layer.conf
> +++ b/meta-arago-distro/conf/layer.conf
> @@ -19,6 +19,7 @@ LAYERDEPENDS_meta-arago-distro = " \
>      meta-python \
>      qt5-layer \
>      meta-arago-extras \
> +    clang-layer \
>  "
>  
>  LAYERRECOMMENDS_meta-arago-distro = " \
> -- 
> 2.41.0
Randolph Sapp Sept. 5, 2023, 10:03 p.m. UTC | #2
On 9/5/23 16:56, Denys Dmytriyenko wrote:
> On Tue, Sep 05, 2023 at 03:18:53PM -0500, rs@ti.com wrote:
>> From: Randolph Sapp <rs@ti.com>
>>
>> Devices that must use software rendering should use llvmpipe over the
>> default softpipe. There are significant performance improvements
>> associated with this change for devices like AM62A which lack a GPU.
>>
>> This, unfortunately is only available on armv6+ devices so we'll
>> conditionally drop this for the omapl138 device. (I'd switch this
>> directly based on platform architecture but this doesn't appear to work
>> correctly for PACKAGECONFIG strings in the distro.conf)
>>
>> Signed-off-by: Randolph Sapp <rs@ti.com>
>> ---
>>   meta-arago-distro/conf/distro/arago.conf | 7 +++++++
>>   meta-arago-distro/conf/layer.conf        | 1 +
>>   2 files changed, 8 insertions(+)
>>
>> diff --git a/meta-arago-distro/conf/distro/arago.conf b/meta-arago-distro/conf/distro/arago.conf
>> index 48f053bb..b029360b 100644
>> --- a/meta-arago-distro/conf/distro/arago.conf
>> +++ b/meta-arago-distro/conf/distro/arago.conf
>> @@ -102,6 +102,13 @@ PACKAGECONFIG:append:pn-piglit = " \
>>   PACKAGECONFIG:pn-opengl-es-cts = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "surfaceless", d)}"
>>   PACKAGECONFIG:pn-vulkan-cts = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "surfaceless", d)}"
>>   
>> +# Use llvmpipe for better performance with software rendering
>> +# Only available for armv6+ devices
>> +PACKAGECONFIG:append:pn-mesa = " gallium-llvm"
>> +PACKAGECONFIG:remove:pn-mesa:omapl138 = " gallium-llvm"
>> +PACKAGECONFIG:append:pn-mesa-pvr = " gallium-llvm"
>> +PACKAGECONFIG:remove:pn-mesa-pvr:omapl138 = " gallium-llvm"
> 
> While :remove happens last, it's not recommended to rely on it, especially
> when you have nested overrides - there's no guaranteed order of processing
> overrides. A better option would be:
> 
> GALLIUM_LLVM = " gallium-llvm"
> GALLIUM_LLVM:omapl138 = ""
> PACKAGECONFIG:append:pn-mesa = "${GALLIUM_LLVM}"
> PACKAGECONFIG:append:pn-mesa-pvr = "${GALLIUM_LLVM}"

Fair enough. This seems cleaner anyway. V3 inbound.
diff mbox series

Patch

diff --git a/meta-arago-distro/conf/distro/arago.conf b/meta-arago-distro/conf/distro/arago.conf
index 48f053bb..b029360b 100644
--- a/meta-arago-distro/conf/distro/arago.conf
+++ b/meta-arago-distro/conf/distro/arago.conf
@@ -102,6 +102,13 @@  PACKAGECONFIG:append:pn-piglit = " \
 PACKAGECONFIG:pn-opengl-es-cts = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "surfaceless", d)}"
 PACKAGECONFIG:pn-vulkan-cts = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "surfaceless", d)}"
 
+# Use llvmpipe for better performance with software rendering
+# Only available for armv6+ devices
+PACKAGECONFIG:append:pn-mesa = " gallium-llvm"
+PACKAGECONFIG:remove:pn-mesa:omapl138 = " gallium-llvm"
+PACKAGECONFIG:append:pn-mesa-pvr = " gallium-llvm"
+PACKAGECONFIG:remove:pn-mesa-pvr:omapl138 = " gallium-llvm"
+
 # Enable encryption support in open62541
 PACKAGECONFIG:append:pn-open62541 = " encrypt"
 
diff --git a/meta-arago-distro/conf/layer.conf b/meta-arago-distro/conf/layer.conf
index 5de46fc9..02d5beaa 100644
--- a/meta-arago-distro/conf/layer.conf
+++ b/meta-arago-distro/conf/layer.conf
@@ -19,6 +19,7 @@  LAYERDEPENDS_meta-arago-distro = " \
     meta-python \
     qt5-layer \
     meta-arago-extras \
+    clang-layer \
 "
 
 LAYERRECOMMENDS_meta-arago-distro = " \