Intel graphics (简体中文)

From ArchWiki

由于 Intel 提供并维护开源驱动程序,因此 Intel 显卡基本上是即插即用的。

有关 Intel GPU 型号以及相应芯片组和 CPU 的全面列表,请参阅 Wikipedia:list of Intel graphics processing unitsGentoo:Intel#Feature support

注意: 开源驱动不支持基于 PowerVR 架构的图形卡 (比如GMA 3600 系列)

安装

安装 mesa 软件包,它提供用于3D加速的DRI驱动程序。

  • 为支持32位程序,请同时从multilib仓库中安装lib32-mesa软件包。
  • 对于 DDX 驱动支持(可提供对Xorg的2D加速),可以安装xf86-video-intel 软件包。除此功能外,通常不建议使用此软件包,请参见下面的注释。
  • 为支持 VulkanIvy Bridge及以上架构),可以安装 vulkan-intelamdvlk 软件包。

另请参见 硬件视频加速.

Note: 有的文档 (Debian & Ubuntu, Fedora, KDE) 推荐不安装 xf86-video-intel 驱动程序,而是回落到给第四代及更新 GPU (2006年以来的GMA 3000及以上显卡) 使用的 modesetting 驱动程序。请参考 [1][2], Xorg#安装modesetting(4). 然而,modesetting 驱动程序可能导致比如 XFCE 上的屏幕撕裂和鼠标抖动切换Chromium中虚拟的桌面产生伪影mpv中的vsync抖动/视频抖动 等问题

加载

Intel 内核模块应会在系统引导时自动加载。

如果它没有自动加载,请尝试:

  • 由于 Intel 需要内核模式设置,确保您没有内核参数 中添加 nomodeset
  • 请同时确认您没有在 /etc/modprobe.d//usr/lib/modprobe.d/ 中把 Intel 列入 modprobe 的黑名单导致禁用了 Intel。

启用 KMS 早启动

使用 i915 DRM 以上驱动的 Intel 芯片组都强制支持 内核级显示模式设置 (KMS) ,并且被默认启用。

请参考 Kernel_mode_setting#KMS_早启动 获得有关如何在启动过程中第一时间启用KMS的说明。

