여기서 어디로 가야할지 모르겠습니다. 어떤 아이디어가 있나요?

여기서 어디로 가야할지 모르겠습니다. 어떤 아이디어가 있나요?

저는 최근 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 glxinfoglxinfo에서는 특별히 작동하지 않고 다음 오류가 발생한다는 것을 알았습니다.

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 nvidianvidia 드라이버가 로드되었으며새로운 스타일드라이버가 예상대로 차단되었습니다.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 --propsHDMI-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)

관련 정보