2017-10-24 2 views
1

MacOS 용 확장 그래픽 드라이버에서 작업 중이며 IOFrameBuffer 클래스를 사용하여 선형 프레임 버퍼 장치를 게시합니다. 드라이버에서는 getVRAMRange()를 사용하여 프레임 버퍼 장치의 전체 메모리 창에 대한 비디오 RAM 주소 정보를 반환합니다.IOFramebuffer가 macOS에서 VRAM 프레임 버퍼에 액세스 할 수 없습니다. 10.13

질문 : MacOS 10.12에서는 드라이버가 잘 작동하지만 MacOS 10.13 High Sierra로 시스템을 업그레이드하면 더 이상 비디오 램 데이터에 액세스 할 수 없습니다. 이 문제에 대한 조언이 있습니까? 매우 감사합니다!

게다가 왜 드라이버가 안전 모드에서 잘 작동하는지 혼동하고 있습니까?

답변

0

이 문제는 macOS 10.13의 Metal compositor에서 소개되었습니다. 나는 베타주기 초기에이를 애플에보고했지만 지금까지는 어떤 반응도 보이지 않았으며 확실하게 고쳐지지 않았다.

디스플레이의 내용은 WindowServer의 어딘가에 그려 지므로 CGDisplayCreateImage()으로 스크린 샷 (사용자 공간에서)을 사용하여 액세스 할 수 있습니다. 당신이하려고하는 일에 따라 당신을 위해 일할 수도 있습니까?

안전 모드에서 문제가없는 이유는 안전 모드에서 하드웨어 가속 합성 (Quartz Extreme)이 비활성화되어있어 금속 합성기가 사용되지 않기 때문입니다. 이 문제는 메탈을 지원하지 않는 구형 맥에서도 발생하지 않는다.

+0

도움이 될만한 답변 주셔서 감사합니다. 나는 또한 그것이 금속의 영향을 받았다고 생각한다. 사용자 공간에서 CGDislplayCreateImage() 함수를 사용하려고했지만 성능이 너무 낮아서 요구 사항을 충족하지 못했습니다. 아시다시피, DisplayLink의 최신 드라이버 (http://www.displaylink.com/downloads/file?id=1033)는 MacOS 10.13에서 잘 작동 할 수 있습니다. 따라서 필자는 확실히 여기에 액세스 할 수있는 방법이 있다고 생각합니다. 비디오 램 데이터. 다른 제안 사항이 있습니까? –

+0

알고있는 한, 현재 CGDislplayCreateImage()만이 유일한 방법입니다. 확실하게 여분의 프레임 버퍼 복사본을 추가하더라도 확실히 실시간 성능을 얻을 수 있습니다. Apple에 버그 (레이더)를 제기하여 문제를 해결하도록 권장하십시오. – pmdj

관련 문제