diff options
author | Jason Ekstrand <[email protected]> | 2020-01-17 23:48:12 -0600 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-01-20 22:08:52 +0000 |
commit | e963e151d83072e97ddb1cf7b729bc404f7737e8 (patch) | |
tree | d5d2bf42b1f92a356992c45987c1efbeaf6d1dc5 /src | |
parent | 3ecfba388a01d5ceb32fdd8122c5cf14e174aa3c (diff) |
anv: Re-arrange physical_device_init
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 <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3461>
Diffstat (limited to 'src')
-rw-r--r-- | src/intel/vulkan/anv_device.c | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index b0ff56aa801..509f92a5034 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -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 = |