2017-09-25 10 views
0

나는 서페이스 핑거를 이해하기 위해이 URL을 읽었습니다.왜 오버레이 평면이 GL 합성보다 비효율적 일 수 있습니까?

https://source.android.com/devices/graphics/arch-sf-hwc

하고, 이해 할 수없는 오전 아래 블록. 누군가 예를 들어 설명하면 좋을 것입니다.

화면이 바뀌고있을 때 오버레이 플레인이 GL 구성보다 효율적이지 않을 수 있습니다. 이것은 특히 오버레이에 투명 픽셀이 있고 오버랩 레이어가 으로 블렌드 된 경우에 특히 적용됩니다. 이러한 경우 HWC는 일부 또는 모든 레이어에 대해 GLES 구성을 요청하고 합성 된 버퍼를 유지할 수 있습니다. SurfaceFlinger가 같은 집합의 버퍼를 합성하도록 요청하면 HWC는 이전에 합성 한 스크래치 버퍼를 계속 표시 할 수 있습니다. 이는 유휴 장치의 배터리 수명을 향상시킬 수 있습니다.

답변

2

두 비행기를 합성한다고 상상해보십시오.

디스플레이 컨트롤러 오버레이 평면을 사용하면 패널로 스캔 된 모든 출력 프레임이 두 개의 평면을 읽습니다. 당신은 GPU 구성을 사용하는 경우

는 변경 후 첫 번째 프레임은 더 비싼 :

  • GPU는
  • GPU 디스플레이 컨트롤러 읽기
  • 하나 개의 평면을 기록 두 평면을 읽어 하나의 평면

... 단지 두 개가 아닌 네 세트의 메모리 액세스. 아무것도 다음 스캔 아웃 변경되지 않습니다하지만 경우에 당신은 GPU 구성 단계를 건너 뛰고 디스플레이 컨트롤러는 이전에 합성 버퍼를 읽을 수 있습니다 :

  • 디스플레이 컨트롤러가 읽고 하나 개의 평면

을 ...하는 항상 오버레이 플레인을 사용하는 것과 비교하여 스캔하는 동안 한 프레임을 읽지 않아도됩니다.