From 0a82fce8d5cb49c7effa21b1cd271f52a8b0cae4 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 15 Oct 2022 21:51:43 -0400 Subject: [PATCH] Add the FreeBSD graphics role. --- .../environments/laptop/host_vars/odofreebsd | 1 + ansible/playbook.yaml | 1 + .../graphics/files/intel_power_loader.conf | 10 +++++++ ansible/roles/graphics/files/vdpau.sh | 1 + ansible/roles/graphics/tasks/common.yaml | 14 +++++++++ ansible/roles/graphics/tasks/freebsd.yaml | 1 + .../roles/graphics/tasks/freebsd_intel.yaml | 29 +++++++++++++++++++ ansible/roles/graphics/tasks/linux.yaml | 6 ++++ ansible/roles/graphics/tasks/main.yaml | 2 ++ ansible/roles/graphics/tasks/peruser.yaml | 29 +++++++++++++++++++ .../roles/graphics/tasks/peruser_freebsd.yaml | 0 .../roles/graphics/tasks/peruser_linux.yaml | 0 12 files changed, 94 insertions(+) create mode 100644 ansible/roles/graphics/files/intel_power_loader.conf create mode 100644 ansible/roles/graphics/files/vdpau.sh create mode 100644 ansible/roles/graphics/tasks/common.yaml create mode 100644 ansible/roles/graphics/tasks/freebsd.yaml create mode 100644 ansible/roles/graphics/tasks/freebsd_intel.yaml create mode 100644 ansible/roles/graphics/tasks/linux.yaml create mode 100644 ansible/roles/graphics/tasks/main.yaml create mode 100644 ansible/roles/graphics/tasks/peruser.yaml create mode 100644 ansible/roles/graphics/tasks/peruser_freebsd.yaml create mode 100644 ansible/roles/graphics/tasks/peruser_linux.yaml diff --git a/ansible/environments/laptop/host_vars/odofreebsd b/ansible/environments/laptop/host_vars/odofreebsd index 8e2c236..4779fac 100644 --- a/ansible/environments/laptop/host_vars/odofreebsd +++ b/ansible/environments/laptop/host_vars/odofreebsd @@ -10,6 +10,7 @@ pflog_conf: network_rc: "odofreebsd_network.conf" rc_conf: "odofreebsd_rc.conf" loader_conf: "odofreebsd_loader.conf" +graphics_driver: "intel" cputype: "intel" cpu_opt: tigerlake hwpstate: true diff --git a/ansible/playbook.yaml b/ansible/playbook.yaml index a9ad595..8ed36af 100644 --- a/ansible/playbook.yaml +++ b/ansible/playbook.yaml @@ -13,3 +13,4 @@ - cpu - ntp - build + - graphics diff --git a/ansible/roles/graphics/files/intel_power_loader.conf b/ansible/roles/graphics/files/intel_power_loader.conf new file mode 100644 index 0000000..2d27b22 --- /dev/null +++ b/ansible/roles/graphics/files/intel_power_loader.conf @@ -0,0 +1,10 @@ +# Enable power-saving display c-states (0=disable; 1=up to DC5; 2=up to DC6) +compat.linuxkpi.i915_enable_dc=2 +# Enable frame buffer compression which allegedly saves power +compat.linuxkpi.i915_enable_fbc=1 +# Skip extra modesets during boot +compat.linuxkpi.i915_fastboot=1 +# Disable display power wells (0=power wells always on, 1=power wells disabled when possible) +compat.linuxkpi.i915_disable_power_well=1 +# Reduce interrupt rate to make it more likely that a C3 sleep state can be hit. Should make the CPU wake up less often. +kern.hz=100 diff --git a/ansible/roles/graphics/files/vdpau.sh b/ansible/roles/graphics/files/vdpau.sh new file mode 100644 index 0000000..7114bcd --- /dev/null +++ b/ansible/roles/graphics/files/vdpau.sh @@ -0,0 +1 @@ +export VDPAU_DRIVER=va_gl diff --git a/ansible/roles/graphics/tasks/common.yaml b/ansible/roles/graphics/tasks/common.yaml new file mode 100644 index 0000000..d7c1735 --- /dev/null +++ b/ansible/roles/graphics/tasks/common.yaml @@ -0,0 +1,14 @@ +- import_tasks: tasks/freebsd.yaml + when: 'os_flavor == "freebsd"' + +- import_tasks: tasks/linux.yaml + when: 'os_flavor == "linux"' + +- include_tasks: + file: tasks/peruser.yaml + apply: + become: yes + become_user: "{{ initialize_user }}" + loop: "{{ users | dict2items | community.general.json_query('[?value.initialize==`true`].key') }}" + loop_control: + loop_var: initialize_user diff --git a/ansible/roles/graphics/tasks/freebsd.yaml b/ansible/roles/graphics/tasks/freebsd.yaml new file mode 100644 index 0000000..4529a5d --- /dev/null +++ b/ansible/roles/graphics/tasks/freebsd.yaml @@ -0,0 +1 @@ +- include_tasks: "tasks/freebsd_{{graphics_driver}}.yaml" diff --git a/ansible/roles/graphics/tasks/freebsd_intel.yaml b/ansible/roles/graphics/tasks/freebsd_intel.yaml new file mode 100644 index 0000000..e915703 --- /dev/null +++ b/ansible/roles/graphics/tasks/freebsd_intel.yaml @@ -0,0 +1,29 @@ +- name: Install packages + package: + name: + - drm-kmod + - libva-intel-media-driver # va-api support for broadwell (2014) and newer. + - libva-intel-driver # va-api support until after coffeelake (2017). + - vulkan-loader + - libva-utils # for vainfo + - vdpauinfo # for vdpauinfo + - libvdpau-va-gl # vdpau support + state: present + +# - name: Configure vdpau to use va-api driver +# copy: +# src: vdpau.sh +# dest: /etc/profile.d/vdpau.sh +# mode: 0644 +# owner: root +# group: root + +- name: Install loader.conf + copy: + src: "files/{{ item }}_loader.conf" + dest: "/boot/loader.conf.d/{{ item }}.conf" + mode: 0644 + owner: root + group: wheel + loop: + - intel_power diff --git a/ansible/roles/graphics/tasks/linux.yaml b/ansible/roles/graphics/tasks/linux.yaml new file mode 100644 index 0000000..e1835f0 --- /dev/null +++ b/ansible/roles/graphics/tasks/linux.yaml @@ -0,0 +1,6 @@ +# - name: Install packages +# pacman: +# name: +# - foo +# state: present +# update_cache: true diff --git a/ansible/roles/graphics/tasks/main.yaml b/ansible/roles/graphics/tasks/main.yaml new file mode 100644 index 0000000..dc9939d --- /dev/null +++ b/ansible/roles/graphics/tasks/main.yaml @@ -0,0 +1,2 @@ +- import_tasks: tasks/common.yaml + when: graphics_driver is defined diff --git a/ansible/roles/graphics/tasks/peruser.yaml b/ansible/roles/graphics/tasks/peruser.yaml new file mode 100644 index 0000000..111e886 --- /dev/null +++ b/ansible/roles/graphics/tasks/peruser.yaml @@ -0,0 +1,29 @@ +- include_role: + name: per_user + +# - name: Create directories +# file: +# name: "{{ account_homedir.stdout }}/{{ item }}" +# state: directory +# mode: 0700 +# owner: "{{ account_name.stdout }}" +# group: "{{ group_name.stdout }}" +# loop: +# - ".config/foo" + +# - name: Copy files +# copy: +# src: "files/{{ item.src }}" +# dest: "{{ account_homedir.stdout }}/{{ item.dest }}" +# mode: 0600 +# owner: "{{ account_name.stdout }}" +# group: "{{ group_name.stdout }}" +# loop: +# - src: foo.conf +# dest: .config/foo/foo.conf + +- import_tasks: tasks/peruser_freebsd.yaml + when: 'os_flavor == "freebsd"' + +- import_tasks: tasks/peruser_linux.yaml + when: 'os_flavor == "linux"' diff --git a/ansible/roles/graphics/tasks/peruser_freebsd.yaml b/ansible/roles/graphics/tasks/peruser_freebsd.yaml new file mode 100644 index 0000000..e69de29 diff --git a/ansible/roles/graphics/tasks/peruser_linux.yaml b/ansible/roles/graphics/tasks/peruser_linux.yaml new file mode 100644 index 0000000..e69de29