Add opencl to amd
This commit is contained in:
parent
1273cd7361
commit
f9ddae6478
1 changed files with 87 additions and 78 deletions
|
|
@ -5,97 +5,106 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
options.mods = {
|
options.mods.gpu = {
|
||||||
gpu = {
|
nvidia.enable = lib.mkOption {
|
||||||
nvidia.enable = lib.mkOption {
|
default = false;
|
||||||
default = false;
|
example = true;
|
||||||
example = true;
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Enables nvidia support.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
amdgpu.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Enables amdgpu support.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
intelgpu.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Enables intel support.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
vapi = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = ''
|
description = ''
|
||||||
Enables nvidia support.
|
Enables vapi.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
amdgpu.enable = lib.mkOption {
|
rocm.enable = lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
example = true;
|
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
description = ''
|
|
||||||
Enables amdgpu support.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
intelgpu.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
example = true;
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
description = ''
|
||||||
Enables intel support.
|
Enables rocm support.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
vapi = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Enables vapi.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
rocm.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
example = true;
|
|
||||||
description = ''
|
|
||||||
Enables rocm support.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config =
|
config = lib.optionalAttrs (options ? boot) {
|
||||||
(lib.optionalAttrs (options ? hardware.graphics) {
|
boot = lib.mkIf config.mods.gpu.amdgpu.enable {
|
||||||
boot = lib.mkIf config.mods.amdgpu.enable {
|
kernelModules = ["kvm-amd"];
|
||||||
kernelModules = ["kvm-amd"];
|
initrd.kernelModules = ["amdgpu"];
|
||||||
initrd.kernelModules = ["amdgpu"];
|
kernelParams = ["amdgpu.ppfeaturemask=0xffffffff"];
|
||||||
kernelParams = ["amdgpu.ppfeaturemask=0xffffffff"];
|
};
|
||||||
};
|
services.xserver.videoDrivers =
|
||||||
|
if config.mods.gpu.amdgpu.enable
|
||||||
|
then ["amdgpu"]
|
||||||
|
else if config.mods.gpu.nvidia.enable
|
||||||
|
then ["nvidia"]
|
||||||
|
else [];
|
||||||
|
|
||||||
hardware = {
|
environment.variables =
|
||||||
graphics = let
|
if (config.mods.gpu.amdgpu.enable && config.mods.gpu.vapi.rocm.enable)
|
||||||
amdPackages = [
|
then {
|
||||||
(lib.mkIf (config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt)
|
RUSTICL_ENABLE = "radeonsi";
|
||||||
(lib.mkIf (
|
|
||||||
config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable
|
|
||||||
)
|
|
||||||
pkgs.intel-media-driver)
|
|
||||||
(lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl)
|
|
||||||
(lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau)
|
|
||||||
(lib.mkIf (config.mods.gpu.intelgpu || config.mods.gpu.amdgpu) pkgs.mesa.drivers)
|
|
||||||
];
|
|
||||||
rocmPackages = [
|
|
||||||
pkgs.rocmPackages.clr.icd
|
|
||||||
pkgs.rocm-opencl-runtime
|
|
||||||
];
|
|
||||||
in {
|
|
||||||
enable = true;
|
|
||||||
enable32Bit = lib.mkDefault true;
|
|
||||||
extraPackages =
|
|
||||||
amdPackages
|
|
||||||
++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu) rocmPackages);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
// lib.optionalAttrs (options ? hardware.graphics) (
|
|
||||||
lib.mkIf config.mods.gpu.nvidia.enable {
|
|
||||||
hardware.nvidia = {
|
|
||||||
modesetting.enable = true;
|
|
||||||
# powerManagement.enable = false;
|
|
||||||
# powerManagement.finegrained = true;
|
|
||||||
open = true;
|
|
||||||
nvidiaSettings = true;
|
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
|
||||||
};
|
|
||||||
services.xserver.videoDrivers = ["nvidia"];
|
|
||||||
}
|
}
|
||||||
);
|
else {};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
nvidia = lib.mkIf config.mods.gpu.nvidia.enable {
|
||||||
|
modesetting.enable = true;
|
||||||
|
open = true;
|
||||||
|
nvidiaSettings = true;
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
||||||
|
};
|
||||||
|
graphics = let
|
||||||
|
amdPackages = [
|
||||||
|
(lib.mkIf (config.mods.gpu.intelgpu.enable && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt)
|
||||||
|
(lib.mkIf (
|
||||||
|
config.mods.gpu.intelgpu.enable && lib.mkIf config.mods.gpu.vapi.enable
|
||||||
|
)
|
||||||
|
pkgs.intel-media-driver)
|
||||||
|
(lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl)
|
||||||
|
(lib.mkIf config.mods.gpu.vapi.enable pkgs.libva)
|
||||||
|
(lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau)
|
||||||
|
(lib.mkIf (config.mods.gpu.intelgpu.enable || config.mods.gpu.amdgpu.enable) pkgs.mesa.drivers)
|
||||||
|
];
|
||||||
|
rocmPackages = [
|
||||||
|
pkgs.rocmPackages.clr.icd
|
||||||
|
pkgs.mesa
|
||||||
|
pkgs.mesa.opencl
|
||||||
|
pkgs.vulkan-loader
|
||||||
|
pkgs.vulkan-validation-layers
|
||||||
|
pkgs.vulkan-tools
|
||||||
|
pkgs.clinfo
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = lib.mkDefault true;
|
||||||
|
extraPackages =
|
||||||
|
amdPackages
|
||||||
|
++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu.enable) rocmPackages);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue