From 26514179e3d5db5b24f0f00af0d47e0dd5fbb809 Mon Sep 17 00:00:00 2001 From: Hugh Perkins Date: Wed, 4 Jun 2025 15:57:03 -0700 Subject: [PATCH 1/4] fix metal devic --- taichi/rhi/metal/CMakeLists.txt | 5 +++++ taichi/rhi/metal/metal_device.h | 2 ++ taichi/rhi/metal/metal_device.mm | 6 +++++- taichi/rhi/metal/sincospi.cpp | 12 ++++++++++++ taichi/rhi/metal/sincospi.h | 8 ++++++++ 5 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 taichi/rhi/metal/sincospi.cpp create mode 100644 taichi/rhi/metal/sincospi.h diff --git a/taichi/rhi/metal/CMakeLists.txt b/taichi/rhi/metal/CMakeLists.txt index ca62703b4b..ff867cacb7 100644 --- a/taichi/rhi/metal/CMakeLists.txt +++ b/taichi/rhi/metal/CMakeLists.txt @@ -8,6 +8,11 @@ target_sources(${METAL_RHI} metal_device.mm ) +if (APPLE) + set(CLANG_OSX_FLAGS -DTARGET_OS_OSX) + target_compile_options(${METAL_RHI} PRIVATE ${CLANG_OSX_FLAGS}) +endif() + # TODO(#4832) some dependencies here should not be required as they # are build requirements of other targets. target_include_directories(${METAL_RHI} diff --git a/taichi/rhi/metal/metal_device.h b/taichi/rhi/metal/metal_device.h index 755836c127..9b02610017 100644 --- a/taichi/rhi/metal/metal_device.h +++ b/taichi/rhi/metal/metal_device.h @@ -1,4 +1,6 @@ #pragma once +#include + #include "taichi/common/logging.h" #include "taichi/rhi/device.h" #include "taichi/rhi/impl_support.h" diff --git a/taichi/rhi/metal/metal_device.mm b/taichi/rhi/metal/metal_device.mm index a5d72a560d..cccf6de78f 100644 --- a/taichi/rhi/metal/metal_device.mm +++ b/taichi/rhi/metal/metal_device.mm @@ -1,8 +1,12 @@ -#include "taichi/rhi/metal/metal_device.h" +#include + +#include "sincospi.h" + #include "spirv_msl.hpp" #include "taichi/rhi/device.h" #include "taichi/rhi/device_capability.h" #include "taichi/rhi/impl_support.h" +#include "taichi/rhi/metal/metal_device.h" namespace taichi::lang { namespace metal { diff --git a/taichi/rhi/metal/sincospi.cpp b/taichi/rhi/metal/sincospi.cpp new file mode 100644 index 0000000000..c0f4a85ef4 --- /dev/null +++ b/taichi/rhi/metal/sincospi.cpp @@ -0,0 +1,12 @@ +#include + +extern "C" { +void __sincospif(float x, float *sinp, float *cosp) { + *sinp = sinf(M_PI * x); + *cosp = cosf(M_PI * x); +} +void __sincospi(double x, double *sinp, double *cosp) { + *sinp = sin(M_PI * x); + *cosp = cos(M_PI * x); +} +} diff --git a/taichi/rhi/metal/sincospi.h b/taichi/rhi/metal/sincospi.h new file mode 100644 index 0000000000..92a9f5190d --- /dev/null +++ b/taichi/rhi/metal/sincospi.h @@ -0,0 +1,8 @@ +#ifndef TAICHI_RHI_METAL_SINCOSPI_H +#include + +extern "C" { +void __sincospif(float x, float *sinp, float *cosp); +void __sincospi(double x, double *sinp, double *cosp); +} +#endif // TAICHI_RHI_METAL_SINCOSPI_H From 023dcaf38b3e78e92e986a49816e54bff15d8ed0 Mon Sep 17 00:00:00 2001 From: Hugh Perkins Date: Fri, 6 Jun 2025 12:27:06 -0700 Subject: [PATCH 2/4] remove sincospi, and add correct apple definitions --- CMakeLists.txt | 2 ++ taichi/rhi/metal/CMakeLists.txt | 5 ----- taichi/rhi/metal/metal_device.mm | 2 -- taichi/rhi/metal/sincospi.cpp | 12 ------------ taichi/rhi/metal/sincospi.h | 8 -------- 5 files changed, 2 insertions(+), 27 deletions(-) delete mode 100644 taichi/rhi/metal/sincospi.cpp delete mode 100644 taichi/rhi/metal/sincospi.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 086e831fcb..5113468159 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,6 +78,8 @@ if(LINUX OR APPLE) # comes from; probably a XCode preset? set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections") endif() + add_definitions(-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000) + add_definitions(-DTARGET_OS_OSX) endif() if (USE_LLD) diff --git a/taichi/rhi/metal/CMakeLists.txt b/taichi/rhi/metal/CMakeLists.txt index ff867cacb7..ca62703b4b 100644 --- a/taichi/rhi/metal/CMakeLists.txt +++ b/taichi/rhi/metal/CMakeLists.txt @@ -8,11 +8,6 @@ target_sources(${METAL_RHI} metal_device.mm ) -if (APPLE) - set(CLANG_OSX_FLAGS -DTARGET_OS_OSX) - target_compile_options(${METAL_RHI} PRIVATE ${CLANG_OSX_FLAGS}) -endif() - # TODO(#4832) some dependencies here should not be required as they # are build requirements of other targets. target_include_directories(${METAL_RHI} diff --git a/taichi/rhi/metal/metal_device.mm b/taichi/rhi/metal/metal_device.mm index cccf6de78f..59831aa610 100644 --- a/taichi/rhi/metal/metal_device.mm +++ b/taichi/rhi/metal/metal_device.mm @@ -1,7 +1,5 @@ #include -#include "sincospi.h" - #include "spirv_msl.hpp" #include "taichi/rhi/device.h" #include "taichi/rhi/device_capability.h" diff --git a/taichi/rhi/metal/sincospi.cpp b/taichi/rhi/metal/sincospi.cpp deleted file mode 100644 index c0f4a85ef4..0000000000 --- a/taichi/rhi/metal/sincospi.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include - -extern "C" { -void __sincospif(float x, float *sinp, float *cosp) { - *sinp = sinf(M_PI * x); - *cosp = cosf(M_PI * x); -} -void __sincospi(double x, double *sinp, double *cosp) { - *sinp = sin(M_PI * x); - *cosp = cos(M_PI * x); -} -} diff --git a/taichi/rhi/metal/sincospi.h b/taichi/rhi/metal/sincospi.h deleted file mode 100644 index 92a9f5190d..0000000000 --- a/taichi/rhi/metal/sincospi.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef TAICHI_RHI_METAL_SINCOSPI_H -#include - -extern "C" { -void __sincospif(float x, float *sinp, float *cosp); -void __sincospi(double x, double *sinp, double *cosp); -} -#endif // TAICHI_RHI_METAL_SINCOSPI_H From c9cf8b93f0e5a233e1d383e4fdaacaa0946f9a8c Mon Sep 17 00:00:00 2001 From: Hugh Perkins Date: Fri, 6 Jun 2025 12:32:26 -0700 Subject: [PATCH 3/4] remove math.h --- taichi/rhi/metal/metal_device.h | 2 -- taichi/rhi/metal/metal_device.mm | 2 -- 2 files changed, 4 deletions(-) diff --git a/taichi/rhi/metal/metal_device.h b/taichi/rhi/metal/metal_device.h index 9b02610017..755836c127 100644 --- a/taichi/rhi/metal/metal_device.h +++ b/taichi/rhi/metal/metal_device.h @@ -1,6 +1,4 @@ #pragma once -#include - #include "taichi/common/logging.h" #include "taichi/rhi/device.h" #include "taichi/rhi/impl_support.h" diff --git a/taichi/rhi/metal/metal_device.mm b/taichi/rhi/metal/metal_device.mm index 59831aa610..aa489d1ce1 100644 --- a/taichi/rhi/metal/metal_device.mm +++ b/taichi/rhi/metal/metal_device.mm @@ -1,5 +1,3 @@ -#include - #include "spirv_msl.hpp" #include "taichi/rhi/device.h" #include "taichi/rhi/device_capability.h" From 79bbf686c2abfb0a0d64e66f062cdd260139a994 Mon Sep 17 00:00:00 2001 From: Hugh Perkins Date: Tue, 10 Jun 2025 11:32:38 -0700 Subject: [PATCH 4/4] precommit --- taichi/rhi/metal/metal_device.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taichi/rhi/metal/metal_device.mm b/taichi/rhi/metal/metal_device.mm index aa489d1ce1..a5d72a560d 100644 --- a/taichi/rhi/metal/metal_device.mm +++ b/taichi/rhi/metal/metal_device.mm @@ -1,8 +1,8 @@ +#include "taichi/rhi/metal/metal_device.h" #include "spirv_msl.hpp" #include "taichi/rhi/device.h" #include "taichi/rhi/device_capability.h" #include "taichi/rhi/impl_support.h" -#include "taichi/rhi/metal/metal_device.h" namespace taichi::lang { namespace metal {