mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Custom textures rewrite (#6452)
* common: Add thread pool from yuzu * Is really useful for asynchronous operations like shader compilation and custom textures, will be used in following PRs * core: Improve ImageInterface * Provide a default implementation so frontends don't have to duplicate code registering the lodepng version * Add a dds version too which we will use in the next commit * rasterizer_cache: Rewrite custom textures * There's just too much to talk about here, look at the PR description for more details * rasterizer_cache: Implement basic pack configuration file * custom_tex_manager: Flip dumped textures * custom_tex_manager: Optimize custom texture hashing * If no convertions are needed then we can hash the decoded data directly removing the needed for duplicate decode * custom_tex_manager: Implement asynchronous texture loading * The file loading and decoding is offloaded into worker threads, while the upload itself still occurs in the main thread to avoid having to manage shared contexts * Address review comments * custom_tex_manager: Introduce custom material support * video_core: Move custom textures to separate directory * Also split the files to make the code cleaner * gl_texture_runtime: Generate mipmaps for material * custom_tex_manager: Prevent memory overflow when preloading * externals: Add dds-ktx as submodule * string_util: Return vector from SplitString * No code benefits from passing it as an argument * custom_textures: Use json config file * gl_rasterizer: Only bind material for unit 0 * Address review comments
This commit is contained in:
		
							parent
							
								
									d16dce6d99
								
							
						
					
					
						commit
						06f3c90cfb
					
				
					 87 changed files with 2154 additions and 544 deletions
				
			
		|  | @ -216,13 +216,12 @@ GatewayCheat::GatewayCheat(std::string name_, std::vector<CheatLine> cheat_lines | |||
| GatewayCheat::GatewayCheat(std::string name_, std::string code, std::string comments_) | ||||
|     : name(std::move(name_)), comments(std::move(comments_)) { | ||||
| 
 | ||||
|     std::vector<std::string> code_lines; | ||||
|     Common::SplitString(code, '\n', code_lines); | ||||
|     const auto code_lines = Common::SplitString(code, '\n'); | ||||
| 
 | ||||
|     std::vector<CheatLine> temp_cheat_lines; | ||||
|     for (std::size_t i = 0; i < code_lines.size(); ++i) { | ||||
|         if (!code_lines[i].empty()) | ||||
|             temp_cheat_lines.emplace_back(code_lines[i]); | ||||
|     for (const std::string& line : code_lines) { | ||||
|         if (!line.empty()) | ||||
|             temp_cheat_lines.emplace_back(line); | ||||
|     } | ||||
|     cheat_lines = std::move(temp_cheat_lines); | ||||
| } | ||||
|  | @ -464,10 +463,10 @@ std::string GatewayCheat::ToString() const { | |||
|         result += EnabledText; | ||||
|         result += '\n'; | ||||
|     } | ||||
|     std::vector<std::string> comment_lines; | ||||
|     Common::SplitString(comments, '\n', comment_lines); | ||||
|     for (const auto& comment_line : comment_lines) | ||||
|     const auto comment_lines = Common::SplitString(comments, '\n'); | ||||
|     for (const auto& comment_line : comment_lines) { | ||||
|         result += "*" + comment_line + '\n'; | ||||
|     } | ||||
|     result += GetCode() + '\n'; | ||||
|     return result; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue