[Mesa-dev] [PATCH] radv: check enabled device features.

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Mon Jul 24 06:46:58 UTC 2017


Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

On Mon, Jul 24, 2017 at 8:18 AM, Dave Airlie <airlied at gmail.com> wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> The spec says we should return VK_ERROR_FEATURE_NOT_PRESENT.
>
> Ported from anv.
>
> Fixes CTS test dEQP-VK.api.device_init.create_device_unsupported_features
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
>  src/amd/vulkan/radv_device.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>
> diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
> index 4b11a4f..8a690d8 100644
> --- a/src/amd/vulkan/radv_device.c
> +++ b/src/amd/vulkan/radv_device.c
> @@ -1045,6 +1045,19 @@ VkResult radv_CreateDevice(
>                         return vk_error(VK_ERROR_EXTENSION_NOT_PRESENT);
>         }
>
> +       /* Check enabled features */
> +       if (pCreateInfo->pEnabledFeatures) {
> +               VkPhysicalDeviceFeatures supported_features;
> +               radv_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);
> --
> 2.9.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list