Exemplo n.º 1
0
		public static void Setup(IntPtr VkInstance) {
			if (!EnableDebug)
				return;

			var CreateDebugReportCallback = Utils.GetInstanceProcAddress<PFN_vkCreateDebugReportCallbackEXT>(VkInstance);
			var DestroyDebugReportCallback = Utils.GetInstanceProcAddress<PFN_vkDestroyDebugReportCallbackEXT>(VkInstance);
			var dbgBreakCallback = Utils.GetInstanceProcAddress<PFN_vkDebugReportMessageEXT>(VkInstance);

			VkDebugReportCallbackCreateInfoEXT dbgCreateInfo = new VkDebugReportCallbackCreateInfoEXT();
			dbgCreateInfo.sType = VkStructureType.VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT;
			dbgCreateInfo.pNext = null;
			dbgCreateInfo.pfnCallback = MessageCallback;
			dbgCreateInfo.pUserData = null;
			dbgCreateInfo.flags = (uint)VkDebugReportFlagBitsEXT.VK_DEBUG_REPORT_ERROR_BIT_EXT |
				(uint)VkDebugReportFlagBitsEXT.VK_DEBUG_REPORT_WARNING_BIT_EXT;

			IntPtr debugReportCallback;
			CreateDebugReportCallback(VkInstance, ref dbgCreateInfo, IntPtr.Zero, &debugReportCallback).Throw();
		}
		public static extern VkResult vkCreateDebugReportCallbackEXT(VkInstance instance,
			ref VkDebugReportCallbackCreateInfoEXT pCreateInfo, ref  VkAllocationCallbacks pAllocator,
			VkDebugReportCallbackEXT* pCallback);