diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/vulkan/anv_device.c | 26 | ||||
-rw-r--r-- | src/vulkan/anv_private.h | 2 |
2 files changed, 21 insertions, 7 deletions
diff --git a/src/vulkan/anv_device.c b/src/vulkan/anv_device.c index 9def97801c2..3ab2a245de4 100644 --- a/src/vulkan/anv_device.c +++ b/src/vulkan/anv_device.c @@ -80,7 +80,18 @@ anv_physical_device_init(struct anv_physical_device *device, "failed to get device info"); goto fail; } - + + if (device->info->gen == 7 && + !device->info->is_haswell && !device->info->is_baytrail) { + fprintf(stderr, "WARNING: Ivy Bridge Vulkan support is incomplete"); + } else if (device->info->gen == 8 && !device->info->is_cherryview) { + /* Briadwell is as fully supported as anything */ + } else { + result = vk_errorf(VK_UNSUPPORTED, + "Vulkan not yet supported on %s", device->name); + goto fail; + } + if (anv_gem_get_aperture(fd, &device->aperture_size) == -1) { result = vk_errorf(VK_ERROR_INITIALIZATION_FAILED, "failed to get aperture size: %m"); @@ -206,7 +217,7 @@ VkResult anv_CreateInstance( instance->pfnAlloc = alloc_callbacks->pfnAlloc; instance->pfnFree = alloc_callbacks->pfnFree; instance->apiVersion = pCreateInfo->pAppInfo->apiVersion; - instance->physicalDeviceCount = 0; + instance->physicalDeviceCount = -1; _mesa_locale_init(); @@ -271,13 +282,16 @@ VkResult anv_EnumeratePhysicalDevices( ANV_FROM_HANDLE(anv_instance, instance, _instance); VkResult result; - if (instance->physicalDeviceCount == 0) { + if (instance->physicalDeviceCount < 0) { result = anv_physical_device_init(&instance->physicalDevice, instance, "/dev/dri/renderD128"); - if (result != VK_SUCCESS) + if (result == VK_UNSUPPORTED) { + instance->physicalDeviceCount = 0; + } else if (result == VK_SUCCESS) { + instance->physicalDeviceCount = 1; + } else { return result; - - instance->physicalDeviceCount = 1; + } } /* pPhysicalDeviceCount is an out parameter if pPhysicalDevices is NULL; diff --git a/src/vulkan/anv_private.h b/src/vulkan/anv_private.h index ac3d18fdcbe..8e921afb5fb 100644 --- a/src/vulkan/anv_private.h +++ b/src/vulkan/anv_private.h @@ -437,7 +437,7 @@ struct anv_instance { PFN_vkAllocFunction pfnAlloc; PFN_vkFreeFunction pfnFree; uint32_t apiVersion; - uint32_t physicalDeviceCount; + int physicalDeviceCount; struct anv_physical_device physicalDevice; struct anv_wsi_implementation * wsi_impl[VK_PLATFORM_NUM_KHR]; |