[Dica/Tuto] Ativar configurações do modulo intel i915 que vem desativados por padrão ( placas intel) e Desativar sincronização vertical

Oi pessoal,
Apesar de já acessar as páginas algumas vezes, nunca li tudo. Então decidi ler e percebi que alguma opções vem desativadas e podem melhorar o consumo e o desempenho da placa intel.

Informaçòes: Recomendo ler tudo.
intel Gentoo
List of Intel graphics processing units
Intel graphics Arch

Suporte de recursos

Generation Chipset OpenGL OpenGL ES OpenCL VAAPI Vulkan VIDEO_CARDS
Gen 1 810, 815 No No No No No unsupported
Gen 2 i830M, 845G, 855GM, 865G 1.3 No No No No intel i915
Gen 3 915G/GM, 945G/GM, G/Q33, Q35, Atom D4xx/D5xx/N4xx/N5xx 1.4 No No No No intel i915
Gen 4 965G/GM/Q, G35, G41, G/Q43, G/GM/Q45 2.1 2.0 No G/GM45: MPEG2 only No intel i965
Gen 5 Nehalem (Ironlake) 2.1 2.0 No Yes No intel i965
Gen 6 Sandy Bridge 3.3 3.0 No Yes No intel i965
Gen 7 Ivy Bridge, Valley View[table 1] 3.3 3.0 1.1[table 2] Yes Partial intel i965
Gen 7.5 Haswell 4.5 3.1 1.1[table 2] Yes Partial intel i965
Gen 8 Broadwell, Cherryview[table 3] 4.5 3.1 1.1[table 2] Yes Yes intel i965
Gen 9 Skylake, Broxton[table 4] 4.5 3.2 1.1[table 2] Yes Yes intel i965
Gen 9.5 Kaby Lake, Coffee Lake 4.5 3.2 2.1[table 2] Yes Yes intel i965

Estas opções vem desativadas por padrão, pois não tem suporte para placas antigas.

Para saber qual o chipset da sua placa use o comando:
glxinfo | grep -i "OpenGL renderer string:"

Aqui no meu caso é a Haswell.
glxinfo | grep -i "OpenGL renderer string:"
OpenGL renderer string: Mesa DRI Intel(R) **Haswell** Desktop

Para saber todas as opções disponíveis:
~ $ modinfo i915 | grep -i parm

