Merge pull request #9781 from jeremyd2019/mesa-llvm-13
mesa: add patches for LLVM 13
This commit is contained in:
129
mingw-w64-mesa/0001-swr-llvm-fix-swr-build-with-LLVM-13.patch
Normal file
129
mingw-w64-mesa/0001-swr-llvm-fix-swr-build-with-LLVM-13.patch
Normal file
@@ -0,0 +1,129 @@
|
||||
From 98859f67c3d54c9c6d8bbf55251717cbe3511f4e Mon Sep 17 00:00:00 2001
|
||||
From: Grigory Vasilyev <h0tc0d3@gmail.com>
|
||||
Date: Fri, 8 Oct 2021 15:26:49 +0300
|
||||
Subject: [PATCH] Fix swr build with LLVM 13
|
||||
|
||||
---
|
||||
.../swr/rasterizer/jitter/builder_mem.cpp | 12 +++++++++++
|
||||
.../swr/rasterizer/jitter/builder_mem.h | 4 ++++
|
||||
src/gallium/drivers/swr/swr_shader.cpp | 20 ++++++++++++++-----
|
||||
3 files changed, 31 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp b/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp
|
||||
index b5eb0a782b1..ff0672cfd14 100644
|
||||
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp
|
||||
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp
|
||||
@@ -82,7 +82,11 @@ namespace SwrJit
|
||||
std::vector<Value*> indices;
|
||||
for (auto i : indexList)
|
||||
indices.push_back(i);
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ return IN_BOUNDS_GEP(ptr->getType(), ptr, indices);
|
||||
+#else
|
||||
return IN_BOUNDS_GEP(ptr, indices);
|
||||
+#endif
|
||||
}
|
||||
|
||||
Value* Builder::IN_BOUNDS_GEP(Value* ptr, const std::initializer_list<uint32_t>& indexList)
|
||||
@@ -90,7 +94,11 @@ namespace SwrJit
|
||||
std::vector<Value*> indices;
|
||||
for (auto i : indexList)
|
||||
indices.push_back(C(i));
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ return IN_BOUNDS_GEP(ptr->getType(), ptr, indices);
|
||||
+#else
|
||||
return IN_BOUNDS_GEP(ptr, indices);
|
||||
+#endif
|
||||
}
|
||||
|
||||
LoadInst* Builder::LOAD(Value* Ptr, const char* Name, Type* Ty, MEM_CLIENT usage)
|
||||
@@ -234,7 +242,11 @@ namespace SwrJit
|
||||
/// @param pVecPassthru - SIMD wide vector of values to load when lane is inactive
|
||||
Value* Builder::GATHER_PTR(Value* pVecSrcPtr, Value* pVecMask, Value* pVecPassthru)
|
||||
{
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ return MASKED_GATHER(pVecSrcPtr->getType(), pVecSrcPtr, AlignType(4), pVecMask, pVecPassthru);
|
||||
+#else
|
||||
return MASKED_GATHER(pVecSrcPtr, AlignType(4), pVecMask, pVecPassthru);
|
||||
+#endif
|
||||
}
|
||||
|
||||
void Builder::SCATTER_PTR(Value* pVecDstPtr, Value* pVecSrc, Value* pVecMask)
|
||||
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.h b/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.h
|
||||
index 429d5779a4d..c6cfb812b81 100644
|
||||
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.h
|
||||
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.h
|
||||
@@ -84,7 +84,11 @@ virtual CallInst* MASKED_LOAD(Value* Ptr,
|
||||
Type* Ty = nullptr,
|
||||
MEM_CLIENT usage = MEM_CLIENT::MEM_CLIENT_INTERNAL)
|
||||
{
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ return IRB()->CreateMaskedLoad(Ptr->getType(), Ptr, AlignType(Align), Mask, PassThru, Name);
|
||||
+#else
|
||||
return IRB()->CreateMaskedLoad(Ptr, AlignType(Align), Mask, PassThru, Name);
|
||||
+#endif
|
||||
}
|
||||
|
||||
virtual StoreInst* STORE(Value *Val, Value *Ptr, bool isVolatile = false, Type* Ty = nullptr, MEM_CLIENT usage = MEM_CLIENT::MEM_CLIENT_INTERNAL)
|
||||
diff --git a/src/gallium/drivers/swr/swr_shader.cpp b/src/gallium/drivers/swr/swr_shader.cpp
|
||||
index 315036920fb..26e967759cd 100644
|
||||
--- a/src/gallium/drivers/swr/swr_shader.cpp
|
||||
+++ b/src/gallium/drivers/swr/swr_shader.cpp
|
||||
@@ -1553,7 +1553,9 @@ BuilderSWR::CompileGS(struct swr_context *ctx, swr_jit_gs_key &key)
|
||||
GlobalValue::ExternalLinkage,
|
||||
"GS",
|
||||
JM()->mpCurrentModule);
|
||||
-#if LLVM_VERSION_MAJOR < 5
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ pFunction->addParamAttrs(AttributeList::FunctionIndex, attrBuilder);
|
||||
+#elif LLVM_VERSION_MAJOR < 5
|
||||
AttributeSet attrSet = AttributeSet::get(
|
||||
JM()->mContext, AttributeSet::FunctionIndex, attrBuilder);
|
||||
pFunction->addAttributes(AttributeSet::FunctionIndex, attrSet);
|
||||
@@ -1781,7 +1783,9 @@ BuilderSWR::CompileTES(struct swr_context *ctx, swr_jit_tes_key &key)
|
||||
"TES",
|
||||
JM()->mpCurrentModule);
|
||||
|
||||
-#if LLVM_VERSION_MAJOR < 5
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ pFunction->addParamAttrs(AttributeList::FunctionIndex, attrBuilder);
|
||||
+#elif LLVM_VERSION_MAJOR < 5
|
||||
AttributeSet attrSet = AttributeSet::get(
|
||||
JM()->mContext, AttributeSet::FunctionIndex, attrBuilder);
|
||||
pFunction->addAttributes(AttributeSet::FunctionIndex, attrSet);
|
||||
@@ -2082,7 +2086,9 @@ BuilderSWR::CompileTCS(struct swr_context *ctx, swr_jit_tcs_key &key)
|
||||
"TCS",
|
||||
JM()->mpCurrentModule);
|
||||
|
||||
-#if LLVM_VERSION_MAJOR < 5
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ pFunction->addParamAttrs(AttributeList::FunctionIndex, attrBuilder);
|
||||
+#elif LLVM_VERSION_MAJOR < 5
|
||||
AttributeSet attrSet = AttributeSet::get(
|
||||
JM()->mContext, AttributeSet::FunctionIndex, attrBuilder);
|
||||
pFunction->addAttributes(AttributeSet::FunctionIndex, attrSet);
|
||||
@@ -2337,7 +2343,9 @@ BuilderSWR::CompileVS(struct swr_context *ctx, swr_jit_vs_key &key)
|
||||
GlobalValue::ExternalLinkage,
|
||||
"VS",
|
||||
JM()->mpCurrentModule);
|
||||
-#if LLVM_VERSION_MAJOR < 5
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ pFunction->addParamAttrs(AttributeList::FunctionIndex, attrBuilder);
|
||||
+#elif LLVM_VERSION_MAJOR < 5
|
||||
AttributeSet attrSet = AttributeSet::get(
|
||||
JM()->mContext, AttributeSet::FunctionIndex, attrBuilder);
|
||||
pFunction->addAttributes(AttributeSet::FunctionIndex, attrSet);
|
||||
@@ -2642,7 +2650,9 @@ BuilderSWR::CompileFS(struct swr_context *ctx, swr_jit_fs_key &key)
|
||||
GlobalValue::ExternalLinkage,
|
||||
"FS",
|
||||
JM()->mpCurrentModule);
|
||||
-#if LLVM_VERSION_MAJOR < 5
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ pFunction->addParamAttrs(AttributeList::FunctionIndex, attrBuilder);
|
||||
+#elif LLVM_VERSION_MAJOR < 5
|
||||
AttributeSet attrSet = AttributeSet::get(
|
||||
JM()->mContext, AttributeSet::FunctionIndex, attrBuilder);
|
||||
pFunction->addAttributes(AttributeSet::FunctionIndex, attrSet);
|
||||
--
|
||||
GitLab
|
||||
|
||||
92
mingw-w64-mesa/0002-swr-Fix-build-with-llvm-13.patch
Normal file
92
mingw-w64-mesa/0002-swr-Fix-build-with-llvm-13.patch
Normal file
@@ -0,0 +1,92 @@
|
||||
From a20dc1dd150a6c31153197ceda01827daab4203e Mon Sep 17 00:00:00 2001
|
||||
From: Vinson Lee <vlee@freedesktop.org>
|
||||
Date: Wed, 23 Jun 2021 21:58:08 -0700
|
||||
Subject: [PATCH] swr: Fix build with llvm-13.
|
||||
|
||||
Fix build after llvm-13 commit 3302af9d4c39 ("Support: Remove
|
||||
F_{None,Text,Append} compatibility synonyms, NFC").
|
||||
|
||||
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
|
||||
---
|
||||
.../swr/rasterizer/jitter/JitManager.cpp | 24 +++++++++++++++++++
|
||||
1 file changed, 24 insertions(+)
|
||||
|
||||
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/JitManager.cpp b/src/gallium/drivers/swr/rasterizer/jitter/JitManager.cpp
|
||||
index 44482939c76..2487f754dc1 100644
|
||||
--- a/src/gallium/drivers/swr/rasterizer/jitter/JitManager.cpp
|
||||
+++ b/src/gallium/drivers/swr/rasterizer/jitter/JitManager.cpp
|
||||
@@ -437,7 +437,11 @@ void JitManager::DumpAsm(Function* pFunction, const char* fileName)
|
||||
sprintf(fName, "%s.%s.asm", funcName, fileName);
|
||||
#endif
|
||||
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ raw_fd_ostream filestream(fName, EC, llvm::sys::fs::OF_None);
|
||||
+#else
|
||||
raw_fd_ostream filestream(fName, EC, llvm::sys::fs::F_None);
|
||||
+#endif
|
||||
|
||||
legacy::PassManager* pMPasses = new legacy::PassManager();
|
||||
auto* pTarget = mpExec->getTargetMachine();
|
||||
@@ -490,7 +494,11 @@ void JitManager::DumpToFile(Module* M,
|
||||
#else
|
||||
sprintf(fName, "%s.%s.ll", funcName, fileName);
|
||||
#endif
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ raw_fd_ostream fd(fName, EC, llvm::sys::fs::OF_None);
|
||||
+#else
|
||||
raw_fd_ostream fd(fName, EC, llvm::sys::fs::F_None);
|
||||
+#endif
|
||||
M->print(fd, annotater);
|
||||
fd.flush();
|
||||
}
|
||||
@@ -512,7 +520,11 @@ void JitManager::DumpToFile(Function* f, const char* fileName)
|
||||
#else
|
||||
sprintf(fName, "%s.%s.ll", funcName, fileName);
|
||||
#endif
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ raw_fd_ostream fd(fName, EC, llvm::sys::fs::OF_None);
|
||||
+#else
|
||||
raw_fd_ostream fd(fName, EC, llvm::sys::fs::F_None);
|
||||
+#endif
|
||||
f->print(fd, nullptr);
|
||||
|
||||
#if defined(_WIN32)
|
||||
@@ -522,7 +534,11 @@ void JitManager::DumpToFile(Function* f, const char* fileName)
|
||||
#endif
|
||||
fd.flush();
|
||||
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ raw_fd_ostream fd_cfg(fName, EC, llvm::sys::fs::OF_Text);
|
||||
+#else
|
||||
raw_fd_ostream fd_cfg(fName, EC, llvm::sys::fs::F_Text);
|
||||
+#endif
|
||||
WriteGraph(fd_cfg, (const Function*)f);
|
||||
|
||||
fd_cfg.flush();
|
||||
@@ -726,7 +742,11 @@ void JitCache::notifyObjectCompiled(const llvm::Module* M, llvm::MemoryBufferRef
|
||||
|
||||
{
|
||||
std::error_code err;
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ llvm::raw_fd_ostream fileObj(objPath.c_str(), err, llvm::sys::fs::OF_None);
|
||||
+#else
|
||||
llvm::raw_fd_ostream fileObj(objPath.c_str(), err, llvm::sys::fs::F_None);
|
||||
+#endif
|
||||
fileObj << Obj.getBuffer();
|
||||
fileObj.flush();
|
||||
}
|
||||
@@ -734,7 +754,11 @@ void JitCache::notifyObjectCompiled(const llvm::Module* M, llvm::MemoryBufferRef
|
||||
|
||||
{
|
||||
std::error_code err;
|
||||
+#if LLVM_VERSION_MAJOR >= 13
|
||||
+ llvm::raw_fd_ostream fileObj(filePath.c_str(), err, llvm::sys::fs::OF_None);
|
||||
+#else
|
||||
llvm::raw_fd_ostream fileObj(filePath.c_str(), err, llvm::sys::fs::F_None);
|
||||
+#endif
|
||||
|
||||
uint32_t objcrc = ComputeCRC(0, Obj.getBufferStart(), Obj.getBufferSize());
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
||||
@@ -4,7 +4,7 @@ _realname=mesa
|
||||
pkgbase=mingw-w64-${_realname}
|
||||
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
|
||||
pkgver=21.2.4
|
||||
pkgrel=1
|
||||
pkgrel=2
|
||||
pkgdesc="Open-source implementation of the OpenGL specification (mingw-w64)"
|
||||
arch=('any')
|
||||
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64')
|
||||
@@ -26,10 +26,14 @@ url="https://www.mesa3d.org/"
|
||||
license=('MIT')
|
||||
options=('staticlibs' 'strip')
|
||||
source=(https://mesa.freedesktop.org/archive/${_realname}-${pkgver}.tar.xz{,.sig}
|
||||
llvmwrapgen.sh)
|
||||
llvmwrapgen.sh
|
||||
0001-swr-llvm-fix-swr-build-with-LLVM-13.patch
|
||||
0002-swr-Fix-build-with-llvm-13.patch)
|
||||
sha256sums=('fe6ede82d1ac02339da3c2ec1820a379641902fd351a52cc01153f76eff85b44'
|
||||
'SKIP'
|
||||
'69f21522f20c10f5699dfe3e128aa88d4fedde816f6e8df1506d7470c44bf3da')
|
||||
'69f21522f20c10f5699dfe3e128aa88d4fedde816f6e8df1506d7470c44bf3da'
|
||||
'e5aa27b6aba3e75335bbd6d989c52dd42a8435ef87a1453267164e9612daee1a'
|
||||
'37d1c37fd3a8563b9dd78ecd361e5a39440310facd1ed656ca1e12f667b54d6b')
|
||||
validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D') # Emil Velikov <emil.l.velikov@gmail.com>
|
||||
validpgpkeys+=('946D09B5E4C9845E63075FF1D961C596A7203456') # Andres Gomez <tanty@igalia.com>
|
||||
validpgpkeys+=('E3E8F480C52ADD73B278EE78E1ECBE07D7D70895') # Juan Antonio Suárez Romero (Igalia, S.L.) <jasuarez@igalia.com>"
|
||||
@@ -76,6 +80,12 @@ prepare() {
|
||||
|
||||
cd ${srcdir}/${_realname}-${pkgver}
|
||||
|
||||
# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13267
|
||||
# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11568
|
||||
apply_patch_with_msg \
|
||||
0001-swr-llvm-fix-swr-build-with-LLVM-13.patch \
|
||||
0002-swr-Fix-build-with-llvm-13.patch
|
||||
|
||||
# Generate binary wrap for LLVM if llvm-config tool is busted
|
||||
if ! [ "$(${MINGW_PREFIX}/bin/llvm-config --has-rtti 2>&1)" = YES ] && ! [ "$(${MINGW_PREFIX}/bin/llvm-config --has-rtti 2>&1)" = NO ]; then
|
||||
nollvmconfig=1 llvm_static=false ${srcdir}/llvmwrapgen.sh
|
||||
|
||||
Reference in New Issue
Block a user