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

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

배포판:팝 OS 19.10
랩탑:HP 노트북 15-bs185tx

그래픽 카드:

  • AMD Radeon™ 520 그래픽(2GB DDR3 전용)
  • 인텔사 UHD 그래픽 620

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

감사합니다!

답변1

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

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

이 기능이 하드웨어 수준에 없으면 불가능하지만 대안이 있습니다.

이는VGA Switcheroo 문서:

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

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

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

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

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

좋은 문서를 찾을 수 있지만(예: on아치리눅스) 일부 항목을 찾을 수 없습니다.공식적인사용에 대한 권위가 있는 최종 문서DRI_PRIME . 내가 찾은 유일한 준공식 문서는... Nvidia의 새로운 드라이버와 말장난에 대한 것이었습니다.옵티머스 프라임:

옵티머스/프라임 사용

'PRIME GPU 오프로딩'과 'Reverse 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다른 속성이 무엇이든 출력할 수 없습니다.소스 출력그리고싱크 출력말할 수. 귀하의 시스템이하다dGPU 속성에 대해 0이 아닌 값을 표시하면 이 답변에서 다루지 않는 outputs:다른 옵션을 사용할 수 있습니다(직접 표시, 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를 사용하게 되는데, 이는 아마도 노트북에는 좋은 생각이 아닐 것입니다.

관련 정보