diff options
Diffstat (limited to '3rdparty/bgfx/3rdparty/spirv-cross/main.cpp')
-rw-r--r-- | 3rdparty/bgfx/3rdparty/spirv-cross/main.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/spirv-cross/main.cpp b/3rdparty/bgfx/3rdparty/spirv-cross/main.cpp index b05e8126429..711b0ff1915 100644 --- a/3rdparty/bgfx/3rdparty/spirv-cross/main.cpp +++ b/3rdparty/bgfx/3rdparty/spirv-cross/main.cpp @@ -514,6 +514,9 @@ struct CLIArguments bool msl_domain_lower_left = false; bool msl_argument_buffers = false; bool msl_texture_buffer_native = false; + bool msl_framebuffer_fetch = false; + bool msl_invariant_float_math = false; + bool msl_emulate_cube_array = false; bool msl_multiview = false; bool msl_view_index_from_device_index = false; bool msl_dispatch_base = false; @@ -522,6 +525,7 @@ struct CLIArguments bool vulkan_glsl_disable_ext_samplerless_texture_functions = false; bool emit_line_directives = false; SmallVector<uint32_t> msl_discrete_descriptor_sets; + SmallVector<uint32_t> msl_device_argument_buffers; SmallVector<pair<uint32_t, uint32_t>> msl_dynamic_buffers; SmallVector<PLSArg> pls_in; SmallVector<PLSArg> pls_out; @@ -597,7 +601,10 @@ static void print_help() "\t[--msl-domain-lower-left]\n" "\t[--msl-argument-buffers]\n" "\t[--msl-texture-buffer-native]\n" + "\t[--msl-framebuffer-fetch]\n" + "\t[--msl-emulate-cube-array]\n" "\t[--msl-discrete-descriptor-set <index>]\n" + "\t[--msl-device-argument-buffer <index>]\n" "\t[--msl-multiview]\n" "\t[--msl-view-index-from-device-index]\n" "\t[--msl-dispatch-base]\n" @@ -754,8 +761,13 @@ static string compile_iteration(const CLIArguments &args, std::vector<uint32_t> msl_opts.msl_version = args.msl_version; msl_opts.capture_output_to_buffer = args.msl_capture_output_to_buffer; msl_opts.swizzle_texture_samples = args.msl_swizzle_texture_samples; + msl_opts.invariant_float_math = args.msl_invariant_float_math; if (args.msl_ios) + { msl_opts.platform = CompilerMSL::Options::iOS; + msl_opts.ios_use_framebuffer_fetch_subpasses = args.msl_framebuffer_fetch; + msl_opts.emulate_cube_array = args.msl_emulate_cube_array; + } msl_opts.pad_fragment_output_components = args.msl_pad_fragment_output; msl_opts.tess_domain_origin_lower_left = args.msl_domain_lower_left; msl_opts.argument_buffers = args.msl_argument_buffers; @@ -766,6 +778,8 @@ static string compile_iteration(const CLIArguments &args, std::vector<uint32_t> msl_comp->set_msl_options(msl_opts); for (auto &v : args.msl_discrete_descriptor_sets) msl_comp->add_discrete_descriptor_set(v); + for (auto &v : args.msl_device_argument_buffers) + msl_comp->set_argument_buffer_device_address_space(v, true); uint32_t i = 0; for (auto &v : args.msl_dynamic_buffers) msl_comp->add_dynamic_buffer(v.first, v.second, i++); @@ -1086,7 +1100,12 @@ static int main_inner(int argc, char *argv[]) cbs.add("--msl-argument-buffers", [&args](CLIParser &) { args.msl_argument_buffers = true; }); cbs.add("--msl-discrete-descriptor-set", [&args](CLIParser &parser) { args.msl_discrete_descriptor_sets.push_back(parser.next_uint()); }); + cbs.add("--msl-device-argument-buffer", + [&args](CLIParser &parser) { args.msl_device_argument_buffers.push_back(parser.next_uint()); }); cbs.add("--msl-texture-buffer-native", [&args](CLIParser &) { args.msl_texture_buffer_native = true; }); + cbs.add("--msl-framebuffer-fetch", [&args](CLIParser &) { args.msl_framebuffer_fetch = true; }); + cbs.add("--msl-invariant-float-math", [&args](CLIParser &) { args.msl_invariant_float_math = true; }); + cbs.add("--msl-emulate-cube-array", [&args](CLIParser &) { args.msl_emulate_cube_array = true; }); cbs.add("--msl-multiview", [&args](CLIParser &) { args.msl_multiview = true; }); cbs.add("--msl-view-index-from-device-index", [&args](CLIParser &) { args.msl_view_index_from_device_index = true; }); |