내장 Intel 그래픽 대신 디스플레이 컨트롤러를 Radeon으로 어떻게 전환합니까?

내장 Intel 그래픽 대신 디스플레이 컨트롤러를 Radeon으로 어떻게 전환합니까?

릴리스 버전:인기 있는 운영 체제 19.10
랩탑:HP 노트북 15-bs185tx

그래픽 카드:

  • AMD Radeon™ 520 그래픽 카드(2GB DDR3만 해당)
  • 인텔사 UHD 그래픽 620

온라인에서 사용 가능한 거의 모든 솔루션을 시도했지만 아무것도 작동하지 않습니다. VGA와 디스플레이 컨트롤러는 모두 내장 Intel 그래픽 카드에서 실행됩니다. lspci -k | grep -EA3 'VGA|3D|Display'활성 그래픽 어댑터를 보기 위해 여러 명령(이 명령 포함)을 사용했습니다 . 이 문제에 대해 궁금한 점이 있으면 알려주시기 바랍니다.

감사합니다!

답변1

TL;DR(단, 이 값은 1 0시스템에 따라 정확하지 않을 수 있습니다):

$ xrandr --setprovideroffloadsink 1 0
$ export DRI_PRIME=1
$ glxinfo | grep "OpenGL renderer string"

이 기능이 하드웨어 수준에 존재하지 않지만 대안이 존재하는 경우 이는 불가능합니다.

이것은 다음과 같이 표시됩니다.VGA 스위처 문서:

vga_switcheroo는 노트북 하이브리드 그래픽 카드용 Linux 하위 시스템입니다. 여기에는 두 가지 맛이 있습니다.

  • muxed: GPU 간 출력 전환을 위한 멀티플렉서 칩이 있는 듀얼 GPU입니다.
  • Muxless: 듀얼 GPU이지만 그 중 하나만 출력에 연결됩니다. 다른 하나는 렌더링 오프로드를 위한 것입니다., 그 결과는 PCIe를 통해 프레임 버퍼에 복사됩니다. Linux에서는 지원됩니다. 주로 직접환원철.

혼합 그래픽은 Naughties 후반에 나타나기 시작했으며 처음에는 혼합되었습니다.최신 노트북은 비용상의 이유로 다중화 아키텍처로 전환. 주목할만한 예외 중 하나는 멀티플렉서를 계속 사용하는 MacBook Pro입니다.

그래서 나는 당신의 하드웨어가 다음과 같다고 가정합니다.멀티플렉서 없음, 이와 같이:

      ╔═══════════════╗
      ║               ║
      ║    display    ║
      ║               ║
      ╚═══════════════╝
       ╭───╯       X
       │           ┊
┌────────┐       ┌────────┐
│        │       │        │
│  iGPU  │───────│  dGPU  │
│        │       │        │
└────────┘       └────────┘

몇 가지 좋은 문서를 찾을 수 있지만(예:아치리눅스), 일부를 찾을 수 없습니다공식적인사용할 수 있는 권위 있는 문서입니다 DRI_PRIME. 제가 찾은 유일한 문서는 반공식적일 수 있습니다... Nvidia의 새로운 드라이버 및 단어장난옵티머스 프라임:

옵티머스/프라임 사용

"PRIME GPU 오프로드" 및 "역방향 PRIME"은 Linux 커널에서 다중화 하이브리드 그래픽을 지원하려는 시도입니다.

이름은 원래 Nvidia 지원에서 따온 것일 수 있지만 확실히 보편적이며 AMD와 함께 작동할 것입니다.

다음 명령을 사용하여 설정을 쿼리하고 변경할 수 있습니다.xrandr주문하다:

--listproviders
사용 가능한 공급자에 대한 정보를 보고합니다.

--setprovideroutputsource provider source
소스를 공급자로 설정하면 출력 이미지의 소스가 표시됩니다. 이는 소스와 공급자가 각각 소스 출력 및 싱크 출력 기능을 갖고 있는 경우에만 가능합니다. 소스가 0x0이면 공급자는 현재 출력 소스에서 연결이 끊어집니다.

--setprovideroffloadsink provider sink
공급자를 싱크의 렌더링 오프로드 장치로 설정합니다.이는 공급자와 싱크에 각각 소스 오프로딩 및 싱크 오프로딩 기능이 있는 경우에만 가능합니다.. 싱크가 0x0이면 공급자는 현재 렌더링 오프로드 싱크와의 연결을 끊습니다.

예를 들어 Intel iGPU 및 일부 AMD dGPU를 사용하는 노트북의 경우:

$ xrandr --listproviders
Provider 0: id: 0x68 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 3 associated providers: 0 name:Intel
Provider 1: id: 0x41 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 0 associated providers: 0 name:AMD Radeon (TM) HD8530M @ pci:0000:04:00.0

공급자 1에는 다음이 있습니다 outputs: 0. 다른 속성에 관계없이 출력할 수 없습니다.소스 출력그리고수신기 출력아마도. 귀하의 시스템이하다Show dGPU outputs:속성 값이 0과 다른 경우 사용 가능한 다른 옵션이 있을 수 있지만(직접 표시하거나 를 사용하여 Reverse PRIME과 함께 표시 --setprovideroutputsource) 이 답변에서는 해당 옵션을 다루지 않습니다.

이전 예에서 dGPU에 오프로드된 (3D) GPU 작업 사용을 준비하려면 다음을 수행합니다.

$ xrandr --setprovideroffloadsink 'AMD Radeon (TM) HD8530M @ pci:0000:04:00.0' Intel

이름 대신 ID나 더 간단한 인덱스를 사용할 수 있습니다. 다음 두 명령은 동일한 작업을 수행합니다. 방향을 바꾸지 않도록 주의해야 합니다. 그렇지 않으면 나쁜 일이 일어날 수 있습니다.

$ xrandr --setprovideroffloadsink 0x41 0x68
$ xrandr --setprovideroffloadsink 1 0

지금:

$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x68 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 3 associated providers: 1 name:Intel
Provider 1: id: 0x41 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 0 associated providers: 1 name:AMD Radeon (TM) HD8530M @ pci:0000:04:00.0

이제 두 공급자가 연결되었으므로 특수한(메사로) 변수를 내보내면 DRI_PRIME=1렌더링할 dGPU가 선택됩니다.

$ DRI_PRIME=0 glxinfo | grep "OpenGL renderer string"
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile 
$ DRI_PRIME=1 glxinfo | grep "OpenGL renderer string"
OpenGL renderer string: AMD Radeon (TM) HD8530M (OLAND, DRM 3.36.0, 5.6.3-amd64, LLVM 6.0.0)

따라서 이라는 GPU 집약적인 3D 프로그램을 실행하려면 myhungrygame다음을 수행할 수 있습니다(dGPU가 iGPU 뒤에 있는 경우).

$ xrandr --setprovideroffloadsink 1 0 # X11-wide setting
$ export DRI_PRIME=1
$ ./myhungrygame

데스크톱 환경을 로드하기 전에 처음 두 가지 작업을 수행하면 모든 장치는 기본적으로 3D 오프로딩을 위해 dGPU를 사용하게 되는데, 이는 아마도 노트북에는 좋은 생각이 아닐 것입니다.

관련 정보