]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/vkxlib/vulkancontext.cpp
Go back to using vector to store devices in a Hub
[libs/gui.git] / source / graphics / vkxlib / vulkancontext.cpp
index 3b5476b123119e98c5861bb04bf2f0125ab0281e..f25349974c8adfd3d47b1bb44ad5a1a9737d2b4f 100644 (file)
@@ -3,6 +3,7 @@
 #define VK_USE_PLATFORM_XLIB_KHR
 #include <vulkan/vulkan.h>
 #include <msp/core/application.h>
+#include <msp/debug/debugapi.h>
 #include <msp/io/print.h>
 #include "display_private.h"
 #include "vulkancontext.h"
@@ -63,7 +64,8 @@ string vulkan_error::get_error_message(unsigned code)
 VulkanOptions::VulkanOptions():
        enable_validation(false),
        enable_debug_report(false),
-       enable_geometry_shader(false)
+       enable_geometry_shader(false),
+       enable_tessellation_shader(false)
 { }
 
 
@@ -199,6 +201,7 @@ void VulkanContext::platform_init(const VulkanOptions &opts)
 
                VkPhysicalDeviceFeatures features = { };
                features.geometryShader = (opts.enable_geometry_shader ? VK_TRUE : VK_FALSE);
+               features.tessellationShader = (opts.enable_tessellation_shader ? VK_TRUE : VK_FALSE);
 
                VkDeviceCreateInfo device_create_info = { };
                device_create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
@@ -254,9 +257,11 @@ VulkanContext::Private::Private():
        debug_report_callback(0)
 { }
 
-VkBool32 VulkanContext::Private::debug_report_func(VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, uint64_t, size_t, int32_t, const char *, const char *message, void *)
+VkBool32 VulkanContext::Private::debug_report_func(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT, uint64_t, size_t, int32_t, const char *, const char *message, void *)
 {
        IO::print(IO::cerr, "%s\n", message);
+       if((flags&VK_DEBUG_REPORT_ERROR_BIT_EXT) && Debug::check_debugger()==Debug::GDB)
+               Debug::debug_break();
        return VK_FALSE;
 }