]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/vkxlib/vulkancontext.cpp
Adjust Vulkan debug message output
[libs/gui.git] / source / graphics / vkxlib / vulkancontext.cpp
index 34c0c511f749c6757820f1121893e2417117efbf..3b5476b123119e98c5861bb04bf2f0125ab0281e 100644 (file)
@@ -62,7 +62,8 @@ string vulkan_error::get_error_message(unsigned code)
 
 VulkanOptions::VulkanOptions():
        enable_validation(false),
-       enable_debug_report(false)
+       enable_debug_report(false),
+       enable_geometry_shader(false)
 { }
 
 
@@ -120,7 +121,7 @@ void VulkanContext::platform_init(const VulkanOptions &opts)
                {
                        VkDebugReportCallbackCreateInfoEXT debug_report_create_info = { };
                        debug_report_create_info.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;
-                       debug_report_create_info.flags = VK_DEBUG_REPORT_WARNING_BIT_EXT|VK_DEBUG_REPORT_ERROR_BIT_EXT|VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT;
+                       debug_report_create_info.flags = VK_DEBUG_REPORT_WARNING_BIT_EXT|VK_DEBUG_REPORT_ERROR_BIT_EXT|VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT|VK_DEBUG_REPORT_INFORMATION_BIT_EXT;
                        debug_report_create_info.pfnCallback = &Private::debug_report_func;
                        debug_report_create_info.pUserData = this;
 
@@ -175,7 +176,10 @@ void VulkanContext::platform_init(const VulkanOptions &opts)
                                continue;
 
                        if(supported)
-                               priv->physical_device = phys_devices[0];
+                       {
+                               priv->physical_device = phys_device;
+                               break;
+                       }
                }
 
                if(!priv->physical_device)
@@ -193,12 +197,16 @@ void VulkanContext::platform_init(const VulkanOptions &opts)
                extensions.clear();
                extensions.push_back("VK_KHR_swapchain");
 
+               VkPhysicalDeviceFeatures features = { };
+               features.geometryShader = (opts.enable_geometry_shader ? VK_TRUE : VK_FALSE);
+
                VkDeviceCreateInfo device_create_info = { };
                device_create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
                device_create_info.queueCreateInfoCount = 1;
                device_create_info.pQueueCreateInfos = &queue_create_info;
                device_create_info.enabledExtensionCount = extensions.size();
                device_create_info.ppEnabledExtensionNames = extensions.data();
+               device_create_info.pEnabledFeatures = &features;
 
                result = f.vkCreateDevice(priv->physical_device, &device_create_info, 0, &priv->device);
                if(result!=VK_SUCCESS)
@@ -246,9 +254,9 @@ VulkanContext::Private::Private():
        debug_report_callback(0)
 { }
 
-VkBool32 VulkanContext::Private::debug_report_func(VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT obj_type, uint64_t obj_id, size_t, int32_t, const char *layer_prefix, const char *message, void *)
+VkBool32 VulkanContext::Private::debug_report_func(VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, uint64_t, size_t, int32_t, const char *, const char *message, void *)
 {
-       IO::print(IO::cerr, "Vulkan debug report from %s: Object %d of type %d: %s\n", layer_prefix, obj_type, obj_id, message);
+       IO::print(IO::cerr, "%s\n", message);
        return VK_FALSE;
 }