Skip to content

Commit 43e9b04

Browse files
committed
Update Mesa-NIR library detection and download script.
1 parent 28089c4 commit 43e9b04

File tree

3 files changed

+55
-25
lines changed

3 files changed

+55
-25
lines changed

drivers/d3d12/SCsub

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,16 @@ if env["use_pix"]:
4343

4444
# Mesa (SPIR-V to DXIL functionality).
4545

46-
mesa_dir = (env["mesa_libs"] + "/godot-mesa").replace("\\", "/")
47-
mesa_gen_dir = (env["mesa_libs"] + "/godot-mesa/generated").replace("\\", "/")
46+
mesa_libs = env["mesa_libs"]
47+
if env.msvc and os.path.exists(env["mesa_libs"] + "-" + env["arch"] + "-msvc"):
48+
mesa_libs = env["mesa_libs"] + "-" + env["arch"] + "-msvc"
49+
elif env["use_llvm"] and os.path.exists(env["mesa_libs"] + "-" + env["arch"] + "-llvm"):
50+
mesa_libs = env["mesa_libs"] + "-" + env["arch"] + "-llvm"
51+
elif not env["use_llvm"] and os.path.exists(env["mesa_libs"] + "-" + env["arch"] + "-gcc"):
52+
mesa_libs = env["mesa_libs"] + "-" + env["arch"] + "-gcc"
53+
54+
mesa_dir = (mesa_libs + "/godot-mesa").replace("\\", "/")
55+
mesa_gen_dir = (mesa_libs + "/godot-mesa/generated").replace("\\", "/")
4856
mesa_absdir = Dir(mesa_dir).abspath
4957
mesa_gen_absdir = Dir(mesa_dir + "/generated").abspath
5058

misc/scripts/install_d3d12_sdk_windows.py

100644100755
Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@
2020

2121
# Mesa NIR
2222
# Check for latest version: https://github.com/godotengine/godot-nir-static/releases/latest
23-
mesa_version = "23.1.9"
24-
mesa_filename = "godot-nir-23.1.9.zip"
25-
mesa_archive = os.path.join(deps_folder, mesa_filename)
26-
mesa_folder = os.path.join(deps_folder, "mesa")
23+
mesa_version = "23.1.9-1"
2724
# WinPixEventRuntime
2825
# Check for latest version: https://www.nuget.org/api/v2/package/WinPixEventRuntime (check downloaded filename)
2926
pix_version = "1.0.240308001"
@@ -43,20 +40,34 @@
4340

4441
# Mesa NIR
4542
color_print(f"{Ansi.BOLD}[1/3] Mesa NIR")
46-
if os.path.isfile(mesa_archive):
43+
for arch in [
44+
"arm64-llvm",
45+
"arm64-msvc",
46+
"x86_32-gcc",
47+
"x86_32-llvm",
48+
"x86_32-msvc",
49+
"x86_64-gcc",
50+
"x86_64-llvm",
51+
"x86_64-msvc",
52+
]:
53+
mesa_filename = "godot-nir-static-" + arch + "-release.zip"
54+
mesa_archive = os.path.join(deps_folder, mesa_filename)
55+
mesa_folder = os.path.join(deps_folder, "mesa-" + arch)
56+
57+
if os.path.isfile(mesa_archive):
58+
os.remove(mesa_archive)
59+
print(f"Downloading Mesa NIR {mesa_filename} ...")
60+
urllib.request.urlretrieve(
61+
f"https://github.com/godotengine/godot-nir-static/releases/download/{mesa_version}/{mesa_filename}",
62+
mesa_archive,
63+
)
64+
if os.path.exists(mesa_folder):
65+
print(f"Removing existing local Mesa NIR installation in {mesa_folder} ...")
66+
shutil.rmtree(mesa_folder)
67+
print(f"Extracting Mesa NIR {mesa_filename} to {mesa_folder} ...")
68+
shutil.unpack_archive(mesa_archive, mesa_folder)
4769
os.remove(mesa_archive)
48-
print(f"Downloading Mesa NIR {mesa_filename} ...")
49-
urllib.request.urlretrieve(
50-
f"https://github.com/godotengine/godot-nir-static/releases/download/{mesa_version}/{mesa_filename}",
51-
mesa_archive,
52-
)
53-
if os.path.exists(mesa_folder):
54-
print(f"Removing existing local Mesa NIR installation in {mesa_folder} ...")
55-
shutil.rmtree(mesa_folder)
56-
print(f"Extracting Mesa NIR {mesa_filename} to {mesa_folder} ...")
57-
shutil.unpack_archive(mesa_archive, mesa_folder)
58-
os.remove(mesa_archive)
59-
print(f"Mesa NIR {mesa_filename} installed successfully.\n")
70+
print("Mesa NIR installed successfully.\n")
6071

6172
# WinPixEventRuntime
6273

platform/windows/detect.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,7 @@ def spawn_capture(sh, escape, cmd, args, env):
493493
LIBS += ["vulkan"]
494494

495495
if env["d3d12"]:
496-
check_d3d12_installed(env)
496+
check_d3d12_installed(env, env["arch"] + "-msvc")
497497

498498
env.AppendUnique(CPPDEFINES=["D3D12_ENABLED", "RD_ENABLED"])
499499
LIBS += ["dxgi", "dxguid"]
@@ -513,7 +513,10 @@ def spawn_capture(sh, escape, cmd, args, env):
513513
env.Append(LIBPATH=[env["pix_path"] + "/bin/" + arch_subdir])
514514
LIBS += ["WinPixEventRuntime"]
515515

516-
env.Append(LIBPATH=[env["mesa_libs"] + "/bin"])
516+
if os.path.exists(env["mesa_libs"] + "-" + env["arch"] + "-msvc"):
517+
env.Append(LIBPATH=[env["mesa_libs"] + "-" + env["arch"] + "-msvc/bin"])
518+
else:
519+
env.Append(LIBPATH=[env["mesa_libs"] + "/bin"])
517520
LIBS += ["libNIR.windows." + env["arch"] + prebuilt_lib_extra_suffix]
518521

519522
if env["opengl3"]:
@@ -879,7 +882,10 @@ def configure_mingw(env: "SConsEnvironment"):
879882
env.Append(LIBS=["vulkan"])
880883

881884
if env["d3d12"]:
882-
check_d3d12_installed(env)
885+
if env["use_llvm"]:
886+
check_d3d12_installed(env, env["arch"] + "-llvm")
887+
else:
888+
check_d3d12_installed(env, env["arch"] + "-gcc")
883889

884890
env.AppendUnique(CPPDEFINES=["D3D12_ENABLED", "RD_ENABLED"])
885891
env.Append(LIBS=["dxgi", "dxguid"])
@@ -894,7 +900,12 @@ def configure_mingw(env: "SConsEnvironment"):
894900
env.Append(LIBPATH=[env["pix_path"] + "/bin/" + arch_subdir])
895901
env.Append(LIBS=["WinPixEventRuntime"])
896902

897-
env.Append(LIBPATH=[env["mesa_libs"] + "/bin"])
903+
if env["use_llvm"] and os.path.exists(env["mesa_libs"] + "-" + env["arch"] + "-llvm"):
904+
env.Append(LIBPATH=[env["mesa_libs"] + "-" + env["arch"] + "-llvm/bin"])
905+
elif not env["use_llvm"] and os.path.exists(env["mesa_libs"] + "-" + env["arch"] + "-gcc"):
906+
env.Append(LIBPATH=[env["mesa_libs"] + "-" + env["arch"] + "-gcc/bin"])
907+
else:
908+
env.Append(LIBPATH=[env["mesa_libs"] + "/bin"])
898909
env.Append(LIBS=["libNIR.windows." + env["arch"]])
899910
env.Append(LIBS=["version"]) # Mesa dependency.
900911

@@ -934,8 +945,8 @@ def configure(env: "SConsEnvironment"):
934945
configure_mingw(env)
935946

936947

937-
def check_d3d12_installed(env):
938-
if not os.path.exists(env["mesa_libs"]):
948+
def check_d3d12_installed(env, suffix):
949+
if not os.path.exists(env["mesa_libs"]) and not os.path.exists(env["mesa_libs"] + "-" + suffix):
939950
print_error(
940951
"The Direct3D 12 rendering driver requires dependencies to be installed.\n"
941952
"You can install them by running `python misc\\scripts\\install_d3d12_sdk_windows.py`.\n"

0 commit comments

Comments
 (0)