From: Emma Anholt Date: Wed, 3 May 2023 21:15:44 +0000 (-0700) Subject: nvk: Add support for probing as a platform device. X-Git-Tag: upstream/23.3.3~3847 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9ffbd53bb7780ffd6a0be55391a9751b5c21c7c1;p=platform%2Fupstream%2Fmesa.git nvk: Add support for probing as a platform device. The driver now comes up on gk20a (Jetson TK1). Part-of: --- diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index 96e0fb3..46daab4 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -580,11 +580,33 @@ nvk_create_drm_physical_device(struct vk_instance *_instance, struct nvk_instance *instance = (struct nvk_instance *)_instance; VkResult result; - if (!(drm_device->available_nodes & (1 << DRM_NODE_RENDER)) || - drm_device->bustype != DRM_BUS_PCI || - drm_device->deviceinfo.pci->vendor_id != NVIDIA_VENDOR_ID) + if (!(drm_device->available_nodes & (1 << DRM_NODE_RENDER))) return VK_ERROR_INCOMPATIBLE_DRIVER; + switch (drm_device->bustype) { + case DRM_BUS_PCI: + if (drm_device->deviceinfo.pci->vendor_id != NVIDIA_VENDOR_ID) + return VK_ERROR_INCOMPATIBLE_DRIVER; + break; + + case DRM_BUS_PLATFORM: { + const char *compat_prefix = "nvidia,"; + bool found = false; + for (int i = 0; drm_device->deviceinfo.platform->compatible[i] != NULL; i++) { + if (strncmp(drm_device->deviceinfo.platform->compatible[0], compat_prefix, strlen(compat_prefix)) == 0) { + found = true; + break; + } + } + if (!found) + return VK_ERROR_INCOMPATIBLE_DRIVER; + break; + } + + default: + return VK_ERROR_INCOMPATIBLE_DRIVER; + } + struct nouveau_ws_device *ndev = nouveau_ws_device_new(drm_device); if (!ndev) return vk_error(instance, VK_ERROR_INCOMPATIBLE_DRIVER);