Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Cross.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <post@arntzen-software.no>2020-03-04 18:32:52 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2020-03-04 18:42:31 +0300
commitc27e1efbf18cff858db35a3eda5dcdde7ad450d6 (patch)
treee29942a8dd4d5de808c326741da4bfedb66e02c4 /main.cpp
parent01968c448604665593b50c5206a50bf849753464 (diff)
HLSL: Add option to always treat SSBO as UAV, even with readonly.
This can make codegen more predictable since ByteAddressBuffer is SRV and not UAV.
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/main.cpp b/main.cpp
index ee48584b..481189c7 100644
--- a/main.cpp
+++ b/main.cpp
@@ -556,6 +556,7 @@ struct CLIArguments
bool hlsl = false;
bool hlsl_compat = false;
bool hlsl_support_nonzero_base = false;
+ bool hlsl_force_storage_buffer_as_uav = false;
HLSLBindingFlags hlsl_binding_flags = 0;
bool vulkan_semantics = false;
bool flatten_multidimensional_arrays = false;
@@ -624,6 +625,7 @@ static void print_help()
"\t[--hlsl-enable-compat]\n"
"\t[--hlsl-support-nonzero-basevertex-baseinstance]\n"
"\t[--hlsl-auto-binding (push, cbv, srv, uav, sampler, all)]\n"
+ "\t[--hlsl-force-storage-buffer-as-uav]\n"
"\t[--separate-shader-objects]\n"
"\t[--pls-in format input-name]\n"
"\t[--pls-out format output-name]\n"
@@ -974,6 +976,7 @@ static string compile_iteration(const CLIArguments &args, std::vector<uint32_t>
}
hlsl_opts.support_nonzero_base_vertex_base_instance = args.hlsl_support_nonzero_base;
+ hlsl_opts.force_storage_buffer_as_uav = args.hlsl_force_storage_buffer_as_uav;
hlsl->set_hlsl_options(hlsl_opts);
hlsl->set_resource_binding_flags(args.hlsl_binding_flags);
}
@@ -1129,6 +1132,9 @@ static int main_inner(int argc, char *argv[])
cbs.add("--hlsl-auto-binding", [&args](CLIParser &parser) {
args.hlsl_binding_flags |= hlsl_resource_type_to_flag(parser.next_string());
});
+ cbs.add("--hlsl-force-storage-buffer-as-uav", [&args](CLIParser &) {
+ args.hlsl_force_storage_buffer_as_uav = true;
+ });
cbs.add("--vulkan-semantics", [&args](CLIParser &) { args.vulkan_semantics = true; });
cbs.add("-V", [&args](CLIParser &) { args.vulkan_semantics = true; });
cbs.add("--flatten-multidimensional-arrays", [&args](CLIParser &) { args.flatten_multidimensional_arrays = true; });