RX580 HEVC 하드웨어 디코딩 잡기 - (♪♬♫) 님의 글에 도움 받아 댓글에 수정된 내용추가됨.
- 푸르른
- 1068
- 15
푸르른님의 기기정보
모하비 10.14.1 로 업데이트이후 IINA, Movist 등으로 HEVC 로 인코딩된 mkv 영상시청시 이전 하이시에라에서는 작동하던 HEVC 하드웨어 디코딩
이 작동하지않고, CPU 로만 작동되었습니다. (VDADecoderchecker 확인시 Error 발생 및 IINA 에서 재생정보확인시 하드웨어 디코딩 no 로 확인됨)
그래서 RX580 이 제 역할을 못하는듯하여 열심히 구글링후 하드웨어 디코딩이 잡힌듯하여 내용 공유해봅니다.
(고수가 아닌지라 이 정보가 완벽한 HEVC 디코딩이 잡힌것인지는 고수님들의 조언이 필요할것 같네요)
1) 저의 경우 RX580 은 OSX 에 포함된 AMDRadeonX4000.kext 로 잡혀서 구동되었습니다.
하지만 AMDRadeonX4000.kext 에는 패키지내용에 HEVC 관련 string 이 없어서 구동이 되지 않는다고 보였습니다.
AMDRadeonX5000.kext (Vega series) 에는 HEVC 관련 string 이 존재하여 Vega 의 경우는 디코딩에 문제가 없을것으로 생각됨.
그래서 AMDRadeonX5000.kext 의 string 을 AMDRadeonX4000.kext 에 추가하면 되지 않을까란 추론에 이름
2) 그래서 위 글타래에서 언급한
IOGVACodec
IOGVAHEVCDecode
IOGVAHEVCEncode
IOGVAVTCapabilities
이 string 등의 값을 X5000.kext 에서 복사하여 X4000.kext 에 넣어주면 되지 않을까 하여 시도 함.
3) 시도후 IINA 에서 동영상 플레이시 하드웨어 디코딩이 정상적으로 되며, VDADecoderchecker 에서도 정상작동되고 있음을 확인함.
(string 을 삽입하기전에는 VDADecoderchecker 에서 Error 가 남.)
<필요한 App>
1) Plist edit pro (자료실에 있음)
2) Easy Kext Utility (자료실에 있음)
3) VDADecoderchecker (자료실에 있음)
4) 필요시 IINA 플레이어 및 inter power gadget (동영상 플레이시 IINA 에서 재생정보에서 하드웨어 디코딩 실행여부 확인 및 그때 CPU 확인)
<방법>
1) S/L/E 에서 AMDRadeonX4000.kext 와 AMDRadeonX5000.kext 를 복사하여 작업할 공간 (폴더등) 으로 복사.
2) 기존의 AMDRadeonX4000.kext 는 혹시나 할 사태에 대비하여 미리 백업으로 복사하여 보관
3) AMDRadeonX5000.kext 를 마우스 우클릭후 패키지 내용보기 -> Contents -> info.plist 를 Plist edit pro 를 이용하여 열기
4) Plist edit pro 에서 열린 info.plist 에서 IOKitPersonalities/AMDvega10GraphicsAccelerator 탭 열기
5) 하위 값중
IOGVACodec
IOGVAHEVCDecode
IOGVAHEVCEncode
IOGVAVTCapabilities
를 복사
6) 수정할 AMDRadeonX4000.kext 를 마우스 우클릭후 패키지 내용보기 -> Contents -> info.plist 를 Plist edit pro 를 이용하여 열기
7) Plist edit pro 에서 열린 info.plist 에서 IOKitPersonalities/AMDEllesmereGraphicsAccelerator 탭 열기
8) 앞에서 복사한 AMDRadeonX5000.kext 내의 4가지 값을 AMDEllesmereGraphicsAccelerator 에 Paste as Chile 로 붙여넣기
9) AMDRadeonX4000.kext 를 저장
10) 수정된 AMDRadeonX4000.kext 를 Easy Kext Utility 를 이용하여 S/L/E 에 복사
11) 재부팅
12) VDADecoderchecker 로 하드웨어 디코딩이 되고 있는지 확인.
이렇게 하니 일단 현재 확인까지는 하드웨어 디코딩이 되네요.
정확한 원리 및 이유는 알수없으나, 상기방법으로 성공하여 혹시 다른분들께도 도움이 되었으면 합니다.
* 위와 같이 해도 되지 않을 경우 참고글의 글쓴이는 Terminal 에서 아래의 명령어를 사용하여 강제로 ATI decoding 설정도 추천하네요.
참고 하시기 바랍니다.
: defaults write com.apple.AppleGVA forceATI -boolean yes
- 귀차니즘으로 다른 분들처럼 스크린샷등으로 친절한 설명을 못드려 죄송합니다.
- 원리 및 이유는 다른 고수분들께, 그리고 혹시 모를 틀린점들도 다른 고수분들의 조언을 기다립니다.
푸르른
댓글 15
새로운 방법이라기보다.... 설치나 세팅시 미숙하여 RX580 하드웨어 가속이 안 잡힌것일수도 있으나, 위같은 방법을 제시한 글이 있어서 해본것입니다.
새로운 방법이 아닐지도 모르겠습니다. ;;; (무책임한 발언일지도 모르겠습니다만, 아직 실력이 미천한 탓.. 이겠지요)
<추가사항>
1. i7-8700k, Z370 Gaming 7 + Sapphire RX 580 nitro 에서도 정상작동 확인되며,
2. E3-1231V3, B85M-D3H + Gigabyte RX580 에서도 정상작동되는것 같네요
제온에서 하드웨어 디코딩이 되니 시피유사용량이 적어져서 좀더 쾌적한것같은 주관적인 느낌이 듭니다.
그리고 IINA 로 플레이시 하드웨어 디코딩이 되나, 이상하게 무비스트에서는 안되네요. 참고고하십시요.
님 글의 도움으로 방법을 조금 바꾸었습니다.
1) 더미 켁스트 로드방식
2) 원래 4000.kext 로 변경
3) 님의 글에서와 같이 dummy kext 생성 및 clover/kexts/other 에 삽입 (fakepciid 사용 및 clover bootloader 에서 ATI 0x0 삽입함)
4) 재부팅후 IORegistryExplorer 등에서 HEVC codec 로드 확인.
이렇게 해도 하드웨어 디코딩이 잘됩니다.
참고하십시요.
결론:
원글은 x4000.kext 에 직접 손대는 방식
댓글은 원 kext 는 놔둔상태로 dummy kext 의 값을 전송하는 방식
추가:
님 과 좌절금지님은 사랑이지요.;;;
안녕하세요 Dummy kext는 어떻게 만든는건지요?
초심자라 잘 모르겠어요..
저와 하드웨어가 같은데.. 혹 dummy kext 링크좀 부탁해도 될까요?
#Dummy,#하드웨어
처음 접근하는 그래픽카드 패치라서 굉장히 애먹고 있는 도중 좋은 글을 보게되어 굉장히 잘 해결됐습니다. 감사합니다!
오...새로운 방법이군요.