mirror of
				https://github.com/PancakeTAS/lsfg-vk.git
				synced 2025-10-30 07:01:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
#include <vulkan/vulkan_core.h>
 | 
						|
 | 
						|
#include <filesystem>
 | 
						|
#include <chrono>
 | 
						|
#include <cstddef>
 | 
						|
#include <string>
 | 
						|
 | 
						|
namespace Config {
 | 
						|
 | 
						|
    /// Global lsfg-vk configuration.
 | 
						|
    struct GlobalConfiguration {
 | 
						|
        /// Path to Lossless.dll.
 | 
						|
        std::string dll;
 | 
						|
        /// Whether FP16 is force-disabled
 | 
						|
        bool no_fp16{false};
 | 
						|
 | 
						|
        /// Path to the configuration file.
 | 
						|
        std::filesystem::path config_file;
 | 
						|
        /// File timestamp of the configuration file
 | 
						|
        std::chrono::time_point<std::chrono::file_clock> timestamp;
 | 
						|
    };
 | 
						|
 | 
						|
    /// Per-application lsfg-vk configuration.
 | 
						|
    struct GameConfiguration {
 | 
						|
        /// The frame generation muliplier
 | 
						|
        size_t multiplier{2};
 | 
						|
        /// The internal flow scale factor
 | 
						|
        float flowScale{1.0F};
 | 
						|
        /// Whether performance mode is enabled
 | 
						|
        bool performance{false};
 | 
						|
        /// Whether HDR is enabled
 | 
						|
        bool hdr{false};
 | 
						|
 | 
						|
        /// Experimental flag for overriding the synchronization method.
 | 
						|
        VkPresentModeKHR e_present{ VK_PRESENT_MODE_FIFO_KHR };
 | 
						|
 | 
						|
    };
 | 
						|
 | 
						|
    /// Global configuration.
 | 
						|
    extern GlobalConfiguration globalConf;
 | 
						|
    /// Currently active configuration.
 | 
						|
    extern std::optional<GameConfiguration> currentConf;
 | 
						|
 | 
						|
    ///
 | 
						|
    /// Read the configuration file while preserving the previous configuration
 | 
						|
    /// in case of an error.
 | 
						|
    ///
 | 
						|
    /// @param file The path to the configuration file.
 | 
						|
    /// @param name The preset to activate
 | 
						|
    ///
 | 
						|
    /// @throws std::runtime_error if an error occurs while loading the configuration file.
 | 
						|
    ///
 | 
						|
    void updateConfig(
 | 
						|
        const std::string& file,
 | 
						|
        const std::pair<std::string, std::string>& name
 | 
						|
    );
 | 
						|
 | 
						|
    ///
 | 
						|
    /// Check if the configuration file is still up-to-date
 | 
						|
    ///
 | 
						|
    /// @return Whether the configuration is up-to-date or not.
 | 
						|
    ///
 | 
						|
    bool checkStatus();
 | 
						|
 | 
						|
}
 |