diff mbox series

[meta-ti,master/scarthgap] mesa-pvr: Fix build issues with llvm 18+

Message ID 20241104194638.14864-1-reatmon@ti.com
State Superseded
Delegated to: Ryan Eatmon
Headers show
Series [meta-ti,master/scarthgap] mesa-pvr: Fix build issues with llvm 18+ | expand

Commit Message

Ryan Eatmon Nov. 4, 2024, 7:46 p.m. UTC
Backport two fixes from the latest mesa project to fix two builds issues
related to newer llvm versions.

Signed-off-by: Ryan Eatmon <reatmon@ti.com>
---
 ...allium-Fix-build-with-llvm-18-and-19.patch | 53 +++++++++++++++++++
 .../recipes-graphics/mesa/mesa-pvr_23.2.1.bb  |  1 +
 2 files changed, 54 insertions(+)
 create mode 100644 meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch

Comments

Randolph Sapp Nov. 4, 2024, 10:19 p.m. UTC | #1
On Mon Nov 4, 2024 at 1:46 PM CST, Ryan Eatmon via lists.yoctoproject.org wrote:
> Backport two fixes from the latest mesa project to fix two builds issues
> related to newer llvm versions.
>
> Signed-off-by: Ryan Eatmon <reatmon@ti.com>
> ---
>  ...allium-Fix-build-with-llvm-18-and-19.patch | 53 +++++++++++++++++++
>  .../recipes-graphics/mesa/mesa-pvr_23.2.1.bb  |  1 +
>  2 files changed, 54 insertions(+)
>  create mode 100644 meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch
>
> diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch
> new file mode 100644
> index 00000000..ad5059f1
> --- /dev/null
> +++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch
> @@ -0,0 +1,53 @@
> +From 6c5033bb01a3a1341d4db5007586a5f2e2727b0a Mon Sep 17 00:00:00 2001
> +From: Ryan Eatmon <reatmon@ti.com>
> +Date: Mon, 4 Nov 2024 13:37:29 -0600
> +Subject: [PATCH] gallium: Fix build with llvm 18 and 19
> +
> +- CodeGenOpt::Level changed to CodeGenOoptLevel. [1]
> +- llvm::sys::getHostCPUFeatures() now returns the features instead of
> +modifying the passed in argument. [2]
> +
> +Upstream-Status: Backport [1][https://gitlab.freedesktop.org/mesa/mesa/-/commit/f79617fe804ea6524651ff1bc3a91098d3199179]
> +Upstream-Status: Backport [2][https://gitlab.freedesktop.org/mesa/mesa/-/commit/fa9cd89a85b904615ebc11da609445b5b751e68d]
> +
> +Signed-off-by: Ryan Eatmon <reatmon@ti.com>
> +---
> + src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 14 ++++++++++++--
> + 1 file changed, 12 insertions(+), 2 deletions(-)
> +
> +diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
> +index 5e7a30a6cc2..dbc777e3096 100644
> +--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
> ++++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
> +@@ -366,7 +366,11 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
> +    builder.setEngineKind(EngineKind::JIT)
> +           .setErrorStr(&Error)
> +           .setTargetOptions(options)
> ++#if LLVM_VERSION_MAJOR >= 18
> ++          .setOptLevel((CodeGenOptLevel)OptLevel);
> ++#else
> +           .setOptLevel((CodeGenOpt::Level)OptLevel);
> ++#endif
> + 
> + #if DETECT_OS_WINDOWS
> +     /*
> +@@ -394,8 +398,14 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
> +     * which allows us to enable/disable code generation based
> +     * on the results of cpuid on these architectures.
> +     */
> +-   llvm::StringMap<bool> features;
> +-   llvm::sys::getHostCPUFeatures(features);
> ++   #if LLVM_VERSION_MAJOR >= 19
> ++      /* llvm-19+ returns StringMap from getHostCPUFeatures.
> ++      */
> ++      auto features = llvm::sys::getHostCPUFeatures();
> ++   #else
> ++      llvm::StringMap<bool> features;
> ++      llvm::sys::getHostCPUFeatures(features);
> ++   #endif
> + 
> +    for (StringMapIterator<bool> f = features.begin();
> +         f != features.end();
> +-- 
> +2.17.1
> +
> diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb
> index 21134bc7..33af456d 100644
> --- a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb
> +++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb
> @@ -16,6 +16,7 @@ SRC_URI = " \
>      file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
>      file://0001-gallium-Fix-build-with-llvm-17.patch \
>      file://0001-meson-Disable-cmake-dependency-detector-for-llvm.patch \
> +    file://0001-gallium-Fix-build-with-llvm-18-and-19.patch \
>  "
>  
>  S = "${WORKDIR}/git"

Thanks Ryan! Since it's an upstream commit, I can carry it on the powervr mesa
branches directly, if that's preferable. Up to you.

Worth noting that in my tests right now I'm seeing a runtime fault. Don't
believe it's related to this patch but I would be cautious enabling
gallium-llvmpipe at this moment.

Reviewed-by: Randolph Sapp <rs@ti.com>
Ryan Eatmon Nov. 4, 2024, 10:37 p.m. UTC | #2
On 11/4/2024 4:19 PM, Randolph Sapp wrote:
> On Mon Nov 4, 2024 at 1:46 PM CST, Ryan Eatmon via lists.yoctoproject.org wrote:
>> Backport two fixes from the latest mesa project to fix two builds issues
>> related to newer llvm versions.
>>
>> Signed-off-by: Ryan Eatmon <reatmon@ti.com>
>> ---
>>   ...allium-Fix-build-with-llvm-18-and-19.patch | 53 +++++++++++++++++++
>>   .../recipes-graphics/mesa/mesa-pvr_23.2.1.bb  |  1 +
>>   2 files changed, 54 insertions(+)
>>   create mode 100644 meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch
>>
>> diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch
>> new file mode 100644
>> index 00000000..ad5059f1
>> --- /dev/null
>> +++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch
>> @@ -0,0 +1,53 @@
>> +From 6c5033bb01a3a1341d4db5007586a5f2e2727b0a Mon Sep 17 00:00:00 2001
>> +From: Ryan Eatmon <reatmon@ti.com>
>> +Date: Mon, 4 Nov 2024 13:37:29 -0600
>> +Subject: [PATCH] gallium: Fix build with llvm 18 and 19
>> +
>> +- CodeGenOpt::Level changed to CodeGenOoptLevel. [1]
>> +- llvm::sys::getHostCPUFeatures() now returns the features instead of
>> +modifying the passed in argument. [2]
>> +
>> +Upstream-Status: Backport [1][https://gitlab.freedesktop.org/mesa/mesa/-/commit/f79617fe804ea6524651ff1bc3a91098d3199179]
>> +Upstream-Status: Backport [2][https://gitlab.freedesktop.org/mesa/mesa/-/commit/fa9cd89a85b904615ebc11da609445b5b751e68d]
>> +
>> +Signed-off-by: Ryan Eatmon <reatmon@ti.com>
>> +---
>> + src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 14 ++++++++++++--
>> + 1 file changed, 12 insertions(+), 2 deletions(-)
>> +
>> +diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
>> +index 5e7a30a6cc2..dbc777e3096 100644
>> +--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
>> ++++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
>> +@@ -366,7 +366,11 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
>> +    builder.setEngineKind(EngineKind::JIT)
>> +           .setErrorStr(&Error)
>> +           .setTargetOptions(options)
>> ++#if LLVM_VERSION_MAJOR >= 18
>> ++          .setOptLevel((CodeGenOptLevel)OptLevel);
>> ++#else
>> +           .setOptLevel((CodeGenOpt::Level)OptLevel);
>> ++#endif
>> +
>> + #if DETECT_OS_WINDOWS
>> +     /*
>> +@@ -394,8 +398,14 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
>> +     * which allows us to enable/disable code generation based
>> +     * on the results of cpuid on these architectures.
>> +     */
>> +-   llvm::StringMap<bool> features;
>> +-   llvm::sys::getHostCPUFeatures(features);
>> ++   #if LLVM_VERSION_MAJOR >= 19
>> ++      /* llvm-19+ returns StringMap from getHostCPUFeatures.
>> ++      */
>> ++      auto features = llvm::sys::getHostCPUFeatures();
>> ++   #else
>> ++      llvm::StringMap<bool> features;
>> ++      llvm::sys::getHostCPUFeatures(features);
>> ++   #endif
>> +
>> +    for (StringMapIterator<bool> f = features.begin();
>> +         f != features.end();
>> +--
>> +2.17.1
>> +
>> diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb
>> index 21134bc7..33af456d 100644
>> --- a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb
>> +++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb
>> @@ -16,6 +16,7 @@ SRC_URI = " \
>>       file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
>>       file://0001-gallium-Fix-build-with-llvm-17.patch \
>>       file://0001-meson-Disable-cmake-dependency-detector-for-llvm.patch \
>> +    file://0001-gallium-Fix-build-with-llvm-18-and-19.patch \
>>   "
>>   
>>   S = "${WORKDIR}/git"
> 
> Thanks Ryan! Since it's an upstream commit, I can carry it on the powervr mesa
> branches directly, if that's preferable. Up to you.

That's up to you.  But you will need to fix both of the versions.


> Worth noting that in my tests right now I'm seeing a runtime fault. Don't
> believe it's related to this patch but I would be cautious enabling
> gallium-llvmpipe at this moment.

I'll hold off on accepting it while you fully test it.  Just let me know.


> Reviewed-by: Randolph Sapp <rs@ti.com>
Randolph Sapp Nov. 5, 2024, 12:21 a.m. UTC | #3
On Mon Nov 4, 2024 at 4:37 PM CST, Ryan Eatmon wrote:
> On 11/4/2024 4:19 PM, Randolph Sapp wrote:
> > On Mon Nov 4, 2024 at 1:46 PM CST, Ryan Eatmon via lists.yoctoproject.org wrote:
> >> Backport two fixes from the latest mesa project to fix two builds issues
> >> related to newer llvm versions.
> >>
> >> Signed-off-by: Ryan Eatmon <reatmon@ti.com>
> >> ---
> >>   ...allium-Fix-build-with-llvm-18-and-19.patch | 53 +++++++++++++++++++
> >>   .../recipes-graphics/mesa/mesa-pvr_23.2.1.bb  |  1 +
> >>   2 files changed, 54 insertions(+)
> >>   create mode 100644 meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch
> >>
> >> diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch
> >> new file mode 100644
> >> index 00000000..ad5059f1
> >> --- /dev/null
> >> +++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch
> >> @@ -0,0 +1,53 @@
> >> +From 6c5033bb01a3a1341d4db5007586a5f2e2727b0a Mon Sep 17 00:00:00 2001
> >> +From: Ryan Eatmon <reatmon@ti.com>
> >> +Date: Mon, 4 Nov 2024 13:37:29 -0600
> >> +Subject: [PATCH] gallium: Fix build with llvm 18 and 19
> >> +
> >> +- CodeGenOpt::Level changed to CodeGenOoptLevel. [1]
> >> +- llvm::sys::getHostCPUFeatures() now returns the features instead of
> >> +modifying the passed in argument. [2]
> >> +
> >> +Upstream-Status: Backport [1][https://gitlab.freedesktop.org/mesa/mesa/-/commit/f79617fe804ea6524651ff1bc3a91098d3199179]
> >> +Upstream-Status: Backport [2][https://gitlab.freedesktop.org/mesa/mesa/-/commit/fa9cd89a85b904615ebc11da609445b5b751e68d]
> >> +
> >> +Signed-off-by: Ryan Eatmon <reatmon@ti.com>
> >> +---
> >> + src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 14 ++++++++++++--
> >> + 1 file changed, 12 insertions(+), 2 deletions(-)
> >> +
> >> +diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
> >> +index 5e7a30a6cc2..dbc777e3096 100644
> >> +--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
> >> ++++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
> >> +@@ -366,7 +366,11 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
> >> +    builder.setEngineKind(EngineKind::JIT)
> >> +           .setErrorStr(&Error)
> >> +           .setTargetOptions(options)
> >> ++#if LLVM_VERSION_MAJOR >= 18
> >> ++          .setOptLevel((CodeGenOptLevel)OptLevel);
> >> ++#else
> >> +           .setOptLevel((CodeGenOpt::Level)OptLevel);
> >> ++#endif
> >> +
> >> + #if DETECT_OS_WINDOWS
> >> +     /*
> >> +@@ -394,8 +398,14 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
> >> +     * which allows us to enable/disable code generation based
> >> +     * on the results of cpuid on these architectures.
> >> +     */
> >> +-   llvm::StringMap<bool> features;
> >> +-   llvm::sys::getHostCPUFeatures(features);
> >> ++   #if LLVM_VERSION_MAJOR >= 19
> >> ++      /* llvm-19+ returns StringMap from getHostCPUFeatures.
> >> ++      */
> >> ++      auto features = llvm::sys::getHostCPUFeatures();
> >> ++   #else
> >> ++      llvm::StringMap<bool> features;
> >> ++      llvm::sys::getHostCPUFeatures(features);
> >> ++   #endif
> >> +
> >> +    for (StringMapIterator<bool> f = features.begin();
> >> +         f != features.end();
> >> +--
> >> +2.17.1
> >> +
> >> diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb
> >> index 21134bc7..33af456d 100644
> >> --- a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb
> >> +++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb
> >> @@ -16,6 +16,7 @@ SRC_URI = " \
> >>       file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
> >>       file://0001-gallium-Fix-build-with-llvm-17.patch \
> >>       file://0001-meson-Disable-cmake-dependency-detector-for-llvm.patch \
> >> +    file://0001-gallium-Fix-build-with-llvm-18-and-19.patch \
> >>   "
> >>   
> >>   S = "${WORKDIR}/git"
> > 
> > Thanks Ryan! Since it's an upstream commit, I can carry it on the powervr mesa
> > branches directly, if that's preferable. Up to you.
>
> That's up to you.  But you will need to fix both of the versions.

Suppose it makes more sense to keep it here then. This is a rather unusual
configuration.

> > Worth noting that in my tests right now I'm seeing a runtime fault. Don't
> > believe it's related to this patch but I would be cautious enabling
> > gallium-llvmpipe at this moment.
>
> I'll hold off on accepting it while you fully test it.  Just let me know.

Fix for that posted to meta-arago. Good to go here.

> > Reviewed-by: Randolph Sapp <rs@ti.com>
diff mbox series

Patch

diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch
new file mode 100644
index 00000000..ad5059f1
--- /dev/null
+++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-23.2.1/0001-gallium-Fix-build-with-llvm-18-and-19.patch
@@ -0,0 +1,53 @@ 
+From 6c5033bb01a3a1341d4db5007586a5f2e2727b0a Mon Sep 17 00:00:00 2001
+From: Ryan Eatmon <reatmon@ti.com>
+Date: Mon, 4 Nov 2024 13:37:29 -0600
+Subject: [PATCH] gallium: Fix build with llvm 18 and 19
+
+- CodeGenOpt::Level changed to CodeGenOoptLevel. [1]
+- llvm::sys::getHostCPUFeatures() now returns the features instead of
+modifying the passed in argument. [2]
+
+Upstream-Status: Backport [1][https://gitlab.freedesktop.org/mesa/mesa/-/commit/f79617fe804ea6524651ff1bc3a91098d3199179]
+Upstream-Status: Backport [2][https://gitlab.freedesktop.org/mesa/mesa/-/commit/fa9cd89a85b904615ebc11da609445b5b751e68d]
+
+Signed-off-by: Ryan Eatmon <reatmon@ti.com>
+---
+ src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+index 5e7a30a6cc2..dbc777e3096 100644
+--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
++++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+@@ -366,7 +366,11 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
+    builder.setEngineKind(EngineKind::JIT)
+           .setErrorStr(&Error)
+           .setTargetOptions(options)
++#if LLVM_VERSION_MAJOR >= 18
++          .setOptLevel((CodeGenOptLevel)OptLevel);
++#else
+           .setOptLevel((CodeGenOpt::Level)OptLevel);
++#endif
+ 
+ #if DETECT_OS_WINDOWS
+     /*
+@@ -394,8 +398,14 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
+     * which allows us to enable/disable code generation based
+     * on the results of cpuid on these architectures.
+     */
+-   llvm::StringMap<bool> features;
+-   llvm::sys::getHostCPUFeatures(features);
++   #if LLVM_VERSION_MAJOR >= 19
++      /* llvm-19+ returns StringMap from getHostCPUFeatures.
++      */
++      auto features = llvm::sys::getHostCPUFeatures();
++   #else
++      llvm::StringMap<bool> features;
++      llvm::sys::getHostCPUFeatures(features);
++   #endif
+ 
+    for (StringMapIterator<bool> f = features.begin();
+         f != features.end();
+-- 
+2.17.1
+
diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb
index 21134bc7..33af456d 100644
--- a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb
+++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_23.2.1.bb
@@ -16,6 +16,7 @@  SRC_URI = " \
     file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
     file://0001-gallium-Fix-build-with-llvm-17.patch \
     file://0001-meson-Disable-cmake-dependency-detector-for-llvm.patch \
+    file://0001-gallium-Fix-build-with-llvm-18-and-19.patch \
 "
 
 S = "${WORKDIR}/git"