저는 최근 Slackware가 설치된 현재 노트북에서 Prime을 사용하기로 결정했습니다(NVIDIA는 애플리케이션을 GPU로 오프로드하고 시스템은 통합 GPU(제 경우에는 Intel HD630)를 사용합니다). 통합 Intel GPU를 실행하는 이 포트는 Nvidia GPU 카드에 연결되므로 이제 요청 시에만 활성화됩니다. 제가 빨리 발견한 해결책은 새로운 Reverse Prime이었지만, 작동하지 못하는 것 같습니다.이상한 일들이 일어나고 있어요후드. 무슨 일이 일어나고 있는지 알아내려고 도움을 구하고 있어요.
처음에는 Prime이 노트북 화면에서 제대로 실행되는 것 같았습니다(처음에는 GPU 집약적인 애플리케이션을 실행하는 데 Prime을 사용했는데 예상대로 최대 성능으로 실행되었습니다). NVIDIA GPU에서 실행하려는 애플리케이션을 실행하고 여기에 일부 환경 변수를 붙일 수 있습니다. 그러나 테스트하려고 시도했을 때 __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo
glxinfo에서는 특별히 작동하지 않고 다음 오류가 발생한다는 것을 알았습니다.
name of display: :0 X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 151 (GLX) Minor opcode of failed request: 24 (X_GLXCreateNewContext) Value in failed request: 0x0 Serial number of failed request: 39 Current serial number in output stream: 4
그런 다음 환경 변수를 사용하거나 사용하지 않고 시도했지만 nvidia-settings --verbose
오류도 받았습니다.
WARNING: NV-CONTROL extension not found on this Display. ERROR: Unable to load info from any available system ERROR: Unable to assign attribute SyncToVBlank specified on line 22 of ........ ERROR: Unable to assign attribute FSAA specified on line 24 of ........ (repeat similar message to several other video settings previously saved on nvidia-settings-rc file) ERROR: Unable to assign attribute SynchronousPaletteUpdates specified on line 38 of configuration file '/[home path, redacted]/.nvidia-settings-rc' (no Display connection).
실행하면 nvidia-smi
일반적으로 nvidia GPU에 대한 정확한 정보가 제공됩니다(이상하게도 환경 변수를 사용하여 실행할 필요는 없습니다). glxinfo
내 메인 GPU가 현재 실제로 Intel이고 실제로 통합 Intel GPU인지 확인하기 위해 nvidia 변수 없이 확인했습니다 . 그런 다음 실행하여 xrandr --listproviders
다음을 얻습니다.
Providers: number : 2 Provider 0: id: 0x43 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 1 associated providers: 1 name:modesetting Provider 1: id: 0xca cap: 0x2, Sink Output crtcs: 4 outputs: 1 associated providers: 1 name:modesetting
두 개의 GPU를 감지하지만 두 번째 GPU는 감지하지 않습니다(공급자 1)의 이름은 NVIDIA-G0이어야 하지만 다음과 같이 설정되어 있습니다.모드 설정, 좋다공급자 0(인텔 IGPU). 그런 다음 구성했습니다.xorg.conf빠른 임시 테스트를 위해 NVIDIA GPU를 기본으로 사용하여 X를 실행하고 xrandr --listproviders
.공급자 0이제 NVIDIA에 해당하는 은(는) NVIDIA-G0이라는 이름으로 올바르게 인식됩니다.공급자 1그리고모드 설정. 나는 회복했다xorg.confPrime/Optimus 구성으로 다시 전환합니다(즉, Intel을 활성 GPU로 사용). 실행 중은 lsmod | grep -i nvidia
nvidia 드라이버가 로드되었으며새로운 스타일드라이버가 예상대로 차단되었습니다.modprobe.d구성:
nvidia_uvm 1155072 0 nvidia_drm 65536 1 nvidia_modeset 1232896 2 nvidia_drm nvidia 34177024 19 nvidia_uvm,nvidia_modeset drm_kms_helper 266240 2 nvidia_drm,i915 drm 610304 15 drm_kms_helper,nvidia_drm,i915 i2c_core 94208 12 i2c_designware_platform,videodev,i2c_hid,i2c_designware_core,drm_kms_helper,i2c_algo_bit,nvidia,i2c_smbus,i2c_i801,i915,psmouse,drm
HDMI 케이블 연결이 올바르게 인식되었으며(아직 신호는 없음) xrandr --props
HDMI-1-1 소스 목록 에 따르면마스터 동기화할 수 있게 하다:
PRIME Synchronization: 1 supported: 0, 1 link-status: Good supported: Good, Bad CONNECTOR_ID: 74 supported: 74 non-desktop: 0 range: (0, 1)
여기서 무슨 일이 일어나고 있는지 궁금해서 HDMI 출력을 테스트해 보았습니다.Arch wiki의 Reverse PRIME 튜토리얼랩톱 화면의 Prime 설정에서 다른 모든 것이 잘 작동했기 때문에(이유는 확실하지 않지만 glxinfo
실패 nvidia-settings
했지만) 공급자 이름이 잘못되었으므로 해당 참조 번호를 사용하기로 결정하고 실행했습니다. xrandr --setprovideroutputsource 0 1
그 결과 다음과 같은 오류가 발생했습니다. 에서 glxinfo
:
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 139 (RANDR) Minor opcode of failed request: 35 (RRSetProviderOutputSource) Value in failed request: 0xca Serial number of failed request: 16 Current serial number in output stream: 17
계속해서 단서를 찾으려고 시도했습니다 xrandr --output HDMI-1-1 --auto --above eDP-1
(eDP-1은 노트북에 내장된 화면입니다). 결과는 다음과 같습니다.
xrandr: crtc 3 구성에 실패했습니다.
Xorg.0.log에는 명백한 오류가 없지만 몇 가지 오류가 있습니다.정보부팅하는 동안 NVIDIA 드라이버가 작동하는 것을 방해하지 않는 것 같습니다.
[drm:nv_drm_dumb_map_offset [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to lookup gem object for mapping: 0x00000006 [drm:nv_drm_dumb_map_offset [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to lookup gem object for mapping: 0x00000007
그리고 오염된 커널에 대한 NVIDIA의 경고:
nvidia: module license 'NVIDIA' taints kernel. Disabling lock debugging due to kernel taint
편집 1:Prime 변수 제거가 그래픽 인터페이스 없이 명령줄 프로그램을 사용하는 노트북의 기본 화면에서만 작동할 것이라고 의심한 후 일부 Lutris 게임을 실행해 보았으나 실제로 동일한 오류가 발생했습니다.글로벌 정보 네트워크. 그렇다면 이것이 모니터를 연결하려는 것과 관련이 있는 것일까요?
여기서 어디로 가야할지 모르겠습니다. 어떤 아이디어가 있나요?
시스템 메시지:
- 노트북 Acer Nitro 5, i7 7세대, NVIDIA 1050
- 커널 5.10.19는 TKG의 fsync로 패치되었으며 현재 64비트에는 Alienbob multilib가 있습니다.
- NVIDIA 드라이버 460.56, CUDA 버전 11.2, V11.2.67 빌드 cuda_11.2.r11.2/compiler.29373293_0
- Xorg 서버 1.20.10
- /etc/X11/xorg.conf(나는 아직 .d 조각 모델에 익숙하지 않습니다):https://pastebin.com/0d13wDHY
- 이것이 있다90-intel.conf존재하다xorg.conf.d그러나 Intel DRI3을 강제하는 것을 목표로 합니다.
Section "OutputClass" Identifier "Force DRI 3" MatchDriver "modesetting" Option "DRI" "3" EndSection
- Xorg.0.log(키보드, 카메라 및 Bluetooth와 관련 없는 행 제거됨):https://pastebin.com/s0Ebu2AY
- 정보일부 민감한 데이터가 수정되었습니다.https://pastebin.com/w0qWzxD9
- NVIDIA 드라이버가 모드 세트로 설정되었습니다(conf 파일을 통해)modprobe.d
options nvidia-drm modeset=1
)