diary/Kojima

・LLVM-13 と mesa-21.3.5

LLVM-13が出ていたのでパッケージ化して、mesa-21.3.5 をビルドしようとしたら、

 [1899/2789] Compiling C++ object src/gallium/drivers/swr/libmesaswr.a.p/swr_shader.cpp.o
 FAILED: src/gallium/drivers/swr/libmesaswr.a.p/swr_shader.cpp.o 
 c++ -Isrc/gallium/drivers/swr/libmesaswr.a.p -Isrc/gallium/drivers/swr -I../mesa-21.3.5/src/gallium/drivers/swr 
 -Iinclude -I../mesa-21.3.5/include -Isrc -I../mesa-21.3.5/src -Isrc/mapi -I../mesa-21.3.5/src/mapi 
 ....
 次のファイルから読み込み:  ../mesa-21.3.5/src/gallium/drivers/swr/rasterizer/jitter/builder.h:168,
        次から読み込み:  ../mesa-21.3.5/src/gallium/drivers/swr/swr_shader.cpp:43:
 ../mesa-21.3.5/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.h: 
 メンバ関数 ‘virtual llvm::CallInst* SwrJit::Builder::MASKED_LOAD(llvm::Value*, unsigned int, 
   llvm::Value*, llvm::Value*, const llvm::Twine&, llvm::Type*, SwrJit::Builder::MEM_CLIENT)’ 内:
 ../mesa-21.3.5/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.h:87:36: 
   エラー: cannot convert ‘llvm::Value*’ to ‘llvm::Type*’
  87 |     return IRB()->CreateMaskedLoad(Ptr, AlignType(Align), Mask, PassThru, Name);
     |                                    ^~~
     |                                    |
     |                                    llvm::Value*
 次のファイルから読み込み:  ../mesa-21.3.5/src/gallium/drivers/swr/rasterizer/jitter/jit_pch.hpp:50,
        次から読み込み:  ../mesa-21.3.5/src/gallium/drivers/swr/rasterizer/jitter/JitManager.h:32,
        次から読み込み:  ../mesa-21.3.5/src/gallium/drivers/swr/swr_shader.cpp:32:
 /usr/include/llvm/IR/IRBuilder.h:755:36: 備考: initializing argument 1 of ‘llvm::CallInst* 
   llvm::IRBuilderBase::CreateMaskedLoad(llvm::Type*, llvm::Value*, llvm::Align, llvm::Value*, 
   llvm::Value*, const llvm::Twine&)’
 755 |   CallInst *CreateMaskedLoad(Type *Ty, Value *Ptr, Align Alignment, Value *Mask,
     |                              ~~~~~~^~

みたいなエラーになってビルドに失敗するみたい。

同じコードがLLVM-12ではエラーにならないので、どうやらこれはLLVM側の変更が原因らしい。

とりあえず LLVM-13 の場合は、このあたりのコードを変更するようなパッチも提案されているものの、 mesa側はこのあたり(swr)のドライバはobsoleteだから削除しよう、という方針らしく、mainのブランチには反映されていない。 確認してないけど、今RCになっているmesa-22.0だと削除されてたりするのかな?

まぁ、もうしばらく様子を見て、mesaがLLVM-13で正しくビルドできるようになってからパッケージする方が安全な気はするものの、上述のLLVM-13用のコードでビルドを試しているところ。



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS