Update Mesa-NIR library detection and download script.

This commit is contained in:
Pāvels Nadtočajevs 2025-04-24 23:57:06 +03:00
parent 28089c40c1
commit 43e9b04f66
No known key found for this signature in database
GPG key ID: 8413210218EF35D2
3 changed files with 55 additions and 25 deletions

View file

@ -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
View 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

View file

@ -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"