All VAAPI functions implemented in libva are thread-safe. For any VAAPI function that requires the implementation of a backend (e.g. hardware driver), the backend must ensure that its implementation is also thread-safe. If the backend implementation of a VAAPI function is not thread-safe then this should be considered as a bug against the backend implementation.
It is assumed that none of the VAAPI functions will be called from signal handlers.
Thread-safety in this context means that when VAAPI is being called by multiple concurrent threads, it will not crash or hang the OS, and VAAPI internal data structures will not be corrupted. When multiple threads are operating on the same VAAPI objects, it is the application's responsibility to synchronize these operations in order to generate the expected results. For example, using a single VAContext from multiple threads may generate unexpected results.
I think it's safe to implement Send + Sync for cros_libva::Display, although I haven't yet tested it.
Libva mentions the following:
I think it's safe to implement Send + Sync for
cros_libva::Display
, although I haven't yet tested it.