You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"\t[--msl-runtime-array-rich-descriptor]:\n\t\tWhen declaring a runtime array of SSBOs, declare an array of {ptr, len} pairs to support OpArrayLength.\n"
873
875
"\t[--msl-replace-recursive-inputs]:\n\t\tWorks around a Metal 3.1 regression bug, which causes an infinite recursion crash during Metal's analysis of an entry point input structure that itself contains internal recursion.\n"
874
876
"\t[--msl-texture-buffer-native]:\n\t\tEnable native support for texel buffers. Otherwise, it is emulated as a normal texture.\n"
877
+
"\t[--msl-input-attachment-is-ds-attachment]:\n\t\tAdds a simple depth passthrough in fragment shaders when they do not modify the depth value.\n"
878
+
"\t\tRequired to force Metal to write to the depth/stencil attachment post fragment execution.\n"
879
+
"\t\tOtherwise, Metal may optimize the write to pre fragment execution which goes against the Vulkan spec.\n"
880
+
"\t\tOnly required if an input attachment and depth/stencil attachment reference the same resource.\n"
875
881
"\t[--msl-framebuffer-fetch]:\n\t\tImplement subpass inputs with frame buffer fetch.\n"
876
882
"\t\tEmits [[color(N)]] inputs in fragment stage.\n"
877
883
"\t\tRequires an Apple GPU.\n"
@@ -956,6 +962,15 @@ static void print_help_msl()
956
962
"\t\tSome Metal devices have a bug where stores to resources from a fragment shader\n"
957
963
"\t\tcontinue to execute, even when the fragment is discarded. These checks\n"
958
964
"\t\tprevent these stores from executing.\n"
965
+
"\t[--msl-force-frag-execution]:\n\t\tEnforces fragment execution to avoid early discard by Metal\n"
966
+
"\t\tMetal will prematurely discard fragments before execution when side effects are present.\n"
967
+
"\t\tThis condition is triggered under the following conditions (side effect operations happen before discard):\n"
968
+
"\t\t\t1. Pre fragment depth test fails.\n"
969
+
"\t\t\t2. Modify depth value in fragment shader to constant value known at compile time.\n"
970
+
"\t\t\t3. Constant value will not pass post fragment depth test.\n"
971
+
"\t\t\t4. Fragment is always discarded in fragment execution.\n"
972
+
"\t\tHowever, Vulkan expects fragment shader to be executed since it cannot be discarded until the discard\n"
973
+
"\t\tpresent in the fragment execution, which would also execute the operations with side effects.\n"
959
974
"\t[--msl-sample-dref-lod-array-as-grad]:\n\t\tUse a gradient instead of a level argument.\n"
960
975
"\t\tSome Metal devices have a bug where the level() argument to\n"
961
976
"\t\tdepth2d_array<T>::sample_compare() in a fragment shader is biased by some\n"
0 commit comments