Android Q+는 Vulkan Graphics API를 사용하여 UI를 렌더링할 수 있습니다.

click fraud protection

Google의 오픈 소스 그래픽 엔진인 Skia에는 Vulkan 그래픽 API 백엔드가 있습니다. 이 백엔드는 Android Q 이상에서 UI를 렌더링하는 데 활용될 수 있습니다.

Android의 다음 주요 버전인 Android 9는 다음 달 여러 기기에서 출시될 예정입니다. 주요 개선 사항이 대부분 내부적으로 이루어졌던 Android Oreo와 달리 Android P는 더 많은 사용자 관련 기능을 제공합니다. 개선된 사용자 인터페이스, 탐색 제스처, 디지털 웰빙 등을 개발하는 동시에 프로젝트 작업도 계속 진행 중입니다. 고음부. 그러나 그 뒤에서 Google은 Android에서 그래픽 렌더링이 작동하는 방식을 개선했습니다. Android Oreo에서 Google은 Android P에서 완성된 Skia 그래픽 엔진에 대한 OpenGL 하드웨어 가속 백엔드를 테스트하기 시작했습니다. 그러나 Google은 여기서 멈추지 않고 다음과 같은 구현을 계획하고 있습니다. Vulkan 백엔드 Android Q 또는 이후 릴리스에 탑재될 Skia 그래픽 엔진의 일부입니다.

이에 대한 증거는 다음에서 나온다. 논평 Google 엔지니어가 오픈 소스 Chromium Gerrit에 제출한 것입니다. 이 의견은 Android의 Google Chrome 브라우저용 Vulkan Graphics API의 향후 구현에 대한 버그 보고서를 참조한 것입니다. 의견에는 미래에 Vulkan API를 보유해야 하는 "요구사항이 있을 것"이라고 명시되어 있습니다. "[Android] 프레임워크가 Vulkan을 사용하기 시작할 때 Android WebView를 지원합니다. 화이."


Android의 그래픽 렌더링

배경 지식을 위해 Skia는 Google Chrome, Chrome OS, Android, Flutter 및 기타 주요 프로젝트에서 사용되는 오픈 소스 2D 그래픽 엔진입니다. Skia는 Android 초기 버전에서 렌더링을 위해 사용되는 그래픽 렌더링 엔진입니다. 보다 그리고 캔버스 (대부분의 앱에서 UI를 구축하고 그리는 데 사용되는 클래스입니다.) Android 3.0 Honeycomb은 Skia를 HWUI로 부분적으로 대체했습니다. 캔버스 명령을 하드웨어 가속 OpenGL 명령으로 변환하지만 2D Skia 그래픽 라이브러리는 여전히 경로와 같은 일부 영역에서 사용되었습니다. 래스터화. 동시에 Google은 Skia용 OpenGL 백엔드도 만들었습니다. 결과적으로 일부 그래픽 호출은 Skia 라이브러리로 이루어지고 다른 그래픽 호출은 OpenGL 백엔드로 이동하게 됩니다. 그래픽 아키텍처를 정리하기 위해 Google은 이제 HWUI가 하드웨어 가속 OpenGL 백엔드와 통신하여 UI 렌더링을 수행하는 Skia와 통신하기로 결정했습니다. 결과적으로 UI 프레임워크에 대한 그래픽 호출은 두 경로가 아닌 하나의 경로를 따르게 됩니다.

여러분 중 일부는 Android 8.0 Oreo의 초기 개발자 미리보기에 있는 "GPU 렌더러 설정"이라는 개발자 옵션을 기억하실 것입니다. 이 개발자 옵션을 사용하면 HWUI가 Skia 및 하드웨어 가속 OpenGL 백엔드를 UI 프레임워크용 GPU 렌더러로 사용하도록 강제할 수 있습니다. 이 동작이 이제 기본값이므로 개발자 옵션이 제거되었습니다.

Android O 개발자 미리 보기의 "GPU 렌더러 설정" 개발자 옵션

그래픽 렌더링을 개선하기 위한 Google의 다음 조치는 OpenGL 하드웨어 가속 백엔드에서 Vulkan 하드웨어 가속 백엔드로 전환하는 것입니다. 이는 전혀 예상치 못한 움직임이 아니며 논리적인 진행이지만, Android에서 그래픽 렌더링을 개선하기 위한 작업이 진행되고 있는 것을 보니 반갑습니다. 이번 조치로 Android의 모든 지연 원인이 해결되지는 않지만 CPU에서 수행되는 처리 시간을 줄여 프레임 렌더링 시간을 줄여야 합니다. 이 작업이 진행 중인 작업(Android P에서는 아직 완료되지 않음)이라는 점을 고려하면 Android Q 또는 향후 다른 Android 릴리스와 함께 출시될 것으로 예상됩니다.


Vulkan Graphics API를 사용하여 UI 렌더링 미리보기

실제로 Android P에서 Skia용 Vulkan 백엔드를 테스트하는 것이 가능합니다. Android가 Skia Vulkan 파이프라인을 사용하도록 강제로 설정할 수 있는 디버그 매개변수가 있습니다. /system/build.prop에 다음 줄을 추가한 후 간단히 재부팅하세요.

debug.hwui.renderer=skiavk

Android Oreo를 실행하는 기기에 이 줄을 추가하면 충돌이 발생하므로 권장하지 않습니다. Android P에서는 기기가 이 플래그로 부팅되지만 현재로서는 꽤 버그가 많습니다. Google Pixel Launcher는 대부분 배경을 렌더링하지 못하고, 설정의 애니메이션 비디오가 로드되지 않으며, 상태 표시줄과 알림에 몇 가지 그래픽 결함이 있습니다. 그 외에 대부분의 앱, 심지어 YouTube 동영상과 Doodle Jump와 같은 게임도 정상적으로 로드되는 것 같습니다.

XDA 인정 개발자에게 많은 감사를 드립니다. luca020400 이 기사를 작성하는 데 도움을 주시고, 분해된 libhwui.so 코드를 보여주는 스크린샷을 제공해주시고, Vulkan 백엔드를 테스트하기 위한 디버그 플래그를 제공해 주셔서 감사합니다.


출처 1: Talkin' Treble: Android 엔지니어가 조각화와의 전쟁에서 승리하는 방법 [아르스테크니카]

소스 2: Android 그래픽 파이프라인: 버튼에서 프레임 버퍼까지 [inovex 블로그]

출처 3: 스키아 홈페이지 [Google]

출처 4: Romain Guy, Android 그래픽 및 Kotlin @ Google의 댓글 [레딧]