aboutsummaryrefslogtreecommitdiffstats
path: root/libavutil/hwcontext_vulkan.c
diff options
context:
space:
mode:
authorLynne <dev@lynne.ee>2024-12-03 18:11:16 +0900
committerLynne <dev@lynne.ee>2024-12-23 04:25:08 +0900
commit7239be07bea6cce5a9e09d5dc7ebb1a14e34121f (patch)
treea2ec9c2f0b3ce03f29366b37801d093924219cd0 /libavutil/hwcontext_vulkan.c
parent4ca2b86ed54fbd0ffcfd74fd4e8bd3055bd12dcf (diff)
downloadffmpeg-7239be07bea6cce5a9e09d5dc7ebb1a14e34121f.tar.gz
vulkan_decode: use a single execution pool
Originally, the decoder had a single execution pool, with one execution context per thread. Execution pools were always intended to be thread-safe, as long as there were enough execution contexts in the pool to satisfy all threads. Due to synchronization issues, the threading part was removed at some point, and, for decoding, each thread had its own execution pool. Having a single execution pool per context is hacky, not to mention wasteful. Most importantly, we *cannot* associate single shaders across multiple execution pools for a single application. This means that we cannot use shaders to either apply film grain, or use this framework for software-defined decoders. The recent commits added threading capabilities back to the execution pool, and the number of contexts in each pool was increased. This was done with the assumption that the execution pool was singular, which it was not. This led to increased parallelism and number of frames in flight, which is taxing on memory. This commit finally restores proper threading behaviour. The validation layer has isses that are reported and addressed in the earlier commit.
Diffstat (limited to 'libavutil/hwcontext_vulkan.c')
0 files changed, 0 insertions, 0 deletions