# Vô hiệu hóa card màn hình không được hỗ trợ

Vậy là bạn cần phải cho "tàn hình" cái card màn hình (GPU) không được hỗ trợ đúng hông? Với OpenCore thì hơi khác một xíu, cụ thể là bạn phải chỉ định chính xác thiết bị nào mà mình muốn giả danh (spoof) để vô hiệu hóa. Có 3 cách để làm việc này:

  • Thêm tham số khởi động (Boot Flag)
    • Bạn có thể vô hiệu hóa tất cả các loại GPU rời ngoại trừ iGPU (card màn hình onboard).
  • Bơm thuộc tính thiết bị (DeviceProperties)
    • Bạn có thể vô hiệu hóa GPU theo từng khe cắm (per-slot).
  • Sử dụng SSDT
    • Bạn có thể vô hiệu hóa GPU theo từng khe cắm (per-slot).

CSM (Compatibility Support Module) phải được tắt trong BIOS để việc gửi lệnh tắt nguồn hoạt động chính xác, đặc biệt là trên các hệ thống sử dụng CPU AMD

Hướng dẫn này chủ yếu dành cho những bạn đang có hệ thống vừa có card màn hình NVIDIA (để sử dụng với Windows) và card màn hình AMD (để sử dụng với macOS).

# Phương pháp thêm Tham số khởi động (Boot Flag Method)

Đây là cách đơn giản nhất quả đất, tất cả những gì bạn cần làm là thêm tham số khởi động (boot-arg) sau đây:

-wegnoegpu

Lưu ý rằng lệnh này sẽ vô hiệu hóa (disable) tất cả các GPU rời, ngoại trừ card màn hình tích hợp (iGPU).

# Phương pháp Bơm thuộc tính thiết bị (DeviceProperties Method)

Cách này cũng khá đơn giản, hãy tìm đường dẫn PCI bằng cách gõ lệnh gfxutil (opens new window) Cách này cũng khá đơn giản và sau đó tạo một mục DeviceProperties mới với thông số giả danh (spoof) của bạn:

đường dẫn/thực thi/gfxutil -f GFX0 
Trong đó, GFX0 là tên định danh của card đồ họa trong bảng ACPI của máy tính bạn.

Kết quả đầu ra sẽ tương tự như thế này:

DevicePath = PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

Với đường dẫn này, bạn hãy tìm đến mục Root -> DeviceProperties -> Addtrong file cấu hình (config.plist) và thêm đường dẫn PCI của bạn với các thuộc tính (properties) sau:

Khóa Type Value
disable-gpu Boolean True

# Phương pháp Sử dụng SSDT (SSDT Method)

Có nhiều cách để tìm đường dẫn thiết bị, nhưng cách dễ nhất là vô Trình quản lý thiết bị (Device Manager) trong Windows và tìm đường dẫn PCI (PCI path).

Ví dụ về đường dẫn thiết bị của \_SB.PCI0.PEG0.PEGP:


    DefinitionBlock ("", "SSDT", 2, "DRTNIA", "spoof", 0x00000000)
    {
       External (_SB_.PCI0.PEG0.PEGP, DeviceObj)

       Method (_SB.PCI0.PEG0.PEGP._DSM, 4, NotSerialized)
       {
          If ((!Arg2 || !(_OSI ("Darwin"))))
          {
             Return (Buffer (One)
             {
                0x03
             })
          }

          Return (Package (0x0A)
          {
             "name",
             Buffer (0x09)
             {
                "#display"
             },

             "IOName",
             "#display",
             "class-code",
             Buffer (0x04)
             {
                0xFF, 0xFF, 0xFF, 0xFF
             },
          })
       }
    }

Bạn tải bản sao của SSDT này tại đây Spoof-SSDT.dsl (opens new window). Bạn sẽ cần công cụ MaciASL (opens new window) tđể biên dịch (compile) file này. Hãy nhớ rằng .aml là tệp đã được biên dịch còn .dsl là mã nguồn. Bạn có thể biên dịch bằng MaciASL bằng cách chọn File -> Save As -> ACPI Machine Language.

Nguồn: CorpNewt

# Lựa chọn GPU trên Windows

Tùy thuộc vào thiết lập của bạn, bạn có thể thấy Windows thực hiện việc xử lý (render) game hoặc ứng dụng bằng một con GPU không mong muốn.

Nhiều người dùng chỉ có hai GPU: NVIDIA và iGPU Intel HD/UHD. Vì card NVIDIA không còn hoạt động trên macOS, họ có thể cắm màn hình trực tiếp vào cổng HDMI/DP trên bo mạch chủ (motherboard) cho tiện. Kết quả là, Windows sẽ xử lý tất cả game và ứng dụng thông qua iGPU. Bạn có thể điều hướng một game hoặc ứng dụng cụ thể sang một GPU khác bằng cách vào: Settings (Cài đặt) > System (Hệ thống) > Display (Hiển thị) > Graphics settings (Cài đặt đồ họa).

Credit to CorpNewt for image

Game hoặc ứng dụng được xử lý sẽ có vùng đệm (buffer) được sao chép sang iGPU, sau đó hiển thị cho bạn. Tuy nhiên, việc này đi kèm với một vài nhược điểm (downsides):

  • GSync sẽ không còn hoạt động.
  • Không thể mở bảng cài đặt NVIDIA (NVIDIA Control Panel). Phần mềm đó yêu cầu màn hình phải được kết nối trực tiếp với card.
  • Tốc độ khung hình bị giảm (Decreased frame rate).
  • Độ trễ đầu vào tăng lên (Increased input latency).
  • Giới hạn tần số quét (Refresh rate cap).

Nếu bo mạch chủ của bạn chỉ có đầu nối HDMI cho iGPU, tần suất quét tối đa cho chuẩn 2.1 là 120Hz (opens new window). Điều này giả định rằng bo mạch và màn hình của bạn có cùng thông số kỹ thuật. Nghĩa là chiếc màn hình 144Hz của bạn sẽ chỉ đạt tối đa 120Hz do giới hạn phần cứng. Giới hạn này không áp dụng nếu bo mạch chủ của bạn có cổng DP (DisplayPort) cho iGPU.

Nếu bạn có nhiều hơn hai GPU (AMD, NVIDIA và Intel), cài đặt này sẽ bị hạn chế. Nếu màn hình kết nối với GPU AMD, Windows sẽ chỉ cho phép bạn chọn GPU AMD hoặc iGPU Intel. GPU NVIDIA sẽ không hiển thị. Trong một phiên bản Windows tương lai, giới hạn này sẽ được xóa (opens new window).

Lời khuyên của mình là, nếu bạn sử dụng cả hai hệ điều hành như nhau và không muốn gặp bất kỳ nhược điểm nào, lựa chọn tốt nhất của bạn là sử dụng một bộ chuyển mạch (switch) HDMI hoặc DP.