我在一台非常相似的机器上,在 16.04 版本上运行良好。
我想要的是:我想告诉 X 从旋转的特定显示器开始(如果存在)。我还想使用 nvidia 驱动程序(而不是 nouveau),并且获得不错的性能,而不会出现屏幕撕裂。
我并不关心“nvidia Prime”,但据我所知,这就是它无法正常工作的原因,所以我的猜测是我希望它被烧毁、用火清洗、摧毁、移除,并以其他方式完全阻止它再次与我或我的笔记本电脑交互。我不关心对电池寿命的边际影响。
在 Ubuntu 16.04 中,我可以设置 xorg.conf,并执行以下操作:
"MetaModes" "DFP-3: 2560x1600 +0+0 {rotation=left, ForceCompositionPipeline=On}, DFP-4: {ForceCompositionPipeline=On}"
在 18.04 中,这里不存在任何有效的值,因为当 nvidia 启动时,它会说所有设备都已断开连接;几秒钟后,经过进一步研究,它开始找到可以连接或探测的名称为“DP-1-1”的东西。但那些名字尚不存在当读取 xorg.conf 片段时。因此 MetaModes 行被丢弃,因为它不适用于任何内容。
我可以接受稍后可能被迫手动运行 xrandr,但这似乎很愚蠢。我不关心也不想要 prime。如果它消失,并且 nvidia 驱动程序会正常探测显示器,那么我就会有预期的行为。
是否有需要设置或挂钩来告诉 nvidia 驱动程序停止过度思考这个问题?我无法卸载 nvidia-prime;我的意思是,我可以,但一切都会崩溃。有一种名为 gpu-manager 的东西会不断强制将所有内容转移到使用 prime,但也没有文档,也没有 --help,基本上与良好的软件工程完全相反。如果我将其伪装起来(例如,用一个什么都不做的脚本替换它),它会停止主动破坏事物,但实际上并没有解决问题。如果我禁用它,并删除 11-nvidia-prime.conf,看起来 nvidia 驱动程序最终根本没有被使用。
nvidia-settings 无法再生成配置文件(“在 pkg-config 搜索路径中未找到 xorg-server”),并且由于“一切探测最初都显示为断开连接”的问题,任何尝试使用运行 16.04 的基本相同的机器上的工作配置都无法找到有效的屏幕。
我猜测对 prime 的支持导致它禁用所有显示,直到 prime 有机会告诉它启用它们,但我不知道如何解决这个问题或抑制它。
编辑:稍后回来,我更仔细地检查了一下。其他笔记本电脑也在使用 nvidia-prime,因此 prime 本身并不是问题所在。较旧的笔记本电脑是 16.04 版,使用 nvidia-384,较新的笔记本电脑是 18.04 版,使用 nvidia-390。两代略有不同;我认为较旧的是 quadro M2000,新的是 quadro M2200。
几个月后更新:出于某些原因,重新加载了笔记本电脑。在设置过程中,注意到有一个 BIOS 设置可以完全禁用 GPU 切换,这样一切就更接近正常了;我得到了显示设备的半一致名称,并且在启动过程中可以识别它们。
不幸的是,MetaModes 线虽然现在似乎认为它正在被应用,但并没有应用旋转:
[ 12.087] (II) NVIDIA(0): Setting mode "DP-0:nvidia-auto-select+0+0{rotation=left,ForceCompositionPipeline=On}" ... [ 13.177] (II) NVIDIA(0): Setting mode "NULL" [ 13.233] (II) NVIDIA(0): Setting mode "DP-0: nvidia-auto-select @2560x1600 +0+0 {ViewPortIn=2560x1600, ViewPortOut=2560x1600+0+0, ForceCompositionPipeline=On}"
所以它忽略了“rotation=left”。我还注意到 nvidia-settings 似乎删除了 1600x2560 的明确规范。我会继续捣鼓它。
答案1
它似乎~/.config/monitors.xml
覆盖了 Nvidia 在其 MetaMode 中设置的位置和方向设置xorg.conf
,因此编辑~/.config/monitors.xml
并添加:
<transform>
<rotation>left</rotation>
<flipped>no</flipped>
</transform>
在您想要旋转的显示器的块下的<scale>
和<monitor>
标签之间,并调整显示器的旋转和翻转。<logicalmonitor>