SPV: Add option to print disassembly in standard form using SPIRV-Tools.
diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt
index d500121..5cea53d 100755
--- a/StandAlone/CMakeLists.txt
+++ b/StandAlone/CMakeLists.txt
@@ -33,6 +33,7 @@
target_link_libraries(glslangValidator ${LIBRARIES})
target_link_libraries(spirv-remap ${LIBRARIES})
+target_include_directories(glslangValidator PUBLIC ../External)
if(WIN32)
source_group("Source" FILES ${SOURCES})
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
old mode 100644
new mode 100755
index 6736dbc..549cb0d
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -102,6 +102,7 @@
EOptionDumpBareVersion = (1 << 31),
};
bool targetHlslFunctionality1 = false;
+bool SpvToolsDisassembler = false;
//
// Return codes from main/exit().
@@ -506,6 +507,8 @@
sourceEntryPointName = argv[1];
bumpArg();
break;
+ } else if (lowerword == "spirv-dis") {
+ SpvToolsDisassembler = true;
} else if (lowerword == "stdin") {
Options |= EOptionStdin;
shaderStageName = argv[1];
@@ -982,9 +985,15 @@
} else {
glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage));
}
- if (Options & EOptionHumanReadableSpv) {
+#if ENABLE_OPT
+ if (SpvToolsDisassembler)
+ spv::SpirvToolsDisassemble(std::cout, spirv);
+#else
+ if (SpvToolsDisassembler)
+ printf("SPIRV-Tools is not enabled; use -H for human readable SPIR-V\n");
+#endif
+ if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv))
spv::Disassemble(std::cout, spirv);
- }
}
}
}
@@ -1405,6 +1414,8 @@
" --shift-UBO-binding [stage] [num set]... per-descriptor-set shift values\n"
" --shift-cbuffer-binding [stage] num synonym for --shift-UBO-binding\n"
" --shift-cbuffer-binding [stage] [num set]... per-descriptor-set shift values\n"
+ " --spirv-dis output standard form disassembly; works only\n"
+ " when a SPIR-V generation option is also used\n"
" --sub [stage] num synonym for --shift-UBO-binding\n"
" --source-entrypoint <name> the given shader source function is\n"
" renamed to be the <name> given in -e\n"