parm:           modeset:Use kernel modesetting [KMS] (0=disable, 1=on, -1=force vga console preference [default]) (int)
parm:           enable_dc:Enable power-saving display C-states. (-1=auto [default]; 0=disable; 1=up to DC5; 2=up to DC6) (int)
parm:           enable_fbc:Enable frame buffer compression for power savings (default: -1 (use per-chip default)) (int)
parm:           lvds_channel_mode:Specify LVDS channel mode (0=probe BIOS [default], 1=single-channel, 2=dual-channel) (int)
parm:           panel_use_ssc:Use Spread Spectrum Clock with panels [LVDS/eDP] (default: auto from VBT) (int)
parm:           vbt_sdvo_panel_type:Override/Ignore selection of SDVO panel mode in the VBT (-2=ignore, -1=auto [default], index in VBT BIOS table) (int)
parm:           reset:Attempt GPU resets (0=disabled, 1=full gpu reset, 2=engine reset [default]) (int)
parm:           vbt_firmware:Load VBT from specified file under /lib/firmware (charp)
parm:           error_capture:Record the GPU state following a hang. This information in /sys/class/drm/card<N>/error is vital for triaging and debugging hangs. (bool)
parm:           enable_hangcheck:Periodically check GPU activity for detecting hangs. WARNING: Disabling this can cause system wide hangs. (default: true) (bool)
parm:           enable_psr:Enable PSR (0=disabled, 1=enabled) Default: -1 (use per-chip default) (int)
parm:           alpha_support:Enable alpha quality driver support for latest hardware. See also CONFIG_DRM_I915_ALPHA_SUPPORT. (bool)
parm:           disable_power_well:Disable display power wells when possible (-1=auto [default], 0=power wells always on, 1=power wells disabled when possible) (int)
parm:           enable_ips:Enable IPS (default: true) (int)
parm:           fastboot:Try to skip unnecessary mode sets at boot time (0=disabled, 1=enabled) Default: -1 (use per-chip default) (int)
parm:           prefault_disable:Disable page prefaulting for pread/pwrite/reloc (default:false). For developers only. (bool)
parm:           load_detect_test:Force-enable the VGA load detect code for testing (default:false). For developers only. (bool)
parm:           force_reset_modeset_test:Force a modeset during gpu reset for testing (default:false). For developers only. (bool)
parm:           invert_brightness:Invert backlight brightness (-1 force normal, 0 machine defaults, 1 force inversion), please report PCI device ID, subsystem vendor and subsystem device ID to dri-devel@lists.freedesktop.org, if your machine needs it. It will then be included in an upcoming module version. (int)
parm:           disable_display:Disable display (default: false) (bool)
parm:           mmio_debug:Enable the MMIO debug code for the first N failures (default: off). This may negatively affect performance. (int)
parm:           verbose_state_checks:Enable verbose logs (ie. WARN_ON()) in case of unexpected hw state conditions. (bool)
parm:           nuclear_pageflip:Force enable atomic functionality on platforms that don't have full support yet. (bool)
parm:           edp_vswing:Ignore/Override vswing pre-emph table selection from VBT (0=use value from vbt [default], 1=low power swing(200mV),2=default swing(400mV)) (int)
parm:           enable_guc:Enable GuC load for GuC submission and/or HuC load. Required functionality can be selected using bitmask values. (-1=auto, 0=disable [default], 1=GuC submission, 2=HuC load) (int)
parm:           guc_log_level:GuC firmware logging level. Requires GuC to be loaded. (-1=auto [default], 0=disable, 1..4=enable with verbosity min..max) (int)
parm:           guc_firmware_path:GuC firmware path to use instead of the default one (charp)
parm:           huc_firmware_path:HuC firmware path to use instead of the default one (charp)
parm:           dmc_firmware_path:DMC firmware path to use instead of the default one (charp)
parm:           enable_dp_mst:Enable multi-stream transport (MST) for new DisplayPort sinks. (default: true) (bool)
parm:           enable_dpcd_backlight:Enable support for DPCD backlight control (default:false) (bool)
parm:           enable_gvt:Enable support for Intel GVT-g graphics virtualization host support(default:false) (bool)

Para Arch e etc… este módulo tem que colocar em MODULES no arquivo /etc/mkinitcpio.conf
Debian e etc… já vem habilitado por padrào.

Ativar carregamento de firmware GuC / HuC

Para Skylake e processadores mais recentes, alguns recursos de vídeo (por exemplo, controle de taxa CBR no modo de codificação de baixa potência SKL) podem exigir o uso de um firmware atualizado da GPU, que atualmente (a partir da versão 4.16) não está ativado por padrão. A ativação do carregamento do firmware GuC / HuC pode causar problemas em alguns sistemas; desative-o se ocorrer congelamento (por exemplo, após sair da hibernação).

Crie o arquivo
/etc/modprobe.d/i915.conf
e adicione
options i915 enable_guc=2

Para saber as configurações
parm: enable_guc:Enable GuC load for GuC submission and/or HuC load. Required functionality can be selected using bitmask values. (-1=auto, 0=disable [default], 1=GuC submission, 2=HuC load)

Para verificar use o dmesg

$ dmesg | grep -i -Ei 'GuC|huc'
[drm] HuC: Loaded firmware i915/kbl_huc_ver02_00_1810.bin (version 2.0)
[drm] GuC: Loaded firmware i915/kbl_guc_ver9_39.bin (version 9.39)
i915 0000:00:02.0: GuC firmware version 9.39
i915 0000:00:02.0: GuC submission enabled
i915 0000:00:02.0: HuC enabled

