public void EnableValidation(DebugUtilsCallback d, DebugUtilsMessageTypeFlag flags = DebugUtilsMessageTypeFlag.VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | DebugUtilsMessageTypeFlag.VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT | DebugUtilsMessageTypeFlag.VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT)
        {
            if (vkCreateDebugReportCallbackEXT == null)
            {
                throw new InvalidOperationException("vkCreateDebugReportCallbackEXT is not available, possibly you might be missing VK_EXT_debug_report extension. Try to enable it when creating the Instance.");
            }

            debugUtilsCreateInfo = new DebugUtilsMessengerCreateInfoEXT()
            {
                Flags           = 0,
                messageSeverity = DebugUtilsMessageSeverityFlag.VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | DebugUtilsMessageSeverityFlag.VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | DebugUtilsMessageSeverityFlag.VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT,
                messageType     = flags,
                sType           = StructureType.DEBUGUTILSMESSENGERCREATEINFOEXT,
                pfnUserCallback = Marshal.GetFunctionPointerForDelegate(d),
            };


            unsafe
            {
                fixed(DebugUtilsMessengerCreateInfoEXT *Debug = &debugUtilsCreateInfo)
                fixed(UInt64 * Callback = &aaaa)
                {
                    vkCreateDebugUtilsCallbackExt.Invoke(this.m, Debug, null, Callback);
                }
            }
        }
        private Bool32 ValidationCallback(DebugUtilsMessageSeverityFlag severity, DebugUtilsMessageTypeFlag myType, DebugUtilsMessengerCallbackData myData, IntPtr myUserData)
        {
            //if(severity == DebugUtilsMessageSeverityFlag.VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)
            Debug.WriteLine(Marshal.PtrToStringAnsi(myData.pMessage));

            //	Debug.WriteLine($"{severity}: {Marshal.PtrToStringAnsi(myData.)}");
            return(true);
        }