tu: Initial implementation of VK_EXT_graphics_pipeline_library
authorConnor Abbott <cwabbott0@gmail.com>
Fri, 26 Aug 2022 16:09:27 +0000 (18:09 +0200)
committerMarge Bot <emma+marge@anholt.net>
Wed, 21 Sep 2022 11:20:15 +0000 (11:20 +0000)
commite9f5de11d4039f3440adbdb766189d20302ac42b
treef4b90b70eefc15a33bad1d937cbf730e13ce497d
parent0a47002a65c6932359e29e2d09144a3273e275a2
tu: Initial implementation of VK_EXT_graphics_pipeline_library

Now that the state for each pipeline is split into pieces, we can mostly
implement it by stitching together the pieces. One TODO is that we could
do more to split up the pre-rast and FS commands into separate draw
states so that we have to emit less commands when fast linking,
currently we compile the variants but delay emitting the commands until
link time, but note that even the Gallium driver doesn't currently do
this. Given the strict SSO model (e.g. with separate VPC registers for
each stage) it may even be possible to do most of the linking ahead of
time with only a few fixups for corner cases.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18554>
src/freedreno/ci/freedreno-a618-fails.txt
src/freedreno/ci/freedreno-a630-asan-fails.txt
src/freedreno/ci/freedreno-a630-fails.txt
src/freedreno/ir3/ir3_shader.c
src/freedreno/vulkan/tu_descriptor_set.c
src/freedreno/vulkan/tu_descriptor_set.h
src/freedreno/vulkan/tu_device.c
src/freedreno/vulkan/tu_pipeline.c
src/freedreno/vulkan/tu_pipeline.h
src/freedreno/vulkan/tu_shader.c
src/freedreno/vulkan/tu_shader.h