[Hardware/AMD] Add performance tuning + rocm-smi

Enable amdgpu support for two new class of GPUs
Enable freesync
Use new GPU scheduler if unsafeOptimizations is enabled
Add amdvlk for vulkan support
Allow to use proprietary AMD drivers if the user so wishes
This commit is contained in:
Antoine Viallon 2022-06-09 01:14:55 +02:00
parent 0da55b8288
commit 9cbbc8ec6f
Signed by: aviallon
GPG key ID: 186FC35EDEB25716

View file

@ -2,27 +2,48 @@
with lib; with lib;
let let
cfg = config.aviallon.hardware.amd; cfg = config.aviallon.hardware.amd;
generalCfg = config.aviallon.general;
in in
{ {
options.aviallon.hardware.amd = { options.aviallon.hardware.amd = {
enable = mkEnableOption "AMD gpus"; enable = mkEnableOption "AMD gpus";
useProprietary = mkEnableOption "Use proprietary AMDGPU Pro";
}; };
config = mkIf (cfg.enable) { config = mkIf (cfg.enable) {
boot.initrd.kernelModules = [ "amdgpu" ]; boot.initrd.kernelModules = [ "amdgpu" ];
aviallon.boot.cmdline = {} aviallon.boot.cmdline = {
# for Southern Islands (SI ie. GCN 1) cards # for Southern Islands (SI ie. GCN 1) cards
// { "radeon.si_support" = 0; "radeon.si_support" = 0;
"amdgpu.si_support" = 1; } "amdgpu.si_support" = 1;
# for Sea Islands (CIK ie. GCN 2) cards # for Sea Islands (CIK ie. GCN 2) cards
// { "radeon.cik_support" = 0; "radeon.cik_support" = 0;
"amdgpu.cik_support" = 1; } "amdgpu.cik_support" = 1;
; "amdgpu.freesync_video" = 1;
"amdgpu.mes" = mkIf generalCfg.unsafeOptimizations 1;
};
hardware.opengl.extraPackages = with pkgs; [ environment.systemPackages = with pkgs; [
rocm-smi
];
services.xserver.videoDrivers = []
++ optional cfg.useProprietary "amdgpu-pro"
++ [
"amdgpu"
"radeon"
];
hardware.opengl.extraPackages = with pkgs; mkIf (!cfg.useProprietary) [
rocm-opencl-icd rocm-opencl-icd
rocm-opencl-runtime rocm-opencl-runtime
amdvlk
];
hardware.opengl.extraPackages32 = with pkgs.driversi686Linux; mkIf (!cfg.useProprietary) [
amdvlk
mesa
]; ];
}; };
} }