Wine:DXVK

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

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

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

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

Intel の内蔵 GPU では、Broadwell 以降で対応しています。
インストール
Vulkan ドライバ
まずは、環境に合わせて、別途 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 用のファイルを置きます。ディレクトリ名が紛らわしいので、注意してください。

※Direct3D を使用するアプリを実行したときに、dxgi.dll 関連のエラーが出る場合、dxgi.dll は Wine の DLL に戻してください。
DLL の置き換え
上記でコピーしたすべての DLL に関して、winecfg で、DLL 置き換えの設定を行います。

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

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

$ wineboot -u

これにより、Wine prefix を強制的に更新させます。

個別にファイルを元に戻したい場合は、/usr/lib/wine 以下に内蔵版の DLL ファイルが存在するため、そこからコピーすることもできます。
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]ログファイルを作成するディレクトリの指定。
デフォルトで、stderr に出力されます。
DXVK_CONFIG_FILE=[path or string]設定ファイルのパス (ファイル名) を指定。
もしくは、設定の文字列を、';' で区切って直接指定します。