Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit d5b1690f authored by Yiwei Zhang's avatar Yiwei Zhang
Browse files

swapchain: support RGBX backed opaque swapchain for offscreen

When a swapchain is connected to SurfaceFlinger, it makes sense to only
advertise INHERIT bit on Android. However, for offscreen scenarios, e.g.
a video encoder surface, that currently shuts the door for preferring
RGBX over RGBA for the requested VK_FORMAT_R8G8B8A8_* format, ending up
with suboptimal performance when using Vulkan swapchain.

This change advertises the OPAQUE bit for offscreen scenarios, and adds
the code path to prefer RGBX as the backing storage when OPAQUE is used.

This bridges a gap against EGL where GL_RGB8 is used for such encoder
surface, which internally picks RGBX. This casts no regressions for
anything currently going to the display via KHR_swapchain.

Bug: b/328125698, b/328122401
Test: below tests pass with ANGLE on Zork device (AMD chromebook)
      1. android.media.encoder.cts.SurfaceEncodeTimestampTest
      2. android.media.codec.cts.EncodeDecodeTest
         - testEncodeDecodeVideoFromSurfaceToPersistentSurface
         - testEncodeDecodeVideoFromSurfaceToPersistentSurfaceNdk
Change-Id: I82a7ac741dc70a3e3b5fdd4f7499c937c4dce6d8
parent 959f5184
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment