Проброс видеокарты в qemu
Гайд морально устарел, так как написан для Ubuntu 16.04 LTS, думаю подойдет для любого дистра.
Мой сетап своеобразный, но выбирал его из-за максимальной беспроблемности разорачивания.
Железо:
Два монитора, либо монитор с двумя HDMI (в принципе пойдет и VGA, у меня HDMI).
Процессор Intel с видеоядром; Для AMD тоже добавил, но не тестировал
Видеокарта AMD.
nvidia тоже подойдет, но нужны небольшие костыли, версия qemu 2.7+ и следовать шагам отсюда https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#%22Error_43:_Driver_failed_to_load%22_on_Nvidia_GPUs_passed_to_Windows_VMs
Две клавиатуры и две мышки, для удобства, потому что по началу будет сложно переключаться между девайсами. Windows 10 для DX12
Установка
Ставим QEMU
Для начала поставить GUI пакет для управления libvirt
apt update && apt install uml-utilities ovmf libvirt-bin virt-manager qemu-kvm bridge-utils
Баним драйверы
Открываем файл
vim /etc/modprobe.d/blacklist.conf
Добавляем в самый низ
blacklist radeon blacklist amdgpu
Если Вы из зеленого лагеря
blacklist nouveau
Правим grub
vim /etc/default/grub
Там есть строчка
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Приводим в вид
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on"
Для AMD; но я не тестировал, потому что нет AMD камня
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=on"
Обновляем настройки grub, например так
update-grub
Определяем pci видеокарту
Для начала выведем список девайсов и ищем нашу видеокарту
for iommu_group in $(find /sys/kernel/iommu_groups/ -maxdepth 1 -mindepth 1 -type d); do echo "IOMMU group $(basename "$iommu_group")"; for device in $(ls -1 "$iommu_group"/devices/); do echo -n $'\t'; lspci -nns "$device"; done; done
Вывод будет большим, нужно найти нашу видеокарту, вот у меня вывод такой
00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller \ [8086:0c01] (rev 06) 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Device \ [1002:67df] (rev c7) 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Device [1002:aaf0]
Нам нужны тут 1002:67df и 1002:aaf0
Их мы и добавляем в конфигурацию vfio
echo "options vfio-pci ids=1002:682b,1002:aab0" > /etc/modprobe.d/vfio.conf
Добавим vfio в автозагрузку
Если ядро 4.12 и старше, то правки не нужны.
vim /etc/initramfs-tools/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Обновляем настройки
update-initramfs -u
Правим конфиг QEMU
vim /etc/libvirt/qemu.conf
Ищем строчку
nvram
И приводим в вид
nvram = [ "/usr/share/OVMF/OVMF_CODE.fd:/usr/share/OVMF/OVMF_VARS.fd" ]
Перезагружаемся
Настройка гостевой системы
Для DX12 нужна Windows 10.
Советую ставить на SSD

Обратите внимание на Cache mode: directsync, поиграйте с разными режимами кеширования, если Вам не подойдет или будут фризы при прогрузке мира, подробно читать.
Когда Вы выставите VirtIO драйвер жесткого диска - винда не установится, потому что ей нужны будут драйверы.
Качаем образ образ
Подключаем его диском, во время установки мелгомягкого в настройках выставите поиск драйверов с этого диска.

Подключаем видеокарту, обратите внимание у меня подключено два устройства, это видеокарта и звук hdmi

Установка драйверов делайте в Windows 10 госте
Как я уже писал в Первой Части после устаноки на AMD все заведется сразу, что нужно сделать - переключить видеовыход монитора на видеокарту, которая сейчас находится в QEMU, мы получаем полностью рабочую систему. Заходим на сайт AMD, качаем драйверы =)

Твики Для адекватной работы в игрушках нужно привести в вид файл конфигурации QEMU
vim /etc/libvirt/qemu/Games.xml
К такому вот виду
<cpu mode='host-passthrough'>
<topology sockets='1' cores='8' threads='1'/>
<feature policy='disable' name='hypervisor'/>
</cpu>
<clock offset='localtime'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
<timer name='hypervclock' present='yes'/>
</clock>
Где sockets - лучше не трогать, NUMA тоже лучше не трогать. А cores это количество физических+виртуальных ядер(HT).
Вот и все! Приятной игры =)