[Mesa-dev] [PATCH] anv: check support for enabled features in vkCreateDevice()

Lionel Landwerlin lionel.g.landwerlin at intel.com
Fri Jun 30 09:48:45 UTC 2017


Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at gmail.com>

On 30/06/17 07:59, Samuel Iglesias Gonsálvez wrote:
>  From Vulkan spec, 4.2.1. "Device Creation":
>
>    "vkCreateDevice verifies that extensions and features requested in
>     the ppEnabledExtensionNames and pEnabledFeatures members of
>     pCreateInfo, respectively, are supported by the implementation."
>
> Signed-off-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
> ---
>
> I wrote this patch for the driver but similar code could probably go
> to the Vulkan Loader as well.
>
>   src/intel/vulkan/anv_device.c | 13 +++++++++++++
>   1 file changed, 13 insertions(+)
>
> diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
> index 63f37308c1..df977f394e 100644
> --- a/src/intel/vulkan/anv_device.c
> +++ b/src/intel/vulkan/anv_device.c
> @@ -1130,6 +1130,19 @@ VkResult anv_CreateDevice(
>            return vk_error(VK_ERROR_EXTENSION_NOT_PRESENT);
>      }
>   
> +   /* Check enabled features */
> +   if (pCreateInfo->pEnabledFeatures) {
> +      VkPhysicalDeviceFeatures supported_features;
> +      anv_GetPhysicalDeviceFeatures(physicalDevice, &supported_features);
> +      VkBool32 *supported_feature = (VkBool32 *)&supported_features;
> +      VkBool32 *enabled_feature = (VkBool32 *)pCreateInfo->pEnabledFeatures;
> +      unsigned num_features = sizeof(VkPhysicalDeviceFeatures) / sizeof(VkBool32);
> +      for (uint32_t i = 0; i < num_features; i++) {
> +         if (enabled_feature[i] && !supported_feature[i])
> +            return vk_error(VK_ERROR_FEATURE_NOT_PRESENT);
> +      }
> +   }
> +
>      device = vk_alloc2(&physical_device->instance->alloc, pAllocator,
>                          sizeof(*device), 8,
>                          VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);




More information about the mesa-dev mailing list