web-dev-qa-db-ja.com

異なるモニターで異なるサブピクセルレンダリングを設定する

私はデュアルモニターを使用しています。そのうちの1つは90度回転しています。フォントのアンチエイリアス処理は、回転したモニターでは正しく見えません(つまり、文字の周りに虹の境界線があります)。

これは、Xが両方のモニターで同じサブピクセルレンダリング順序を使用しているためだと思います。モニターごとに異なるサブピクセルレンダリング順序を構成する方法はありますか? (つまり、モニター1 = RGB、モニター2 = vRGB)。

13
scaramouche

共有デスクトップではなく、個別のXスクリーンとしてディスプレイを構成する必要があります。 Ubuntuは、個々のXスクリーンのサブピクセルの順序を調整できるようにします。

そうでない場合、サブピクセルの順序が異なる2つのディスプレイデバイスにまたがるウィンドウではどうなりますか?または、さらに物理的な順序(RGBとBGR)が異なるクローンモードの2つのディスプレイ。

これは現在、すべてのオペレーティングシステムの既知の制限であり、修正するには大幅な再設計が必要です。レンダリングを実行するライブラリは、どの画面にいるのかを認識して動的に調整する必要があるため、動的調整は実行できません。さらに、ある画面にウィンドウの半分があり、別の画面に半分があるとします-どちらを選択するかわからないでしょう。

複数のXスクリーンのセットアップ:

  1. Xを起動して再構成します。Sudo dpkg-reconfigure -phigh xserver-xorg手順に従って、プライマリディスプレイをセットアップします。 (CLIからこの特定のステップを実行する方法がわかりません)
  2. ターミナルを開き、
    lspci
    これにより、デバイスとそのバスIDのリストが表示されます。グラフィックカードを見つけて、バスIDを書き留めます。
  3. xorg.confのコピーをxorg.conf.origとして作成し、開いてください:Sudo vi /etc/X11/xorg.conf
  4. これを読むの前に必要に応じてカスタマイズできることを確認します。
  5. ここで、2つのDeviceセクションを作成し、共有するカードのBusIDをリ​​ストし、次のようにドライバーもリストします。

    Section "Device"
        Identifier  "nvidia0"
        # Your preferred driver
        Driver      "nvidia"
        # Edit the BusID with the location of your graphics card
        BusID       "PCI:2:0:0"
        Screen      0
    EndSection
    
    Section "Device"
        Identifier  "nvidia1"
        # Your preferred driver
        Driver      "nvidia"
        # Edit the BusID with the location of your graphics card
        BusId       "PCI:2:0:0"
        Screen      1
    EndSection
    
  6. 次のように、2つのScreenセクションを作成します(もちろん、選択したパラメーターを使用して、このセクションのDeviceと前のセクションのIdentifierを一致させる必要があります)。

    Section "Screen"
        Identifier  "Screen0"
        Device      "nvidia0"
        Monitor     "Monitor0"
        DefaultDepth 24
        Subsection "Display"
            Depth       24
            Modes       "1600x1200" "1024x768" "800x600" "640x480" 
        EndSubsection
    EndSection
    
    Section "Screen"
        Identifier  "Screen1"
        Device      "nvidia1"
        Monitor     "Monitor1"
        DefaultDepth 24
        Subsection "Display"
            Depth       24
            Modes       "1600x1200" "1024x768" "800x600" "640x480" 
        EndSubsection
    EndSection
    
  7. 次に、各モニターのMonitorセクションを次のように作成します。

    Section "Monitor"
        Identifier "monitor name here"
    EndSection
    
    Section "Monitor"
        Identifier "monitor name here"
        # Rotate as you want (your question says one is rotated)
        Rotate "left"
    EndSection
    
  8. 最後に、ServerLayoutセクションを更新して、両方のScreenセクションを使用および配置します。

    Section "ServerLayout"
        ...
        Screen         0 "Screen0" 
        Screen         1 "Screen1" leftOf "Screen0"
        ...
    EndSection
    
  9. Xを再起動して、指を交差させてください!動作する場合は、必要に応じて微調整を続けます。

現在のサブピクセルのレンダリング命令についてfont.confまたは~/font.confまたは/etc/X11/font.confのいずれかでこの変更を行います。 bgr

4
Ashhar Hasan