manual

Application Profilesの作成とグラフィック設定:Linux用 NVIDIA X Server Settings

Linux用NVIDIA設定Application Profileの作成1
この記事は約14分で読めます。

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. 新規ルールの作成
  2. 作成したルールにプロファイルを1つずつ追加
  3. JSONファイル形式にエクスポート
Application Profileのテンプレート作成
  • Step1
    ルールの新規作成

    下図の「」アイコンをクリックします。

    Linux用NVIDIA設定Application Profileの作成1
  • Step2
    新規ルールの追加①

    この画面では下記を選択します。

    ①Source File:プロファイルのパスを指定します。
    ②Brows:既存のプロファイルがある場合ここからインポートできます。
    ③Rule Pattern [This feature]:ルールのタイプを指定します。3つのタイプから選択可能。
    ④Rule Pattern [Matches this string]:③のタイプに対応するワードを設定します。
    ⑤作成ボタン:プロファイルを作成します。

    Linux用NVIDIA設定Application Profileの作成2

    Source File

    ユーザー毎に新たに作るか、既存のNVIDIAのプロファイルを選択するかのどちらかになります。NVIDIAのプロファイルは全体的に設定されます。基本的にはユーザー毎にファイルを作成した方が良いと思います。下記の場合はHomeフォルダに新規でプロファイルを作成します。

    Linux用NVIDIA設定Application Profileの作成3

    Rule Pattern [This feature]

    設定を適用するアプリの指定方法を下記の3つのタイプから選択します。

    • Process Name (procname):実行ファイル名で指定する場合
    • Shared Object Name (dso):ライブラリ単位で指定する場合
    • Always Applies (true正しくはalwas):全体的に適用する場合
    Linux用NVIDIA設定Application Profileの作成4

    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」と入力。
    ③「」アイコンを押す。

    Linux用NVIDIA設定Application Profileの作成5
  • Step4
    新規ルールの追加

    はい」ボタンを押します。

    Linux用NVIDIA設定Application Profileの作成6
  • Step5
    新規ルールの追加

    ルールファイルが作成されました。プロファイルをダブルクリックします。

    Linux用NVIDIA設定Application Profileの作成7
  • Step6
    既存のルールの編集①

    設定項目を1つずつ追加します。項目と値は決まった定数があるので公式サイトなどで確認して下さい。

    New Profile」ボタンを押します。

    Linux用NVIDIA設定Application Profileの作成8
  • Step7
    新規のプロファイルを追加①

    ①「Profile Name」に任意のプロファイル名を入力します。ここではデフォルトのままにします。
    ②リストからいくつかの設定項目を選択できます。リストにない場合は「Custom」を選択し、「」アイコンを押します。

    Linux用NVIDIA設定Application Profileの作成9
  • Step8
    新規のプロファイルを追加②

    Key」と「Value」を入力します。

    「Key」が設定項目で「Value」がその値です。値を何にしたらいいかわからない場合は「Current Type」が型になっているので推測できます。以下よく使われる型です。

    • Boolean:真偽型:TrueかFalse
    • Integer:整数型。0か1または値の数値。0がFalseで1がTrueを表す場合もある。または0がOFF、1がONなど。
    • String:文字列型:URLなどの特定の文字列
    Linux用NVIDIA設定Application Profileの作成10
  • Step9
    新規のプロファイルを追加③

    ①ここではKeyに「test」、Valueに「false」を入力しました。
    ②「」アイコンを押します。

    Linux用NVIDIA設定Application Profileの作成11
  • Step10
    新規のプロファイルを追加④

    はい」ボタンを押します。

    Linux用NVIDIA設定Application Profileの作成12
  • Step11
    新規のプロファイルを追加⑤

    プロファイルが追加されたので下図の「保存」アイコン?を押します。

    Linux用NVIDIA設定Application Profileの作成13
  • Step12
    JSONファイルのエクスポート①

    設定プロファイルをJSON形式のファイルにエクスポートします。

    」アイコンを押します。

    Linux用NVIDIA設定Application Profileの作成14
  • Step13
    JSONファイルのエクスポート②

    ①既にJSON形式のファイルがある場合は「Back up original files」にチェックを入れると、バックアップファイルが作成されます。
    ②「」アイコンを押します。

    Linux用NVIDIA設定Application Profileの作成15
  • Step14
    保存先のパス

    ユーザーのHomeフォルダ内に「.nv」というフォルダーが作成されます。

    • Home/ユーザー名/.nv

    これは隠しフォルダーになっています。

    ①「三本線」のマークをクリック「隠しファイルを表示する」のような項目を選択します。
    ②「他の場所」または「ホーム」リンクから上記のパスへ移動します。

    Linux用NVIDIA設定Application Profileの作成16

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の場合以下のようになるらしいですが、設定が反映されているかよくわかりませんでした。参考程度にしてください。

  1. Steam全般に適用:steamなど
  2. protonで動作するアプリ:wine-preloader、wine64-preloader
  3. protonで動作するアプリはexeで指定も可:ffxv.exe、ffxv_s.exe、ffxvbench.exe、MonsterHunterWilds.exe

Windows用NVIDIAの3D設定と同等の設定項目

Windows用NVIDIAの3D設定と同じ項目をプロファイルのKeyに割りあてた表を示します。

設定項目値(ゲーム用推奨値)KeyValue(可能な値)
画像のシャープ化鮮鋭化オフ未対応
CUDA – GPUすべてAssignedGpuGPU-0など
CUDA – システム メモリ フォールパック ポリシードライバのデフォルト未対応
OpenGL GDIの互換性自動未対応
OpenGL. レンダリング GPU自動選択AssignedGpuGPU-0など
Vulkan/OpenGLの既存の方法自動未対応
アンチエイリアシング – FXAAオフGLFXAAtrue / false
★アンチエイリアシング・ガンマ修正オフ未対応
アンチエイリアシングトランスペアレンシーオフ未対応
★アンチエイリアシングモード未対応
アンチエイリアシング設定アプリケーションによるコントロール未対応
アンビエントオクルージョン未対応
★スレッドした最適化オフGLThreadedOptimizationstrue / false
★テクスチャフィルタリング – クオリティハイパフォーマンスGLTextureQualityhigh / medium / low
★テクスチャフィルタリング・トリリニア最適化オン未対応
★テクスチャフィルタリング ネガティブ LOD バイアス許可未対応
★テクスチャフィルタリング・異方性サンプル最適化オフ未対応
トリプル バッファリングオフGLTripleBuffertrue / false
バックグラウンドアプリケーション最大フレームレートオフ未対応
バーチャルリアリティ・可変レート スーパーサンプリング未対応
バーチャルリアリティ レンダリング前フレーム数1未対応
マルチフレーム サンプリング AA (MFAA)未対応
★低遅延モードウルトラ未対応
★垂直同期オフGLVBlank0(無効) / 1(有効)
★最大フレームレート1000 FPSなし環境変数などで制御※
★異方性フィルタリングオフGLLogMaxAniso0 / 2 / 4 / 8 / 16
★電源管理モードパフォーマンス最大化を優先GPUPowerMizerMode0 = 自動 / 1 = パフォーマンス優先
(シェーダーキャッシュ使用の有無)GLShaderDiskCachetrue / false
(シェーダーキャッシュの保存パス)GLShaderDiskCachePathパス(/tmp/shadercacheなど)
(OpenGLでのインダイレクト許可、リモートX経由でOpenGL使用許可)GLAllowIndirectGLXProtocoltrue / false
(ABI互換性の無視、バージョン非互換を無視)GLIgnoreABItrue / false
(テクスチャキャッシュの制御)GLTextureClampBehaviorlegacy, defaultなど
(Proton用。古いDirectX変換との互換確保)GLIgnoreABItrue / 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

タイトルとURLをコピーしました