panfrost: Use native, Gallium-free blit pipeline for LOAD_OP_LOAD on Midgard
Replaces the u_blitter pile of hacks for wallpapering (resolves) with a Gallium-agnostic, hardware-specific technique instead. The net result of this is slightly more efficient, taking advantage of a few features that can't get routed through Gallium, but more importantly paves the way for cleanly implementing MRT resolves which the old solution could fundamentally not handle -- as well, all of this would need to be implemented for LOAD_OP_LOAD
support in Vulkan, so we might as well get this right now in case anyone writes a Midgard VK driver. So this MR implements resolves for MRT surfaces as well as single render-targets, and includes Z/S resolves as well, enabling us to fix the remaining gles2 failures on T760/T860
WIP because:
-
Code is still a mess -
This breaks Bifrost. But Bifrost doesn't actually need any of these hacks, it has proper native preload that actually works. Just need to get that wired up. -
Still need to delete the old u_blitter code path once Bifrost is ported over and it's totally unused.Code still used for Bifrost. Native bf path later. -
This doesn't handle partial_update yet because I don't understand the current impl very well and don't have a good way to test it.Partial update implemented. -
Probably some buggy interactions with MSAAMSAA loads implemented.
Even so, I'd like some review from @bbrezillon at this stage.