Vulkan: Always write to swapchain alpha channel
This fixes an issue with the "Ragnarok M: Eternal Love" game, which
uses a GL_RGB8 format for its window, which is actually backed by a
GL_RGBA8 format (a.k.a. "emulated alpha"). The game does no explicit
clear per frame. Therefore, ANGLE selects a render pass
loadOp=DONT_CARE, which leaves the alpha channel undefined (0.0 on a
Pixel 4 XL). That causes SurfaceFlinger to show (blend or alternate
vsyncs) what should have been covered up by the game (e.g. the Android
launcher and live wallpaper).
The solution is to prevent loadOp=DONT_CARE for emulated alpha.
Test: ClearTest.ChangeFramebufferAttachmentFromRGBAtoRGB
Test: dEQP-GLES2.functional.fbo.render.stencil_clear.tex2d_rgb_stencil_index8
Bug: b/180139027
Change-Id: Ied97b57c93d41326cb3294ff246691e09f316791
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2704949Reviewed-by:
Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by:
Tim Van Patten <timvp@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
Showing
Please
register
or
sign in
to comment