Почему плоскости наложения могут быть менее эффективными, чем композиция GL?

Я читал этот URL-адрес, чтобы понять поверхностный отражатель.

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

При этом блок ниже я не могу понять. Было бы здорово, если бы кто-нибудь объяснил на примере.

Плоскости наложения могут быть менее эффективными, чем композиция GL, когда на экране ничего не меняется. Это особенно верно, когда содержимое наложения имеет прозрачные пиксели, а перекрывающиеся слои смешиваются друг с другом. В таких случаях HWC может запросить композицию GLES для некоторых или всех слоев и сохранить объединенный буфер. Если SurfaceFlinger возвращает запрос на объединение того же набора буферов, HWC может продолжать отображать ранее составленный рабочий буфер. Это может увеличить срок службы батареи бездействующего устройства.


person DrunkenMaster    schedule 25.09.2017    source источник


Ответы (1)


Представьте, что вы компонуете две плоскости.

Если вы используете плоскости наложения контроллера дисплея, то каждый выходной кадр, отсканированный на панель, будет считывать две плоскости.

Если вы используете композицию GPU, то первый кадр после изменения будет дороже:

  • GPU читает две плоскости
  • GPU пишет одну плоскость
  • Контроллер дисплея считывает одну плоскость

... поэтому четыре набора доступа к памяти, а не два. Однако, если при следующем сканировании ничего не изменится, вы можете пропустить этап композиции графического процессора и просто попросить контроллер дисплея прочитать ранее скомпонованный буфер:

  • Контроллер дисплея считывает одну плоскость

... что экономит один кадр, считанный во время сканирования, по сравнению с постоянным использованием плоскостей наложения.

person solidpixel    schedule 25.09.2017