Mesa (master): anv: check support for enabled features in vkCreateDevice()
Samuel Iglesias Gonsálvez
samuelig at kemper.freedesktop.org
Mon Jul 3 06:09:14 UTC 2017
Module: Mesa
Branch: master
Commit: 5dd96b1156e25e10d649d49377df02763fcd45a5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5dd96b1156e25e10d649d49377df02763fcd45a5
Author: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
Date: Wed Jun 28 15:52:34 2017 +0200
anv: check support for enabled features in vkCreateDevice()
>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>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at gmail.com>
---
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 cbdcc4d6d6..3dc55dbb8d 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-commit
mailing list