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 以降で対応しています。
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 |
---|---|
Ubuntu | Ubuntu 環境では試していないので、「ubuntu vulkan」などで検索してみてください。 |
DXVK のダウンロード
dll ファイルのコピー
圧縮ファイルの展開後、「x32」ディレクトリに 32bit 用の DLL、「x64」ディレクトリに 64bit 用の DLL があります。
各 dll ファイルを、Wine prefix 以下の指定ディレクトリに、コピー(上書き)してください。
コピー先の Wine prefix の環境が、32bit か 64bit かで、どの dll をどのディレクトリに置くかが異なります。
※64bit 環境の場合、system32 には、32bit ではなく、64bit 用のファイルを置きます。ディレクトリ名が紛らわしいので、注意してください。
※Direct3D を使用するアプリを実行したときに、dxgi.dll 関連のエラーが出る場合、dxgi.dll は Wine の 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 で上書きされてしまいます。
これをしておかないと、Wine のバージョンが変更されて、Wine prefix 上のファイルが更新される時に、DXVK の DLL が、Wine 内蔵版の DLL で上書きされてしまいます。
- winecfg を実行。「ライブラリ」タブを選択。
- 「ライブラリの新規オーバーライド」のテキスト入力部分に、DLL ファイル名 (".dll" は省略可) を入力し、Enter キーを押す。
- リストに、「<DLL名> (ネイティブ版、内蔵版)」が追加される。
デフォルトで、ネイティブ版(Wine prefix 上の DLL ファイル)が優先されるため、この設定はそのままで構いません。 - これを、DLL ファイル分繰り返す。
Wine の DLL に戻す
DLL ファイルを、Wine 内蔵のものに戻したい場合は、上記の DLL 置き換え設定を削除した後、以下のコマンドを実行します。
これにより、Wine prefix を強制的に更新させます。
個別にファイルを元に戻したい場合は、/usr/lib/wine 以下に内蔵版の DLL ファイルが存在するため、そこからコピーすることもできます。
$ wineboot -u
これにより、Wine prefix を強制的に更新させます。
個別にファイルを元に戻したい場合は、/usr/lib/wine 以下に内蔵版の DLL ファイルが存在するため、そこからコピーすることもできます。
dxvk.conf
DXVK の動作に関する詳細設定は、dxvk.conf に記述します。
Windows の実行ファイルと同じ場所に dxvk.conf を置くか、環境変数 DXVK_CONFIG_FILE で、設定ファイルのパスを指定します。
設定項目については、GitHub 上の 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] | 設定ファイルのパス (ファイル名) を指定。 もしくは、設定の文字列を、';' で区切って直接指定します。 |