「ハイブリッドグラフィックス」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「[[zh-cn:」を「[[zh-hans:」に置換) |
Kusakata.bot (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
||
33行目: | 33行目: | ||
高性能なグラフィックプロセッサの電源を切って電力を抑えたい場合、{{pkg|acpi_call}} パッケージをインストールすることで電源オフにできます。 |
高性能なグラフィックプロセッサの電源を切って電力を抑えたい場合、{{pkg|acpi_call}} パッケージをインストールすることで電源オフにできます。 |
||
− | {{Tip|[[公式リポジトリ]]に含まれていないカーネルを使っている場合、代わりに {{AUR|acpi_call-git-dkms}} を使ってください。[[DKMS]] も見てください。}} |
+ | {{Tip|[[公式リポジトリ]]に含まれていないカーネルを使っている場合、代わりに {{AUR|acpi_call-git-dkms}}{{Broken package link|パッケージが存在しません}} を使ってください。[[DKMS]] も見てください。}} |
パッケージをインストールしたらカーネルモジュールをロードしてください: |
パッケージをインストールしたらカーネルモジュールをロードしてください: |
2017年7月13日 (木) 00:12時点における版
ハイブリッドグラフィックは同一のコンピュータで2つのグラフィックカードを動作させるというコンセプトです。一つのコンピュータで二つのグラフィックカードを使用して、高いパフォーマンスと省電力の両方を達成する新しいテクノロジーとして、ノートパソコンのメーカーによって開発されました。
様々なテクノロジーが存在し、問題を解決するために個々のメーカーによって独自の方法が開発されています。このテクノロジーは Windows ではしっかりとサポートされていますが、Linux ディストリビューションでは未だ実験的な段階です。このページでは、それぞれのアプローチとモデルについて軽く説明し、そして GNU/Linux システムのサポートがないことに対するコミュニティによるソリューションを紹介します。
第一世代のハイブリッドモデル (ベーシックな切り替え)
ハイブリッドグラフィックの第一世代のノートパソコンではハードウェアマルチプレクサ (MUX) を使用していました。内蔵グラフィックプロセッサ (IGP) による省電力ながらローレベルな 3D レンダリングを使用するか、あるいは専用グラフィックプロセッサ (DGP) を使って電力消費量の多い高性能な 3D レンダリングを使うか選ぶことができます。ユーザーがグラフィックプロファイルを選べるのは起動あるいはログイン時だけで、ユーザーセッションの実行中はどちらかに固定されます。GPU の切り替えは以下のような手順で行われます:
- ディスプレイをオフ
- DGP をオン
- マルチプレクサを切り替え
- IGP をオフ
- ディスプレイをオン
一時的に画面が非表示になるためスムーズな切り替えではありません。下のモデルのほうがユーザーフレンドリです。
動的な切り替えモデル
新しいハイブリッドグラフィック技術では DGP と IGP はフレームバッファに接続されハードウェアマルチプレクサは使われます。IGP は常にオンとなっており省電力と高性能レンダリングどちらが必要なのかにあわせて DGP のオンオフが切り替わります。大抵の場合は DGP だけを使用するということはできず、ソフトウェアによって切り替えやレンダリングが制御されます。ブート時に、Linux カーネルはビデオモードを使用して起動され低水準なグラフィックドライバーが設定されます。ほとんどの Linux ディストリビューションは X.org を使用してグラフィック環境を表示します。最後に、他のソフトウェアが起動します。ログインマネージャやウィンドウマネージャなどです。このような階層的なシステムは単一のグラフィックカードを使用する場合を想定して設計されています。
ディスクリート GPU の完全な電源オフ
高性能なグラフィックプロセッサの電源を切って電力を抑えたい場合、acpi_call パッケージをインストールすることで電源オフにできます。
パッケージをインストールしたらカーネルモジュールをロードしてください:
# modprobe acpi_call
カーネルモジュールをロードしたら以下のコマンドを実行します:
# /usr/share/acpi_call/examples/turn_off_gpu.sh
スクリプトは全てのデータバスを検査してグラフィックカードをオフにします。以下のような出力が表示されます:
Trying \_SB.PCI0.P0P1.VGA._OFF: failed Trying \_SB.PCI0.P0P2.VGA._OFF: failed Trying \_SB_.PCI0.OVGA.ATPX: failed Trying \_SB_.PCI0.OVGA.XTPX: failed Trying \_SB.PCI0.P0P3.PEGP._OFF: failed Trying \_SB.PCI0.P0P2.PEGP._OFF: failed Trying \_SB.PCI0.P0P1.PEGP._OFF: failed Trying \_SB.PCI0.MXR0.MXM0._OFF: failed Trying \_SB.PCI0.PEG1.GFX0._OFF: failed Trying \_SB.PCI0.PEG0.GFX0.DOFF: failed Trying \_SB.PCI0.PEG1.GFX0.DOFF: failed Trying \_SB.PCI0.PEG0.PEGP._OFF: works! Trying \_SB.PCI0.XVR0.Z01I.DGOF: failed Trying \_SB.PCI0.PEGR.GFX0._OFF: failed Trying \_SB.PCI0.PEG.VID._OFF: failed Trying \_SB.PCI0.PEG0.VID._OFF: failed Trying \_SB.PCI0.P0P2.DGPU._OFF: failed Trying \_SB.PCI0.P0P4.DGPU.DOFF: failed Trying \_SB.PCI0.IXVE.IGPU.DGOF: failed Trying \_SB.PCI0.RP00.VGA._PS3: failed Trying \_SB.PCI0.RP00.VGA.P3MO: failed Trying \_SB.PCI0.GFX0.DSM._T_0: failed Trying \_SB.PCI0.LPC.EC.PUBS._OFF: failed Trying \_SB.PCI0.P0P2.NVID._OFF: failed Trying \_SB.PCI0.P0P2.VGA.PX02: failed Trying \_SB_.PCI0.PEGP.DGFX._OFF: failed Trying \_SB_.PCI0.VGA.PX02: failed
"works" という文字はスクリプトが GPU が接続されているバスを発見して電源をオフにしたことを意味しています。バッテリーの持ちが良くなっているはずです。再起動するとチップはまた通電されます。オフのままにしておきたい場合:
起動時にロードされるようにカーネルモジュールを追加:
/etc/modules-load.d/acpi_call.conf
#Load 'acpi_call.ko' at boot. acpi_call
起動時に GPU をオフにしたい場合、上記のスクリプトを実行するよりも以下の systemd の tmpfile を使用するほうが簡単です:
/etc/tmpfiles.d/acpi_call.conf
w /proc/acpi/call - - - - \\_SB.PCI0.PEG0.PEGP._OFF
上記の設定は起動時に systemd によってロードされます。特定の OFF シグナルを /proc/acpi/call
ファイルに書き込んで電源を切っています。\_SB.PCI0.PEG0.PEGP._OFF
は適当な値に置き換えてください (バックスラッシュでエスケープする必要があります)。