mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 07:53:26 +00:00
Update Mesa-NIR library detection and download script.
This commit is contained in:
parent
28089c40c1
commit
43e9b04f66
3 changed files with 55 additions and 25 deletions
|
@ -43,8 +43,16 @@ if env["use_pix"]:
|
|||
|
||||
# Mesa (SPIR-V to DXIL functionality).
|
||||
|
||||
mesa_dir = (env["mesa_libs"] + "/godot-mesa").replace("\\", "/")
|
||||
mesa_gen_dir = (env["mesa_libs"] + "/godot-mesa/generated").replace("\\", "/")
|
||||
mesa_libs = env["mesa_libs"]
|
||||
if env.msvc and os.path.exists(env["mesa_libs"] + "-" + env["arch"] + "-msvc"):
|
||||
mesa_libs = env["mesa_libs"] + "-" + env["arch"] + "-msvc"
|
||||
elif env["use_llvm"] and os.path.exists(env["mesa_libs"] + "-" + env["arch"] + "-llvm"):
|
||||
mesa_libs = env["mesa_libs"] + "-" + env["arch"] + "-llvm"
|
||||
elif not env["use_llvm"] and os.path.exists(env["mesa_libs"] + "-" + env["arch"] + "-gcc"):
|
||||
mesa_libs = env["mesa_libs"] + "-" + env["arch"] + "-gcc"
|
||||
|
||||
mesa_dir = (mesa_libs + "/godot-mesa").replace("\\", "/")
|
||||
mesa_gen_dir = (mesa_libs + "/godot-mesa/generated").replace("\\", "/")
|
||||
mesa_absdir = Dir(mesa_dir).abspath
|
||||
mesa_gen_absdir = Dir(mesa_dir + "/generated").abspath
|
||||
|
||||
|
|
45
misc/scripts/install_d3d12_sdk_windows.py
Normal file → Executable file
45
misc/scripts/install_d3d12_sdk_windows.py
Normal file → Executable file
|
@ -20,10 +20,7 @@ else:
|
|||
|
||||
# Mesa NIR
|
||||
# Check for latest version: https://github.com/godotengine/godot-nir-static/releases/latest
|
||||
mesa_version = "23.1.9"
|
||||
mesa_filename = "godot-nir-23.1.9.zip"
|
||||
mesa_archive = os.path.join(deps_folder, mesa_filename)
|
||||
mesa_folder = os.path.join(deps_folder, "mesa")
|
||||
mesa_version = "23.1.9-1"
|
||||
# WinPixEventRuntime
|
||||
# Check for latest version: https://www.nuget.org/api/v2/package/WinPixEventRuntime (check downloaded filename)
|
||||
pix_version = "1.0.240308001"
|
||||
|
@ -43,20 +40,34 @@ if not os.path.exists(deps_folder):
|
|||
|
||||
# Mesa NIR
|
||||
color_print(f"{Ansi.BOLD}[1/3] Mesa NIR")
|
||||
if os.path.isfile(mesa_archive):
|
||||
for arch in [
|
||||
"arm64-llvm",
|
||||
"arm64-msvc",
|
||||
"x86_32-gcc",
|
||||
"x86_32-llvm",
|
||||
"x86_32-msvc",
|
||||
"x86_64-gcc",
|
||||
"x86_64-llvm",
|
||||
"x86_64-msvc",
|
||||
]:
|
||||
mesa_filename = "godot-nir-static-" + arch + "-release.zip"
|
||||
mesa_archive = os.path.join(deps_folder, mesa_filename)
|
||||
mesa_folder = os.path.join(deps_folder, "mesa-" + arch)
|
||||
|
||||
if os.path.isfile(mesa_archive):
|
||||
os.remove(mesa_archive)
|
||||
print(f"Downloading Mesa NIR {mesa_filename} ...")
|
||||
urllib.request.urlretrieve(
|
||||
f"https://github.com/godotengine/godot-nir-static/releases/download/{mesa_version}/{mesa_filename}",
|
||||
mesa_archive,
|
||||
)
|
||||
if os.path.exists(mesa_folder):
|
||||
print(f"Removing existing local Mesa NIR installation in {mesa_folder} ...")
|
||||
shutil.rmtree(mesa_folder)
|
||||
print(f"Extracting Mesa NIR {mesa_filename} to {mesa_folder} ...")
|
||||
shutil.unpack_archive(mesa_archive, mesa_folder)
|
||||
os.remove(mesa_archive)
|
||||
print(f"Downloading Mesa NIR {mesa_filename} ...")
|
||||
urllib.request.urlretrieve(
|
||||
f"https://github.com/godotengine/godot-nir-static/releases/download/{mesa_version}/{mesa_filename}",
|
||||
mesa_archive,
|
||||
)
|
||||
if os.path.exists(mesa_folder):
|
||||
print(f"Removing existing local Mesa NIR installation in {mesa_folder} ...")
|
||||
shutil.rmtree(mesa_folder)
|
||||
print(f"Extracting Mesa NIR {mesa_filename} to {mesa_folder} ...")
|
||||
shutil.unpack_archive(mesa_archive, mesa_folder)
|
||||
os.remove(mesa_archive)
|
||||
print(f"Mesa NIR {mesa_filename} installed successfully.\n")
|
||||
print("Mesa NIR installed successfully.\n")
|
||||
|
||||
# WinPixEventRuntime
|
||||
|
||||
|
|
|
@ -493,7 +493,7 @@ def configure_msvc(env: "SConsEnvironment"):
|
|||
LIBS += ["vulkan"]
|
||||
|
||||
if env["d3d12"]:
|
||||
check_d3d12_installed(env)
|
||||
check_d3d12_installed(env, env["arch"] + "-msvc")
|
||||
|
||||
env.AppendUnique(CPPDEFINES=["D3D12_ENABLED", "RD_ENABLED"])
|
||||
LIBS += ["dxgi", "dxguid"]
|
||||
|
@ -513,7 +513,10 @@ def configure_msvc(env: "SConsEnvironment"):
|
|||
env.Append(LIBPATH=[env["pix_path"] + "/bin/" + arch_subdir])
|
||||
LIBS += ["WinPixEventRuntime"]
|
||||
|
||||
env.Append(LIBPATH=[env["mesa_libs"] + "/bin"])
|
||||
if os.path.exists(env["mesa_libs"] + "-" + env["arch"] + "-msvc"):
|
||||
env.Append(LIBPATH=[env["mesa_libs"] + "-" + env["arch"] + "-msvc/bin"])
|
||||
else:
|
||||
env.Append(LIBPATH=[env["mesa_libs"] + "/bin"])
|
||||
LIBS += ["libNIR.windows." + env["arch"] + prebuilt_lib_extra_suffix]
|
||||
|
||||
if env["opengl3"]:
|
||||
|
@ -879,7 +882,10 @@ def configure_mingw(env: "SConsEnvironment"):
|
|||
env.Append(LIBS=["vulkan"])
|
||||
|
||||
if env["d3d12"]:
|
||||
check_d3d12_installed(env)
|
||||
if env["use_llvm"]:
|
||||
check_d3d12_installed(env, env["arch"] + "-llvm")
|
||||
else:
|
||||
check_d3d12_installed(env, env["arch"] + "-gcc")
|
||||
|
||||
env.AppendUnique(CPPDEFINES=["D3D12_ENABLED", "RD_ENABLED"])
|
||||
env.Append(LIBS=["dxgi", "dxguid"])
|
||||
|
@ -894,7 +900,12 @@ def configure_mingw(env: "SConsEnvironment"):
|
|||
env.Append(LIBPATH=[env["pix_path"] + "/bin/" + arch_subdir])
|
||||
env.Append(LIBS=["WinPixEventRuntime"])
|
||||
|
||||
env.Append(LIBPATH=[env["mesa_libs"] + "/bin"])
|
||||
if env["use_llvm"] and os.path.exists(env["mesa_libs"] + "-" + env["arch"] + "-llvm"):
|
||||
env.Append(LIBPATH=[env["mesa_libs"] + "-" + env["arch"] + "-llvm/bin"])
|
||||
elif not env["use_llvm"] and os.path.exists(env["mesa_libs"] + "-" + env["arch"] + "-gcc"):
|
||||
env.Append(LIBPATH=[env["mesa_libs"] + "-" + env["arch"] + "-gcc/bin"])
|
||||
else:
|
||||
env.Append(LIBPATH=[env["mesa_libs"] + "/bin"])
|
||||
env.Append(LIBS=["libNIR.windows." + env["arch"]])
|
||||
env.Append(LIBS=["version"]) # Mesa dependency.
|
||||
|
||||
|
@ -934,8 +945,8 @@ def configure(env: "SConsEnvironment"):
|
|||
configure_mingw(env)
|
||||
|
||||
|
||||
def check_d3d12_installed(env):
|
||||
if not os.path.exists(env["mesa_libs"]):
|
||||
def check_d3d12_installed(env, suffix):
|
||||
if not os.path.exists(env["mesa_libs"]) and not os.path.exists(env["mesa_libs"] + "-" + suffix):
|
||||
print_error(
|
||||
"The Direct3D 12 rendering driver requires dependencies to be installed.\n"
|
||||
"You can install them by running `python misc\\scripts\\install_d3d12_sdk_windows.py`.\n"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue