瀏覽代碼

LinuxBSD now compiles without vulkan/x11.

Fabio Alessandrelli 4 年之前
父節點
當前提交
8594613f94

+ 1 - 0
SConstruct

@@ -123,6 +123,7 @@ opts.Add(BoolVariable("use_lto", "Use link-time optimization", False))
 opts.Add(BoolVariable("deprecated", "Enable deprecated features", True))
 opts.Add(BoolVariable("minizip", "Enable ZIP archive support using minizip", True))
 opts.Add(BoolVariable("xaudio2", "Enable the XAudio2 audio driver", False))
+opts.Add(BoolVariable("vulkan", "Enable the vulkan video driver", True))
 opts.Add("custom_modules", "A list of comma-separated directory paths containing custom modules to build.", "")
 opts.Add(BoolVariable("custom_modules_recursive", "Detect custom modules recursively for each specified path.", True))
 

+ 1 - 3
drivers/SCsub

@@ -23,10 +23,8 @@ SConscript("coremidi/SCsub")
 SConscript("winmidi/SCsub")
 
 # Graphics drivers
-if env["platform"] != "javascript":
+if env["vulkan"]:
     SConscript("vulkan/SCsub")
-else:
-    SConscript("dummy/SCsub")
 
 # Core dependencies
 SConscript("png/SCsub")

+ 0 - 5
drivers/dummy/SCsub

@@ -1,5 +0,0 @@
-#!/usr/bin/env python
-
-Import("env")
-
-env.add_source_files(env.drivers_sources, "*.cpp")

+ 0 - 109
drivers/dummy/texture_loader_dummy.cpp

@@ -1,109 +0,0 @@
-/*************************************************************************/
-/*  texture_loader_dummy.cpp                                             */
-/*************************************************************************/
-/*                       This file is part of:                           */
-/*                           GODOT ENGINE                                */
-/*                      https://godotengine.org                          */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.                 */
-/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).   */
-/*                                                                       */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the       */
-/* "Software"), to deal in the Software without restriction, including   */
-/* without limitation the rights to use, copy, modify, merge, publish,   */
-/* distribute, sublicense, and/or sell copies of the Software, and to    */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions:                                             */
-/*                                                                       */
-/* The above copyright notice and this permission notice shall be        */
-/* included in all copies or substantial portions of the Software.       */
-/*                                                                       */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
-/*************************************************************************/
-
-#include "texture_loader_dummy.h"
-
-#include "core/os/file_access.h"
-#include "core/string/print_string.h"
-
-#include <string.h>
-
-RES ResourceFormatDummyTexture::load(const String &p_path, const String &p_original_path, Error *r_error, bool p_use_sub_threads, float *r_progress, CacheMode p_cache_mode) {
-	unsigned int width = 8;
-	unsigned int height = 8;
-
-	//We just use some format
-	Image::Format fmt = Image::FORMAT_RGB8;
-	int rowsize = 3 * width;
-
-	Vector<uint8_t> dstbuff;
-
-	dstbuff.resize(rowsize * height);
-
-	uint8_t **row_p = memnew_arr(uint8_t *, height);
-
-	for (unsigned int i = 0; i < height; i++) {
-		row_p[i] = 0; //No colors any more, I want them to turn black
-	}
-
-	memdelete_arr(row_p);
-
-	Ref<Image> img = memnew(Image(width, height, 0, fmt, dstbuff));
-
-	Ref<ImageTexture> texture = memnew(ImageTexture);
-	texture->create_from_image(img);
-
-	if (r_error)
-		*r_error = OK;
-
-	return texture;
-}
-
-void ResourceFormatDummyTexture::get_recognized_extensions(List<String> *p_extensions) const {
-	p_extensions->push_back("bmp");
-	p_extensions->push_back("dds");
-	p_extensions->push_back("exr");
-	p_extensions->push_back("jpeg");
-	p_extensions->push_back("jpg");
-	p_extensions->push_back("hdr");
-	p_extensions->push_back("pkm");
-	p_extensions->push_back("png");
-	p_extensions->push_back("pvr");
-	p_extensions->push_back("svg");
-	p_extensions->push_back("svgz");
-	p_extensions->push_back("tga");
-	p_extensions->push_back("webp");
-}
-
-bool ResourceFormatDummyTexture::handles_type(const String &p_type) const {
-	return ClassDB::is_parent_class(p_type, "Texture2D");
-}
-
-String ResourceFormatDummyTexture::get_resource_type(const String &p_path) const {
-	String extension = p_path.get_extension().to_lower();
-	if (
-			extension == "bmp" ||
-			extension == "dds" ||
-			extension == "exr" ||
-			extension == "jpeg" ||
-			extension == "jpg" ||
-			extension == "hdr" ||
-			extension == "pkm" ||
-			extension == "png" ||
-			extension == "pvr" ||
-			extension == "svg" ||
-			extension == "svgz" ||
-			extension == "tga" ||
-			extension == "webp") {
-		return "ImageTexture";
-	}
-
-	return "";
-}

+ 0 - 47
drivers/dummy/texture_loader_dummy.h

