diff --git a/.github/workflows/scripts/ti_build/dep.py b/.github/workflows/scripts/ti_build/dep.py index 4e0a5a36abf8e..784698a90d929 100644 --- a/.github/workflows/scripts/ti_build/dep.py +++ b/.github/workflows/scripts/ti_build/dep.py @@ -153,6 +153,9 @@ def download_dep(url, outdir, *, strip=0, force=False, args=None, plain=False, e elif name.endswith(".tar.gz") or name.endswith(".tgz"): outdir.mkdir(parents=True, exist_ok=True) tar("-xzf", local_cached, "-C", outdir, f"--strip-components={strip}") + elif name.endswith(".tar.xz"): + outdir.mkdir(parents=True, exist_ok=True) + tar("-xJf", local_cached, "-C", outdir, f"--strip-components={strip}") elif name.endswith(".sh"): bash(local_cached, *args) elif "." not in name and args is not None: diff --git a/.github/workflows/scripts/ti_build/llvm.py b/.github/workflows/scripts/ti_build/llvm.py index e487a560b4a03..c627eb3a01bea 100644 --- a/.github/workflows/scripts/ti_build/llvm.py +++ b/.github/workflows/scripts/ti_build/llvm.py @@ -19,7 +19,7 @@ def setup_llvm() -> None: Download and install LLVM. """ u = platform.uname() - if u.system == "Linux": + if (u.system, u.machine) == ("Linux", "x86_64"): if cmake_args.get_effective("TI_WITH_AMDGPU"): out = get_cache_home() / "llvm15-amdgpu-005" url = "https://github.com/GaleSeLee/assets/releases/download/v0.0.5/taichi-llvm-15.0.0-linux.zip" @@ -31,6 +31,11 @@ def setup_llvm() -> None: out = get_cache_home() / "llvm15" url = "https://github.com/taichi-dev/taichi_assets/releases/download/llvm15/taichi-llvm-15-linux.zip" download_dep(url, out, strip=1) + + elif (u.system, u.machine) in (("Linux", "arm64"), ("Linux", "aarch64")): + out = get_cache_home() / "llvm15-manylinux2014" + # FIXME: ARM LLVM! + pass elif (u.system, u.machine) == ("Darwin", "arm64"): out = get_cache_home() / "llvm15-m1-nozstd" url = "https://github.com/taichi-dev/taichi_assets/releases/download/llvm15/taichi-llvm-15-m1-nozstd.zip" diff --git a/.github/workflows/scripts/ti_build/ospkg.py b/.github/workflows/scripts/ti_build/ospkg.py index 83bb88e656e80..974c016000ca6 100644 --- a/.github/workflows/scripts/ti_build/ospkg.py +++ b/.github/workflows/scripts/ti_build/ospkg.py @@ -24,7 +24,7 @@ "liblz4-dev", "libpng-dev", "libssl-dev", - "libtinfo-dev", + "libncurses-dev", "libwayland-dev", "libx11-xcb-dev", "libxcb-dri3-dev", diff --git a/.github/workflows/scripts/ti_build/python.py b/.github/workflows/scripts/ti_build/python.py index 205fe1021d20e..3bc181591d186 100644 --- a/.github/workflows/scripts/ti_build/python.py +++ b/.github/workflows/scripts/ti_build/python.py @@ -17,20 +17,23 @@ # -- code -- -def setup_mambaforge(prefix): +def setup_miniforge(prefix): u = platform.uname() - if u.system == "Linux": - url = "https://github.com/conda-forge/miniforge/releases/download/23.1.0-1/Mambaforge-23.1.0-1-Linux-x86_64.sh" + if (u.system, u.machine) == ("Linux", "x86_64"): + url = "https://github.com/conda-forge/miniforge/releases/download/25.3.0-1/Miniforge3-25.3.0-1-Linux-x86_64.sh" + download_dep(url, prefix, args=["-bfp", str(prefix)]) + elif (u.system, u.machine) in (("Linux", "arm64"), ("Linux", "aarch64")): + url = "https://github.com/conda-forge/miniforge/releases/download/25.3.0-1/Miniforge3-25.3.0-1-Linux-aarch64.sh" download_dep(url, prefix, args=["-bfp", str(prefix)]) elif (u.system, u.machine) == ("Darwin", "arm64"): - url = "https://github.com/conda-forge/miniforge/releases/download/23.1.0-1/Mambaforge-23.1.0-1-MacOSX-arm64.sh" + url = "https://github.com/conda-forge/miniforge/releases/download/25.3.0-1/Miniforge3-25.3.0-1-MacOSX-arm64.sh" download_dep(url, prefix, args=["-bfp", str(prefix)]) elif (u.system, u.machine) == ("Darwin", "x86_64"): - url = "https://github.com/conda-forge/miniforge/releases/download/23.1.0-1/Mambaforge-23.1.0-1-MacOSX-x86_64.sh" + url = "https://github.com/conda-forge/miniforge/releases/download/25.3.0-1/Miniforge3-25.3.0-1-MacOSX-x86_64.sh" download_dep(url, prefix, args=["-bfp", str(prefix)]) elif u.system == "Windows": url = ( - "https://github.com/conda-forge/miniforge/releases/download/23.1.0-1/Mambaforge-23.1.0-1-Windows-x86_64.exe" + "https://github.com/conda-forge/miniforge/releases/download/25.3.0-1/Miniforge3-25.3.0-1-Windows-x86_64.exe" ) download_dep( url, @@ -82,8 +85,8 @@ def setup_python(version: str) -> Tuple[Command, Command]: windows = platform.system() == "Windows" - prefix = get_cache_home() / "mambaforge" - setup_mambaforge(prefix) + prefix = get_cache_home() / "miniforge" + setup_miniforge(prefix) if windows: conda_path = prefix / "Scripts" / "conda.exe" @@ -92,9 +95,9 @@ def setup_python(version: str) -> Tuple[Command, Command]: if not conda_path.exists(): shutil.rmtree(prefix, ignore_errors=True) - setup_mambaforge(prefix) + setup_miniforge(prefix) if not conda_path.exists(): - raise RuntimeError(f"Failed to setup mambaforge at {prefix}") + raise RuntimeError(f"Failed to setup miniforge at {prefix}") conda = sh.bake(str(conda_path)) diff --git a/.github/workflows/scripts/ti_build/sccache.py b/.github/workflows/scripts/ti_build/sccache.py index a49e57c5834fe..5b895aea10a5c 100644 --- a/.github/workflows/scripts/ti_build/sccache.py +++ b/.github/workflows/scripts/ti_build/sccache.py @@ -31,18 +31,16 @@ def setup_sccache() -> Command: raise RuntimeError(f"Unsupported platform: {u.system} {u.machine}") if not exe.exists(): - if u.system == "Linux": - url = "https://github.com/mozilla/sccache/releases/download/v0.4.1/sccache-v0.4.1-x86_64-unknown-linux-musl.tar.gz" + if (u.system, u.machine) == ("Linux", "x86_64"): + url = "https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-x86_64-unknown-linux-musl.tar.gz" + elif (u.system, u.machine) in (("Linux", "arm64"), ("Linux", "aarch64")): + url = "https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-aarch64-unknown-linux-musl.tar.gz" elif (u.system, u.machine) == ("Darwin", "arm64"): - url = ( - "https://github.com/mozilla/sccache/releases/download/v0.4.1/sccache-v0.4.1-aarch64-apple-darwin.tar.gz" - ) + url = "https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-aarch64-apple-darwin.tar.gz" elif (u.system, u.machine) == ("Darwin", "x86_64"): - url = ( - "https://github.com/mozilla/sccache/releases/download/v0.4.1/sccache-v0.4.1-x86_64-apple-darwin.tar.gz" - ) + url = "https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-x86_64-apple-darwin.tar.gz" elif u.system == "Windows": - url = "https://github.com/mozilla/sccache/releases/download/v0.4.1/sccache-v0.4.1-x86_64-pc-windows-msvc.tar.gz" + url = "https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-x86_64-pc-windows-msvc.tar.gz" else: raise RuntimeError(f"Unsupported platform: {u.system} {u.machine}") diff --git a/.github/workflows/scripts/ti_build/vulkan.py b/.github/workflows/scripts/ti_build/vulkan.py index 5678180862c46..a391058473b55 100644 --- a/.github/workflows/scripts/ti_build/vulkan.py +++ b/.github/workflows/scripts/ti_build/vulkan.py @@ -1,3 +1,4 @@ + # -*- coding: utf-8 -*- # -- stdlib -- @@ -12,23 +13,32 @@ # -- code -- -@banner("Setup Vulkan 1.3.236.0") +@banner("Setup Vulkan 1.4.313.0") def setup_vulkan(): u = platform.uname() if u.system == "Linux": - url = "https://sdk.lunarg.com/sdk/download/1.3.236.0/linux/vulkansdk-linux-x86_64-1.3.236.0.tar.gz" - prefix = get_cache_home() / "vulkan-1.3.236.0" + url = "https://sdk.lunarg.com/sdk/download/1.4.313.0/linux/vulkansdk-linux-x86_64-1.4.313.0.tar.xz" + prefix = get_cache_home() / "vulkan-1.4.313.0" download_dep(url, prefix, strip=1) sdk = prefix / "x86_64" os.environ["VULKAN_SDK"] = str(sdk) path_prepend("PATH", sdk / "bin") path_prepend("LD_LIBRARY_PATH", sdk / "lib") os.environ["VK_LAYER_PATH"] = str(sdk / "etc" / "vulkan" / "explicit_layer.d") + elif (u.system, u.machine) in (("Linux", "arm64"), ("Linux", "aarch64")): + url = "https://github.com/johnnynunez/vulkan-sdk-arm/releases/download/1.4.313.0/vulkansdk-linux-arm64-ubuntu-24.04-arm-1.4.313.0.zip" + prefix = get_cache_home() / "vulkan-1.4.313.0" + download_dep(url, prefix, strip=1) + sdk = prefix / "arm64" + os.environ["VULKAN_SDK"] = str(sdk) + path_prepend("PATH", sdk / "bin") + path_prepend("LD_LIBRARY_PATH", sdk / "lib") + os.environ["VK_LAYER_PATH"] = str(sdk / "etc" / "vulkan" / "explicit_layer.d") # elif (u.system, u.machine) == ("Darwin", "arm64"): # elif (u.system, u.machine) == ("Darwin", "x86_64"): elif (u.system, u.machine) == ("Windows", "AMD64"): - url = "https://sdk.lunarg.com/sdk/download/1.3.236.0/windows/VulkanSDK-1.3.236.0-Installer.exe" - prefix = get_cache_home() / "vulkan-1.3.236.0" + url = "https://sdk.lunarg.com/sdk/download/1.4.313.0/windows/VulkanSDK-1.4.313.0-Installer.exe" + prefix = get_cache_home() / "vulkan-1.4.313.0" download_dep( url, prefix, @@ -53,3 +63,4 @@ def setup_vulkan(): path_prepend("PATH", prefix / "Bin") else: return + \ No newline at end of file diff --git a/external/DirectX-Headers b/external/DirectX-Headers index fb9a40f1b8165..75f1a1fe154ab 160000 --- a/external/DirectX-Headers +++ b/external/DirectX-Headers @@ -1 +1 @@ -Subproject commit fb9a40f1b8165c848cf49fdb396722af7181ff97 +Subproject commit 75f1a1fe154abee0c28d9d4d58e3f7e3d56b331b diff --git a/external/FP16 b/external/FP16 index 0a92994d729ff..98b0a46bce017 160000 --- a/external/FP16 +++ b/external/FP16 @@ -1 +1 @@ -Subproject commit 0a92994d729ff76a58f692d3028ca1b64b145d91 +Subproject commit 98b0a46bce017382a6351a19577ec43a715b6835 diff --git a/external/PicoSHA2 b/external/PicoSHA2 index 1677374f23352..161cb3fc4170f 160000 --- a/external/PicoSHA2 +++ b/external/PicoSHA2 @@ -1 +1 @@ -Subproject commit 1677374f23352716fc52183255a40c1b8e1d53eb +Subproject commit 161cb3fc4170fa7a3eca9e582cebd27cc4d1fe29 diff --git a/external/SPIRV-Cross b/external/SPIRV-Cross index c77b09b57c278..22b22f5685d86 160000 --- a/external/SPIRV-Cross +++ b/external/SPIRV-Cross @@ -1 +1 @@ -Subproject commit c77b09b57c27837dc2d41aa371ed3d236ce9ce47 +Subproject commit 22b22f5685d868828be01c9ac00c31902e60afd9 diff --git a/external/SPIRV-Headers b/external/SPIRV-Headers index 34d04647d384e..6d0784e9f1ab9 160000 --- a/external/SPIRV-Headers +++ b/external/SPIRV-Headers @@ -1 +1 @@ -Subproject commit 34d04647d384e0aed037e7a2662a655fc39841bb +Subproject commit 6d0784e9f1ab92c17eeea94821b2465c14a52be9 diff --git a/external/SPIRV-Reflect b/external/SPIRV-Reflect index 7c9c841fa9f40..b21e9ad9ee35d 160000 --- a/external/SPIRV-Reflect +++ b/external/SPIRV-Reflect @@ -1 +1 @@ -Subproject commit 7c9c841fa9f40c09d334d5db6629ba318e46efaf +Subproject commit b21e9ad9ee35d29028bd479422d77696187c9004 diff --git a/external/SPIRV-Tools b/external/SPIRV-Tools index 46ca66e6991f1..e8864edbebe9f 160000 --- a/external/SPIRV-Tools +++ b/external/SPIRV-Tools @@ -1 +1 @@ -Subproject commit 46ca66e6991f16c89e17ebc9b86995143be2c706 +Subproject commit e8864edbebe9fb9872c6c95b2363b490c6105a15 diff --git a/external/Vulkan-Headers b/external/Vulkan-Headers index 409c16be502e3..9c77de5c3dd21 160000 --- a/external/Vulkan-Headers +++ b/external/Vulkan-Headers @@ -1 +1 @@ -Subproject commit 409c16be502e39fe70dd6fe2d9ad4842ef2c9a53 +Subproject commit 9c77de5c3dd216f28e407eec65ed9c0a296c1f74 diff --git a/external/VulkanMemoryAllocator b/external/VulkanMemoryAllocator index 539c0a8d8e373..66db1cdb9f050 160000 --- a/external/VulkanMemoryAllocator +++ b/external/VulkanMemoryAllocator @@ -1 +1 @@ -Subproject commit 539c0a8d8e3733c9f25ea9a184c85c77504f1653 +Subproject commit 66db1cdb9f050faabdb8c61123504cc32afbbb80 diff --git a/external/backward_cpp b/external/backward_cpp index 51f0700452cf7..0bfd0a07a6155 160000 --- a/external/backward_cpp +++ b/external/backward_cpp @@ -1 +1 @@ -Subproject commit 51f0700452cf71c57d43c2d028277b24cde32502 +Subproject commit 0bfd0a07a61551413ccd2ab9a9099af3bad40681 diff --git a/external/eigen b/external/eigen index 0fd6b4f71dd85..5e8edd21863b8 160000 --- a/external/eigen +++ b/external/eigen @@ -1 +1 @@ -Subproject commit 0fd6b4f71dd85b2009ee4d1aeb296e2c11fc9d68 +Subproject commit 5e8edd21863b8321fc6b9c82322e6cc8cfc47c14 diff --git a/external/glfw b/external/glfw index cf9263d56662e..a79677378b526 160000 --- a/external/glfw +++ b/external/glfw @@ -1 +1 @@ -Subproject commit cf9263d56662ee7fcc18add84d91243167cc0328 +Subproject commit a79677378b52688ae1adaccfa25b404c3d1dcaec diff --git a/external/glm b/external/glm index 06ed280db4e27..2d4c4b4dd31fd 160000 --- a/external/glm +++ b/external/glm @@ -1 +1 @@ -Subproject commit 06ed280db4e274fa5e1f36d5ea4f7dfd654ff9b0 +Subproject commit 2d4c4b4dd31fde06cfffad7915c2b3006402322f diff --git a/external/googletest b/external/googletest index e8b478a7356f2..90a41521142c9 160000 --- a/external/googletest +++ b/external/googletest @@ -1 +1 @@ -Subproject commit e8b478a7356f21efbada1aae15b49b332cc54e3f +Subproject commit 90a41521142c978131f38c6da07b4eb96a9f1ff6 diff --git a/external/imgui b/external/imgui index c7529c8ea8ef3..ba513ba804c87 160000 --- a/external/imgui +++ b/external/imgui @@ -1 +1 @@ -Subproject commit c7529c8ea8ef36e344d00cb38e1493b465ce6090 +Subproject commit ba513ba804c87635f7bcb3a054a463598a0a332d diff --git a/external/spdlog b/external/spdlog index c3aed4b683739..548b264254b7c 160000 --- a/external/spdlog +++ b/external/spdlog @@ -1 +1 @@ -Subproject commit c3aed4b68373955e1cc94307683d44dca1515d2b +Subproject commit 548b264254b7cbbf68f9003315ea958edacb91e5 diff --git a/external/volk b/external/volk index b87f88292b09b..8416efecf9803 160000 --- a/external/volk +++ b/external/volk @@ -1 +1 @@ -Subproject commit b87f88292b09bc899b24028984186581a1d24c4e +Subproject commit 8416efecf98036806de1dc7d668a10ba58ec52d3 diff --git a/python/taichi/_version_check.py b/python/taichi/_version_check.py index 4f6285e41a4e8..29191ef3040b0 100644 --- a/python/taichi/_version_check.py +++ b/python/taichi/_version_check.py @@ -18,8 +18,11 @@ def check_version(cur_uuid): payload = {"version": version, "platform": "", "python": ""} system = platform.system() - if system == "Linux": + u = platform.uname() + if (u.system, u.machine) == ("Linux", "x86_64"): payload["platform"] = "manylinux_2_27_x86_64" + elif (u.system, u.machine) in (("Linux", "arm64"), ("Linux", "aarch64")): + payload["platform"] = "manylinux_2_27_aarch64" elif system == "Windows": payload["platform"] = "win_amd64" elif system == "Darwin": diff --git a/taichi/analysis/verify.cpp b/taichi/analysis/verify.cpp index 3fc857b93efc0..f11b1ee30b8b4 100644 --- a/taichi/analysis/verify.cpp +++ b/taichi/analysis/verify.cpp @@ -97,7 +97,7 @@ class IRVerifier : public BasicStmtVisitor { } else if (!stmt->has_body() && stmt->body) { TI_ERROR("offloaded {} ({})->body is {} (should be nullptr)", offloaded_task_type_name(stmt->task_type), stmt->name(), - fmt::ptr(stmt->body)); + fmt::ptr(stmt->body.get())); } stmt->all_blocks_accept(this); } diff --git a/taichi/common/logging.h b/taichi/common/logging.h index eddb2b07b515e..6236dbbc7c0a0 100644 --- a/taichi/common/logging.h +++ b/taichi/common/logging.h @@ -10,6 +10,7 @@ // before including "spdlog/fmt/fmt.h" #include "spdlog/common.h" #include "spdlog/fmt/fmt.h" +#include "spdlog/fmt/ranges.h" namespace spdlog { class logger; } diff --git a/taichi/ui/ggui/gui.cpp b/taichi/ui/ggui/gui.cpp index f5bc10833880b..5da1fd269eb81 100644 --- a/taichi/ui/ggui/gui.cpp +++ b/taichi/ui/ggui/gui.cpp @@ -44,7 +44,9 @@ Gui::Gui(AppContext *app_context, SwapChain *swap_chain, TaichiWindow *window) { void Gui::init_render_resources(VkRenderPass render_pass) { ImGui_ImplVulkan_LoadFunctions( - load_vk_function_for_gui); // this is because we're using volk. + VK_API_VERSION_1_0, // or app_context_->config.vk_api_version + load_vk_function_for_gui, // this is because we're using volk. + nullptr); auto &device = static_cast(app_context_->device()); @@ -60,7 +62,9 @@ void Gui::init_render_resources(VkRenderPass render_pass) { init_info.Allocator = VK_NULL_HANDLE; init_info.MinImageCount = swap_chain_->surface().get_image_count(); init_info.ImageCount = swap_chain_->surface().get_image_count(); - ImGui_ImplVulkan_Init(&init_info, render_pass); + // new signature takes only the struct + init_info.RenderPass = render_pass; + ImGui_ImplVulkan_Init(&init_info); render_pass_ = render_pass; // Upload Fonts @@ -73,10 +77,11 @@ void Gui::init_render_resources(VkRenderPass render_pass) { ->vk_command_buffer() ->buffer; - ImGui_ImplVulkan_CreateFontsTexture(command_buffer); + // ≥ 1.90: the helper records its own commands + ImGui_ImplVulkan_CreateFontsTexture(); stream->submit_synced(cmd_list.get()); - ImGui_ImplVulkan_DestroyFontUploadObjects(); + ImGui_ImplVulkan_DestroyFontsTexture(); } prepare_for_next_frame();