2024-06-12 20:45:01 +00:00
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
|
|
|
|
let
|
|
|
|
cfg = config.hardware.amdgpu.amdvlk;
|
|
|
|
in {
|
|
|
|
options.hardware.amdgpu.amdvlk = {
|
|
|
|
enable = lib.mkEnableOption "AMDVLK Vulkan driver";
|
|
|
|
|
|
|
|
package = lib.mkPackageOption pkgs "amdvlk" { };
|
|
|
|
|
|
|
|
supportExperimental.enable = lib.mkEnableOption "Experimental features support";
|
|
|
|
|
|
|
|
support32Bit.enable = lib.mkEnableOption "32-bit driver support";
|
|
|
|
support32Bit.package = lib.mkPackageOption pkgs [ "driversi686Linux" "amdvlk" ] { };
|
|
|
|
|
|
|
|
settings = lib.mkOption {
|
|
|
|
type = with lib.types; attrsOf (either str int);
|
|
|
|
default = { };
|
|
|
|
example = {
|
|
|
|
AllowVkPipelineCachingToDisk = 1;
|
|
|
|
ShaderCacheMode = 1;
|
|
|
|
IFH = 0;
|
|
|
|
EnableVmAlwaysValid = 1;
|
|
|
|
IdleAfterSubmitGpuMask = 1;
|
|
|
|
};
|
|
|
|
description = ''
|
|
|
|
Runtime settings for AMDVLK to be configured {file}`/etc/amd/amdVulkanSettings.cfg`.
|
|
|
|
See [AMDVLK GitHub page](https://github.com/GPUOpen-Drivers/AMDVLK?tab=readme-ov-file#runtime-settings).
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
config = lib.mkIf cfg.enable {
|
2024-06-16 10:50:18 +00:00
|
|
|
hardware.graphics = {
|
2024-06-12 20:45:01 +00:00
|
|
|
enable = true;
|
|
|
|
extraPackages = [ cfg.package ];
|
|
|
|
extraPackages32 = [ cfg.support32Bit.package ];
|
|
|
|
};
|
|
|
|
|
|
|
|
services.xserver.videoDrivers = [ "amdgpu" ];
|
|
|
|
|
|
|
|
environment.sessionVariables = lib.mkIf cfg.supportExperimental.enable {
|
|
|
|
AMDVLK_ENABLE_DEVELOPING_EXT = "all";
|
|
|
|
};
|
|
|
|
|
|
|
|
environment.etc = lib.mkIf (cfg.settings != { }) {
|
|
|
|
"amd/amdVulkanSettings.cfg".text = lib.concatStrings
|
|
|
|
(lib.mapAttrsToList
|
|
|
|
(n: v: ''
|
|
|
|
${n},${builtins.toString v}
|
|
|
|
'')
|
|
|
|
cfg.settings);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
meta = {
|
|
|
|
maintainers = with lib.maintainers; [ johnrtitor ];
|
|
|
|
};
|
|
|
|
}
|