Skip to content

panfrost: Use native, Gallium-free blit pipeline for LOAD_OP_LOAD on Midgard

Alyssa Rosenzweig requested to merge alyssa/mesa:blit8 into master

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 MSAA MSAA loads implemented.

Even so, I'd like some review from @bbrezillon at this stage.

Edited by Alyssa Rosenzweig

Merge request reports