From cff1cd36aa64b0713c068d82380bd6554984fa67 Mon Sep 17 00:00:00 2001 From: Tony Barbour Date: Mon, 16 May 2016 15:47:56 -0600 Subject: demos: Make sure shaderClipDistance is available before requesting Change-Id: Id0b58d54a553fce4914ddc1097f1e1c8ac3c337f --- demos/tri.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/demos/tri.c b/demos/tri.c index 1c80a22b..789ec2bd 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -199,6 +199,7 @@ struct demo { VkDevice device; VkQueue queue; VkPhysicalDeviceProperties gpu_props; + VkPhysicalDeviceFeatures gpu_features; VkQueueFamilyProperties *queue_props; uint32_t graphics_queue_node_index; @@ -2161,8 +2162,7 @@ static void demo_init_vk(struct demo *demo) { demo->queue_props); assert(demo->queue_count >= 1); - VkPhysicalDeviceFeatures features; - vkGetPhysicalDeviceFeatures(demo->gpu, &features); + vkGetPhysicalDeviceFeatures(demo->gpu, &demo->gpu_features); // Graphics queue and MemMgr queue can be separate. // TODO: Add support for separate queues, including synchronization, @@ -2180,9 +2180,12 @@ static void demo_init_device(struct demo *demo) { .queueCount = 1, .pQueuePriorities = queue_priorities}; - VkPhysicalDeviceFeatures features = { - .shaderClipDistance = VK_TRUE, - }; + + VkPhysicalDeviceFeatures features; + memset(&features, 0, sizeof(features)); + if (demo->gpu_features.shaderClipDistance) { + features.shaderClipDistance = VK_TRUE; + } VkDeviceCreateInfo device = { .sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, -- cgit v1.2.3