nouveau: import libdrm_nouveau
Most of the code is copied as is, but there are a couple of changes:
- drop pre nvif code (which means we require at least linux 4.4 now)
- nouveau_list -> list_head
- pthread_mutex_t -> simple_mtx_t
- nvif_unwrap removed
- reworked object allocation UAPI calls (I really really don't like the current code and don't even want to have it inside the git history
🙃 ) - moved assignments out of if statements
- nouveau_object_mthd -> nouveau_device_info
Most of the reworked object allocation code was copied from NVK. There are a couple of other smaller changes, mostly removing dead code or making code a bit more straight forward to follow. I hope there are no regressions but this still needs to be tested on at least those GPU archs:
-
nv30 (g73) -
nv50 (gt218) -
nvc0 (gf108) -
nve0 (gk208) -
gp100 (gp108) -
tu100 (tu102)
Things to still take care of:
-
src/gallium/winsys/nouveau/drm/nouveau.c
contains some UAPI bits missing from the kernel headers, those need to be added.
In a follow up merge requests I'm planning to support VM_BIND
as this will be required to properly fix modifiers.
Edited by Karol Herbst