1// Copyright (c) 2017-2023, The Khronos Group Inc.
2// Copyright (c) 2017-2019 Valve Corporation
3// Copyright (c) 2017-2019 LunarG, Inc.
4//
5// SPDX-License-Identifier: Apache-2.0 OR MIT
6//
7// Initial Author: Ryan Pavlik <ryan.pavlik@collabora.com>
8//
9
10#pragma once
11
12#include "loader_logger.hpp"
13
14#include <openxr/openxr.h>
15
16#include <memory>
17
18//! Standard Error logger, on by default. Disabled with environment variable XR_LOADER_DEBUG = "none".
19std::unique_ptr<LoaderLogRecorder> MakeStdErrLoaderLogRecorder(void* user_data);
20
21//! Standard Output logger used with XR_LOADER_DEBUG environment variable.
22std::unique_ptr<LoaderLogRecorder> MakeStdOutLoaderLogRecorder(void* user_data, XrLoaderLogMessageSeverityFlags flags);
23
24#ifdef __ANDROID__
25//! Android liblog ("logcat") logger
26std::unique_ptr<LoaderLogRecorder> MakeLogcatLoaderLogRecorder();
27#endif
28
29// Debug Utils logger used with XR_EXT_debug_utils
30std::unique_ptr<LoaderLogRecorder> MakeDebugUtilsLoaderLogRecorder(const XrDebugUtilsMessengerCreateInfoEXT* create_info,
31 XrDebugUtilsMessengerEXT debug_messenger);
32
33#ifdef _WIN32
34//! Win32 debugger output
35std::unique_ptr<LoaderLogRecorder> MakeDebuggerLoaderLogRecorder(void* user_data);
36#endif
37
38// TODO: Add other Derived classes:
39// - FileLoaderLogRecorder - During/after xrCreateInstance
40// - PipeLoaderLogRecorder? - During/after xrCreateInstance
41