A solução é desativar a compactação do framebuffer, o que aumentará imperceptivelmente o consumo de energia (em torno de 0,06 W). Para desabilitá-lo, adicione i915.enable_fbc = 0 aos parâmetros de linha do kernel.

Compactação do Framebuffer (enable_fbc)

O uso da compactação de framebuffer (FBC) pode reduzir o consumo de energia e reduzir a largura de banda de memória necessária para a atualização da tela.

Crie o arquivo
/etc/modprobe.d/i915.conf
E adicione
options i915 enable_fbc=1

Nota: A compactação do framebuffer pode não ser confiável ou indisponível nas gerações da GPU Intel antes do Sandy Bridge (geração 6). Isso resulta em mensagens registradas no diário do sistema semelhantes a esta:

kernel: drm: not enough stolen space for compressed buffer, disabling.

A ativação da compactação do frame buffer em CPUs anteriores ao Sandy Bridge resulta em inúmeras mensagens de erro:

$ dmesg | grep -i drm
[ 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

Fastboot

O objetivo do Intel Fastboot é preservar o framebuffer conforme configurado pelo BIOS ou pelo carregador de inicialização para evitar oscilações até o Xorg ser iniciado.

Crie o arquivo
/etc/modprobe.d/i915.conf
E adicione
options i915 fastboot=1

Aviso: este parâmetro não está ativado por padrão e pode causar problemas em alguns sistemas mais antigos (anteriores ao Skylake). Veja aqui Intel-Fastboot-Default-2019-. Aqui o meu apesar de ser mais antigo, habilitei esta função e não tive problemas até agora.

Desativar sincronização vertical

Útil quando:

  • O Chomium / Chrome tem atrasos e desempenho lento devido à GPU e funciona sem problemas com o switch --disable-gpu
  • O teste glxgears não mostra o desempenho desejado

O driver intel usa o buffer triplo para sincronização vertical, permitindo desempenho total e evitando rasgos. Para desativar a incronização vertical (por exemplo, para fazer comparações), use este .drirc no diretório home:

Crie o arquivo
~/.drirc

E adicione
<device screen="0" driver="dri2">
<application name="Default">
<option name="vblank_mode" value="0"/>
</application>
</device>

Nota: Não use driconf para criar este arquivo. Tem um bug que defini o drive errado. Caso queira usar um programa use o adriconf

4 Curtidas

Tópico muito bom, cara!
A propósito, o meu módulo é o i965 (Kaby Lake). Ao menos de acordo com as informações do GNOME.
O desempenho no Euro Truck Simulator 2 melhorou. No Albion continua a mesma coisa. Acho que mais que isso não vai, só mudando de Intel para NVIDIA.

O meu também, mas no kernel só existe o i915. Ele que gerencia tudo.O valor i965 é do pacote mesa.

Veja aqui

X drivers

Portage uses the VIDEO_CARDS variable, which expands into the USE_EXPAND variable, for enabling support for various graphics cards. Assuming the x11-base/xorg-drivers package has already been installed, setting the VIDEO_CARDS variable in /etc/portage/make.conf will pull in the correct video driver:

FILE /etc/portage/make.conf Gen 1

VIDEO_CARDS=“intel”

FILE /etc/portage/make.conf Gen 2 and Gen 3

VIDEO_CARDS=“intel i915”

FILE /etc/portage/make.conf Gen 4 through Gen 9+

VIDEO_CARDS=“intel i965”

The intel value is for x11-base/xorg-drivers. The i915 and i965 values are for media-libs/mesa.

Aqui para 2D uso Modesetting DDX, mas pelo testes não funcionou direito no seu.
O modesetting usa aceleracão glamor , que a intel chegou a iniciar o suporte e parou.

Não sei se desativando a configuração abaixo melhora o desempenho da placa

parm:           enable_dc:Enable power-saving display C-states. (-1=auto [default]; 0=disable; 1=up to DC5; 2=up to DC6) (int)

Outra coisa: quanto de memória RAM a placa está usando?

Veja aqui um link, talvez tenha diferença.

1 Curtida