tu: Initial implementation of VK_EXT_inline_uniform_block

This is a trivial implementation where we just insert a UBO descriptor
pointing to the actual data and then treat it as a normal UBO everywhere
else. In theory an indirect CP_LOAD_STATE would be more efficient than
ldc.k to preload inline uniform blocks to constants. However we will
always need the UBO descriptor anyway, even if we lower the limits
enough to always be able to preload them, because with variable pointers
we may have a pointer that could be to either an inline uniform block or
regular uniform block. So, using an indirect CP_LOAD_STATE should be an
optimization on top of this.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17960>
This commit is contained in:
Connor Abbott
2022-07-26 12:25:30 +02:00
committed by Marge Bot
parent 15f3274ea6
commit 201851a3d1
6 changed files with 273 additions and 54 deletions

View File

@@ -485,7 +485,7 @@ Vulkan 1.3 -- all DONE: anv, radv, lvp
VK_EXT_4444_formats DONE (anv, lvp, radv, tu, v3dv, vn)
VK_EXT_extended_dynamic_state DONE (anv, lvp, radv, tu, vn)
VK_EXT_extended_dynamic_state2 DONE (anv, lvp, radv, tu, vn)
VK_EXT_inline_uniform_block DONE (anv, lvp, radv, v3dv, vn)
VK_EXT_inline_uniform_block DONE (anv, lvp, radv, tu, v3dv, vn)
VK_EXT_pipeline_creation_cache_control DONE (anv, lvp, radv, tu, v3dv, vn)
VK_EXT_pipeline_creation_feedback DONE (anv, lvp, radv, tu, v3dv, vn)
VK_EXT_private_data DONE (anv, lvp, pvr, radv, tu, v3dv, vn)