I recently purchased an ASUS A17 laptop with an AMD 4800H processor. Of
course I immediately installed Fedora 34 on it. Everything works well out
of the box... except GPU switching.
The ASUS A17 comes with 2 GPUs. GPU0 is the integrated GPU (iGPU) on the
4800H processor. GPU1 is a discrete NVIDIA GTX1660Ti GPU. (dGPU)
My laptop is currently running with iGPU using AMD drivers under X11. I'm
not a gamer. It works well for driving the 1920x1080 laptop screen but
will not drive an external 4K monitor without blanking out.
I installed the proprietary NVIDIA drivers using akmod from the RPMFusion
repository. lsmod shows both AMD and NVIDIA drivers installed on my
machine.
There is a utility for controlling a number of ASUS hardware features
called asusctl.
https://asus-linux.org/asusctl/
I'd rather not use this utility because it relies on custom kernels. I'd
like my kernels to come straight from the Fedora repositories.
I'm OK with rebooting to swap GPUs. In laptop mode I'm fine using the
iGPU. When I'm at my desktop, I need to use the dGPU to drive my external
monitor.
Is there an (easy) way to set up grub to blacklist one driver or the other
at boot time in order that the other driver can run and thus use the
desired GPU ? Right now I'm blacklisting nouveau. Could I also create
grub entries to blacklist the AMD or NVIDIA driver ?
Any other thoughts on doing this ?
Thanks
# lsmod | grep amd
edac_mce_amd 32768 0
kvm_amd 139264 0
kvm 1007616 1 kvm_amd
amdgpu 7049216 109
drm_ttm_helper 16384 1 amdgpu
ttm 77824 2 amdgpu,drm_ttm_helper
iommu_v2 24576 1 amdgpu
gpu_sched 45056 1 amdgpu
i2c_algo_bit 16384 1 amdgpu
drm_kms_helper 290816 2 amdgpu,nvidia_drm
drm 630784 22
gpu_sched,drm_kms_helper,nvidia,amdgpu,drm_ttm_helper,nvidia_drm,ttm
ccp 110592 1 kvm_amd
# lsmod | grep nvidia
nvidia_drm 69632 2
nvidia_modeset 1200128 3 nvidia_drm
nvidia_uvm 1175552 0
nvidia 35319808 91 nvidia_uvm,nvidia_modeset
i2c_nvidia_gpu 16384 0
drm_kms_helper 290816 2 amdgpu,nvidia_drm
drm 630784 22 gpu_sched,drm_kms_helper,nvidia
,amdgpu,drm_ttm_helper,nvidia_drm,ttm