Galaxy S6: Vulkan graphical artifacts after VkRenderpass switch

I’m trying to optimize application, so I use MSAA only when camera is moving very slowly or is stopped. So I created 2 render passes, 2 sets of pipelines and frame buffers: with multisampling and without it. Each frame I use only one of them. Everything works fine on on all devices I’ve test except one: SM-G920F with Mali-T760.

What happens: after every MSAA frame there are parts of non-MSAA frames which are NOT updated at all. These parts are formed with rectangular tiles. They are always located in large polygons filled with one color. When I move camera such a way that something else should be drawn in these tiles, they are immediately updated.

What I think: it seems that Mali-T760 does some kind of caching which doesn’t support this render pass switching. Why? It doesn’t update some tiles of image as if it expects that these tiles contain something rendered in non-MSAA render pass. But my MSAA render pass replaced contents of these tiles so actual content of tiles is not equal to expected.

I tried to report this bug to Arm, but they answered that I should report it to the phone vendor. Arm answer:

"Sorry to tell you that we can only provided support to Mali-licensed customers. If you are working for a Mali’s licensed customer, please kindly use your company’s email address instead.

I’d like to provide some basic ideas based on your experiments. From your description, it seems that this issue is related with TE feature :

If your app runs well on all other Mali platforms (including T830) but T760, one suggestion is to contact the phone vendor to see if there is an updated driver for you."

I updated drivers on the device but it didn’t help.

You can try running your app on the newer models of the Samsung Galaxy S-series lineup, like the Samsung Galaxy S20.

Since Galaxy S6 is more than five years old, it is highly unlikely that you will get a software update patch for your issue.