#ifndef KYTY_COMMON_EMULATOR_CONFIG_H_ #define KYTY_COMMON_EMULATOR_CONFIG_H_ #include "common/common.h" #include "common/subsystems.h" #include #include #include namespace Config { KYTY_SUBSYSTEM_DEFINE(Config); enum class ShaderOptimizationType { None, Size, Performance }; enum class ShaderLogDirection { Silent, Console, File }; enum class ProfilerDirection { None, Network }; enum class OutputDirection { Silent, Console, File }; using Keymap = std::vector; constexpr uint32_t DEFAULT_CONSOLE_LANGUAGE = 1; constexpr uint32_t MAX_CONSOLE_LANGUAGE = 29; struct ConfigOptions { uint32_t screen_width = 1280; uint32_t screen_height = 720; bool fullscreen_enabled = false; uint32_t vblank_frequency = 60; uint32_t console_language = DEFAULT_CONSOLE_LANGUAGE; bool vulkan_validation_enabled = false; bool shader_validation_enabled = false; ShaderOptimizationType shader_optimization_type = ShaderOptimizationType::None; ShaderLogDirection shader_log_direction = ShaderLogDirection::Silent; std::filesystem::path shader_log_folder = "_Shaders"; bool command_buffer_dump_enabled = false; std::filesystem::path command_buffer_dump_folder = "_Buffers"; bool graphics_debug_dump_enabled = false; OutputDirection printf_direction = OutputDirection::Console; std::filesystem::path printf_output_file = "_kyty.txt"; ProfilerDirection profiler_direction = ProfilerDirection::None; bool spirv_debug_printf_enabled = false; bool renderdoc_enabled = false; bool readback_linear_images = false; #if KYTY_PLATFORM == KYTY_PLATFORM_WINDOWS bool red_zone_protection_enabled = false; #endif Keymap keymap; }; void Load(const ConfigOptions& cfg); uint32_t GetScreenWidth(); uint32_t GetScreenHeight(); bool FullscreenEnabled(); uint32_t GetVblankFrequency(); uint32_t GetConsoleLanguage(); bool VulkanValidationEnabled(); bool ShaderValidationEnabled(); ShaderOptimizationType GetShaderOptimizationType(); ShaderLogDirection GetShaderLogDirection(); std::filesystem::path GetShaderLogFolder(); bool CommandBufferDumpEnabled(); std::filesystem::path GetCommandBufferDumpFolder(); bool GraphicsDebugDumpEnabled(); OutputDirection GetPrintfDirection(); std::filesystem::path GetPrintfOutputFile(); ProfilerDirection GetProfilerDirection(); bool SpirvDebugPrintfEnabled(); bool RenderDocEnabled(); bool ReadbackLinearImagesEnabled(); #if KYTY_PLATFORM == KYTY_PLATFORM_WINDOWS bool RedZoneProtectionEnabled(); #endif const Keymap& GetKeymap(); } // namespace Config #endif /* KYTY_COMMON_EMULATOR_CONFIG_H_ */