DRM desteğini ve iGPU performansını düzeltme​

  • Not: Safari 14 ve macOS 11 şu an için WhateverGreen'in DRM yamaları tarafından desteklenmiyor. Catalina'daki Safari 13 ve daha eski sürümlerin desteği mevcut.
  • Not 2: Donanım tabanlı DRM kullanmayan tarayıcılarda (ör. Mozilla Firefox veya Chromium-tabanlı tarayıcılar ör. Google Chrome ve Microsoft Edge) DRM, iGPU ve dGPU'larda bir işlem gerektirmeden çalışmakta. Bu rehber Safari ve donanım tabanlı DRM'yi kullanan diğer uygulamalar için.
DRM hakkında değinmemiz gereken birkaç şey:
  • DRM için desteklenen bir dGPU gerekir.
  • DRM, iGPU tabanlı sistemler için bozuktur
    • Bu, Shiki ile (artık WhateverGreen) 10.12.2 macOS sürümüne kadar düzeltilebilirdi fakat artık 10.12.3 sürümü ile bozuk.
    • Bunun sebebi ise iGPU'larımızın, Apple'ın firmware'ini desteklememesi ve Management Engine'mızın Apple sertifikası bulundurmaması.
  • Çalışan donanım hızlandırması ve kod çözücü

Donanım hızlandırmasını ve kod çözücüyü test etme​

DRM desteğini düzeltmeye başlamadan önce donanım hızlandırmamızın çalıştığından emin olalım. Bunu anlamanın en iyi yolu VDADecoderChecker'ı çalıştırmak:
drm1.webp

Eğer bu aşamada sorun yaşarsanız, kontrol edebileceğiniz birkaç şey:
  • Donanımınızın desteklendiğinden emin olun.
  • Sisteminiz için kullandığınız SMBIOS'un, donanımınız ile eşleştiğinden emin olun.
    • Buna örnek olarak masaüstü sisteminiz için Mac Mini SMBIOS'u kullanmayın. Mac Mini, mobil donanım kullanır ve macOS bunun aynısını bekler.
  • BIOS'ta iGPU'nun etkin ve config dosyanızda doğru değerleri girdiğinizden emin olun. (AAPL,ig-platform-id ve gerektiğinde device-id)
  • Gereksiz ACPI yeniden adlandırmalarından kaçının, tüm gerekli olanlar WhateverGreen'e işlendi.
    • change GFX0 to IGPU
    • change PEG0 to GFX0
    • change HECI to IMEI
    • ve benzeri.
  • Lilu ve WhateverGreen kextlerinin yüklendiğinden emin olun
    • Halihazırda WhateverGreen'e eklendiği için ekstradan Legacy grafik yamaları kullanmayın:
      • IntelGraphicsFixup.kext
      • NvidiaGraphicsFixup.kext
      • Shiki.kext
Lilu ve WhateverGreen'in düzgünce yüklendiğini kontrol etmek için:
Kod:
kextstat | grep -E "Lilu|WhateverGreen"
Bir veya birden fazla kexti görüntüleyemediyseniz en iyi yöntem olarak OpenCore günlüğüne bakıp Lilu ve WhateverGreen'in düzgünce yüklenip yüklenmediğini görebilirsiniz:
Kod:
14:354 00:020 OC: Prelink injection Lilu.kext () - Success
4:367 00:012 OC: Prelink injection WhateverGreen.kext () - Success
Eğer düzgün bir şekilde yüklenmediyse:
Kod:
15:448 00:007 OC: Prelink injection WhateverGreen.kext () - Invalid Parameter
Buna neden olabilecek ana noktaları kontrol edebilirsiniz:
  • Injection order: Kextlerin yükleme sırası olarak çevirebileceğimiz bu kısımda ilk sırada Lilu ve ikinci sırada WhateverGreen'in yüklendiğini teyit edin.
  • Tüm kextlerin güncelliği: Özellikle Lilu'nun pluginleri için önemli, eşleştirilemeyen kextler sorunlara sebep olur.
Not: OpenCore'u daha detaylı loglamak için bkz. OpenCore Debugging.

Not: macOS 10.15 ve daha güncelinde, AppleGVA debugging/hata ayıklama varsayılan olarak devre dışı, eğer VDADecoderChecker'ı çalıştırırken genel bir hata alırsanız aşağıdaki komut ile VDADecoderChecker'ı etkinleştirebilirsiniz:
Kod:
defaults write com.apple.AppleGVA enableSyslog -boolean true
Ve bu işlemi geri almak isterseniz:
Kod:
defaults delete com.apple.AppleGVA enableSyslog


DRM'ı test etme​


Derinlemesine girmeden önce birkaç şeyin üstünden geçmeliyiz. Geniş ölçüde kendi ortamında göreceğimiz DRM tipleri:

FairPlay 1.x: Yazılım tabanlı DRM, Legacy/Eski macleri daha kolay desteklemek için kullanıldı
  • Bunu test etmenin en kolay yolu bir iTunes filmi oynatmak: FairPlay 1.x test
    • FairPlay 1.x trailer/fragmanları eğer WhateverGreen, iGPU tabanlı sistemler de dahil olmak üzere doğru bir şekilde ayarlandıysa çalışacaktır. Ancak, FairPlay 1.x filmleri iGPU tabanlı sistemlerde sadece 3-5 saniyeliğine oynatılıp ardından HDCP'nin desteklenmediği hatasını verecektir.
