@@ -710,6 +710,20 @@ def metal_compile_options(info):
710
710
return metal_sdk , metal_min_os , metal_version
711
711
712
712
713
+ # convert msl version (ie. 2.1) to spriv msl version 201000 <MMmmpp>
714
+ def to_spirv_msl_version (metal_version ):
715
+ # spirv msl versions
716
+ msl_version = metal_version .split ("." )
717
+ if len (msl_version ) < 3 :
718
+ msl_version .append ("00" )
719
+ spirv_msl_version = ""
720
+ for v in msl_version :
721
+ if len (v ) < 2 :
722
+ v += "0"
723
+ spirv_msl_version += v
724
+ return spirv_msl_version
725
+
726
+
713
727
# cross compile hlsl -> spirv -> metal
714
728
def cross_compile_hlsl_metal (info , src , stage , entry_point , temp_filepath , output_filepath ):
715
729
exe = os .path .join (info .tools_dir , "bin" , "macos" , "dxc" )
@@ -727,18 +741,9 @@ def cross_compile_hlsl_metal(info, src, stage, entry_point, temp_filepath, outpu
727
741
error_list += el
728
742
output_list += ol
729
743
730
- msl_version = info .metal_version .split ("." )
731
- if len (msl_version ) < 3 :
732
- msl_version .append ("00" )
733
- spirv_msl_version = ""
734
- for v in msl_version :
735
- if len (v ) < 2 :
736
- v += "0"
737
- spirv_msl_version += v
738
-
744
+ spirv_msl_version = to_spirv_msl_version (info .metal_version )
739
745
metal_filepath = os .path .splitext (temp_filepath )[0 ] + ".metal"
740
746
cmdline = "{} --msl --msl-version {} {} --output {}" .format (spirv_cross , spirv_msl_version , spirv_filepath , metal_filepath )
741
- print (cmdline )
742
747
743
748
ec , el , ol = build_pmfx .call_wait_subprocess (cmdline )
744
749
error_list += el
0 commit comments