anv: Re-arrange physical_device_init
authorJason Ekstrand <jason@jlekstrand.net>
Sat, 18 Jan 2020 05:48:12 +0000 (23:48 -0600)
committerMarge Bot <eric+marge@anholt.net>
Mon, 20 Jan 2020 22:08:52 +0000 (22:08 +0000)
This commit simply moves fetching the device info and checking if ANV
supports the device a bit higher up.  This way we fail earlier and it'll
make error checking easier in the next commit.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3461>

src/intel/vulkan/anv_device.c

index b0ff56aa801aa842f7a2647749676c2a1872d038..509f92a503486f3619828f195ae635b4e5e4db64 100644 (file)
@@ -345,44 +345,48 @@ anv_physical_device_init(struct anv_physical_device *device,
    if (fd < 0)
       return vk_error(VK_ERROR_INCOMPATIBLE_DRIVER);
 
-   device->_loader_data.loaderMagic = ICD_LOADER_MAGIC;
-   device->instance = instance;
-
-   assert(strlen(path) < ARRAY_SIZE(device->path));
-   snprintf(device->path, ARRAY_SIZE(device->path), "%s", path);
-
-   if (!gen_get_device_info_from_fd(fd, &device->info)) {
+   struct gen_device_info devinfo;
+   if (!gen_get_device_info_from_fd(fd, &devinfo)) {
       result = vk_error(VK_ERROR_INCOMPATIBLE_DRIVER);
       goto fail;
    }
-   device->no_hw = device->info.no_hw;
-
-   if (getenv("INTEL_NO_HW") != NULL)
-      device->no_hw = true;
-
-   device->pci_info.domain = drm_device->businfo.pci->domain;
-   device->pci_info.bus = drm_device->businfo.pci->bus;
-   device->pci_info.device = drm_device->businfo.pci->dev;
-   device->pci_info.function = drm_device->businfo.pci->func;
 
-   device->name = gen_get_device_name(device->info.chipset_id);
+   const char *device_name = gen_get_device_name(devinfo.chipset_id);
 
-   if (device->info.is_haswell) {
+   if (devinfo.is_haswell) {
       intel_logw("Haswell Vulkan support is incomplete");
-   } else if (device->info.gen == 7 && !device->info.is_baytrail) {
+   } else if (devinfo.gen == 7 && !devinfo.is_baytrail) {
       intel_logw("Ivy Bridge Vulkan support is incomplete");
-   } else if (device->info.gen == 7 && device->info.is_baytrail) {
+   } else if (devinfo.gen == 7 && devinfo.is_baytrail) {
       intel_logw("Bay Trail Vulkan support is incomplete");
-   } else if (device->info.gen >= 8 && device->info.gen <= 11) {
+   } else if (devinfo.gen >= 8 && devinfo.gen <= 11) {
       /* Gen8-11 fully supported */
-   } else if (device->info.gen == 12) {
+   } else if (devinfo.gen == 12) {
       intel_logw("Vulkan is not yet fully supported on gen12");
    } else {
       result = vk_errorfi(instance, NULL, VK_ERROR_INCOMPATIBLE_DRIVER,
-                          "Vulkan not yet supported on %s", device->name);
+                          "Vulkan not yet supported on %s", device_name);
       goto fail;
    }
 
+   device->_loader_data.loaderMagic = ICD_LOADER_MAGIC;
+   device->instance = instance;
+
+   assert(strlen(path) < ARRAY_SIZE(device->path));
+   snprintf(device->path, ARRAY_SIZE(device->path), "%s", path);
+
+   device->info = devinfo;
+   device->name = device_name;
+
+   device->no_hw = device->info.no_hw;
+   if (getenv("INTEL_NO_HW") != NULL)
+      device->no_hw = true;
+
+   device->pci_info.domain = drm_device->businfo.pci->domain;
+   device->pci_info.bus = drm_device->businfo.pci->bus;
+   device->pci_info.device = drm_device->businfo.pci->dev;
+   device->pci_info.function = drm_device->businfo.pci->func;
+
    device->cmd_parser_version = -1;
    if (device->info.gen == 7) {
       device->cmd_parser_version =