#author("2022-02-08T00:16:39+00:00","","")
#author("2022-02-08T00:35:58+00:00","","")
[[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 の場合は、このあたりのコードを変更するような[[パッチ:https://gitlab.freedesktop.org/mesa/mesa/-/commit/49383f52b0668872ce99f7aa2763a729777e9928]]も提案されているものの、
mesa側はこのあたり(swr)のドライバはobsoleteだから削除しよう、という方針らしく、mainのブランチには反映されていない。
確認してないけど、今RCになっているmesa-22.0だと削除されてたりするのかな?

まぁ、もうしばらく様子を見て、mesaがLLVM-13で正しくビルドできるようになってからパッケージする方が安全な気はするものの、上述のLLVM-13用のコードでビルドを試しているところ。
- 一応、問題の箇所も通るようになったみたい。とりあえずこの組み合わせでしばらく凌ぐか。。 -- [[kojima]] &new{2022-02-08 (火) 09:35:58};

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS