Linux用 NVIDIAドライバーの X Server SettingsでApplication Profilesの作成とグラフィック設定の説明をします。ゲーム向け設定のプロファイルを例として紹介しています。
Application Profilesの作成とグラフィック設定
前回までの記事も参考にしてください。
Linux用NVIDIAドライバーでWindowsのNVIDIAグラフィック設定の3D設定と同じような設定するには、プロファイルを作成します。ただし、設定できる項目は少ないです。
このプロファイルはJSON形式のファイルになります。設定項目がわかればJSONファイルを作成し、インポートすることができます。またGUIでの作成も可能です。GUIだと設定項目を1つずつ入力しなくてはいけないのでかなり面倒です。そこで、テンプレートをGUIで作成し、作成されたJSONファイルのプロファイルを修正する形にしたいと思います。
このプロファイルは設定しなくてもSteam(FF15ベンチマーク、モンハンワイルズベンチマークで確認)ではそれなりのスコアが出ました。Windowsの場合3D設定をするとFPSの数値が倍ほど変わる場合もありますが、Linuxの場合既に最適化されているのかわかりませんが、何も設定しなくてもそれなりのスコアが出ます。設定が悪かったからかもしれませんが、むしろ何も設定してい場合の方がスコアが高いという結果になりましたw
他のゲームではわかりませんが、色々試してみてください!
Application Profileのテンプレート作成
まずはGUIでの作り方の説明も兼ねてテンプレートファイルを作成していきます。JSONファイルにルールを定義し、その中でルールのプロファイル(設定)を記述する形です。以下の流れになっています。
- 新規ルールの作成
- 作成したルールにプロファイルを1つずつ追加
- JSONファイル形式にエクスポート
- Step1ルールの新規作成
下図の「+」アイコンをクリックします。
- Step2新規ルールの追加①
この画面では下記を選択します。
①Source File:プロファイルのパスを指定します。
②Brows:既存のプロファイルがある場合ここからインポートできます。
③Rule Pattern [This feature]:ルールのタイプを指定します。3つのタイプから選択可能。
④Rule Pattern [Matches this string]:③のタイプに対応するワードを設定します。
⑤作成ボタン:プロファイルを作成します。【Source File】
ユーザー毎に新たに作るか、既存のNVIDIAのプロファイルを選択するかのどちらかになります。NVIDIAのプロファイルは全体的に設定されます。基本的にはユーザー毎にファイルを作成した方が良いと思います。下記の場合はHomeフォルダに新規でプロファイルを作成します。
【Rule Pattern [This feature]】
設定を適用するアプリの指定方法を下記の3つのタイプから選択します。
- Process Name (procname):実行ファイル名で指定する場合
- Shared Object Name (dso):ライブラリ単位で指定する場合
- Always Applies (true正しくはalwas):全体的に適用する場合
【Rule Pattern [Matches this string]】
マッチするワードを指定します。プロセス名は正しい名称で指定する必要があります。これの調べ方については後述します。
- Process Name (procname):プロセス名(バイナリ名)を指定する(例:wine-preloader、ffxv_s.exe)
- Shared Object Name (dso):ライブラリ単位で指定する場合(例:libcuda.so.1)
- Always Applies (true正しくはalwas):全体的に適用する場合(例:true)
- Step3新規ルールの追加②
ここでは適当に設定します。
①「This feature」に「Process Name」を選択。
②「Matches this string」に「test」と入力。
③「+」アイコンを押す。 - Step4新規ルールの追加③
「はい」ボタンを押します。
- Step5新規ルールの追加④
ルールファイルが作成されました。プロファイルをダブルクリックします。
- Step6既存のルールの編集①
設定項目を1つずつ追加します。項目と値は決まった定数があるので公式サイトなどで確認して下さい。
「New Profile」ボタンを押します。
- Step7新規のプロファイルを追加①
①「Profile Name」に任意のプロファイル名を入力します。ここではデフォルトのままにします。
②リストからいくつかの設定項目を選択できます。リストにない場合は「Custom」を選択し、「+」アイコンを押します。 - Step8新規のプロファイルを追加②
「Key」と「Value」を入力します。
「Key」が設定項目で「Value」がその値です。値を何にしたらいいかわからない場合は「Current Type」が型になっているので推測できます。以下よく使われる型です。
- Boolean:真偽型:TrueかFalse
- Integer:整数型。0か1または値の数値。0がFalseで1がTrueを表す場合もある。または0がOFF、1がONなど。
- String:文字列型:URLなどの特定の文字列
- Step9新規のプロファイルを追加③
①ここではKeyに「test」、Valueに「false」を入力しました。
②「+」アイコンを押します。 - Step10新規のプロファイルを追加④
「はい」ボタンを押します。
- Step11新規のプロファイルを追加⑤
プロファイルが追加されたので下図の「保存」アイコン?を押します。
- Step12JSONファイルのエクスポート①
設定プロファイルをJSON形式のファイルにエクスポートします。
「↓」アイコンを押します。
- Step13JSONファイルのエクスポート②
①既にJSON形式のファイルがある場合は「Back up original files」にチェックを入れると、バックアップファイルが作成されます。
②「↓」アイコンを押します。 - Step14保存先のパス
ユーザーのHomeフォルダ内に「.nv」というフォルダーが作成されます。
- Home/ユーザー名/.nv
これは隠しフォルダーになっています。
①「三本線」のマークをクリック「隠しファイルを表示する」のような項目を選択します。
②「他の場所」または「ホーム」リンクから上記のパスへ移動します。
Application Profileファイルの編集
Profileファイルの「nvidia-application-profiles-rc」はテキストエディタで開くことができるので編集します。開くと下記のようになっています。実際はコメント(#の部分)は入力できないのでご注意ください。赤字の部分を変更します。青字の部分は変更したい場合は修正してください。
{
"rules": [
{
"pattern": {
"feature": "procname", # procname、dso、alwasのどれか
"matches": "test"}, # 正確なプロセス名、正確なライブラリ名、trueのどれか
"profile": "profile_327b23c6" # "name"と同じ値にする
}
],
"profiles": [
{
"name": "profile_327b23c6", # "profile"と同じ値にする
"settings": [
{ "key": "test", "value": false }, #追記する場合は最後にカンマ
{ "key": "test2", "value": false } #最後の行はカンマは要らない
]
}
]
}
プロセス名を調べる方法
プロセス名を調べるには、アプリを起動し下記のコマンドを使用します。exeの場合はわかりやすいんですがLinuxアプリの場合はよくわかりませんでした。この名称が間違えてると設定してもそのアプリに反映されません。
ps aux | grep -i <アプリ名>
Steamの場合以下のようになるらしいですが、設定が反映されているかよくわかりませんでした。参考程度にしてください。
- Steam全般に適用:steamなど
- protonで動作するアプリ:wine-preloader、wine64-preloader
- protonで動作するアプリはexeで指定も可:ffxv.exe、ffxv_s.exe、ffxvbench.exe、MonsterHunterWilds.exe
Windows用NVIDIAの3D設定と同等の設定項目
Windows用NVIDIAの3D設定と同じ項目をプロファイルのKeyに割りあてた表を示します。
設定項目 | 値(ゲーム用推奨値) | Key | Value(可能な値) |
画像のシャープ化 | 鮮鋭化オフ | 未対応 | |
CUDA – GPU | すべて | AssignedGpu | GPU-0 など |
CUDA – システム メモリ フォールパック ポリシー | ドライバのデフォルト | 未対応 | |
OpenGL GDIの互換性 | 自動 | 未対応 | |
OpenGL. レンダリング GPU | 自動選択 | AssignedGpu | GPU-0など |
Vulkan/OpenGLの既存の方法 | 自動 | 未対応 | |
アンチエイリアシング – FXAA | オフ | GLFXAA | true / false |
★アンチエイリアシング・ガンマ修正 | オフ | 未対応 | |
アンチエイリアシングトランスペアレンシー | オフ | 未対応 | |
★アンチエイリアシングモード | ー | 未対応 | |
アンチエイリアシング設定 | アプリケーションによるコントロール | 未対応 | |
アンビエントオクルージョン | ー | 未対応 | |
★スレッドした最適化 | オフ | GLThreadedOptimizations | true / false |
★テクスチャフィルタリング – クオリティ | ハイパフォーマンス | GLTextureQuality | high / medium / low |
★テクスチャフィルタリング・トリリニア最適化 | オン | 未対応 | |
★テクスチャフィルタリング ネガティブ LOD バイアス | 許可 | 未対応 | |
★テクスチャフィルタリング・異方性サンプル最適化 | オフ | 未対応 | |
トリプル バッファリング | オフ | GLTripleBuffer | true / false |
バックグラウンドアプリケーション最大フレームレート | オフ | 未対応 | |
バーチャルリアリティ・可変レート スーパーサンプリング | ー | 未対応 | |
バーチャルリアリティ レンダリング前フレーム数 | 1 | 未対応 | |
マルチフレーム サンプリング AA (MFAA) | ー | 未対応 | |
★低遅延モード | ウルトラ | 未対応 | |
★垂直同期 | オフ | GLVBlank | 0 (無効) / 1 (有効) |
★最大フレームレート | 1000 FPS | なし | 環境変数などで制御※ |
★異方性フィルタリング | オフ | GLLogMaxAniso | 0 / 2 / 4 / 8 / 16 |
★電源管理モード | パフォーマンス最大化を優先 | GPUPowerMizerMode | 0 = 自動 / 1 = パフォーマンス優先 |
(シェーダーキャッシュ使用の有無) | GLShaderDiskCache | true / false | |
(シェーダーキャッシュの保存パス) | GLShaderDiskCachePath | パス(/tmp/shadercache など) | |
(OpenGLでのインダイレクト許可、リモートX経由でOpenGL使用許可) | GLAllowIndirectGLXProtocol | true / false | |
(ABI互換性の無視、バージョン非互換を無視) | GLIgnoreABI | true / false | |
(テクスチャキャッシュの制御) | GLTextureClampBehavior | legacy , default など | |
(Proton用。古いDirectX変換との互換確保) | GLIgnoreABI | true / false |
最大フレームレートの許可設定
最大フレームレートは以下の環境変数を使用すると許可になります。
__GL_MaxFramesAllowed=1
Steamでの環境変数を設定するには、Steam→ライブラリ→対象アプリのプロパティ→起動オプションに上記を入力します。FF15ベンチで試しましたが、設定するとわずかにスコアが落ちました。そしてFPSは変わりませんでした。ゲームによっては設定しない方が良い場合がありますので試してみてください。
ゲーム向け設定例
Linux用ゲーム向け設定の例を示します。これが正しいとは限らないので、色々調整してみてください。
設定内容
設定内容になります。値は正しいかはわかりません。
# 垂直同期 OFF(最大FPS優先)
GLVBlank = 0
# トリプルバッファ無効(遅延回避)
GLTripleBuffer = false
# パフォーマンス優先
GPUPowerMizerMode = 1
# マルチスレッド描画最適化
GLThreadedOptimizations = false
# シェーダーキャッシュ有効化(ロード高速化)
GLShaderDiskCache = true
GLShaderDiskCachePath = "/home/username/.shadercache-proton"
# 異方性フィルタリング最大(高画質にするか)
GLLogMaxAniso = 0
# テクスチャ高画質
GLTextureQuality = "high"
# FXAA(高速アンチエイリアス)
GLFXAA = false
# 古いDirectX変換との互換確保(Proton用)
GLIgnoreABI = true
# 指定GPU(マルチGPUの場合のみ)
AssignedGpu = "GPU-0"
JSONファイル形式のプロファイル
「nvidia-application-profiles-rc」にコピペして赤字部分を編集してください。前章でテンプレートの作り方を紹介しましたが、テキストエディタで「nvidia-application-profiles-rc」でファイルを作成し、下記コピペし、Application Profilesでインポートした方が早いかもしれません。(既にインポートされている場合は、ファイルに変更があれば更新されます。または再読み込みのアイコンを押します。)
{
"rules": [
{
"pattern": {
"feature": "procname",
"matches": "wine-preloader"
},
"profile": "profile_327b23c6"
}
],
"profiles": [
{
"name": "profile_327b23c6",
"settings": [
{ "key": "GLVBlank", "value": 0 },
{ "key": "GLTripleBuffer", "value": false },
{ "key": "GPUPowerMizerMode", "value": 1 },
{ "key": "GLThreadedOptimizations", "value": false },
{ "key": "GLShaderDiskCache", "value": true },
{ "key": "GLShaderDiskCachePath", "value": "/home/username/.shadercache-proton" },
{ "key": "GLLogMaxAniso", "value": 0 },
{ "key": "GLTextureQuality", "value": "high" },
{ "key": "GLFXAA", "value": false },
{ "key": "GLIgnoreABI", "value": true },
{ "key": "AssignedGpu", "value": "GPU-0" }
]
}
]
}
複数のアプリに同じ設定をする場合
“rules”の{ }の部分の項目を増やします。プロセス名がわからないときはいくつか書いておくのもありかもしれません。
{
"rules": [
{
"pattern": {
"feature": "procname",
"matches": "ffxvbench.exe"
},
"profile": "profile_327b23c6"
}, # ブロックを足す場合は最後にカンマを付ける。
{
"pattern": {
"feature": "procname",
"matches": "MonsterHunterWilds.exe"
} # 最後のブロックはカンマは要らない。
"profile": "profile_327b23c6"
}
],
"profiles": [
Comment