gallium: add PIPE_FLUSH_DEFERRED

There are 2 uses:
- Asynchronous flushing for multithreaded drivers.
- Return a fence without flushing (mid-command-buffer fence). The driver
  can defer flushing until fence_finish is called.

This is required to make Bioshock Infinite faster, which creates
1000 fences (flushes) per frame.

Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
Marek Olšák
2016-07-15 15:44:29 +02:00
parent 4cdc482283
commit d17b35e671
3 changed files with 13 additions and 2 deletions

View File

@@ -463,6 +463,16 @@ Flushing
``flush``
PIPE_FLUSH_END_OF_FRAME: Whether the flush marks the end of frame.
PIPE_FLUSH_DEFERRED: It is not required to flush right away, but it is required
to return a valid fence. The behavior of fence_finish or any other call isn't
changed. The only side effect can be that fence_finish will wait a little
longer. No guidance is given as to how drivers should implement fence_finish
with deferred flushes. If some drivers can't do deferred flushes safely, they
should just ignore the flag.
``flush_resource``