@@ -1,47 +0,0 @@
-/*************************************************************************/
-/*  texture_loader_dummy.h                                               */
-/*************************************************************************/
-/*                       This file is part of:                           */
-/*                           GODOT ENGINE                                */
-/*                      https://godotengine.org                          */
-/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.                 */
-/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).   */
-/*                                                                       */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the       */
-/* "Software"), to deal in the Software without restriction, including   */
-/* without limitation the rights to use, copy, modify, merge, publish,   */
-/* distribute, sublicense, and/or sell copies of the Software, and to    */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions:                                             */
-/*                                                                       */
-/* The above copyright notice and this permission notice shall be        */
-/* included in all copies or substantial portions of the Software.       */
-/*                                                                       */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
-/*************************************************************************/
-
-#ifndef TEXTURE_LOADER_DUMMY_H
-#define TEXTURE_LOADER_DUMMY_H
-
-#include "core/io/resource_loader.h"
-#include "scene/resources/texture.h"
-
-class ResourceFormatDummyTexture : public ResourceFormatLoader {
-public:
-	virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE);
-	virtual void get_recognized_extensions(List<String> *p_extensions) const;
-	virtual bool handles_type(const String &p_type) const;
-	virtual String get_resource_type(const String &p_path) const;
-
-	virtual ~ResourceFormatDummyTexture() {}
-};
-
-#endif // TEXTURE_LOADER_DUMMY_H

+ 1 - 0
platform/javascript/detect.py

@@ -53,6 +53,7 @@ def get_flags():
         # in this platform. For the available networking methods, the browser
         # manages TLS.
         ("module_mbedtls_enabled", False),
+        ("vulkan", False),
     ]
 
 

+ 14 - 8
platform/linuxbsd/SCsub

@@ -5,21 +5,27 @@ Import("env")
 from platform_methods import run_in_subprocess
 import platform_linuxbsd_builders
 
-common_x11 = [
+common_linuxbsd = [
     "crash_handler_linuxbsd.cpp",
     "os_linuxbsd.cpp",
     "joypad_linux.cpp",
-    "context_gl_x11.cpp",
-    "detect_prime_x11.cpp",
-    "display_server_x11.cpp",
-    "vulkan_context_x11.cpp",
-    "key_mapping_x11.cpp",
 ]
 
+if "x11" in env and env["x11"]:
+    common_linuxbsd += [
+        "context_gl_x11.cpp",
+        "detect_prime_x11.cpp",
+        "display_server_x11.cpp",
+        "key_mapping_x11.cpp",
+    ]
+
+if "vulkan" in env and env["vulkan"]:
+    common_linuxbsd.append("vulkan_context_x11.cpp")
+
 if "udev" in env and env["udev"]:
-    common_x11.append("libudev-so_wrap.c")
+    common_linuxbsd.append("libudev-so_wrap.c")
 
-prog = env.add_program("#bin/godot", ["godot_linuxbsd.cpp"] + common_x11)
+prog = env.add_program("#bin/godot", ["godot_linuxbsd.cpp"] + common_linuxbsd)
 
 if env["debug_symbols"] and env["separate_debug_symbols"]:
     env.AddPostAction(prog, run_in_subprocess(platform_linuxbsd_builders.make_debug_linuxbsd))

+ 18 - 9
platform/linuxbsd/detect.py

@@ -73,6 +73,7 @@ def get_opts():
         BoolVariable("use_msan", "Use LLVM compiler memory sanitizer (MSAN)", False),
         BoolVariable("pulseaudio", "Detect and use PulseAudio", True),
         BoolVariable("udev", "Use udev for gamepad connection callbacks", True),
+        BoolVariable("x11", "Enable X11 display", True),
         BoolVariable("debug_symbols", "Add debugging symbols to release/release_debug builds", True),
         BoolVariable("separate_debug_symbols", "Create a separate file containing debugging symbols", False),
         BoolVariable("touch", "Enable touch events", True),
@@ -362,18 +363,26 @@ def configure(env):
         env.ParseConfig("pkg-config zlib --cflags --libs")
 
     env.Prepend(CPPPATH=["#platform/linuxbsd"])
-    env.Append(CPPDEFINES=["X11_ENABLED", "UNIX_ENABLED"])
+
+    if env["x11"]:
+        if not env["vulkan"]:
+            print("Error: X11 support requires vulkan=yes")
+            env.Exit(255)
+        env.Append(CPPDEFINES=["X11_ENABLED"])
+
+    env.Append(CPPDEFINES=["UNIX_ENABLED"])
     env.Append(CPPDEFINES=[("_FILE_OFFSET_BITS", 64)])
 
-    env.Append(CPPDEFINES=["VULKAN_ENABLED"])
-    if not env["builtin_vulkan"]:
-        env.ParseConfig("pkg-config vulkan --cflags --libs")
-    if not env["builtin_glslang"]:
-        # No pkgconfig file for glslang so far
-        env.Append(LIBS=["glslang", "SPIRV"])
+    if env["vulkan"]:
+        env.Append(CPPDEFINES=["VULKAN_ENABLED"])
+        if not env["builtin_vulkan"]:
+            env.ParseConfig("pkg-config vulkan --cflags --libs")
+        if not env["builtin_glslang"]:
+            # No pkgconfig file for glslang so far
+            env.Append(LIBS=["glslang", "SPIRV"])
 
-    # env.Append(CPPDEFINES=['OPENGL_ENABLED'])
-    env.Append(LIBS=["GL"])
+        # env.Append(CPPDEFINES=['OPENGL_ENABLED'])
+        env.Append(LIBS=["GL"])
 
     env.Append(LIBS=["pthread"])