FairPlay 2.x/3.x: Donanım tabanlı DRM, Netflix ve Amazon Prime'da görülür
  • TTest etmenin birkaç yolu:
    • Netflix veya Amazon Prime'da bir dizi/film oynatın
    • Amazon Prime trailer/fragmanı oynatın: Spider-Man: Far From Home
      • Trailer/fragman, DRM kullanmıyor olsa da Amazon yine de oynatmadan önce kontrol ediyor.
  • Not: Çalışması için güncel AMD ekran kartına ihtiyaç duyar(ör. Polaris+)
FairPlay 4.x: Mix DRM, AppleTV+'da görülür
  • TV.app'ı açıp, TV+'ta -> Ücretsiz/Free Apple TV+ Premieres/Galalar şeklinde seçim yapıp deneme süresi olmadan herhangi bir bölümü test edebilirsiniz(yine de iCloud hesabı gerektirir).
  • Eğer kullanmak isterseniz Apple TV+ ücretsiz denemeye sahip.
  • Not: Çalışması için iGPU'nun bulunmaması (ör. Xeon) veya güncel AMD ekran kartı(Polaris+) gerekir.
    • iGPU bulunmuyorsa FairPlay 1.x'in zorlanması mümkün.
Eğer bu testlerde her şey çalışıyorsa, devam etmenize gerek yok. Aksi takdirde devam etmelisiniz.


DRM'ı düzeltme​


DRM'ı düzeltmek için izleyebileceğimiz bir ana yol var: DRM'ı yazılım veya AMD kodlayıcıyı kullanacak şekilde yamalamak. Vit, farklı donanıma sahip sistemler için kapsamlı küçük bir tablo hazırlamış:
Peki nasıl kullanacaksınız? Önce, listede hangi donanıma sahip olduğunuzu tanımlayın(AMD, işlemciyi değil ekran kartını belirtiyor). Listelenen SMBIOS'lardan donanımınızın eşleştiğini kullanmalısınız(IM = iMac, MM = Mac Mini, IMP = iMac Pro, MP = Mac Pro). Eğer tabloya göre bir eşleştirme yapamıyorsanız, bir şansınız kalmıyor.

Sonraki aşamada hangi Shiki mode'unu kullanacağınızı tanımlayın. Eğer sizin donanımınıza göre iki konfigürasyon mevcut ise, kullanılan Shiki flaglerde değişiklik göstereceklerdir. Genel olarak yazılım yerine donanım kodlamasını tercih etmek istersiniz. Eğer sütun boş ise, işlem tamam. Eğer sütun boş değil ise DeviceProperties > Add kısmına gelip shikigva'yı, ekran kartına eklemelisiniz. Örneğin kullanmamız gereken mod shikigva=80 ise:
drm2.webp

İşte bir örnek. Eğer Intel i9-9900K ve bir RX 560'a sahip olsaydık, bu konfigürasyon "AMD+iGPU" olurdu ve iMac veya Mac Mini SMBIOS'u kullanmamız gerekirdi(bu örnek için iMac19,1). Ardından bu konfigürasyon için iki seçenek olduğunu görürdük: bunlardan biri mode'un shikigva=16 ve diğerinin shikigva=80 olduğu. Prime Trailer/Fragmanları ve Prime/Netflix'teki farklılıkları gördük. Netflix'in çalışmasını istiyorsak, shikigva=80'i seçmeliyiz. Ardından shikigva'yı number/integer olacak şekilde 80 değerinde iGPU veya dGPU'muza ekliyoruz, yeniden başlatıyoruz ve DRM artık çalışmalı.

Notlar:
  • iGPU/dGPU pathini bulmak için gfxutil kullanabilirsiniz.
    • path/to/gfxutil -f GFX0
    • GFX0: dGPU'lar için, eğer birden fazla kart takılı ise AMD kartınızın ne olarak göründüğünü öğrenmek için IORegistryExplorer kullanın.
    • IGPU: iGPU için
  • DeviceProperties kullanarak shikigva'yı eklediyseniz, bunu sadece bir ekran kartına eklediğinizden emin olun. Aksi takdirde WhateverGreen ilk bulduğu karttaki değeri kullanır ve bunun kararlılığı garanti olmaz.
  • IQSV, Intel Quick Sync Video anlamına geliyor: bu sadece iGPU mevcut, etkin ve düzgün bir şekilde ayarlandıysa çalışır.
  • Özel konfigürasyonlar (ör. iMac SMBIOS'ta Haswell + AMD dGPU olup, iGPU devre dışı bırakılmış ise) tabloda yer almıyor. Bunun araştırmasını kendiniz yapmalısınız.
  • Shiki kaynağı özel konfigürasyonlar için yardımcı olabilir ve hangi argüman/flagların ne işe yarayıp, nerede kullanılacağını anlamak için faydalı bir kaynak.
  • Big Sur'daki VDADecoderCreate failed. err: -12473 hatası için, AMD kodlayıcıyı zorlamak(uygulanabilir sistemlerde) bu sorunu çözmeye yarayabilir:
    Kod:
    defaults write com.apple.AppleGVA gvaForceAMDAVCDecode -boolean yes

İlgili konu​



Kaynak​