dzn: Changes to descriptor set dirty flag handling
authorJesse Natalie <jenatali@microsoft.com>
Fri, 7 Apr 2023 23:44:53 +0000 (16:44 -0700)
committerMarge Bot <emma+marge@anholt.net>
Mon, 10 Apr 2023 18:43:12 +0000 (18:43 +0000)
commit0c2848f44afec69cc9efbaba3441be5c396d9a43
tree66707bcc5bbc938f5dce688b497df999e76fdbea
parent01ccba0d8ef14da333272a8d03b32fb45fb6a392
dzn: Changes to descriptor set dirty flag handling

The scenario of:
* App binds multiple descriptor sets
* App binds a pipeline that uses a subset of them
* App binds a pipeline that uses more of them

was broken. We were only copying the descriptors for the accessible
subset before, but then clearing all dirty bits, so simply changing
the pipeline wouldn't result in more descriptors being copied.

When running not-bindless, the right thing to do is to copy *all*
descriptors if we're copying any. When running bindless, each parameter
is set separately, and more importantly, *can't* be set on the command
list if the root signature can't access them.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22371>
src/microsoft/vulkan/dzn_cmd_buffer.c
src/microsoft/vulkan/dzn_pipeline.c
src/microsoft/vulkan/dzn_private.h