mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	Remove asm.js support from HTML5 platform
Since WebGL 2.0 is required, requiring WebAssembly support as well has little impact on compatibility.
This commit is contained in:
		
							parent
							
								
									63283eca55
								
							
						
					
					
						commit
						ddf21ca016
					
				
					 7 changed files with 25 additions and 148 deletions
				
			
		|  | @ -35,8 +35,6 @@ | |||
| 
 | ||||
| #define EXPORT_TEMPLATE_WEBASSEMBLY_RELEASE "webassembly_release.zip" | ||||
| #define EXPORT_TEMPLATE_WEBASSEMBLY_DEBUG "webassembly_debug.zip" | ||||
| #define EXPORT_TEMPLATE_ASMJS_RELEASE "javascript_release.zip" | ||||
| #define EXPORT_TEMPLATE_ASMJS_DEBUG "javascript_debug.zip" | ||||
| 
 | ||||
| class EditorExportPlatformJavaScript : public EditorExportPlatform { | ||||
| 
 | ||||
|  | @ -47,18 +45,11 @@ class EditorExportPlatformJavaScript : public EditorExportPlatform { | |||
| 	bool runnable_when_last_polled; | ||||
| 
 | ||||
| 	void _fix_html(Vector<uint8_t> &p_html, const Ref<EditorExportPreset> &p_preset, const String &p_name, bool p_debug); | ||||
| 	void _fix_fsloader_js(Vector<uint8_t> &p_js, const String &p_pack_name, uint64_t p_pack_size); | ||||
| 
 | ||||
| public: | ||||
| 	enum Target { | ||||
| 		TARGET_WEBASSEMBLY, | ||||
| 		TARGET_ASMJS | ||||
| 	}; | ||||
| 
 | ||||
| 	virtual void get_preset_features(const Ref<EditorExportPreset> &p_preset, List<String> *r_features); | ||||
| 
 | ||||
| 	virtual void get_export_options(List<ExportOption> *r_options); | ||||
| 	virtual bool get_option_visibility(const String &p_option, const Map<StringName, Variant> &p_options) const; | ||||
| 
 | ||||
| 	virtual String get_name() const; | ||||
| 	virtual String get_os_name() const; | ||||
|  | @ -90,17 +81,9 @@ void EditorExportPlatformJavaScript::_fix_html(Vector<uint8_t> &p_html, const Re | |||
| 	String str_export; | ||||
| 	Vector<String> lines = str_template.split("\n"); | ||||
| 
 | ||||
| 	int memory_mb; | ||||
| 	if (p_preset->get("options/target").operator int() != TARGET_ASMJS) | ||||
| 		// WebAssembly allows memory growth, so start with a reasonable default
 | ||||
| 		memory_mb = 1 << 4; | ||||
| 	else | ||||
| 		memory_mb = 1 << (p_preset->get("options/memory_size").operator int() + 5); | ||||
| 
 | ||||
| 	for (int i = 0; i < lines.size(); i++) { | ||||
| 
 | ||||
| 		String current_line = lines[i]; | ||||
| 		current_line = current_line.replace("$GODOT_TOTAL_MEMORY", itos(memory_mb * 1024 * 1024)); | ||||
| 		current_line = current_line.replace("$GODOT_BASENAME", p_name); | ||||
| 		current_line = current_line.replace("$GODOT_HEAD_INCLUDE", p_preset->get("html/head_include")); | ||||
| 		current_line = current_line.replace("$GODOT_DEBUG_ENABLED", p_debug ? "true" : "false"); | ||||
|  | @ -129,8 +112,6 @@ void EditorExportPlatformJavaScript::get_preset_features(const Ref<EditorExportP | |||
| 
 | ||||
| void EditorExportPlatformJavaScript::get_export_options(List<ExportOption> *r_options) { | ||||
| 
 | ||||
| 	r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "options/target", PROPERTY_HINT_ENUM, "WebAssembly,asm.js"), TARGET_WEBASSEMBLY)); | ||||
| 	r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "options/memory_size", PROPERTY_HINT_ENUM, "32 MB,64 MB,128 MB,256 MB,512 MB,1 GB"), 3)); | ||||
| 	r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/s3tc"), false)); | ||||
| 	r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/etc"), true)); | ||||
| 	r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/etc2"), false)); | ||||
|  | @ -139,14 +120,6 @@ void EditorExportPlatformJavaScript::get_export_options(List<ExportOption> *r_op | |||
| 	r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/debug", PROPERTY_HINT_GLOBAL_FILE, "zip"), "")); | ||||
| } | ||||
| 
 | ||||
| bool EditorExportPlatformJavaScript::get_option_visibility(const String &p_option, const Map<StringName, Variant> &p_options) const { | ||||
| 
 | ||||
| 	if (p_option == "options/memory_size") { | ||||
| 		return p_options["options/target"].operator int() == TARGET_ASMJS; | ||||
| 	} | ||||
| 	return true; | ||||
| } | ||||
| 
 | ||||
| String EditorExportPlatformJavaScript::get_name() const { | ||||
| 
 | ||||
| 	return "HTML5"; | ||||
|  | @ -166,17 +139,10 @@ bool EditorExportPlatformJavaScript::can_export(const Ref<EditorExportPreset> &p | |||
| 
 | ||||
| 	r_missing_templates = false; | ||||
| 
 | ||||
| 	if (p_preset->get("options/target").operator int() == TARGET_WEBASSEMBLY) { | ||||
| 		if (find_export_template(EXPORT_TEMPLATE_WEBASSEMBLY_RELEASE) == String()) | ||||
| 			r_missing_templates = true; | ||||
| 		else if (find_export_template(EXPORT_TEMPLATE_WEBASSEMBLY_DEBUG) == String()) | ||||
| 			r_missing_templates = true; | ||||
| 	} else { | ||||
| 		if (find_export_template(EXPORT_TEMPLATE_ASMJS_RELEASE) == String()) | ||||
| 			r_missing_templates = true; | ||||
| 		else if (find_export_template(EXPORT_TEMPLATE_ASMJS_DEBUG) == String()) | ||||
| 			r_missing_templates = true; | ||||
| 	} | ||||
| 	if (find_export_template(EXPORT_TEMPLATE_WEBASSEMBLY_RELEASE) == String()) | ||||
| 		r_missing_templates = true; | ||||
| 	else if (find_export_template(EXPORT_TEMPLATE_WEBASSEMBLY_DEBUG) == String()) | ||||
| 		r_missing_templates = true; | ||||
| 
 | ||||
| 	return !r_missing_templates; | ||||
| } | ||||
|  | @ -197,17 +163,10 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese | |||
| 
 | ||||
| 	if (template_path == String()) { | ||||
| 
 | ||||
| 		if (p_preset->get("options/target").operator int() == TARGET_WEBASSEMBLY) { | ||||
| 			if (p_debug) | ||||
| 				template_path = find_export_template(EXPORT_TEMPLATE_WEBASSEMBLY_DEBUG); | ||||
| 			else | ||||
| 				template_path = find_export_template(EXPORT_TEMPLATE_WEBASSEMBLY_RELEASE); | ||||
| 		} else { | ||||
| 			if (p_debug) | ||||
| 				template_path = find_export_template(EXPORT_TEMPLATE_ASMJS_DEBUG); | ||||
| 			else | ||||
| 				template_path = find_export_template(EXPORT_TEMPLATE_ASMJS_RELEASE); | ||||
| 		} | ||||
| 		if (p_debug) | ||||
| 			template_path = find_export_template(EXPORT_TEMPLATE_WEBASSEMBLY_DEBUG); | ||||
| 		else | ||||
| 			template_path = find_export_template(EXPORT_TEMPLATE_WEBASSEMBLY_RELEASE); | ||||
| 	} | ||||
| 
 | ||||
| 	if (template_path != String() && !FileAccess::exists(template_path)) { | ||||
|  | @ -270,12 +229,6 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese | |||
| 		} else if (file == "godot.wasm") { | ||||
| 
 | ||||
| 			file = p_path.get_file().get_basename() + ".wasm"; | ||||
| 		} else if (file == "godot.asm.js") { | ||||
| 
 | ||||
| 			file = p_path.get_file().get_basename() + ".asm.js"; | ||||
| 		} else if (file == "godot.mem") { | ||||
| 
 | ||||
| 			file = p_path.get_file().get_basename() + ".mem"; | ||||
| 		} | ||||
| 
 | ||||
| 		String dst = p_path.get_base_dir().plus_file(file); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Leon Krause
						Leon Krause