summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/spirv-cross/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/spirv-cross/main.cpp')
-rw-r--r--3rdparty/bgfx/3rdparty/spirv-cross/main.cpp19
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; });