インテルGPUで外部モニターのスケーリングモードを設定する方法

インテルGPUで外部モニターのスケーリングモードを設定する方法

以下を使用して、内部ノートブックパネルのディスプレイサイズ変更モードを設定できます。

xrandr --output LVDS1 --set "scaling mode" "Full aspect" ただし、スケーリングモード属性はサポートされていないため、外部モニタ(DP1、VGA1、DP1)では機能しません。

$> xrandr --output HDMI1 --set "scaling mode" "Full aspect"
X Error of failed request:  BadName (named color or font does not exist)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  11 (RRQueryOutputProperty)
  Serial number of failed request:  47
  Current serial number in output stream:  47

低解像度のコンテンツを表示するときにアスペクト比を維持する方法は?

答え1

スケーリングモードのプロパティはまだインテルドライバ(ねえ)。これは独自のAMDおよびNVIDIAドライバで実装されており、最近はオープンソースのradeonドライバ(ここ)。

ただし、xrandrを使用して手動でサイズ変更を実行すると、この制限を解決できます。

画面のデフォルトの解像度が1920×1080で、拡張されていない1024×768の解像度を表示したいとします。アスペクト比の範囲は16/9から4/3までです。したがって、1.333333は1になります。

xrandr --output HDMI1 --mode 1024x768 --scale 1.33333333x1 --panning 1024x768

これにより、画面に正しい解像度と正しいアスペクト比が提供されます。しかし、中央にはありません。これを達成するには、変換オプションを使用して(ほぼ)画面の中央に配置する必要があります(1024 * 1.3333333 - 1024 = 342 / 2 = 171)。

xrandr --output HDMI1 --mode 1024x768 --panning 1024x768 --transform 1.33333333,0,-171,0,1,0,0,0,1

残念ながら、未使用の背景は黒ではなく灰色および/または歪んでいます。

答え2

受け入れられた答えは、Intel GPUを使用して黒い境界線を持つ低解像度でレンダリングするのに必要なものとほぼ同じです。私の目標は、中央に黒い枠を持つ5120x1440超広角基本解像度で1920x1080フレームバッファをレンダリングすることです(スクリーンショット用)。

xrandr \
    --output DP-1 \
    --mode 5120x1440 \
    --fb 1920x1080 \
    --transform 2.666666667,0,1600,0,1.33333333333,180,0,0,1 \
    --panning 1920x1080

パラメータの詳細な説明:

  • 出力:出力ポート(例:DP-1、HDMI-1など)
  • モデル:モニター表示モード(例:基本解像度)
  • Facebook: フレームバッファサイズ
  • 切り替える:レンダリングされた出力ジオメトリがモニタジオメトリ内でどのように変換されるか、つまりフレームバッファがモニタに配置される方法を説明する3x3アフィン変換マトリックス。
  • ファン:ウィンドウマネージャが利用できる全領域

私にとって最大の違いはパラメータの順序 大きい。私のハードウェアの場合は、次の点を確認する必要がありました。ファンその後発生切り替える

変換行列の形状は次のとおりです(回転を無視)。

sx 0  tx      tx = translation x (x pos)
 0 sy ty      ty = translation y (y pos)
 0  0 1       sx = scale x
              sy = scale y

xrandr パラメータに変換: sx,0,tx,0,sy,ty,0,0,1

計算は次のとおりです。

sx = 5120/1920 = 2.66666666667
sy = 1440/1080 = 1.33333333333
tx = (5120 / 2) - (1920 / 2) = 1600
ty = (1440 / 2) - (1080 / 2) = 180

この行列を使用して、ディスプレイサーバーにフレームバッファのサイズを(2.66666666667、1.33333333333)に調整し、1600×180単位をパンして中央に配置するように指示します。

関連情報