mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 17:27:14 +08:00 
			
		
		
		
	common/gpu/intel: add vaapi configuration options
This commit is contained in:
		@@ -22,34 +22,57 @@
 | 
			
		||||
      // {
 | 
			
		||||
        default = true;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    vaapiDriver = lib.mkOption {
 | 
			
		||||
      description = "Intel VAAPI driver to use (use null to use both)";
 | 
			
		||||
      type = lib.types.nullOr (
 | 
			
		||||
        lib.types.enum [
 | 
			
		||||
          "intel-vaapi-driver"
 | 
			
		||||
          "intel-media-driver"
 | 
			
		||||
        ]
 | 
			
		||||
      );
 | 
			
		||||
      default = null; # Use both drivers when we don't know which one to use
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    enableHybridCodec = lib.mkEnableOption "hybrid codec support for Intel GPUs";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config =
 | 
			
		||||
    let
 | 
			
		||||
      cfg = config.hardware.intelgpu;
 | 
			
		||||
 | 
			
		||||
      useIntelVaapiDriver = cfg.vaapiDriver == "intel-vaapi-driver" || cfg.vaapiDriver == null;
 | 
			
		||||
      intel-vaapi-driver = (pkgs.intel-vaapi-driver or pkgs.vaapiIntel).override {
 | 
			
		||||
        enableHybridCodec = cfg.enableHybridCodec;
 | 
			
		||||
      };
 | 
			
		||||
      intel-vaapi-driver-32 = (pkgs.driversi686Linux.intel-vaapi-driver or pkgs.driversi686Linux.vaapiIntel).override {
 | 
			
		||||
        enableHybridCodec = cfg.enableHybridCodec;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      useIntelOcl = useIntelVaapiDriver && (config.hardware.enableAllFirmware or config.nixpkgs.config.allowUnfree or false);
 | 
			
		||||
      intel-ocl = pkgs.intel-ocl;
 | 
			
		||||
 | 
			
		||||
      useIntelMediaDriver = cfg.vaapiDriver == "intel-media-driver" || cfg.vaapiDriver == null;
 | 
			
		||||
      intel-media-driver = pkgs.intel-media-driver;
 | 
			
		||||
      intel-media-driver-32 = pkgs.driversi686Linux.intel-media-driver;
 | 
			
		||||
      intel-compute-runtime = pkgs.intel-compute-runtime;
 | 
			
		||||
      vpl-gpu-rt = pkgs.vpl-gpu-rt or pkgs.onevpl-intel-gpu;
 | 
			
		||||
    in
 | 
			
		||||
    {
 | 
			
		||||
      boot.initrd.kernelModules = lib.optionals cfg.loadInInitrd [ cfg.driver ];
 | 
			
		||||
 | 
			
		||||
      hardware.graphics.extraPackages = with pkgs; [
 | 
			
		||||
        (
 | 
			
		||||
          if (lib.versionOlder (lib.versions.majorMinor lib.version) "23.11") then
 | 
			
		||||
            vaapiIntel
 | 
			
		||||
          else
 | 
			
		||||
            intel-vaapi-driver.override { enableHybridCodec = true; }
 | 
			
		||||
        )
 | 
			
		||||
        intel-media-driver
 | 
			
		||||
      ];
 | 
			
		||||
      hardware.graphics.extraPackages =
 | 
			
		||||
        lib.optionals useIntelVaapiDriver [ intel-vaapi-driver ]
 | 
			
		||||
        ++ lib.optionals useIntelOcl [ intel-ocl ]
 | 
			
		||||
        ++ lib.optionals useIntelMediaDriver [
 | 
			
		||||
          intel-media-driver
 | 
			
		||||
          intel-compute-runtime
 | 
			
		||||
          vpl-gpu-rt
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
      hardware.graphics.extraPackages32 = with pkgs.driversi686Linux; [
 | 
			
		||||
        (
 | 
			
		||||
          if (lib.versionOlder (lib.versions.majorMinor lib.version) "23.11") then
 | 
			
		||||
            vaapiIntel
 | 
			
		||||
          else
 | 
			
		||||
            intel-vaapi-driver.override { enableHybridCodec = true; }
 | 
			
		||||
        )
 | 
			
		||||
        intel-media-driver
 | 
			
		||||
      ];
 | 
			
		||||
      hardware.graphics.extraPackages32 =
 | 
			
		||||
        lib.optionals useIntelVaapiDriver [ intel-vaapi-driver-32 ]
 | 
			
		||||
        ++ lib.optionals useIntelMediaDriver [ intel-media-driver-32 ];
 | 
			
		||||
 | 
			
		||||
      assertions = [
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user