d3d12: split up root parameter update and set

SRV descriptors can require state-transitions before it's legal to set
them on the command-list. We used to just set them right away, and get
away with is, because the validator didn't verify this because we used
to flag the parameters as volatile.

Now that we don't, we trigger validation errors when setting a root
parameter that needs a transition first.

So let's split up the logic a bit, so we can prepare the tables, then do
the transision, and finally set the tables. We do this for all tables
instead of just the SRVs, just because it makes the logic a bit easier to
follow. We leave root constants alone, because they will never require
this, and doing them late would just compilcate things.

Fixes: 12082905 ("d3d12: Sets all SRV descriptors as data-static")
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <!12187>
35 jobs for !12187 with d3d12-descriptor-fix in 24 minutes and 9 seconds (queued for 8 seconds)
latest detached
Status Name Job ID Coverage
  Sanity
passed sanity #12460185

00:00:31

 
  Container
passed debian/arm_build #12460189
aarch64

00:00:24

passed debian/x86_build-base #12460186

00:00:22

passed debian/x86_test-base #12460188

00:00:35

passed fedora/x86_build #12460191

00:00:47

passed windows_build_vs2019 #12460193
windows shell 1809 mesa

00:00:11

 
  Container 2
passed debian/android_build #12460202

00:00:41

passed debian/i386_build #12460197

00:00:19

passed debian/ppc64el_build #12460199

00:00:47

passed debian/s390x_build #12460201

00:00:18

passed debian/x86_build #12460196

00:00:24

passed debian/x86_test-gl #12460204

00:00:48

passed debian/x86_test-vk #12460206

00:00:34

passed kernel+rootfs_amd64 #12460207

00:00:30

passed kernel+rootfs_arm64 #12460209
aarch64

00:00:49

passed kernel+rootfs_armhf #12460211
aarch64

00:00:12

 
  Build X86 64
passed debian-clang #12460223

00:11:27

passed debian-clover #12460225

00:04:13

passed debian-clover-testing #12460216

00:01:01

passed debian-gallium #12460218

00:12:57

passed debian-release #12460220

00:05:01

passed debian-testing #12460213

00:01:22

passed debian-testing-asan #12460215

00:02:25

passed debian-vulkan #12460226

00:03:11

passed fedora-release #12460221

00:03:04

 
  Build Misc
passed debian-android #12460230

00:00:33

passed debian-arm64 #12460233
aarch64

00:01:24

passed debian-arm64-asan #12460235
aarch64

00:02:55

passed debian-arm64-build-test #12460237
aarch64

00:01:25

passed debian-armhf #12460231
aarch64

00:01:44

passed debian/arm_test #12460228

00:00:43

passed debian-i386 #12460242

00:01:55

passed debian-mingw32-x86_64 #12460243

00:01:06

passed windows-vs2019 #12460239
windows docker 1809 mesa

00:06:40

 
  Layered Backends
passed test-d3d12-windows #12460245
windows docker 1809 mesa

00:05:24