Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
On Mon, Jul 24, 2017 at 8:18 AM, Dave Airlie <airl...@gmail.com> wrote: > From: Dave Airlie <airl...@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 <airl...@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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev