1 | #pragma once |
2 | |
3 | #include "taichi/rhi/arch.h" |
4 | |
5 | #include <string> |
6 | |
7 | namespace taichi::lang { |
8 | |
9 | // The Taichi core feature set (dense SNode) should probably be supported by all |
10 | // the backends. In addition, each backend can optionally support features in |
11 | // the extension set. |
12 | // |
13 | // The notion of core vs. extension feature set is defined mainly because the |
14 | // Metal backend can only support the dense SNodes. We may need to define this |
15 | // notion more precisely in the future. |
16 | |
17 | enum class Extension { |
18 | #define PER_EXTENSION(x) x, |
19 | #include "taichi/inc/extensions.inc.h" |
20 | |
21 | #undef PER_EXTENSION |
22 | }; |
23 | |
24 | bool is_extension_supported(Arch arch, Extension ext); |
25 | |
26 | } // namespace taichi::lang |
27 | |