Merge pull request #1678 from KhronosGroup/fix-1674

MSL: Add CLI option for sampler suffix.
This commit is contained in:
Hans-Kristian Arntzen 2021-05-21 17:37:02 +02:00 committed by GitHub
commit faec1a8643
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -658,6 +658,7 @@ struct CLIArguments
bool msl_emulate_subgroups = false; bool msl_emulate_subgroups = false;
uint32_t msl_fixed_subgroup_size = 0; uint32_t msl_fixed_subgroup_size = 0;
bool msl_force_sample_rate_shading = false; bool msl_force_sample_rate_shading = false;
const char *msl_combined_sampler_suffix = nullptr;
bool glsl_emit_push_constant_as_ubo = false; bool glsl_emit_push_constant_as_ubo = false;
bool glsl_emit_ubo_as_plain_uniforms = false; bool glsl_emit_ubo_as_plain_uniforms = false;
bool glsl_force_flattened_io_blocks = false; bool glsl_force_flattened_io_blocks = false;
@ -884,7 +885,8 @@ static void print_help_msl()
"\t\tIntended for Vulkan Portability implementations where VK_EXT_subgroup_size_control is not supported or disabled.\n" "\t\tIntended for Vulkan Portability implementations where VK_EXT_subgroup_size_control is not supported or disabled.\n"
"\t\tIf 0, assume variable subgroup size as actually exposed by Metal.\n" "\t\tIf 0, assume variable subgroup size as actually exposed by Metal.\n"
"\t[--msl-force-sample-rate-shading]:\n\t\tForce fragment shaders to run per sample.\n" "\t[--msl-force-sample-rate-shading]:\n\t\tForce fragment shaders to run per sample.\n"
"\t\tThis adds a [[sample_id]] parameter if none is already present.\n"); "\t\tThis adds a [[sample_id]] parameter if none is already present.\n"
"\t[--msl-combined-sampler-suffix <suffix>]:\n\t\tUses a custom suffix for combined samplers.\n");
// clang-format on // clang-format on
} }
@ -1147,6 +1149,8 @@ static string compile_iteration(const CLIArguments &args, std::vector<uint32_t>
msl_comp->add_inline_uniform_block(v.first, v.second); msl_comp->add_inline_uniform_block(v.first, v.second);
for (auto &v : args.msl_shader_inputs) for (auto &v : args.msl_shader_inputs)
msl_comp->add_msl_shader_input(v); msl_comp->add_msl_shader_input(v);
if (args.msl_combined_sampler_suffix)
msl_comp->set_combined_sampler_suffix(args.msl_combined_sampler_suffix);
} }
else if (args.hlsl) else if (args.hlsl)
compiler.reset(new CompilerHLSL(move(spirv_parser.get_parsed_ir()))); compiler.reset(new CompilerHLSL(move(spirv_parser.get_parsed_ir())));
@ -1577,6 +1581,9 @@ static int main_inner(int argc, char *argv[])
cbs.add("--msl-fixed-subgroup-size", cbs.add("--msl-fixed-subgroup-size",
[&args](CLIParser &parser) { args.msl_fixed_subgroup_size = parser.next_uint(); }); [&args](CLIParser &parser) { args.msl_fixed_subgroup_size = parser.next_uint(); });
cbs.add("--msl-force-sample-rate-shading", [&args](CLIParser &) { args.msl_force_sample_rate_shading = true; }); cbs.add("--msl-force-sample-rate-shading", [&args](CLIParser &) { args.msl_force_sample_rate_shading = true; });
cbs.add("--msl-combined-sampler-suffix", [&args](CLIParser &parser) {
args.msl_combined_sampler_suffix = parser.next_string();
});
cbs.add("--extension", [&args](CLIParser &parser) { args.extensions.push_back(parser.next_string()); }); cbs.add("--extension", [&args](CLIParser &parser) { args.extensions.push_back(parser.next_string()); });
cbs.add("--rename-entry-point", [&args](CLIParser &parser) { cbs.add("--rename-entry-point", [&args](CLIParser &parser) {
auto old_name = parser.next_string(); auto old_name = parser.next_string();