启用 GuC / HuC 固件加载

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: 尽管 Intel 的文档没有说,但是 Tiger Lake 和 Rocket Lake GPU 可能实际上支持 enable_guc=3, 并且默认设置了 enable_guc=1. (Discuss in Talk:Intel graphics#TGL/RKL GuC Submission)

从第九代英特尔处理器 (Skylake 及以后的架构) 开始, Intel GPU 都包含了一个用于提供以下功能的图形微控制器 「Graphics micro (μ) Controller」 (GuC) [3]:

  • 安装 intel-media-driver 软件包来启用硬件视频加速后,能够把一些多媒体解码功能从 CPU 分载(offload)到 HEVC/H.265 微控制器 (micro (µ) Controller) (HuC) 上。该功能于第九代推出。
  • 使用GuC进行调度、上下文提交(context submission)和电源管理。该功能于 12 代 Alder Lake-P(移动端)推出。

为了使用这些功能,您必须加载 GuC 固件。对于 HuC 支持,一些视频特性(如 SKL 低功耗编码模式下的 CBR 速率控制)也需要加载 HuC 固件才能实现。 [4] GuC 和 HuC 的固件文件都包含在 linux-firmware 软件包中。

GuC 功能由 i915.enable_guc 内核参数 控制,用法如下:

enable_guc 的值 GuC Submission HuC Firmware Loading 作为平台默认值 支持的平台
0 No No Tiger Lake, Rocket Lake, 和 Pre-Gen12 [5] All
1 Yes No Alder Lake-P (Mobile) 及更新
2 No Yes Alder Lake-S (Desktop) [6] [7] Gen9 及更新
3 Yes Yes Alder Lake-P (Mobile) 及更新

如果 GuC submission 或者 HuC 固件加载并未在您的 GPU 上默认启用,您可以手动启用它。

警告: 即使您的显卡不支持相关功能,手动启用 GuC/HuC 固件加载也可能会污染内核。此外,启用GuC/HuC固件加载可能会导致某些系统出现问题;如果您遇到冻结(例如,从休眠恢复后),请禁用它。

首先确保您已经安装linux-firmware 软件包。

如果您的系统配置了 KMS 晚启动 (默认值),您可以参考上文修改 i915.enable_guc 内核参数来启用这些功能。

或者,如果您把 i915 模块添加到了 initramfs 中(参考KMS早启动),那您必须通过 /etc/modprobe.d/ 目录中的配置文件来设置这些选项,比如:

/etc/modprobe.d/i915.conf
options i915 enable_guc=2

然后 重建 initramfs.

在下一次启动时您可以通过 dmesg 命令来确认 GuC 和 HuC 都已被启用。

# dmesg
[30130.586970] i915 0000:00:02.0: [drm] GuC firmware i915/icl_guc_33.0.0.bin version 33.0 submission:disabled
[30130.586973] i915 0000:00:02.0: [drm] HuC firmware i915/icl_huc_9.0.0.bin version 9.0 authenticated:yes

如果您的显卡不支持它们,你会看到:

# dmesg
[    0.571339] i915 0000:00:02.0: [drm] Incompatible option enable_guc=2 - GuC is not supported!
[    0.571340] i915 0000:00:02.0: [drm] Incompatible option enable_guc=2 - HuC is not supported!

或者,使用以下方法进行检查:

# cat /sys/kernel/debug/dri/0/gt/uc/guc_info
# cat /sys/kernel/debug/dri/0/gt/uc/huc_info
Note: 从 Linux 4.20.11 起,当 GuC/HuC 被启用时,不支持通过设置 enable_gvt=1 来使用 GVT-g 图形虚拟化 功能。i915模块将无法初始化,如系统日志所示:
# journalctl
... kernel: [drm:intel_gvt_init [i915]] *ERROR* i915 GVT-g loading failed due to Graphics virtualization is not yet supported with GuC submission
... kernel: i915 0000:00:02.0: [drm:i915_driver_load [i915]] Device initialization failed (-5)
... kernel: i915: probe of 0000:00:02.0 failed with error -5
... kernel: snd_hda_intel 0000:00:1f.3: failed to add i915 component master (-19)

请注意相关警告并非致命,正如[8] 中解释的那样:

# journalctl -b 
... kernel: i915 0000:00:02.0: Direct firmware load for i915/gvt/vid_0x8086_did_0x5916_rid_0x02.golden_hw_state failed with error -2

Xorg 配置

Note: 以下操作需要安装 xf86-video-intel 软件包。

您可能无需做任何配置就能运行 Xorg

但是如果 Xorg 未正常启动,或者想要使用某些驱动程序选项,您可以创建一个与下述类似的 Xorg 配置文件:

/etc/X11/xorg.conf.d/20-intel.conf
Section "Device"
  Identifier "Intel Graphics"
  Driver "intel"
EndSection

您可以在 Driver "intel" 下方开新行添加额外的选项。请参考 intel(4) 手册页以获得完整的选项列表。

Note: 您可能需要添加不止一段 device 配置,本文将在需要的地方指出。

AccelMethod

创建配置文件时,您可能需要指定 Option "AccelMethod" 。传统的选项包括 UXA, SNA (默认) 和 BLT.

如果您在使用默认选项 SNA 时遇到问题 (比如花屏、文字损坏等),尝试改用UXA 。只需要在配置文件中添加如下一行即可:

Option      "AccelMethod"  "uxa"

另请参阅 intel(4) § CONFIGURATION DETAILS 手册文件中的 AccelMethod 选项。

基于内核模块参数的选项

i915 内核模块允许您通过内核模块参数来配置选项。其中一些选项会影响到省电。

您可以使用以下命令生成所有选项的列表以及简短说明和默认值:

$ modinfo -p i915

若要检查当前启用了哪些选项,请运行

# systool -m i915 -av

您将注意到,许多选项默认为 -1,说明芯片的省电状态都为默认值。然而,您可以通过修改内核模块参数来配置更积极的省电策略。

Note: Diverting from the defaults will mark the kernel as tainted from Linux 3.18 onwards. This basically implies using other options than the per-chip defaults is considered experimental and not supported by the developers.

Framebuffer 压缩 (enable_fbc)

启用 Framebuffer 压缩 (FBC) 功能能够减少电源消耗,同时减少刷新屏幕所需的内存带宽。

要启用 FBC, 请在内核参数中添加 i915.enable_fbc=1 或在 /etc/modprobe.d/i915.conf 中进行如下配置:

/etc/modprobe.d/i915.conf
options i915 enable_fbc=1
Note: 在 Sandy Bridge (第6代)之前的几代 Intel GPU 上,帧缓冲(Framebuffer)压缩可能不可靠或不可用。 这导致系统日志中可能会记录类似如下信息:
kernel: drm: not enough stolen space for compressed buffer, disabling.

在Sandy Bridge之前的CPU上启用帧缓冲区压缩会导致无休止的错误消息:

# dmesg
[ 2360.475430] [drm] not enough stolen space for compressed buffer (need 4325376 bytes), disabling
[ 2360.475437] [drm] hint: you may be able to increase stolen memory size in the BIOS to avoid this
解决方案是禁用帧缓冲压缩,这将增加些微功耗(约0.06W)。为了禁用它,请在内核参数中添加i915.enable_fbc=0 。 请参阅此处 了解更多关于禁用帧缓冲的影响。

Fastboot

Note: Skylake 和更新的架构,会在默认情况下启用此参数[9]。以及 Bay- 和 Cherry-Trail (VLV/CHV)[10] 自 Linux 5.1 版本以来也会启用。[11]

Intel Fastboot 的目标是在 Xorg 启动之前将帧缓冲区保留为 BIOS 或引导加载程序设置的内容,以避免出现屏闪。[12][13]

要在未默认启用快速启动的平台上强制启用快速启动,请设置 i915.fastboot=1 内核参数 ,或在 /etc/modprobe.d/i915.conf 里作如下设置:

/etc/modprobe.d/i915.conf
options i915 fastboot=1

Intel GVT-g 图形虚拟化支持

请参考 Intel GVT-g 以了解详细信息。

启用性能支持

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: What does Mesa actually do using the performance counters? What's the effect of this? Some report drastic performance increases on Intel Tiger Lake, attributing it to a support for Dynamic Tuning [14]. (Discuss in Talk:Intel graphics (简体中文)#Potential performance gains via Observation Architecture)

从第六代处理器 (Sandy Bridge 及更新的架构) 开始,Intel GPU 提供性能计数器,用于向驱动程序提供内部性能数据。 驱动程序和硬件寄存器将此基础结构称为 Observation Architecture (内部称为 "OA") [15],但英特尔的文档一般普遍将此功能称为 提供可观测性能计数器(Observability Performance Counters)[16] [17].

默认情况下,只有使用 CAP_SYS_ADMIN(相当于root)或 CAP_PERFMON 能力(Capabilities)运行的程序才能使用 OA​ 。 大多数应用程序将在没有这两种情况下运行,从而导致以下警告:

MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0

若要在不使用能力(或 root)的情况下启用性能支持,请按 sysctl 中的描述设置内核参数。

警告: perf_event_paranoid 系列选项默认为限制访问,因为允许应用程序访问性能数据存在风险 [18]。话虽如此, dev.i915.perf_stream_paranoid 只会影响对 GPU 性能计数器的访问,这比访问 CPU 架构执行上下文寄存器之类的带来的风险要小。

如果在 /etc/sysctl.d/*.conf 文件中把值设置为 0,会导致启动时出现如下错误:

sysctl: cannot stat /proc/sys/dev/i915/perf_stream_paranoid: No such file or directory

您应该通过早启动的方式加载 i915 模块。

技巧和窍门

设置缩放模式

这对于某些全屏应用程序很有用:

$ xrandr --output LVDS1 --set PANEL_FITTING param

其中 param 可以为:

  • center: 分辨率将完全保持原设置,不会进行缩放
  • full: 缩放分辨率,以便使用整个屏幕
  • full_aspect: 将分辨率缩放到可能的最大值,但保持纵横比。

如果它不起作用,请尝试:

$ xrandr --output LVDS1 --set "scaling mode" param

其中 param 可以为 "Full""Center""Full aspect"

Note: 此选项目前不适用于外接显示器 (比如 VGA, DVI, HDMI, DP). [19]

GMA 4500上的硬件加速 H.264 解码

对于某些 GMA 4500 系列的 GPU,libva-intel-driver 软件包只提供对 MPEG-2 解码的硬件加速,而并不包括 H.264 解码。要检查这是否对您的 GPU 有影响,请同时安装驱动和 libva-utils 软件包,并检查 vainfo 命令的输出结果中是否包含以 VAProfileH264 开头的项目。

对于 H.264 的解码支持是在另一个 g45-h264 分支中独立维护的。您可以安装 libva-intel-driver-g45-h264AUR 软件包来使用它。然而,要注意该支持是实验性的,并且其开发工作已被放弃。在GMA 4500系列GPU上使用VA-API与此驱动程序能够帮助 CPU 分载(offload),但可能无法实现像非硬件加速那样平滑的播放。使用 mplayer 进行的测试表明,使用 vaapi 播放 H.264编码的1080p 视频可以将 CPU 负载减半(与 XV overlay相比) ,但是播放非常卡顿,而720p 播放效果相当不错 [20]。这与其他人的经历相印证 [21]。在 BIOS 中将预先分配的视频内存大小设置得更高,可以获得更好的硬件解码播放效果。这样做了之后即使是1080p h264视频也可以流畅播放[22]。同时使用 mpv-gitAURffmpeg-gitAURlibva-intel-driver-g45-h264AUR 也可以流畅播放(1080p/720p)视频。通过 MPV 和 Firefox 插件“发送到 MPV 播放器”[23] ,可以观看硬件加速的 YouTube 视频。

旧 OpenGL 驱动 (i965)

在Mesa 20.0中,新的 OpenGL 驱动程序 Iris 被提升为八代以上 GPU 的默认驱动程序。某些应用程序使用它运行得更快。在启动任何OpenGL应用程序之前,您可以通过设置 MESA_LOADER_DRIVER_OVERRIDE=i965 环境变量来禁用它并恢复使用旧的 i965 驱动程序。此设置不会影响 Vulkan应用程序。

Note: 在此 报告有关 Iris 驱动程序的错误和倒退。

覆写报告的 OpenGL 版本

MESA_GL_VERSION_OVERRIDE 环境变量 可以为任何应用程序覆写报告的 OpenGL 版本。比如,设置 MESA_GL_VERSION_OVERRIDE=4.5 环境变量将会把 OpenGL 版本报告为 4.5.

Note: 您可以使用此变量报告任何已知的 OpenGL 版本,即使 GPU 不支持它。一些应用程序可能不再崩溃,而一些可能反而开始崩溃。所以您可能不希望全局设置这个变量。

监控

Merge-arrows-2.pngThis article or section is a candidate for merging with Hardware video acceleration#Verification.Merge-arrows-2.png

Notes: This overlaps the content at the previously linked page and would probably be a better fit in a generic page instead of this one dedicated to Intel GPUs. Otherwise, Hardware video acceleration#Verification should be modified to link to each dedicated page instead of duplicating content. (Discuss in Talk:Intel graphics (简体中文))
  • intel_gpu_top — 适用于 Intel GPU 的类似 top 命令的任务监视器。 (需要 root 权限)
https://gitlab.freedesktop.org/drm/igt-gpu-tools || intel-gpu-tools
  • nvtop — 适用于 AMD、Intel 和 NVIDIA 的 GPU 进程监视器(目前对 Intel GPU 仅有非常基础的支持)
https://github.com/Syllo/nvtop || nvtop

设置亮度和伽玛值

参见 Backlight.

故障排除

画面撕裂

SNA 加速方法在一些机器上引起撕裂。要解决这个问题,请在驱动程序中启用 TearFree 选项,方法是在配置文件中添加以下内容:

/etc/X11/xorg.conf.d/20-intel.conf
Section "Device"
  Identifier "Intel Graphics"
  Driver "intel"
  Option "TearFree" "true"
EndSection

参见 原始错误报告 以获得更多信息。

Note:
  • SwapbuffersWaitfalse 时,该选项可能不工作
  • 此选项可能会显著增加内存分配并降低性能。[24]
  • 对于对vsync定时非常挑剔的应用程序来说,这个选项是有问题的,比如 Super Meat Boy.
  • 此选项不适用于UXA加速方法,仅适用于SNA。
  • 对于 Intel UHD 620 或 630 显卡,您需要添加 Option "TripleBuffer" "true" 选项才能使 TearFree 工作。

禁用垂直同步 (VSYNC)

适用于以下情景:

  • 由于 GPU 的原因,Chomium/Chrome 有滞后和性能低下的问题,而在使用 --disable-gpu 选项启动时能流畅运行。
  • glxgears 测试未显示预期性能

Intel 驱动程序使用三重缓冲进行垂直同步;这允许充分的性能释放并避免画面撕裂。若要关闭垂直同步(例如用于基准测试),请在主目录中使用如下 .drirc 文件:

~/.drirc
<device screen="0" driver="dri2">
	<application name="Default">
		<option name="vblank_mode" value="0"/>
	</application>
</device>
Note: 不要使用 driconfAUR 来创建此文件。它有问题,会设置错误的驱动程序。

DRI3 问题

DRI3xf86-video-intel 中的默认 DRI 版本。在某些系统上,这可能会导致这样的问题。要切换回 DRI2,请在配置文件中添加以下行:

Option "DRI" "2"

对于 modesetting 驱动程序,这种禁用 DRI3 的方法不起作用。所以我们可以设置环境变量 LIBGL_DRI3_DISABLE=1

GTK应用程序中的字体和屏显损坏(挂起/恢复后缺少字形)

如果您在 GTK 应用程序中遇到缺少字形的问题,以下解决方法可能会有所帮助。编辑 /etc/environment 并添加以下行:

/etc/environment
COGL_ATLAS_DEFAULT_BLIT_MODE=framebuffer

另请参考 FreeDesktop bug 88584.

启动过程中加载模块时显示空白屏幕

如果您使用 KMS 晚启动,然后屏幕在加载模块(Loading modules)时显示为空白,您可以试着把 i915intel_agp 添加到 initramfs 中。请参考 内核级显示模式设置#KMS_早启动

另外,附加以下内核参数似乎也有效:

video=SVIDEO-1:d

如果您需要输出到VGA,请尝试以下操作:

video=VGA-1:1280x800

X 窗口系统在使用 Intel 驱动程序时冻结或崩溃

一些关于 X 窗口系统崩溃、冻结或 GPU 挂起的问题,可以通过设置 NoAccel 选项禁用 GPU 来解决。请在配置文件中添加以下内容:

  Option "NoAccel" "True"

或者,尝试通过设置 DRI 选项来只禁用 3D 加速:

  Option "DRI" "False"

添加未检测到的分辨率

这个问题在 Xrandr 页面 中有详细的说明。

无法调节背光

如果您的设备从挂起中恢复后,调整屏幕背光亮度的热键失效,请根据 Backlight 一文检查您的配置。

如果问题仍然存在,请尝试如下任一内核参数:

acpi_osi=Linux
acpi_osi="!Windows 2012"
acpi_osi=

还要确保您没有使用 fastboot 模式 (i915.fastboot 内核参数) ,因为它会破坏背光控制

Chromium 和 Firefox 损坏或无响应

如果您在 Chromium 和/或 Firefox 中遇到了损坏、无响应、性能滞后或缓慢的问题,一些可能的解决方案包括:

4.0+ 版本的内核会在使用 Broadwell 或 Core-M 芯片时崩溃

X/Wayland 加载后几秒钟,机器将冻结,journalctl 将记录内核崩溃并提到 Intel 显卡:

Jun 16 17:54:03 hostname kernel: BUG: unable to handle kernel NULL pointer dereference at           (null)
Jun 16 17:54:03 hostname kernel: IP: [<          (null)>]           (null)
...
Jun 16 17:54:03 hostname kernel: CPU: 0 PID: 733 Comm: gnome-shell Tainted: G     U     O    4.0.5-1-ARCH #1
...
Jun 16 17:54:03 hostname kernel: Call Trace:
Jun 16 17:54:03 hostname kernel:  [<ffffffffa055cc27>] ? i915_gem_object_sync+0xe7/0x190 [i915]
Jun 16 17:54:03 hostname kernel:  [<ffffffffa0579634>] intel_execlists_submission+0x294/0x4c0 [i915]
Jun 16 17:54:03 hostname kernel:  [<ffffffffa05539fc>] i915_gem_do_execbuffer.isra.12+0xabc/0x1230 [i915]
Jun 16 17:54:03 hostname kernel:  [<ffffffffa055d349>] ? i915_gem_object_set_to_cpu_domain+0xa9/0x1f0 [i915]
Jun 16 17:54:03 hostname kernel:  [<ffffffff811ba2ae>] ? __kmalloc+0x2e/0x2a0
Jun 16 17:54:03 hostname kernel:  [<ffffffffa0555471>] i915_gem_execbuffer2+0x141/0x2b0 [i915]
Jun 16 17:54:03 hostname kernel:  [<ffffffffa042fcab>] drm_ioctl+0x1db/0x640 [drm]
Jun 16 17:54:03 hostname kernel:  [<ffffffffa0555330>] ? i915_gem_execbuffer+0x450/0x450 [i915]
Jun 16 17:54:03 hostname kernel:  [<ffffffff8122339b>] ? eventfd_ctx_read+0x16b/0x200
Jun 16 17:54:03 hostname kernel:  [<ffffffff811ebc36>] do_vfs_ioctl+0x2c6/0x4d0
Jun 16 17:54:03 hostname kernel:  [<ffffffff811f6452>] ? __fget+0x72/0xb0
Jun 16 17:54:03 hostname kernel:  [<ffffffff811ebec1>] SyS_ioctl+0x81/0xa0
Jun 16 17:54:03 hostname kernel:  [<ffffffff8157a589>] system_call_fastpath+0x12/0x17
Jun 16 17:54:03 hostname kernel: Code:  Bad RIP value.
Jun 16 17:54:03 hostname kernel: RIP  [<          (null)>]           (null)

这可以通过禁用 execlist 支持来解决,该支持在 4.0 内核中被设为为默认值。添加以下内核参数

i915.enable_execlists=0

目前已知该问题直到 4.0.5 内核上仍存在。

Windows 客户机运行迟缓

VirtualBox 中 Windows 客户机的视频输出有时会挂起,直到主机强制屏幕更新(例如移动鼠标光标)。删除 enable_fbc=1 选项可以解决这个问题。

屏幕闪烁

面板自刷新 (PSR), 一种 Intel iGPU (核显)使用的节能技术已知在某些情况下会导致闪烁 FS#49628 FS#49371 FS#50605. 临时的解决办法是通过设置 i915.enable_psr=0 内核参数来禁用该功能。

在 i915 驱动上使用 OpenGL 2.1

正如这篇文章所说,把 mesa 从 13.x 版本更新到 17 可能会导致第三代 Intel GPU (如GMA3100,参阅这里)上的 OpenGL 2.1 支持失效,并使其降级到 OpenGL 1.4。然而您可以通过配置 /etc/drirc~/.drirc 文件中的选项来手动恢复它:

/etc/drirc
<driconf>
...
    <device driver="i915">
        <application name="Default">
            <option name="stub_occlusion_query" value="true" />
            <option name="fragment_shader" value="true" />
        </application>
    </device>
...
</driconf>
Note: 作出该让步的原因是 Chromium 和其他应用程序的糟糕体验。如果有需要,您可以参考 此文 来对 drirc 文件作特定于应用程序的修改,比如专门针对 Chromium 禁用 gl2.1。

KMS 问题:终端只在很小的一块区域中显示

其中一个低分辨率视频端口会在引导时启用,这将导致终端仅能使用屏幕的一小块区域。 要修复这个问题,在引导加载程序的内核命令行参数中,使用 i915 模块参数 video=SVIDEO-1:d 来明确禁用该端口。有关详细信息,请参阅内核参数

如果这不起作用,请尝试禁用 TV1 或 VGA1,而不是 SVIDEO-1。视频端口名称可以用 xrandr 列出。

Haswell CPU 使用 HDMI 输出时没有声音

根据一个 Linux 内核问题,在设置 intel_iommu=on 参数时声音不会通过 HDMI 端口输出。要修复该问题,使用如下内核参数

intel_iommu=on,igfx_off

或者也可以禁用 IOMMU:

intel_iommu=off

低功耗 Intel CPU 会崩溃或冻结

由于低功耗 Intel CPU 上电源管理功能的问题,低功耗 Intel 处理器和/或笔记本电脑处理器有随机挂起或崩溃的倾向。如果发生此类崩溃,您将看不到任何报告此问题的日志。添加以下内核参数可能有助于解决问题。

Note: 不建议同时使用以下三个内核参数
intel_idle.max_cstate=1 i915.enable_dc=0 ahci.mobile_lpm_policy=1

ahci.mobile_lpm_policy=1 能修复部分联想笔记本电脑和一些宏碁笔记本电脑因 SATA 控制器电源管理问题而出现的挂起故障。该解决方法严格来说与 Intel 显卡无关,但它确实解决了相关问题。添加此内核参数可以将链路电源管理(LPM)从固件默认值修改为最大性能,并且还可以解决当您在某些联想机器上更改显示器亮度时出现的挂起问题。但这么做在现代超级本上会增加 1 至 1.5 W 的闲置功耗。有关更多信息,特别是有关其他状态的信息,请参阅 Linux内核邮件列表Red Hat 文档

i915.enable_dc=0 会禁用GPU电源管理。这确实解决了某些 Intel 系统上的随机挂起问题,特别是 Goldmount 和 Kaby Lake Refresh 芯片。但使用此参数会提高笔记本电脑的功耗并缩短电池寿命。

intel_idle.max_cstate=1 会处理器的睡眠状态,它防止处理器进入深度睡眠状态。这绝对不是理想的做法,而且确实会导致更高的功率使用和更低的电池寿命。然而,它确实解决了许多 Intel 系统上的随机挂起问题。如果您使用的是 Intel Baytrail 或 Kaby Lake Refresh 芯片,请使用此参数。Intel Baytrail 芯片由于一个硬件缺陷,在没有这个内核参数的情况下会随机挂起[25]。有关 max_cstate 参数的更多信息,请参见内核文档以及 GitHub 上关于 cstates 的一篇文章。

如果您尝试通过一次性添加 intel_idle.max_cstate=1 i915.enable_dc=0 ahci.mobile_lpm_policy=1 等三个参数来解决频繁挂起的问题,然后成功了,那您应该用排除法找出真正解决问题的那个参数。因为如果实际的问题与 SATA 电源管理有关,并且 ahci.mobile_lpm_policy=1 参数解决了这个问题,那么禁用 cstate 和显示电源管理是不可取的。

参考 Linux Reviews 网站以获取更多信息。

添加对 165Hz 显示器的支持

Merge-arrows-2.pngThis article or section is a candidate for merging with 内核级显示模式设置#强制设置显示模式与_EDID.Merge-arrows-2.png

Notes: 这种技术似乎并不特定于 i915。在合并之前,请验证安装脚本是必需的,并且没有更简单的方法来将 EDID BIN 添加到 initramfs。 (Discuss in Talk:Intel graphics (简体中文))

对于某些 165Hz 显示器,xrandr 可能不会显示165Hz选项,且 #添加未检测到的分辨率 中的方法并不能解决这一问题。在这种情况下,请参见 StackExchange 上的问答 i915-driver-stuck-at-40hz-on-165hz-screen

Note: 除了创建 /etc/initramfs-tools/hooks/edid 文件之外,应该通过以下方式创建 mkinitcpio 钩子:
/etc/initcpio/install/edid
#!/bin/bash

build() {
    add_file /lib/firmware/edid/edid.bin
}

help() {
    cat <<HELPEOF
This hook add support for 165Hz
HELPEOF
}

然后在 /etc/mkinitcpio.conf 文件的 HOOKS 中添加 edid ,就像下面这样

/etc/mkinitcpio.conf
HOOKS=(... fsck edid)

最后 重新生成initramfs.

Alder Lake-P 处理器从睡眠/挂起中恢复时冻结

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: What does "recent firmware" mean? See Help:Style#Language register. (Discuss in Talk:Intel graphics (简体中文))
Note: 截至2022年9月25日,这个问题已经通过 fwupd 最近的固件更新得到修复。对于其他没有 BIOS 补丁的用户来说,可能会有一个即将出现的内核补丁

来自不同供应商的 Alder Lake-P 第 12 代移动处理器笔记本电脑的用户在从暂停状态中醒来后,遇到了了冻结和黑屏。这是因为许多笔记本电脑供应商提供了错误的VBT(视频BIOS表),错误地描述了连接到 iGPU 的实际端口。考虑到大多数供应商不会为运行正常的 Windows 操作系统的笔记本电脑发布 BIOS 更新,Linux 用户只能在内核端解决这个问题。您可以通过修补和重建内核作为临时措施来缓解此问题:

drivers/gpu/drm/i915/display/intel_display.c.patch
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -8835,7 +8835,7 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
                intel_ddi_init(dev_priv, PORT_TC1);
        } else if (IS_ALDERLAKE_P(dev_priv)) {
                intel_ddi_init(dev_priv, PORT_A);
-               intel_ddi_init(dev_priv, PORT_B);
+               // intel_ddi_init(dev_priv, PORT_B);
                intel_ddi_init(dev_priv, PORT_TC1);
                intel_ddi_init(dev_priv, PORT_TC2);
                intel_ddi_init(dev_priv, PORT_TC3);

如 freedesktop 问题 5531 6401 中所述,这些问题已经几个月没有解决。

在 Alder Lake/UHD 770 上的 Plasma 桌面中选择 Qt 元素的问题

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: Is this limited to the UHD770 alone? Is this limited to the Plasma Desktop or does it also happen on every Qt application regardless of the environment? Should we not recommend uninstalling xf86-video-intel instead? Is this bug reported somewhere? (Discuss in Talk:Intel graphics (简体中文))

使用较新的 12 代 IGP 的用户可能会遇到 Plasma 桌面几乎不能使用的问题。该问题似乎与使用硬件加速的项目有关。运行 glxgear 将报告较高的帧率,但是动画将不会更新。一个可能的解决方案是更改 X 窗口系统下的驱动程序。

/etc/X11/xorg.conf.d/20-intel.conf
Section "Device"
  Identifier "Intel Graphics"
  Driver "modesetting"
EndSection

Arc GPU 内核支持

由于 6.0 及以下把呢不能的内核尚未正式支持 Arc 系列 GPU,因此需要强制加载驱动程序。

在您的引导加载程序中使用如下内核参数

i915.force_probe=pci_id

其中 PCI ID 可以通过执行如下命令获得:

$ lspci -nn | grep VGA | sed -n "s/^.\+\[8086:\([[:alnum:]]\{4\}\)\].\+$/\1/p"

您还需要像下面这样在 xorg.conf 中设置您的驱动程序:

/etc/X11/xorg.conf.d/20-intel.conf
Section "Device"
  Identifier "Intel Graphics"
  Driver "modesetting"
EndSection

"fbdev" 驱动程序也能工作。

没有完整的驱动程序支持,3D 渲染不可用。

参阅