panfrost: Rewrite scoreboarding routines

Graphics / Mesa 3D Graphics Library / Mesa - Alyssa Rosenzweig [] - 18 February 2020 13:45 EST

Rather than manipulating job descriptor headers as fat pointers (slow) and using fancy manipulation functions for programatically building the tree in arbitrary orders (slow and complicated) and then having to do a topological sort at runtime every frame (slow) which requires traversing said headers in GPU memory (slow!)... we finally know enough about the hardware to just get things right the first time, or second for next_job linking. So rip out all that code and replace it with a much better routine to create, upload, and queue a job all in one (since now it's the same operation essentially - which is much better for memory access patterns, by the way) and most everything falls into place gracefully according to the rules we've set out. Even wallpapering isn't
*so* terrible if you just... move that one little... giant... hack out of sight... ahem....

panfrost_scoreboard_link_batch is no longer a bottleneck, mostly because it no longer exists :-)

88323d1ba0c panfrost: Rewrite scoreboarding routines
src/gallium/drivers/panfrost/pan_compute.c | 16 +-
src/gallium/drivers/panfrost/pan_context.c | 46 +--
src/gallium/drivers/panfrost/pan_context.h | 3 +-
src/gallium/drivers/panfrost/pan_fragment.c | 4 +-
src/gallium/drivers/panfrost/pan_job.c | 34 +-
src/gallium/drivers/panfrost/pan_job.h | 79 ++---
src/gallium/drivers/panfrost/pan_scoreboard.c | 429 ++++----------------------
7 files changed, 117 insertions(+), 494 deletions(-)


  • Share