freedreno/replay: Add WSL backend for Windows
What does this MR do and why?
Drivers for some GPUs may exist only on Windows e.g. for A690. We need replay
to work in WSL in order to test if issues are in user-space or in kernel.
Additional -a
option is introduced for WSL backend, it controls the base GPU address, which allows to replay captures from MSM or KGSL.
d3dkmthk.h
contains only non driver specific structs, private
data structs are not defined anywhere public but contain
important information for memory allocation and submissions.
Limitations:
- Same as with KGSL in WSL I allocate the whole memory in a single chunk. I'm not entirely sure the kernel supports user-space iovas.
- However here the base address space address is configurable.
- The wait for submission to be executed is done via additional IB that writes a fence.