zink: implement threaded context
this includes: * async buffer mapping/replacement * async queue submission * async (threaded) gallium flush handling the main churn here is from handling async gallium flushes, which involves creating multiple gallium fences (zink_tc_fence) for each zink fence (zink_fence). a tc fence may begin waiting for completion at any time, even before the zink_fence has had its cmdbuf(s) submitted, so handling this type of desync ends up needing almost a complete rewrite of the existing queue architecture Reviewed-by:Dave Airlie <airlied@redhat.com> Part-of: <mesa/mesa!9935>
- src/gallium/drivers/zink/zink_batch.c 34 additions, 6 deletionssrc/gallium/drivers/zink/zink_batch.c
- src/gallium/drivers/zink/zink_batch.h 21 additions, 0 deletionssrc/gallium/drivers/zink/zink_batch.h
- src/gallium/drivers/zink/zink_blit.c 4 additions, 4 deletionssrc/gallium/drivers/zink/zink_blit.c
- src/gallium/drivers/zink/zink_clear.c 2 additions, 2 deletionssrc/gallium/drivers/zink/zink_clear.c
- src/gallium/drivers/zink/zink_context.c 160 additions, 71 deletionssrc/gallium/drivers/zink/zink_context.c
- src/gallium/drivers/zink/zink_context.h 3 additions, 0 deletionssrc/gallium/drivers/zink/zink_context.h
- src/gallium/drivers/zink/zink_descriptors.c 2 additions, 2 deletionssrc/gallium/drivers/zink/zink_descriptors.c
- src/gallium/drivers/zink/zink_fence.c 103 additions, 20 deletionssrc/gallium/drivers/zink/zink_fence.c
- src/gallium/drivers/zink/zink_fence.h 28 additions, 4 deletionssrc/gallium/drivers/zink/zink_fence.h
- src/gallium/drivers/zink/zink_query.c 7 additions, 3 deletionssrc/gallium/drivers/zink/zink_query.c
- src/gallium/drivers/zink/zink_resource.c 200 additions, 89 deletionssrc/gallium/drivers/zink/zink_resource.c
- src/gallium/drivers/zink/zink_resource.h 4 additions, 3 deletionssrc/gallium/drivers/zink/zink_resource.h
- src/gallium/drivers/zink/zink_screen.c 3 additions, 1 deletionsrc/gallium/drivers/zink/zink_screen.c
- src/gallium/drivers/zink/zink_screen.h 3 additions, 0 deletionssrc/gallium/drivers/zink/zink_screen.h
- src/gallium/drivers/zink/zink_surface.c 2 additions, 2 deletionssrc/gallium/drivers/zink/zink_surface.c