Wine:DXVK

DXVK
# DXVK
https://github.com/doitsujin/dxvk

DXVK は、低レベルの 3D API「Vulkan」を使って、DirectX 9/10/11 の 3D 処理を実装します。
d3d9.dll などの DirectX の DLL ファイルを置き換えて使います。

Wine 3.10 以降、かつ Vulkan をサポートした GPU があれば、DXVK を使うことによって、Vulkan による 3D 描画を行うことができます。

Wine 上で OpenGL を使うのと比べると、処理速度が速くなり、通常の Wine で動かないような 3D ゲームを動かせることがあります。
ただし、Vulkan に対応していない環境では動かすことができません。

Intel CPU では、Broadwell 以降で対応しています。
インストール
Vulkan ドライバ
まず、CPU などの環境に合わせて、別途 Vulkan のドライバ等をインストールする必要があります。

Arch Linux以下を参考に、インストールしてください。
https://wiki.archlinux.jp/index.php/Vulkan
UbuntuUbuntu 環境では試していないので、「ubuntu vulkan」などで検索してみてください。
DXVK のダウンロード
https://github.com/doitsujin/dxvk/releases

Release から、「dxvk-*.*.tar.gz」をダウンロードしてください。
dll ファイルのコピー
圧縮ファイル展開後の「x32」ディレクトリに 32bit 用の DLL、「x64」ディレクトリに 64bit 用の DLL があります。
この dll ファイルを、Wine prefix 以下の指定ディレクトリにコピー(上書き)してください。

コピー先の Wine prefix の環境が、32bit か 64bit かで、どの dll をどのディレクトリに置くかが異なります。

# 32bit 環境時

x32/*.dll -> <prefix>/drive_c/windows/system32

# 64bit 環境時

x64/*.dll -> <prefix>/drive_c/windows/system32
x32/*.dll -> <prefix>/drive_c/windows/syswow64

※64bit 環境の場合、system32 には、32bit ではなく、64bit 用のファイルを置きます。ディレクトリ名が紛らわしいので、注意してください。
DLL の置き換え
上記でコピーしたすべての DLL に関して、winecfg で DLL 置き換えを設定します。

これをしておかないと、Wine のバージョンが変更されて、Wine prefix のファイルが更新される時に、DXVK の DLL が、内蔵版の DLL で上書きされてしまいます。

  1. winecfg を実行。「ライブラリ」タブを選択。
  2. 「ライブラリの新規オーバーライド」のテキスト入力部分に、DLL ファイル名 (".dll" は省略可) を入力し、Enter キーを押す。
  3. リストに、「<DLL名> (ネイティブ版、内蔵版)」が追加される。
    追加すると、デフォルトでネイティブ版(Wine prefix 上の DLL ファイル)が優先させるので、設定はそのままで良いです。
  4. これを、DLL ファイル分繰り返す。
DLL ファイルを戻す
上書きした DLL ファイルを、Wine 内蔵のものに戻したい場合は、上記の DLL 置き換え設定を削除した後、以下のコマンドを実行します。

$ wineboot -u

Wine prefix を強制的に更新させます。
dxvk.conf
DXVK の動作に関する詳細設定は、dxvk.conf に記述します。

Windows の実行ファイルと同じ場所に dxvk.conf を置くか、環境変数 DXVK_CONFIG_FILE で、設定ファイルのパスを指定します。

設定項目については、GitHub 上の dxvk.conf ファイルを見てください。
環境変数
環境変数で、DXVK の各種設定を行うこともできます。
以下、一部の値を抜粋しています。

DXVK_HUD=[name,name...]画面上に、各情報を出力します。
devinfo,fps,frametimes,memory,version,api など。
カンマで区切って、複数指定可。
DXVK_STATE_CACHE_PATH=[dir]シェーダのキャッシュファイルが作成されるディレクトリの指定。
デフォルトで、カレントディレクトリ。
DXVK_LOG_LEVEL=[name]ログファイルに出力する情報を指定。
none, error, warn, info, debug
DXVK_LOG_PATH=[dir]ログファイルが作成されるディレクトリの指定。
デフォルトで、カレントディレクトリ。
DXVK_CONFIG_FILE=[file path]設定ファイル (dxvk.conf) のパスを指定。

キャッシュやログファイルは、デフォルトでカレントディレクトリに作成されるので、任意の場所にしたい場合は、環境変数で設定してください。